Примеры и задания с оператором 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 – стаж работы. Реализация задачи для примера 2 представлена следующим алгоритмом (рис. 6) и программой: Program zarplata; var ST: byte; {стаж (байтовый) тип)}
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. Задания к самостоятельному выполнению (программа 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 в шестнадцатеричную систему счисления. 5. ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ 5.1.Оператор счётного цикла В языке Pascal существует три разновидности операторов цикла: 1) счетный оператор цикла (оператор цикла со счётчиком); 2) оператор цикла с предусловием; 3) оператор цикла с постусловием. Для любого оператора цикла вход в цикл возможен только через его начало, выход осуществляется как вследствие естественного окончания цикла, так и путем выполнения оператора перехода GOTO или процедур выхода, содержащихся внутри цикла. Счетный оператор цикла FOR реализует циклический процесс с известным числом повторений. Этот оператор имеет две формы записи. Первая форма позволяет наращивать <параметр цикла> на единицу и имеет вид FOR<параметр_цикла>:=<min_значение>TO<max_значение>DO<оператор>; Параметром цикла называется переменная, служащая для управления циклом. Для оператора цикла FOR в качестве <параметра_цикла> используется переменная целого либо любого порядкового типа. Здесь <min_значение>и <max_значение>- это константы (или выражения), определяющие соответственно начальное и конечное значения параметра цикла. Их типы должны быть совместимыми с типом параметра цикла. Вторая форма позволяет уменьшать на единицу значение параметра цикла: FOR <параметр цикла> := <max значение> DOWNTO <min значение> DO <оператор>; Пример. Вычислить Y = 1 + 1/2 + 1/3 + ... + 1/N. Для вычисления в программе необходимо многократно произвести сложение по “формуле суммы” Y =Y+1/I при изменении параметра I от одного до N. Реализация 1: Y:=0; FOR I:=1 TO N DO Y=Y+1/I; Реализация 2: Y:=0; FOR I:=N DOWNTO 1 DO Y=Y+1/I; Значение параметра цикла в теле цикла может не использоваться, а лишь выполнять функцию счетчика. Например, пусть необходимо вычислить Y = Xn. Тогда фрагмент тела программы запишется в следующем виде: Y:=1; FOR I :=1 TO N DO Y=Y*X; Два других оператора цикла (с пpедусловием и постусловием) проверяют условия повторения или окончания цикла, но сами не изменяют значения параметра цикла. Они организуют выполнение цикла с неизвестным заранее числом повторений.
©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|