3. Примеры циклических программ
К типовым задачам организации циклов относятся задачи следующих
видов:
6
3. 1. Пример расчёта значений функции
Вычислить значения у = sin(a + b), z = ^b если а --
><Ь<2,4ЛЬ=0,6.
Смысл данной задачи сводится к тому, что надо определить и вывести
на экран значения переменных у и z при постоянном значении а. При этом b будет последовательно принимать значения -0,5; 0,1; 0,7; 1,3; 1,9.
Эти значения получаются, начиная от начального (-0,5), прибавлени
ем к предыдущему шага (0,6) до конечного значения (2,4).
Для реализации этой задачи можно использовать конструкцию Repeat Д. until, поскольку переменная цикла является вещественной.
Алгоритм решения этой задачи имеет вид:
PROGRAM N1;
( Начало J
VAR
Л -А
A,B,Y,Z: REAL;
6 = -0,5
BEGIN
Т
A:=0.42; B:.=-0.5;
У ,2
REPEAT
1 ,
Y:=SIN(A+B) I
4 1
1 = ь(0,6 |
Z:=SQRT(ABS(A-B));
WRITELN ('У=',Y:30:3,.'
,Z:10:3)
b > 2 , 4 > ~ -
B:=B+0.6;
UNTIL B>2.4;
END.
Конец J
(
Описание алгоритма:
В блоке 2 переменной b присваивается значение - 0,5.
В блоке 3 начинается цикл по переменной b и вычисляются значения
переменных у и z .
В блоке 4 вычисляется выполняется приращение переменной b
В блоке 5 завершается цикл с постусловием.
3. 2. Задачи вычисления сумм, произведений, и подсчета количе
ства элементов
3.2.1. В машину вводится п произвольных чисел. Подсчитать их
сумму. Здесь удобно использовать конструкцию FOR...TO...DO, поскольку
количество повторений фиксировано, а переменная цикла имеет целочис
ленный тип.
Рассмотрим алгоритм и программу решения этой задачи:
Начало
/ ввод я /
PROGRAM N2;
VAR
. *
( K=l,« ) 1
BEGIN
/7
WRITE ('Введите количество чисел - N ^ ' ) ;
/ вводл /
READLN (N); S:=0;
i .
FOR K:=l TO N DO
s-s + x
BEGIN
1
WRITE ('Введите число Х=');
READLN (X) ;
J ВЫВОД S j
5:-S+X;
END;
( Конец "
WRITELN ('Сумма-',S:10:3);
END.
Описание алгоритма.
В блоке 2 предусмотрен ввод количества чисел, которые предполага
ется ввести — п.
В блоке 3 организован цикл по переменной к, изменяющейся от 1 до п
с шагом 1.
В блоке 4 вводим значение числа и присваиваем его переменной X.
В блоке 5 накапливаем сумму значений X с помощью формулы
S=S+X. В этой формуле S, стоящие справа от знака = , предыдущее значение, а слева - последующее.
Этот блок является последним в цикле.
В блоке 7, который выполняется после завершения работы цикла, вы
численное значение суммы — S выводится на экран.
3. 2.2. Найти произведение четных чисел натурального ряда (2, 4, 6....), вычисление завершить, когда величина произведения станет больше
числа 3700.
В данной задаче удобнее использовать одну из двух конструкций
REPEAT...UNTIL или
WHILE...DO, которые обеспечивают повторение цикла до выполне
ния некоторого условия (Р<3700).
Воспользуемся конструкцией WHILE...DO, и составим алгоритм и
программу peiпения задачи.
PROGRAM N3;
Начало
VAR
К: INTEGER;
Р: REAL;
/ -7
BEGXN;
• ( пока Р<3700 )
п
Р:-] ;
1 .
К: =2 ;
р = рк
WHILE P<37 00 DO
к = к + 2
BEGIN;
_ (
Р:=Р*К;
1
К:=К+2;
/ вывод Р I
END;
— ^ * Л
WRITELN ('ПРОИЗВЕДЕНИЕ;-', Р:10:3);
Конец
END.
Описание алгоритма
В блоке 2 присваиваем переменной, в которой будем накапливать
произведение начальное значение — 1, а переменной К присваиваем первое
четное натуральное число — 2.
В блоке 3 организуем цикл, который будет повторятся до тех пор, по
ка Р<3 700.
В блоке 4 накапливаем произведение значений К, используя рекур
рентную формулу Р=Р*К и формируем следующее четное число по формуле
К"-К+2. Этот блок является последним в цикле.
R ftrmve 5 который выполняется после завершения заботы никла нн
экран выводится вычисленное значение произведения.
9
Примечание I.
Рекуррентными называют такие формулы, в которых каждое после
дующее значение получается из предыдущего, например: S:=S+K.
Особенностью этих формул является то, что справа и слева от знака
присваивания стоит одна и также переменная S. Та, что стоит слева от знака
:~, называется последующим значением, а та, которая справа —предыдущим.
3. 2.3. С клавиатуры вводятся произвольные числа. Признаком за
вершения работы является ввод числа 77777. Подсчитать количество введен
ных чисел.
Для решения этой задачи воспользуемся конструкцией
REPEAT...IJNTIL.
Для подсчета количества чисел воспользуемся тем же принципом, что
и для подсчета суммы, но только суммировать будем единицы и тип пере
менной будет целым.
Составим алгоритм и программу решения задачи.
PROGRAM N4;
VAR
X: REAL;
К: INTEGER;
BEGIN
К:=0;
REPEAT
WRITE ('ВВЕДИТЕ Х = ' ) ;
READLN (X); ,
K;~K+];
UNTIL X -mill;
WRTTELN ('Количество чисел =',К);
Г ~N
{ Конец 1
END.
Описание алгоритма.
В блоке 2 производим очистку переменной К.
В блоке 3 вводится очередное значение переменной X.
В блоке 4 количеству К прибавляется единица. Этот оператор являет
ся последним в цикле.
В блоке 5, выполняется проверка условия завершения цикла
(Х=77777).
10
