Оператор выбора позволяет сделать выбор из произвольного числа имеющихся вариантов и имеет формат:
CASE_выражение-селектор OF
константа_1 : оператор1;
константа_2 : оператор2;
……………………………
Константа_ N : операторN
ELSE операторE
END;
Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна вычисленному значению селектора. Если ни одна из констант не равна текущему значению селектора, то выполняется оператор, стоящий после ELSE.
Примеры программ.
1. Найти максимальное из двух чисел a и b
Program example1;
Var a,b,max:real;
begin
writeln(‘введите два числа ’);
readln(a,b);
if a>b then max:=a
else max:=b;
writeln(‘максимальное значение=’,max:5:2)
end.
2. Для произвольных значений аргумента вычислить значение функции, заданной выражением
В данной задче вся числовая прямая разбивается на три интервала: [0;0], [- ;0], [0; + ]. Заданная точка х может попасть в один из них. Сначала проверяется, попадает ли точка в первый интервал. Если попадает, то функцию вычисляем по первому выражению. Если нет, то точка может принадлежать второму или третьему интервалу. Поэтому проверяем принадлежность точки второму интервалу. Если точка принадлежит интервалу, то вычисляем функцию по второму выражению. Если нет, то можно без проверки принадлежности точки третьему интервалу вычислять функцию по третьему выражению.
Program example2;
Var x,y:real;
begin
writeln(‘введите x ’);
readln(x);
if x=0 then y:=0
else if x<0 then y:=x+1
else y:=sqr(x)-1;
writeln(‘y(‘,x,’)=’,y:5:2)
end.
3. Дана точка с координатами x,y. Определить принадлежит ли эта точка заданной заштрихованной области.
Program example3;
Var x,y:real;
begin
writeln(‘введите координаты точки ’);
readln(x,y);
if (abs(x)<4) and (abs(y)<2) then writeln(‘точка внутри области’)
else if (abs(x)>4) or (abs(y)>2 then writeln(‘точка вне области’)
else writeln(‘точка на границе области’)
end.
4. Определить диапазон, в котором находится вводимое с клавиатуры число.
Program example4;
Var i:integer;
begin
READ(I);
CASE I OF
1..10: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 1 до 10’);
11..20: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 11 до 20’);
21..30: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 21 до 30’);
ELSE WRITELN(‘число I=’,I:3,’находится вне диапазона 1 - 30’);