Главная              Рефераты - Информатика

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

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 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 , ' ');

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

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.