Оператор выбора case
СОДЕРЖАНИЕ: Для программирования разветвлений в алгоритме чаще всего используется условный оператор if…then или if…then…else. Однако если путей выбора много, то запись алгоритма с помощью условного оператора становится сложной.Оператор выбора case
Для программирования разветвлений в алгоритме чаще всего используется условный оператор if…then или if…then…else.
![]() |
![]() |
Однако если путей выбора много, то запись алгоритма с помощью условного оператора становится сложной.
В таких случаях намного удобнее использовать оператор выбора case.
Этот оператор имеет следующую форму:
case выражение of
значение 1: оператор 1;
значение 2: оператор 2;
………………………………………
значение n: оператор n;
else begin
операторы ветви else;
end;
end;
В этой конструкции операторы могут быть составными, выражение должно быть порядкового типа, т.е. integer, char, boolean.
Тип значение должен совпадать с типом выражение, может быть одно или несколько, разделенных запятыми, а также может представлять собой
некоторый диапазон значений.
Вся конструкция должна завершаться ключевым словом end .
Ветвь else вместе с оператором может отсутствовать.
Оператор работает следующим образом:
1. вычисляется значение выражения.
2. выполняется оператор, метка которого значение совпадает со значе-нием выражение.
3. Если ни однозначение не совпадает со значением выражение, вы-полняется оператор после else.
Примеры:
- Пример использования инструкции case для организации меню (схема)
program menu1;
var
vybor:integer;
begin
writeln(1 - Максимальная температура);
writeln(2 - Минимальная температура);
writeln(3 - Средняя температура);
writeln;
writeln(Введите номер задачи и нажмите Enter);
write( Ваш выбор - );
readln(vybor);
case vybor of
1: begin
{ вычисление максимальной температуры }
end;
2: begin
{ вычисление минимальной температуры }
end;
3: begin
{ вычисление средней температуры }
end;
end;
end.
- С клавиатуры вводим номер месяца и компьютер определяет время года
program Prim2;
uses CRT;
var month: integer;
begin
writeln (Введите номер месяца и нажмите Enter );
write(-);
readln(month);
case month of
1,2,12 : writeln( ЗИМА );
3,4,5 : writeln( ВЕСНА );
6,7,8 : writeln( ЛЕТО );
9,10,11: writeln (ОСЕНЬ);
else writeln (Число должно быть от 1 до 12);
end;
readln;
end.
3. Написать программу, которая вычисляет стоимость междугороднего телефонного разговора.
Формула: цена минуты * количество минут разговора
(в зависимости от кода города – цена минуты разная)
program Prim3;
uses CRT;
var
kod: integer;
cena: real;
dlit: integer;
summ: real;
begin
writeln (Вычисление стоимости разговора по телефону);
writeln (Введите исходные данные:);
write( код города -);
readln (Kod);
write (Длительность разговора (целое количество минут -);
readln(dlit);
write( Код города : );
case kod of
432: Begin
writeln( Владивосток );
cena:=2.2;
end;
495: begin
writeln(Moc кв a);
cena:=1;
end;
815: begin
writeln( Мурманск );
cena:=1.2;
end;
812: begin
writeln( Санкт - Петербург );
cena:=0.00000;
Writeln( У нас бесплатно );
end;
846: begin
writeln(Ca м apa);
cena:=1.4;
end;
end;
summ:= cena * dlit;
writeln( Цена минуты :, cena:6:2,pyb.);
writeln (Стоимость разговора:, summ :6:2, pyb .);
readln;
readln;
end.
4. Написать программу, которая вычисляет дату следующего дня. Рекомендуемый вывод на экран:
Введите цифрами сегодняшнюю дату (число месяц год) - 31 12 2010
Последний день месяца!
С наступающим Новым годом!
Завтра 1.1.2011
Program Prim4;
Uses Crt; ;
var
day : integer ;
month : integer;
year:integer;
last:boolean;{TRUE, если текущий день последний день месяца }
r:integer; {если год високосный, то остаток от деления year на 4 равен нулю }
begin
writeln;
writeln(Задайте цифрами сегодняшнюю дату);
write(( число месяц год )- );
readln(day,month,year);
last:=FALSE;
case month of
1,3,5,7,8,10,12:if day=31
then last:=TRUE;
4,6,9,11: if day=30
then last:=TRUE;
2: if (day=28)
then begin
r:=year mod 4;
if r0 then
last:=TRUE;
end;
end;
if last
then begin
writeln(Последний день месяца!);
day:=1;
if month=12
then begin
month:=1;
year:=year + 1;
writeln(С наступающим Новым годом!);
end
else month:=month + 1;
end
else day:=day + 1;
writeln( Завтра ,day,.,month,.,year );
end.
5. Написать программу, которая после введённого с клавиатуры числа (в диапазоне 0т 1 до 99, обозначающего денежную единицу, дописывает слово РУБЛЬ в правильной форме: 12 рублей, 21 рубль и т.д.
Uses Crt;
var
n: integer; { число }
m : integer ; {остаток от деления n на 100 (последние 2 цифры) }
r : integer ; {остаток от деления n на 10 (последняя цифра) }
begin
writeln (введите целое число(от 1 д o 999) , и нажмите Enter );
write (- );
readln(n);
write ( n , );
{окончание определяется двумя последними цифрами }
if n 100
then m:= n mod 100;
if (m= 11) and (m= 14)
then
writeln ( рублей )
else begin
r:=n mod 10;
case r of
0, 5..9: writeln ( рублей );
1: writeln ( рубль );
2..4: writeln ( рубля );
end;
end;
readln;
end.