Тема №4 Цикл for
Тема №4 Цикл for
Цикл for используется для повторения фрагментов программы заданное число раз.
Синтаксис оператора:
for i:=N1 to N2 do оператор;
или
for i:=N1 to N2 do
begin
оператор1;
оператор2;
....
end;
Составной оператор – это группа операторов, заключенная в операторные скобки begin ... end.
Здесь
i – индекс цикла (обязательно переменная целочисленного типа),
N 1 – целочисленное выражение, определяющее нижнюю границу индекса цикла,
N2 – целочисленное выражение, определяющее верхнюю границу индекса цикла, N2 должно быть больше или равно N 1, для того чтобы цикл выполнился хоть один раз.
Алгоритм выполнения оператора такой:
1. Индексу цикла присваивается значение выражения N 1.
2. Проверяется условие i<=N2. Если условие истинно, то переход к п. 3, иначе к п.6.
3. Выполняются операторы тела цикла.
4. Значение индекса цикла увеличивается на единицу (автоматически!).
5. Переход к п. 2.
6. Конец цикла.
Пример: Построить таблицу квадратов чисел от 1 до 10.
Program Square;
var i, j : integer;
begin
for i:=1 to 10 do
begin
j:=sqr(i);
writeln(i:4,j:4);
end;
end.
или проще:
Program Square;
var i: integer;
begin
for i:=1 to 10 do
writeln(i:4,sqr(i):4);
end.
Обратите внимание на указание формата вывода целого числа в операторе writeln.Число после двоеточия указывает на количество символов, отводимых для представления целого числа. Если число занимает меньшее количество цифр, то при выводе оно слева дополняется необходимым числом пробелов.
- 15 -
Цикл for … downto
Иногда возникает желание выполнить цикл for наоборот, так чтобы индекс цикла не возрастал, а убывал. Эту возможность реализует следующая конструкция:
for i:=N2 to N1 downto оператор;
Здесь подразумевается, что N2 должно быть больше или равно N 1.
Использование цикла for для построения изображений
Использование цикла for весьма эффективно при построении изображений. Например, следующая программа строит набор концентрических окружностей.
Program Concentric;
uses graphABC;
var i : integer; // для цикла for
begin
SetWindowSize (400,400);
SetBrushStyle (bsClear);
// строятся 10 окружностей с
// радиусами 20, 40, ... 200
for i:=1 to 10 do Circle(200,200,i*20);
end.
Вот более сложный пример, разберитесь с ним сами. Ответьте на вопрос: «Почему используется цикл не for … to, а for … downto?»
Program Concentric2;
uses graphABC;
var i : integer; // для цикла for
begin
SetWindowSize (400,400);
SetPenStyle(psClear);
for i:=20 downto 1 do
begin
SetBrushColor (RGB(10*i,0,0));
Circle(200,200,i*10);
end;
end.
Интересных эффектов можно добиться, используя так называемый «генератор случайных чисел». Встроенная функция random (N) возвращает случайное число в диапазоне от 0 до N– 1. Посмотрите, как эта возможность применяется в следующей программе.
Program RandomLines;
uses graphABC;
var i : integer;
begin
SetWindowSize (400,400);
for i:=1 to 200 do
Line(Random(400),Random(400),Random(400),Random(400));
end.
Задание №5. Дополните вашу графическую программу узором, получаемым с помощью цикла for.
- 16 -