Условный оператор if

Операторы ветвления

Простейшие операторы

Комментарии

 

Большие логически замкнутые блоки программы удобно разделять строками-комментариями, содержащими информацию о смысле последующего блока. Комментарий - это строка (или несколько строк) из произвольных символов, заключенная в фигурные скобки:

 

{ комментарий }

 

Другой вариант оформления комментария:

 

(* комментарий *)

 

Внутри самого комментария символы } или *) встречаться не должны.

 

Во время компилирования программы комментарии игнорируются. Следовательно, их можно добавлять в любом месте программы. Можно даже разорвать оператор вставкой комментария. Кроме того, все, что находится после ключевого слова end., завершающего текст программы, компилятор тоже воспринимает как комментарий.

 

Пример программы

 

program input-output;

{Программа вводит два целых числа и выводит частное от деления

первого на второе}

var

n1, n2 : integer; (* переменные целого типа данных *)

x : real; (* переменная вещественного типа данных *)

begin

write(‘Введите значение для переменной n1=’);

readln(n1);

write(‘Введите значение для переменной n2=’);

readln(n2);

x:=n1/n2;

writeln(‘n1/n2=’, x);

end.

 

 

Перейдем к изучению операторов - специальных конструкций языка Pascal.

Оператором называется (минимальная) структурно законченная единица программы.

 

Все операторы языка Pascal должны заканчиваться знаком ";" (точка с запятой), и ни один оператор не может разрываться этим знаком. Единственная возможность не ставить после оператора ";" появляется в том случае, когда сразу за этим оператором следует ключевое слово end.

 

К простейшим операторам языка Pascal относятся:

 

· a:= b; - присваивание переменной а значения переменной b. В правой части присваивания может находиться переменная, константа, арифметическое выражение или вызов функции.

· ; - пустой оператор, который можно вставлять куда угодно, а также вычеркивать откуда угодно, поскольку на целостность программы это никак не влияет.

· Операторные скобки, превращающие несколько операторов в один:

 

begin

<несколько операторов>

end;

 

 

К операторам, позволяющим из нескольких возможных вариантов выполнения программы (ветвей) выбрать только один, относятся if и case.

 

 

Оператор if выбирает между двумя вариантами развития событий:

 

if <условие>

then <один_оператор>

[else <один_оператор>];

 

Обратите внимание, что перед словом else (когда оно присутствует, конечно же) символ ";" не ставится - ведь это разорвало бы оператор на две части.

 

Условный оператор if работает следующим образом:

Сначала вычисляется значение <условия> - это может быть любое выражение, возвращающее значение типа boolean.

Затем, если в результате получена "истина" (true), то выполняется оператор, стоящий после ключевого слова then, а если "ложь" (false) - без дополнительных проверок выполняется оператор, стоящий после ключевого слова else. Если же else-ветвь отсутствует, то не выполняется ничего.

 

Пример. Программа выводит максимальное из двух чисел.

 

program Max;

var x, y, max : integer;

begin

write(‘Введите x’);

read(x);

write(‘Введите max’);

read(max);

if x>max then y:=x

else y:=max;

writeln(‘Максимальное’, y);

end.

 

Вложенные операторы if

 

В случае, когда каждый оператор if имеет собственную else-ветвь, все будет в порядке. А вот если некоторые из них этой ветви не имеют, может возникнуть ошибка. Компилятор языка Pascal всегда считает, что else относится к самому ближнему оператору if. Таким образом, если написать

 

if i>0 then if s>2

then s:= 1

else s:= -1;

 

подразумевая, что else-ветвь относится к внешнему оператору if, то компилятор все равно воспримет эту запись как

 

if i>0 then if s>2

then s:= 1

else s:= -1

else;

 

Для того чтобы избежать подобных ошибок, стоит при наличии нескольких вложенных условных операторов указывать оба ключевых слова, даже если одна из ветвей будет пустовать.

 

Итак, исходный вариант нужно переписать следующим образом:

 

if i>0 then if s>2

then s:=1

else

else s:=-1;

 

либо так:

 

if i>0 then begin if s>2

then s:=1

end

else s:=-1;