Pascal. Условный оператор Case

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

Его синтаксис таков:

Case <анализируемая переменная> of

<Значение 1>:<Действие 1>;

<Значение 2>:<Действие 2>;

<Значение 3>:<Действие 3>;

<Значение N>:<Действие N>;

Else<Действие N + 1>

end;

Конечно же вместо «Действие» здесь можно вставить любую часть кода, заключив ее в операторные скобки Begin … End; если нам нужно для одного варианта совершать несколько действий.

Program OcenkaUchrnika;
Var Ocenka: Integer;
Begin
writeLn ('Какую оценку ты получил по математике');
ReadLn (Ocenka);
Case Ocenka of
1,2:WriteLn('Кошмар!');
3:WriteLn('Неважно');
4:WriteLn('Неплохо');
5:WriteLn('Молодец!');
else WriteLn('Таких оценок не бывает');
end;
End.

Надеюсь, с этой программой все понятно. Она просто принимает число от пользователя — его оценку и выводит на экран соответствующее сообщение. Вот как она выглядела бы, если писать ее с помощью if … then … else.

Program OcenkaUchrnika2; 
var Ocenka: Integer;
begin
writeLn('Какую оценку ты получил по математике');
ReadLn(Ocenka);
if (Ocenka = 1) OR (Ocenka = 2) 
then WriteLn('Кошмар!')
else if Ocenka = 3
then WriteLn('Неважно')
else if Ocenka = 4
then WriteLn('Неплохо')
else if Ocenka = 5
then WriteLn('Молодец!')
else WriteLn('Таких оценок не бывает');
End.

Замечу, что у оператора case есть существенное ограничение — переменная, стоящая после слова case, должна быть порядкового типа(Integer, LongInt, Char, Byte, Word). А значения типов Real и String применять в операторе case нельзя. Давайте решим еще одну задачу, допустим, нам нужно определить, какую букву ввел с клавиатуры пользователь (гласную или согласную, возможен ответ «таких букв не существует»). Кроме того, давайте разделим согласные буквы на глухие и звонкие, если введены «ъ» или «ь», то выведем «другая».

Program Bukvi;
Var bukva : Char;
Begin 
WriteLn ('Введи строчную букву русского алфавита');
ReadLn (bukva);
case bukva of
'а','е','и','о','у','ы','э','ю','я'	:WriteLn('гласная');
'б','з','в','г','д','ж','й','л','м','н','р':WriteLn('согласная звонкая'); 
'п','с','ф','к','т','ш','х','ц','ч','щ':WriteLn('согласная глухая');
'ъ','ь':WriteLn('другая');
else WriteLn('Таких букв не существует')
end;
End.

Теперь давайте напишем мини калькулятор с помощью оператора case.

Program Calculator;
var a, b: integer;
dejstvie: char;
begin
writeln('Введите 2 целых числа');
readln(a, b);
writeln('Введите знак действия');
readln(dejstvie);
case dejstvie of
'+': writeln(a + b);
'-': writeln(a - b); 
'/': writeln(a / b); 
'*': writeln(a * b);
else writeln('Таких действий не существует');
end;
End.

Данная программа просто выполняет подсчеты, исходя из данных, введенных пользователем.

И еще хочу дополнить, что в операторе case вместо анализируемой переменной может находиться какое-нибудь выражение, например, case a*a+1 of (далее следует продолжение оператора case, оно может быть произвольным, но не нужно забывать, в каких случаях могут возникнуть ошибки).

Кроме того, конструкция <Значение 1>:<Действие 1>; может выглядеть следующим образом. 12 ..18 . Она обозначает то же, что и 12,13,14,15,16,17,18. Служит в нашем случае для сокращения записи и называется диапазоном. Итак, надеюсь, теперь вы имеете представление, что такое условный оператор Case, возможно, эта статья была для Вас полезной.

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