Оператор выбора 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.

Скачать архив с текстом документа