Мы уже с Вами познакомились с оператором условия 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.