Выполнение оператора начинается с проверки логического условия, если оно истинно, то выполняется оператор-1, иначе оператор-2. В качестве оператора может выступать простой оператор или составной оператор. Составной оператор – это группа операторов, заключенная в операторные скобки begin
... end.Пример:
if
begin
z:=1;
x:=2*x;
end
else
begin
z:=-1;
x:=-x;
end
Обратите внимание, что перед else
точка с запятой не ставится. Точка с запятой используется только для разделения операторов друг от друга. Можно было бы и не ставить запятую после операторов x:=2*x и x:=-x, поскольку begin и end не являются операторами, а являются скобками. Паскаль будет интерпретировать[8] точку с запятой перед end, как наличие пустого оператора между ней и end.Обратите внимание на запись “лесенкой”, она не обязательна, но весьма желательна, поскольку помогает наглядно увидеть алгоритмическую структуру программы. Правило такое: end
пишем под begin.- 17 -
Часто встречается ситуация, когда ветвь else
не нужна. В этом случае ее можно опустить.Например: if
x<0 then x:=-x; Обратите внимание, что точка с запятой ставится после оператора x:=-x в отличие от полной формы.Пример программы с оператором if
Program
{ Определение четного или нечетного числа }
var
begin
write('Введите число '); readln(n);
if
then
writeln('Число нечетное')
else
writeln('Число четное ');
end
Вложенные операторы if
Иногда возникает необходимость устроить развилку на более чем две ветви. В этом случае операторы if
можно вкладывать один в другой. С точки зрения алгоритмической корректности лучше, если вложенный оператор находится в ветви else. Приведем сразу пример программыProgram
{ Определение знака числа }
var
begin
write('Введите число '); readln(n);
if
then
writeln ('Число положительное')
else
if
then
writeln('Число ноль')
else
writeln ('Число отрицательное')
end
Обратите внимание, что после вложенный оператор if
можно не заключать в операторные скобки begin ... end, поскольку оператор if синтаксически рассматривается как один оператор.Если имеются вложенные операторы if
, один из которых неполный, например:if
then
if
then
writeln('У вас ноль')
else
writeln ('Число положительное')
возникает неоднозначность: к какому if
относится else. Принято, что else относится к ближайшему if, т.е. таки образом, как отражает запись данного примера. Если следовать правилу, помещая, по возможности, вложенные операторы в ветвь else, то таких ситуаций не будет.- 18 -
Логические выражения
. В операторе if используются логические выражения, имеющие тип boolean[9]. Про такие выражения можно сказать только являются ли они истинными (true) или ложными (false). Простейший случай логического выражения –Пример: var b : boolean; . . . . . .
b :=true; . . . . . .
if
b then writeln ('Все в порядке');Такие логические переменные называют флагами, иногда их использование оказывается очень эффективным решением.
Операции сравнения
. Существует шесть бинарных[10] операций сравнения, у которых операнды могут быть самых разных типов (целые, вещественные, символьные строковые).< меньше <= меньше или равно > больше >= больше или равно = равно <> не равно
Эти операции весьма часто используются для построения различных логических условий.
Например: if
a>0 then a:=1 else a:=-1. С точки зрения языка Pascal a>0 представляет собой логическое выражение (можно написать даже так: b :=a>0, если b – переменная булевского типа).Логические операции
. Для составления сложных логических выражений могут использоваться две бинарные логические операции AND, OR и одна унарная[11] NOT .and – результат операции истинен тогда и только тогда, когда истины оба операнда.
or – результат операции истинен тогда, когда истинен хотя бы один операнд.
not – имеет результат противоположный операнду.
Примеры операторов if
со сложными условиями:if
(x>=0) and (x<=1) then writeln ('X находится в диапазоне от 0 до 1');if
not ((x>=0) and (x<=1)) then writeln('X вне диапазона 0-1');if
(x<0) or (x>1) then writeln('X вне диапазона 0-1');Обратите внимание на скобки. Операции сравнения имеют самый низший приоритет, поэтому заключены в скобки. Приоритет операции and соответствует операции умножения, or – сложению, not – унарному минусу (т.е. самый высокий).
- 19 -
Задание №5