Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ABC_Pascal.doc
Скачиваний:
2149
Добавлен:
30.03.2015
Размер:
1.12 Mб
Скачать

4.6. Оператор выбора варианта case

Оператор CASE позволяет в зависимости от значения какой-либо пе­ремен­ной или выражения порядкового типа выполнить те или иные дейс­твия.

Его структура имеет следующий вид:

CASE <ключ_выбора> OF

<константа_выбора1>: <оператор1>;

<константа_выбора2>: <оператор2>;

. . .

<константа_выбораN>: <операторN>

ELSE <оператор>

END;

где <ключ_выбора>  переменная (или выражение) любого порядкового типа; <константа_выбора>  константа того же типа, что и <ключ_выбора>; <оператор>  произвольный оператор Pascal ABC.

Принцип действия оператора. Сначала вычисляется <ключ_выбора>, затем в списке конс­тант выбора отыскивается нужная константа, равная <ключу_выбора>, и выполня­ется стоящий за ней оператор. После этого оператор CASE завершает рабо­ту. Если в списке не найдена константа, совпадающая с "ключом", выпол­няется оператор, стоящий после ELSE.

Заметим, что стоящая в конце часть ELSE <оператор> является не обязательной. При отсутс­твии в списке выбора нужной константы оператор выбора просто завершает свою работу.

Любому из операторов <списка выбора> может предшествовать нес­колько <констант выбора>. В этом случае они разделяются запятыми или представляют собой диапазон значений.

Пример:

CASE <ключ> OF

1: <оператор1>;

2, 3: <оператор2>;

4 .. 6: <оператор3>

ELSE <оператор>

END;

<Константа_выбора> не является меткой оператора, поэтому в разде­ле меток описывать её нельзя.

4.7. Примеры и задания с оператором case

Пример 1. Выполнить арифметическую операцию в зависимости от введенного с клавиатуры символа.

VAR operation: char;

x, y, z: real;

BEGIN

read(x,y);

read (operation);

CASE operation OF

'+': z:=x+y;

'-': z:=x-y;

'*': z:=x*y;

'/': z:=x/y;

ELSE write('нет опеpаций')

END;

WRITELN( ' z= ' , z )

END.

Пример 2. Составить программу для начисления зарплаты согласно следующему правилу: если стаж работы сотрудника менее пяти лет, то зарплата равна 50$, при стаже работы от пяти до 15 лет – 100$, свыше 15 лет зарплата повышается с каждым годом на 10$, причем при стаже, превышающем 30 лет, она составляет 300$.

Для программирования решения этой задачи определим математичес­кую формулировку задачи:

50, если ST < 5;

ZP =

100, если 5 ≤ ST  15;

100 + (ST -15)*10 при 15 < ST ≤ 30;

300, если ST > 30;

где ZP – зарплата, ST – стаж работы.

Реализация задачи для примера 2

представлена следующим алгоритмом

(рис. 6) и программой:

Program zarplata;

var ST: byte; {стаж (байтовый) тип)}

Рис. 6

ZP: real; {вещественный тип}

begin

writeln('введите стаж');

read(ST); {ввод стажа}

case ST of {выбор из }

1..4: ZP:=50;

5..15: ZP:=100;

16..29: ZP:=100+(ST-15)*10

else ZP:=300

end;

writeln(' Зарплата = ' , ZP:10:2,' $'); {вывод результата}

end.

Задания к самостоятельному выполнению (программа 2_2)

1. Определить остаток от деления на восемь введенного числа х и написать восьмеричную цифру прописью.

2. По цифре (0..9), введенной с клавиатуры, напечатать название этой цифры.

3. С клавиатуры ввести число k (1..30). Определить, какому дню недели оно соответствует, если первое число – понедельник.

4. Ввести число и номер месяца. Напечатать дату с названием месяца прописью.

5. Идет k секунда суток. Вычислить, сколько прошло часов и полных минут к этому моменту, при этом согласовать со значением слова (час, часа, часов, минута, минуты, минут).

6. В зависимости от номера (N) типа фигуры организовать ввод необходимых данных и вычислить при N = 1 – площадь круга, N = 2 – объем шара (4/3πR3), N = 3 – объем цилиндра, N = 4 – площадь поверхности сферы 4πr2.

7. Ввести число N (0 ≤ N ≤ 15). Определить и напечатать шестнадцатеричную цифру, ему соответствующую.

8. Для целого числа R (1…99) напечатать фразу « Мне R лет », при некоторых значениях R слово «лет» заменить словом «год» или «года».

9. В зависимости от заданного номера фигуры ввести необходимые данные и вычислить при к = 1 площадь прямоугольника, при к = 2 площадь параллелограмма, а при к = 3 площадь трапеции по формуле (a+b) h/2. Во втором случае напечатать: является ли фигура параллелограммом или ромбом.

10. Перевести введенное целое число 0 ≤ х ≤ 31 в шестнадцатеричную систему счисления.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]