Задания к самостоятельному выполнению
Методические указания к выполнению лабораторной работы
Программирование разветвленных алгоритмов. Оператор CASE
Цель работы: освоить методику программирование разветвленных алгоритмов в АВС Pascal.
Программное обеспечение: система программирования АВС Pascal.
Теоретические сведения
Оператор 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;
<Константа_выбора> не является меткой оператора, поэтому в разделе меток описывать её нельзя.
Примеры и задания с оператором CASE
Пример 1. Выполнить арифметическую операцию в зависимости от введенного с клавиатуры символа.
VARoperation: 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;
|
100 + (ST -15)*10 при 15 < ST ≤ 30;
300, если ST > 30;
где ZP – зарплата,
ST – стаж работы.
Реализация задачи представлена алгоритмом на рисунке 1 и программой:
Program zarplata;
var ST: byte; {стаж (байтовый) тип)}
ZP: real; {вещественный тип}
Begin
writeln('введите стаж');
read(ST); {ввод стажа}
caseST 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.
Рисунок 1 – Алгоритм задачи
Задания к самостоятельному выполнению
1. Единицы длины пронумерованы следующим образом: 1 – дециметр, 2 – километр, 3 – метр, 4 – миллиметр, 5 – сантиметр. Дан номер единицы длины (целое число в диапазоне 1 – 5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.
2. Единицы массы пронумерованы следующим образом: 1 – килограмм, 2 – миллиграмм, 3 – грамм, 4 – тонна, 5 – центнер. Дан номер единицы массы (целое число в диапазоне 1 – 5) и масса тела в этих единицах (вещественное число). Найти массу тела в килограммах.
3. Даны два целых числа D (день) и М (месяц), определяющие правильную дату невисокосного года. Вывести значения D и М для даты, предшествующей указанной.
4. Даны два целых числа D (день) и М (месяц), определяющие правильную дату невисокосного года. Вывести значения D и М для даты, следующей за указанной.
5. Робот может перемещаться в четырех направлениях («С» – север, «З» – запад, «Ю» – юг, «В» – восток) и может принимать три цифровые команды: 0 – продолжить движение, 1 – поворот налево, -1 – поворот направо. Дан символ С – исходное направление робота и целое число N – посланная ему команда. Вывести направление робота после выполнения полученной команды.
6. Локатор ориентирован на одну из сторон света («С» – север, «З» – запад, «Ю» – юг, «В» – восток) и может принимать три цифровые команды поворота: 1 – поворот налево, -1 – поворот направо, 2 – поворот на 180о. Дан символ С – исходная ориентация локатора и целые числа N1 и N2 – две посланные команды. Вывести ориентацию локатора после выполнения этих команд.
7. Элементы окружности пронумерованы следующим образом: 1 – радиус R, 2 – диаметр D=2·R, 3 – длина L=2·π·R, 4 – площадь круга S= π·R2. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данной окружности в том же порядке.
8. Элементы равнобедренного прямоугольного треугольника пронумерованы следующим образом: 1 – катет а, 2 – гипотенуза с=а , 3 – высота h, опущенная на гипотенузу (h=c/2), 4 – площадь S=с· h/2. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника в том же порядке.
9. Элементы равностороннего треугольника пронумерованы следующим образом: 1 – сторона а, 2 – радиус R1 вписанной окружности (R1=а /6, 3 – радиус R2 описанной окружности (R2=2·R1), 4 – площадь S=а2 /4. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника в том же порядке.
10. Определить остаток от деления на восемь введенного числа х и написать восьмеричную цифру прописью.
11. С клавиатуры ввести число k (1..30). Определить, какому дню недели оно соответствует, если первое число – понедельник.
12. Ввести число и номер месяца. Напечатать дату с названием месяца прописью.
13. Идет k секунда суток. Вычислить, сколько прошло часов и полных минут к этому моменту, при этом согласовать со значением слова (час, часа, часов, минута, минуты, минут).
14. В зависимости от номера (N) типа фигуры организовать ввод необходимых данных и вычислить при N = 1 – площадь круга, N = 2 – объем шара (4/3πR3), N = 3 – объем цилиндра, N = 4 – площадь поверхности сферы 4πR2.
15. Для целого числа R (1…99) напечатать фразу « Мне R лет », при некоторых значениях R слово «лет» заменить словом «год» или «года».
16. В зависимости от заданного номера фигуры ввести необходимые данные и вычислить при к = 1 площадь прямоугольника, при к = 2 площадь параллелограмма, а при к = 3 площадь трапеции по формуле (a+b) h/2. Во втором случае напечатать: является ли фигура параллелограммом или ромбом.
17. Перевести введенное целое число 0 ≤ х ≤ 31 в шестнадцатеричную систему счисления.
18. Определить животное, соответствующее введенному пользователем году, по китайскому гороскопу (обезьяна, петух, собака, кабан, крыса, бык, тигр, кролик, дракон, змея, лошадь, овца).
19. Перевести в арабские последнюю цифру введенного пользователем числа.
20. Написать программу, классифицирующую треугольники (остроугольные, прямоугольные, тупоугольные), если даны углы.
21. Составьте программу, имитирующую своеобразный калькулятор, где 1 – сумма двух чисел, 2 – разность двух чисел, 3 – произведение двух чисел, 4 – целая часть от деления, 5 – остаток от деления, 6 – квадратный корень числа, иначе введен неизвестный номер операции.
22. В некотором учебном заведении действуют следующие правила приема. Абитуриенты сдают три экзамена. Если они набирают не менее 14 баллов, то это дает право поступить на дневное отделение, от 11 до 13 — вечернее, от 9 до 10 — заочное и ниже 8 баллов — отказ в приеме на учебу. Записать программу, которая в зависимости от суммы набранных баллов сообщает абитуриенту его права на поступление.
23. В зависимости от введенного времени с начала суток (в часах) вывести время суток (полночь, ночь, раннее утро, утро, полдень, день, вечер).
24. По цифре (0..9), введенной с клавиатуры, напечатать название этой цифры.
25. Ввести число N (0 ≤ N ≤ 15). Определить и напечатать шестнадцатеричную цифру, ему соответствующую.
26. По введенному месяцу определить квартал года.
27. Смоделировать работу светофора. При вводе символа первой буквы цветов светофора, программа должна выводить сообщение о соответствующем цвете и действиях.
28. Составьте программу, которая по заданному году и номеру месяца определяет количество дней в этом месяце.
29. Составить программу, которая по номеру месяца определяла время года.