Задания к самостоятельному выполнению

Методические указания к выполнению лабораторной работы

Программирование разветвленных алгоритмов. Оператор 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;

ZP =
100, если 5 ST £ 15;

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/3R3), N = 3 – объем цилиндра, N = 4 – площадь поверхности сферы 4R2.

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. Составить программу, которая по номеру месяца определяла время года.