Лекция 6
-
Операторы цикла
Алгоритмы решения многих задач являются циклическими, т.е. для достижения результата определенная последовательность действий должна быть выполнена несколько раз. Например, программа контроля знаний.
Оператор цикла с параметром for...
Служит для организации циклов с заранее известным числом повторений. Циклы, в которых количество повторений заранее определено, называются регулярными.
Существует 2 варианта записи оператора:
Инкрементный вариант:
for i :=<начало> to <конец> do <оператор>; // шаг = 1
Декрементный вариант:
for i :=<конец> downto <начало> do <оператор>; // шаг = -1
for - для,
to - до,
downto - вниз до,
do - делать,
i - параметр цикла – переменная счетчик числа
повторений цикла ( целого типа ).
Начало и конец - выражение или константы, определяющие начальное и конечное соответственно значение параметра цикла.
Количество повторений тела цикла можно вычислить по формуле:
N = кон_знач – нач_знач + 1
Выполняется оператор for следующим образом:
-
Сначала вычисляется и запоминается начальное и конечное значения параметра цикла.
-
Далее параметру цикла присваивается начальное значение.
-
Затем значение параметра цикла сравнивается с конечным значением.
-
Далее, пока параметр цикла конечного значения (в 1 варианте оператора), выполняется очередная итерация цикла, в противном случае – выход из цикла.
Правила работы с оператором цикла for:
1. Если в цикле требуется выполнить несколько операторов, то их следует превратить в составной, используя операторные скобки.
for i :=1 to n do
begin
//инструкции цикла
end;
2. Переменная цикла должна быть объявлена в том же блоке, где находится оператор цикла.
3. Нельзя в теле цикла менять значение переменной цикла.
4. При естественном завершении цикла переменная цикла объявляется неопределенной.
Задача1. Вывести на экран буквы от A до Z (инкрементный вариант)
…..
var
m : Char; // Объявление символьного типа
begin
for m := ' A ' to ' Z ' do
Write(m,' ');
Readln
end.
Задача2. Обратный отсчет времени перед запуском (декрементный вариант)
…….
var
Seconds : byte;
begin
Writeln ( ' Obratny otchet vremeni ' ); // Обратный отсчет времени
for Seconds := 10 downto 1 do
Writeln ( ' Ostalocy ', Seconds:3, ' Sec ' );
Writeln ( ' Start ' );
Readln
end.
Задача3. Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел (инкрементный вариант).
program
Example3; … uses
SysUtils; var
x:integer; //число
y:integer; //квадрат
числа
i:integer; //счетчик
циклов begin
writeln( ' Tables square ' );
writeln( '------------------' );
writeln( ' x | y ' );
writeln( '------------------');
x:=1;
for i:=1
to 10 do
begin
y:=x*x;
writeln(x:5,' |', y:6);
x:=x+1;
end;
writeln( '------------------');
readln; end.
Tables
square
------------------
x | y
------------------
1 | 1
2 | 4
3 | 9
4 | 16
5 | 25
6 | 36
7 | 49
8 | 64
9 | 81
10 | 100
------------------