Условные операторы предназначены для выбора к исполнению одного из возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, т. е. отсутствовать). В качестве условий выбора используется значение логического выражения. В Турбо Паскале имеются два условных оператора: if и case.
Оператор условия if.
Оператор условия if является одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы. Синтаксическая диаграмма оператора условия if выглядит таким образом:
Рисунок 2. Синтаксическая диаграмма оператора условия if.
if <условие> then <оператор1> ЕСЛИ <условие> ТО <оператор1>
else <оператор2>; ТТТТ<оператор2>
if <условие> then <оператор>; ЕСЛИ <условие> ТО <оператор1>
Оператор условия if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа. В первом случае, если значение выражения есть True (истина), выполняется <оператор1>, указанный после слова then (TO). Если результат вычисления выражения в условии есть False (ложь), то выполняется < оператор2 >.Во втором — если результат выражения True, выполняется <оператор>, если False— оператор, следующий сразу за оператором if. Операторы if могут быть вложенными.
Пример фрагмента программы с оператором условия if: .
Read(Ch);
if Ch='N' then Parol:= True
else Parol:= False;
Read(X);
if Parol = True then
if X = 100 then Write('Пароль и код правильные’)
else begin
Writeln('Ошибка в коде');
Halt(l)
end;
В данном примере с клавиатуры считывается значение переменной символьного типа Ch. Затем проверяется условие Ch=’N’. Если оно выполняется, то переменной Parol булевского типа присваивается значение True, если условие не выполняется, False. Затем с клавиатуры считывается значение кода X. Далее оператор if проверяет условие Parol = True. Если оно имеет значение True, то выполняется проверка введенного пароля оператором if X=100. Если условие Х=100 имеет значение True, то выводится сообщение " Пароль и код правильные ", и управление в программе передается на оператор, следующий за словом end. Если оно имеет значение False, выполняется составной оператор, стоящий после слова else, который выводит на экран видеомонитора сообщение "Ошибка в коде", и вызывает стандартную процедуру Halt(l) для остановки программы.
Примечание. При использовании вложенных условных операторов может возникнуть синтаксическая неоднозначность, иллюстрируемая следующей схемой:
if условие1 then if условие2 then <оператор1> else <оператор2>
Возникающая двусмысленность, к какому оператору if принадлежит часть else <оператор2>, разрешается тем, что служебное слово else всегда ассоциируется (связывается) с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else.В связи с этим следует проявлять аккуратность при записи вложенных операторов условия.
Упражнение. Составим программу, которая вычисляет частное двух целых чисел. В связи с тем, что делить на нуль нельзя, организуем контроль ввода данных. Для контроля вводимых значений делителя используем оператор условного перехода if ... then ... else.Текст программ может выглядеть следующим образом:
program Tutor;
var
А,В: integer;
Rezult: real;
begin
Write('Введите значение делимого A >') ;
Read(A);
Write<'Введите значение делителя В >');
Read(B);
if B=0 { Контроль ввода}
then Writeln('Ha нуль делить нельзя') {Условие выполнено)
else {Условие не выполнено}
begin {Начало составного оператора}
Rezult := А / В;
Writeln('Частное чисел ',А,' и ',В,' = ',Rezult);
End; {Конец составного оператора}
end.
Введите текст программы, откомпилируйте ее и исполните для разных целых значений переменных А и В; Попробуйте задать значение В=0 и убедитесь, что защита ввода работает. В будущих ваших программах выполняйте контроль ввода данных.