1 семестр сессия / Bilet14
.docБилет №14. Оператор выбора CASE OF.
Оператор выбора является обобщением оператора if-then-else на случай выбора одного из нескольких возможных продолжений выполнения программы. Выбор осуществляется по ключу выбора (селектору). Синтаксическая структура этого оператора такова:
case < ключ выбора > of
< константа выбора 1> : < оператор 1>;
. . . . . .
< константа выбора m> : < оператор m>;
[else < оператор>]
end;
где: < константа выбора > - значение того же типа, что и ключ выбора. Ключом выбора может быть выражение любого порядкового типа.
m - число ветвей выбора (не более чем мощность типа ключа выбора).
При выполнении оператора выбора вначале вычисляется значение ключа, а затем последовательным просмотром ветвей выбора отыскивается такая ветвь, для которой константа выбора совпадает со значением ключа. Оператор этой ветви выполняется, после чего оператор выбора завершает работу и передает управление следующему по тексту программы оператору. Ветвь else (если она присутствует) выполняется только в том случае, когда ни одна ветвь оператора case-of не выбрана. Если ветвь else отсутствует, то это эквивалентно ветви else с пустым оператором.
В ветвях выбора вместо констант выбора можно использовать список констант выбора (разделенных запятыми), либо диапазон констант выбора (заданный посредством .. также как для типа-диапазона). В этих случаях выбор ветви производится при равенстве константы из списка или из диапазона констант с ключом выбора.
Операторы выбора являются хорошо структурированным средством выбора из любого числа альтернатив и часто выполняют ту же функцию, что и вложенные операторы if-then-else.
Следующая простая программа демонстрирует создание и использование перечислимого типа и оператора case-of.
program colors;{Выбор цвета из набора, заданного перечислимым типом}
uses CRT;
type color = (cWhite,cRed,cBlue,cGreen,cBlack); {перечислимый тип}
var b:0..4; c:color;
begin TextBackground(cyan);TextColor(white);ClrScr;window(10,10,50,20);
write('Введите число (от 0 до 4):');read(b);c:=color(b);
case c of cWhite: begin TextColor(white);writeln('white') end;
cRed: begin TextColor(red);writeln('red') end;
cBlue: begin TextColor(blue);writeln('blue') end;
cGreen: begin TextColor(green);writeln('green') end;
cBlack: begin TextColor(black);writeln('black') end;
end
end {colors}.
Задача 4.2.6(14)
program Project14;
type mas=array[1..3,1..4] of Integer;
var a,b:mas;
i,j,l1,l2,d1,d2,s:Integer;
procedure p(x:mas; e1,e2:Integer; var n,k:integer);
var i,j,max:Integer;
begin
max:=x[1,1];
n:=1;
k:=1;
for i:=1 to e1 do
for j:=1 to e2 do
if x[i,j]<max then
begin
max:=x[i,j];
n:=i;
k:=j;
end;
end;
begin
for i:=1 to 3 do
for j:=1 to 3 do
read(a[i,j]);
Writeln;
for i:=1 to 3 do
for j:=1 to 4 do
read(b[i,j]);
p(a,3,3,l1,l2);
p(b,3,4,d1,d2);
s:=a[l1,l2];
a[l1,l2]:=b[d1,d2];
b[d1,d2]:=s;
Writeln;
for i:=1 to 3 do begin
for j:=1 to 3 do begin
write(a[i,j],' ');
end; writeln; end;
Writeln;
for i:=1 to 3 do begin
for j:=1 to 4 do begin
write(b[i,j],' ');
end; writeln; end;
Readln;
end.