Пример 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;
|
100 + (ST -15)*10 при 15 < ST ≤ 30;
300, если ST > 30;
где ZP – зарплата, ST – стаж работы.
Реализация задачи для примера 2
представлена следующим алгоритмом
(рис. 6) и программой:
Program zarplata;
var ST: byte; {стаж (байтовый) тип)}
|
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 в шестнадцатеричную систему счисления.
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едусловием и постусловием) проверяют условия повторения или окончания цикла, но сами не изменяют значения параметра цикла. Они организуют выполнение цикла с неизвестным заранее числом повторений.