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