Лабораторная работа 6 (4 ч)
Программирование циклических алгоритмов
Цели:
- научиться программировать циклические алгоритмы.
При реализации многократного повторения некоторых операций необходимо снова и снова повторять одни и те же операторы. Для более компактной реализации этих операций используются циклические конструкции, суть которых заключается в том, что вместо многократного переписывания одних и тех же строк программы управление в нужном месте передается предыдущим операторам с тем, чтобы они повторялись.
Имеется три вида циклических алгоритмов: цикл с предусловием (цикл While), цикл с постусловием (цикл Repeat) и цикл с заранее заданным числом повторений (цикл For).
Оператор Repeat организует выполнение цикла, состоящего из любого числа операторов, с заранее неизвестным числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется, если условие выполнения окажется истинным. Структура оператора Repeat имеет вид:
Repeat
<Оператор 1>;
<Оператор 2>;
……………….
<Оператор N>;
Until <условие>;
Оператор While организует выполнение цикла, состоящего из любого числа операторов, с заранее неизвестным числом повторений. Выход из цикла осуществляется, если условие выполнения окажется ложным. Так как истинность логического выражения проверяется в начале каждого повтора, тело цикла может не выполняться ни разу. Структура оператора While имеет вид:
While <условие> do <тело цикла>.
Оператор For организует выполнение цикла с заранее заданным числом повторений. Выполнение очередного повтора включает в себя сначала выполнение оператора, а затем присваивание переменной цикла следующего значения. Существует два варианта оператора цикла For.
For <переменная>:= <нач. знач.> to <кон. знач.> do <оператор>;
For <переменная>:= <нач. знач.> downto <кон. знач.> do <оператор>;
Первая разновидность цикла при каждой итерации увеличивает значение переменной на единицу, вторая – уменьшает.
Различные операторы цикла могут быть вкложены один в другой неограниченное число раз.
Примеры решений задач
1. Используя оператор Repeat, найти сумму первых n двузначных чисел, кратных 11 ( вводится с клавиатуры).
Program Primer1;
Var n, s, a, i: Integer;
Begin
Write('Введите количество чисел n = ');
Read(n);
s:= 0; a:= 11; i:= 0;
Repeat
If a mod 11 = 0 then
Begin
s:= s + a;
i:= i + 1;
End;
a:= a + 1;
Until (i = n) or (a > 99);
WriteLn('Искомая сумма = ', s);
End.
2. Используя оператор While, написать программу, вычисляющую значения функции с точностью до двух знаков после запятой на отрезке с шагом 2 и выводящую результаты вычислений в виде таблицы, состоящей из двух столбцов: столбца, содержащего значения аргумента и столбца, содержащего значения функции. Значения концов отрезка и шага должны вводиться с клавиатуры.
Program Primer2;
Var a, b, h, x, y: Real;
Begin
WriteLn('Введите значения концов отрезка:');
Read(a, b);
WriteLn('Введите шаг: ');
Read(h);
WriteLn('_____________');
WriteLn('| x | y |');
WriteLn('|______|______|');
x:= a;
While x <= b do
Begin
y:= x/2 + 1;
WriteLn(x: 6: 2,' | ',y: 6: 2);
x:= x + h;
End;
WriteLn('|_____________|');
End.
3. Используя оператор For, написать программу, вычисляющую сумму элементов ряда для . Значения и должны вводиться с клавиатуры.
Program Primer3;
Var x, s, a: Real;
n, i: Integer;
Begin
WriteLn('Введите x и n: ');
Read(x, n);
S:= 1; a:= 1;
For i:= 1 to n do
Begin
a:= a * (-1 / x);
s:= s + a;
End;
WriteLn('Искомая сумма = ', s: 4: 2);
End.