
- •Глава 4. Операторы языка. Основные конструкции турбо паскаля
- •Составной оператор
- •4.2. Разветвляющиеся вычислительные процессы и операторы перехода
- •4.2.1. Оператор условного перехода
- •4.2.2. Оператор безусловного перехода
- •4.2.3. Оператор выбора
- •4.3. Циклические вычислительные процессы и операторы цикла
- •4.3.1. Оператор цикла с параметром
- •4.3.2. Оператор цикла с предварительным условием (с предусловием)
- •4.3.3. Оператор цикла с последующим условием (с постусловием)
- •4.3.4. Вложенные циклы
4.3. Циклические вычислительные процессы и операторы цикла
Вычислительный процесс с многократным повторением однотипных вычислений для различных значений обрабатываемых величин (переменных) называется циклическим; повторяющиеся участки вычислений - циклами; изменяющиеся в цикле величины -переменными цикла.
Для организации циклов необходимо предусмотреть:
1) задание начальных значений переменным цикла перед первым его выполнением;
2) действия, повторяемые в цикле для различных значений переменных цикла (тело цикла);
3) изменение (модификацию) переменных цикла перед каждым новым его повторением;
4) проверку условия продолжения работы цикла и переход на начало тела цикла или окончание работы цикла и выход из него.
Вход в цикл возможен только через его начало.
Различают циклы с заданным и заранее неизвестным числом повторений. Циклы первого типа называют также циклами со счетчиком. Число повторений цикла подсчитывается с помощью специальной переменной (счетчика), для которой известны начальное и конечное значения, шаг изменения. Управление циклом осуществляется на основании сравнения текущего значения счетчика с его конечным значением. Переменную – счетчик называют параметром цикла, а сам цикл– циклом с параметром.
Примером цикла с параметром может служить задача табулирования функции.
Часто приходится сталкиваться с такими циклическими вычислительными процессами, когда число повторений цикла неизвестно, а задано некоторое условие его окончания. Такие циклы называются итерационными. Примером итерационного циклического процесса служит задача вычисления суммы бесконечного ряда (если эта сумма существует) с заданной точностью.
Применение циклов в программе позволяет эффективно использовать машину, приводит к уменьшению длины программы и сокращению времени на ее составление и отладку.
В Турбо Паскале имеется три вида операторов цикла:
1) оператор цикла с параметром;
2) оператор цикла с предварительным условием;
3) оператор цикла с последующим условием.
4.3.1. Оператор цикла с параметром
Оператор цикла с параметром организует выполнение одного оператора (простого или составного) заранее известное число раз.
Формат записи оператора:
for <параметр>:= m1 to m2 do
<оператор>; {тело цикла}
или
for <параметр> := m1 to m2 do
begin
<оператор 1>;
<оператор 2>;
. . . . . . . . . . . .
<оператор n>
end;
Параметр – переменная порядкового типа; m1 – выражение, определяющее начальное значение параметра цикла; m2 – выражение, определяющее конечное значение параметра цикла. Значения выражений m1 и m2 не могут быть типа real. Операторы 1, 2, ..., n образуют тело цикла. Цикл работает следующим образом:
1) вычисляются и запоминаются значения выражений m1 и m2;
2) параметру цикла присваивается значение выражения m1;
3) значение параметра цикла сравнивается со значением выражения m2, если значение параметра меньше или равно m2, то выполняется тело цикла, в противном случае – выход из цикла;
4) значение параметра цикла увеличивается на 1 и переходим к пункту 3).
Если m1>m2, то тело цикла не выполняется ни разу.
Оператор цикла, записанный в формате
for <параметр>:= m1 downto m2 do
<оператор>; {тело цикла}
работает следующим образом:
1) вычисляются и запоминаются значения выражений m1 и m2;
2) параметру цикла присваивается значение выражения m1;
3) значение параметра цикла сравнивается со значением выражения m2, если значение параметра больше или равно m2, то выполняется тело цикла, в противном случае – выход из цикла;
4) значение параметра цикла уменьшается на 1 и переходим к пункту 3).
Если m1<m2, то тело цикла не выполняется ни разу.
После выхода из цикла параметр цикла становится неопределенным, за исключением случая, когда выход из цикла был осуществлен с помощью оператора GOTO или стандартной процедуры BREAK. В теле цикла нельзя изменять значение параметра цикла.
Задача 1. Найти среднее арифметическое N чисел и N!.
program SREDNEE_1;
var N, F: integer; X, S: real;
I: integer; (параметр цикла}
begin
Writeln('Введите N '); Readln(N);
S:=0; F:=1;
for I:=1 to N do
begin
F:=F*I; {подсчет N!}
Writeln('Введите очередное число Х '); Readln(X);
S:=S+X {подсчет суммы N чисел}
end;
S:=S/N;
Writeln ('Среднее арифметическое ', N:2, ' чисел равно ', S:6:2);
Writeln (' N! равно ', F)
end.
Задача 2. Составить программу, выводящую на экран буквы от Z до A.
program BUKVI;
var i: char; (параметр цикла}
begin
for i:='Z' downto 'A' do
Write (i, ' ')
end.
Задача 3. Числа Фибоначчи ( Fi ) определяются по формулам F0 = F1 = 1; Fi = Fi –1 + Fi –2 при i = 2, 3, ... (каждое очередное число равно сумме двух предыдущих). Вычислить n число Фибоначчи, при n>2.
Program n_Fib;
Var n, {заданное число }
I, F0, F1, F2 : Integer; {три последовательных числа Фибоначчи}
BEGIN
Write(’Введите натуральное n : ’);
ReadLn(n);
F0:=1; F1:=1;
(’Числа Фибоначчи :’, F0:4, F1:4);
For I:=3 to n do
begin
F2:=F0+F1;
Write(F2 : 4);
F0:=F1;
F1:=F2;
end;
END.
Задача
4. Даны
натуральные числа n
и k.
Вычислить:
Program Prim4;
Uses Crt;
Var
i,K,N : integer;
S: Real;
Begin
ClrScr;
Writeln('Input N and K');
ReadLn(N,K);
S:=Sqrt(K*N);
For i:=1 to N-1 do S:=Sqrt(S+K*(N-i));
WriteLn('S = ',S);
ReadLn;
End.