Оператор условного перехода if. Оператор выбора case

Для реализации ветвления на Pascal используются условный операторifи оператор множественного выбораcase.

Условный оператор (оператор альтернативы) − это структурированный оператор, предназначенный для выделения из составляющих его операторов одного, который и выполняется в дальнейшем.

Операторif, как и остальные структурированные операторы, часто включает в себя составные операторы.

Формат условного оператора (полная форма):

if<логическое выражение>then<оператор 1>else<оператор 2>;

гдеifозначает если,then– то или тогда,else− иначе.

Принцип действия: вычисляется значение логического выражения (другими словами, проверяется условие). Если значением логического выражения является true (истина), то выполняется оператор, следующий после словаthen, т. е. оператор 1. Если значением логического выражения является false (ложь), то выполняется оператор, следующий после словаelse, которым является оператор 2.

Можно использовать краткую форму условного оператора:

if<логическое выражение>then<оператор>;

Принцип действия: вычисляется значение логического выражения, т. е. проверяется условие. Если значением логического выражения является true (истина), то выполняется <оператор>, следующий после словаthen. Если значением логического выражения является false (ложь), то в этом случае <оператор> пропускается, а управление передается тому оператору, который следует за условным.

Примечания

1 Если в зависимости от условия предполагается выполнить несколько операторов, то соответствующие операторы заключаются в операторные скобкиbeginиend, т. е. организуется составной оператор.

2 Перед зарезервированными словамиthenиelseзнак ; никогда не ставится, т. к. конструкцияif..then..else.. является единым структурированным оператором.

Пример 3. Составьте программу для вычисления значения выражения при различных значениях переменной a1:

Оператор условного перехода if. Оператор выбора case - student2.ru (4)

Решение.

Program task_if;

Var

a1 : real; {описание переменной}

z, z1 : real; {описание вспомогательной и

вычисляемой переменной}

Begin

write('Введите значение a1');{вывод подсказки}

read(a1); {ввод значения переменной a1}

ifa1>0

then z:=sqr(ln(a1)/ln(10))

Else

ifa1<0

then begin z1:=cos(a1)/sin(a1); {расчет котангенса}

z:=z1/(sqr(z1)*z1+5)

End

else z:=0;

writeln('a1=',a1:3:2,' z=',z:6:3)

End.

Оператор множественного выбора caseпозволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит ключ выбора − выражение любого порядкового типа (кроме longint).

Формат оператора выбора:

case<ключ_выбора>of

<список_выбора 1> : <оператор 1>;

<список_выбора 2> : <оператор 2>;

<список_выбора N> : <оператор N>;

[else<операторы>]

end;

где case,of, else,end− зарезервированные слова (в переводе означающие выбор, из, иначе, окончание соответственно);

<ключ_выбора> − имя переменной или выражение порядкового типа (кроме longint);

<список_выбора 1>, …, <список_выбора N> − константа или список констант того же типа, что и выражение <ключ_выбора>;

<оператор 1>, …, <оператор N> − операторы языка Pascal, каждый из которых может быть простым, составным и структурированным оператором.

Принцип действия оператора case: вычисляется значение выражения <ключ_выбора>, затем в последовательности <список_выбора> отыскивается тот, которому принадлежит константа, равная вычисленному значению ключа выбора. Оператор, соответствующий выбранному списку, выполняется, остальные − игнорируются. После этого оператор выбораcaseзавершает свою работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается оператору, стоящему за словомelse. Частьelse <операторы> может и отсутствовать.

Пример 4.Составить программу, организующую ввод значений x и y, и, в зависимости от выбора пользователя, отображающую на экране значение суммы, разности, произведения или частного от деления x и y.

Решение.

Program Calculus;

Label m1;

Var

operation : char; {знак операции}

x, y, z : real; {операнды и результат}

Begin

writeln('Введите переменные x,y= '); readln(x,y);

write('Введите знак операции: '); readln(operation);

caseoperationof

'+':z:=x+y;

'-':z:=x–y;

'*':z:=x*y;

'/':z:=x/y

Else begin

writeln('Неверный ввод');

goto m1;

end;

end;

writeln ('Результат=',z:8:3);

m1:End.

Наши рекомендации