Условные операторы позволяют выбирать для выполнения один или не одного оператора из двух или из списка. Используются для организации ветвлений в программе, значительно реже – для организации циклов.

Условный оператор ::= "оператор_if"| "оператор_case"

Оператор IF

Оператор_if::= "if" логическое_выражение "then" оператор1 ["else" оператор2]

Если логическое выражение принимает значение True, то выполняется оператор1, иначе - оператор2.

Например:

Задача 4. Дано 2 числа. Найти наибольшее из них.

Решение:

var a,b:integer;

begin

readln(a,b); {вводим 2 числа с клавиатуры }

{находим максимальное и выводим его на экран}

if a>b then writeln(a) else writeln(b);

readln;

end.

Задача 5. Найти максимальное из трех чисел.

Решение:

var a,b,c,z:integer;

begin

readln(a,b,c);

if a>b then z:=a else z:=b; {переменной z присваиваем максимальное

из двух первых чисел}

{сравниваем z с третьим числом и выводим максимальное на экран}

if z<c then z:=c;

writeln(z);

readln;

end.

Задача 6. Определить, поместится ли открытка со сторонами a и b в конверте со сторонами x и y.

Решение:

var a,b,x,y:integer;

begin

write('Введите через пробел стороны открытки ');

readln(a,b);

write('Введите через пробел стороны конверта ');

readln(x,y);

{ Воспользуемся при формировании логического выражения в условном операторе операциями AND и OR}

if ((a<x)and(b<y))or((b<x)and(a<y)) then

writeln('Открытка помещается в конверт')

else

writeln('Открытка в конверт не входит');

readln;

end.

Задача 7. Решить квадратное уравнение ax2+bx+c=0

Var a,b,c:real; {коэффициенты уравнения}

d:real; {дискриминант}

x1,x2:real; {корни уравнения}

Begin

Readln(a,b,c); {вводим коэффициенты}

If a=0 then

writeln('Уравнение не является квадратным')

Else begin

{находим дискриминант}

D:=sqr(b)-4*a*c;

{проводим анализ дискриминанта и требуемые вычисления во вложенных операторах IF}

If d<0 then

writeln('Уравнение не имеет действительных корней')

else

if d=0 then begin

x1:=-b/(2*a);

writeln('Уравнение имеет 1 корень: X=',x1:7:3);

end

else begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

writeln('Уравнение имеет 2 корня:');

writeln(' X1=',x1:7:3);

writeln(' X2=',x2:7:3);

end;

end;

readln;

end.

Оператор CASE

В программировании очень часто возникают ситуации, когда требуется провести выбор из достаточно большого количества вариантов. В ТП для этих целей служит оператор case.

Оператор case состоит из выражения (селектора) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else.

Оператор_case::= "case" выражение_селектор "of"

выбор {";"выбор}

["else" оператор [";"]]

"end"

выбор::=константа [".." константа]

{"," константа [".." константа]} ":" оператор

Селектор должен иметь порядковый тип размера байт или слово (о порядковых типах будет рассказано в параграфе 1.7.1.1, а сейчас момент нам достаточно знать, что тип Integer подходит под данное правило). Все константы выбора должны быть уникальными и иметь порядковый тип, совместимый с типом селектора.

Оператор case приводит к выполнению оператора, которому предшествует константа выбора, равная значению селектора или диапазону выбора, в котором находится значение селектора.

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

Например: По введенному часу определить время суток.

Var hour:integer;

Begin

Readln(hour);

Case hour of

0,24:writeln('Полночь');

12: writeln('Полдень');

1..3: writeln(Ночь');

4..10: writeln('Утро');

11,13..16: writeln('День');

17..11: writeln('Вечер')

else writeln('Ошибка при вводе числа');

end;

readln;

end.

<- Предыдущая страница | Следующая страница ->
Последнее изменение: Вторник 1 Март 2011, 16:06