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


Условный оператор и оператор выбора. Оператор перехода

Вопросы для самопроверки

1. Для чего предназначена процедура Writeln?

2. Чем отличаются процедуры Write и Writeln?

3. Что означает следующая запись на языке Паскаль: Writeln(x: 5: 2)?

4. Что выполнит команда на языке Паскаль Readln(x, y, z)?

5. В каких случаях при вводе-выводе данных используется функция IOResult?

 


Обычно операторы выполняются по порядку один за другим. Иногда требуется разорвать такой ход выполнения программы и передать управление произвольному оператору. В таких случаях используется так называемый оператор перехода goto. В других случаях требуется в теле программы организовать ветвления – обрабатывать разные данные по-разному, в зависимости от тех или иных условий. В этих случаях используются условный оператор if и оператор выбора case. Именно об этих перечисленных операторах и пойдет речь далее.

Условный оператор if используется в тех случаях, если какие-либо операторы нужно выполнять только при тех или иных условиях.

Другими словами, условный оператор может использоваться для организации в теле программы различных ветвлений (например, если пользователь ввел значение «1», то выполняем первый набор операторов, иначе – второй).

Имеются 2 формы записи условного оператора: короткая и полная.

Короткая форма записи условного оператора выглядит следующим образом:

IF <логическое выражение> THEN <оператор_1>;

Условный оператор в короткой форме работает по правилу: если логическое выражение принимает значение Истина, то выполняется Оператор_1. Далее выполняется оператор, следующий за условным. Если логическое выражение ложно, то будет сразу же выполняться оператор, следующий за этим условным оператором.

Пример: напечатать на экране модуль вводимого пользователем числа

readln(x);

if x<0 then x:=-x;

writeln(‘модуль числа равен:’, x);

Полная форма записи условного оператора выглядит следующим образом:

IF <выражение> THEN <оператор_1> ELSE <оператор_2>;

Условный оператор в полной форме работает по правилу: если логическое выражение принимает значение Истина, то выполняется Оператор_1, далее выполняется оператор, следующий за условным. Если же логическое выражение принимает значение Ложь, то выполняется Оператор_2, далее – следующий за этим условным оператором.

Как видно из пояснений, в такой записи никогда вместе не выполнятся операторы, стоящие после ключевых слов then и else, но всегда будет выполняться один из них.

Обратите внимание: перед ключевым словом else точка с запятой «;» не ставится, т.к. это разорвало бы условный оператор на две части. Также после else не пишут никаких дополнительных условий.

Пример: напечатать на экране модуль вводимого пользователем числа

readln(x);

if x>0 then writeln(x) else writeln(-x);

Условные операторы могут вкладываться в другие условные операторы, в ветвь then или else. Не рекомендуется вкладывать один в другой более трех условных операторов.

Пример: определить, какое значение содержит переменная x.

if x>=0 then if x=0 then writeln(‘нулевое’)

else writeln(‘положительное’) else writeln(‘отрицательное’);

При вложении условных операторов один в другой следует быть аккуратным при создании ветви else: ключевое слово else будет относиться к ближайшему слева условному оператору if, еще не имеющему ветви else. Так, в представленном выше примере else writeln(‘положительное’) относится к оператору if x=0, а ветвь else writeln(‘отрицательное’) – к оператору if x>=0.

Пример: представим предыдущий пример в более понятном для читателя виде:

if x>=0 then

if x=0 then writeln(‘нулевое’) else writeln(‘положительное’)

else writeln(‘отрицательное’);