Смекни!
smekni.com

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

Оператор выбора 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('ОСЕНЬ');

elsewriteln('Число должно быть от 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 r<>0 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, ' ');

{окончание определяется двумя последними цифрами }

ifn>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.