Pascal. Оператор выбора case.

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

Вот фрагмент такой программы:

...
if (zifra = 0) then write('Нуль');
if (zifra = 1) then write('Один');
if (zifra = 2) then write('Два');
...

От значения переменной цифры мы принимаем оператор if и выводим сообщение. Такой вид записи утомляет — каждый раз писать всё новый и новый оператор условия if не очень удобно, так для чисел от 0 до 9 это будет выглядеть так:

...
if (zifra = 0) then write('Нуль');
if (zifra = 1) then write('Один');
if (zifra = 2) then write('Два');
if (zifra = 3) then write('Три');
if (zifra = 4) then write('Четыре');
if (zifra = 5) then write('Пять');
if (zifra = 6) then write('Шесть');
if (zifra = 7) then write('Семь');
if (zifra = 8) then write('Восемь');
if (zifra = 9) then write('Девять')
...

Для написания таких вот сравнений придумали специальный оператор case —  оператор выбора. Он состоит из четырёх слов — case(случай) of(из) else(иначе) end(конец).

Оператор выбора работает по следующему алгоритму:

В начале вычисляется значение выражения, которое может быть любого типа, кроме Real и String

Затем выполняются оператор или группа операторов, соответствующие результату вычесления выражения, то есть в первом пункте мы вычисляем значение выражения, и уже по этому значению выбираем подходящий нам оператор

Если это значение здесь не оказалось, то работает другая часть операторов, следующих после else(иначе)

И завершается всё это словом end; с точкой с запятой.

Вот сама конструкция оператора выбора:

case выражение of
значение_1 : оператор(группа операторов);
значение_2 : оператор(группа операторов);
...
значение_N : оператор(группа операторов)
else : оператор(группа операторов);
end;

Теперь рассмотрим употребление этого оператора на практике:

Первый случай — если не обнаруживается не каких подходящих операторов, то выполняется оператор после else:

case number mod 2 of
0 : writeln('Чётное число')
else writeln('Не чётное число');
end;

Следующий случай — если один оператор выполняется при нескольких значениях, тогда эти значения можно перечислить через запятую:

case month of
12,1,2 : writeln('Зима');
3,4,5 : writeln('Весна');
6,7,8 : writeln('Лето');
9,10,11 : writeln('Осень')
else writeln('Такого месяца не существует');
end;

В следующем случае оператором может быть не только простой оператор, но и составной включающий в себя сразу несколько операторов, или оператор может быть просто пустым:

case code of
1 : for i:=1 to 5 do writeln('*****');
2 : begin
    x:=sqr(y);
    writeln(x);
    end;
3 : 
end;

В следующем случае оператор будет выполнятся если вычесленное значение подходит к значениям следующим друг за другом — то есть например подходит от 0 до 9, то оператор будет выполняться, то есть эти значения будут представлять некий диапазон:

case chislo of
0..9 : writeln('Это число является цифрой')
else writeln('Это число не является цифрой');
end;

Теперь давайте используем это в нашей следующей программе, которая будет считывать данные с клавиатуры, и определять цифра ли это или нет:

Program case_;
uses crt;
var num: Integer;
begin
clrscr;
write('Введите цифру - ');
readln(num);
case num of
0 : write('Нуль');
1 : write('Один');
2 : write('Два');
3 : write('Три');
4 : write('Четыре');
5 : write('Пять');
6 : write('Шесть');
7 : write('Семь');
8 : write('Восемь');
9 : write('Девять')
else write('Это число не является цифрой');;
end;
readln;
end.

Рейтинг
( Пока оценок нет )
Загрузка ...