Тема №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 -

Цикл fordownto

Иногда возникает желание выполнить цикл 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.

Вот более сложный пример, разберитесь с ним сами. Ответьте на вопрос: «Почему используется цикл не forto, а fordownto

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 -

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Цикл for…in

Из книги автора

Цикл for…in Оператор цикла for…in предназначен для просмотра всех свойств объекта. Для каждого свойства указанный цикл выполняет операторы, содержащиеся в теле цикла:for (переменная in объект) { тело цикла}Цикл for…in можно использовать для вывода на экран всех свойств объекта в


Цикл

Из книги автора

Цикл К 2007 г. Эд Уитакер выполнил свою миссию. Бо?льшая часть системы Bell была снова собрана в крупнейшую в мире коммуникационную компанию, во главе которой стоял он сам. В возрасте 65 лет, доказав все, что можно, Уитакер объявил, что уходит{375}. В соответствии с обычаями начала


2.2.1. Цикл типа “пока” (цикл с предусловием)

Из книги автора

2.2.1. Цикл типа “пока” (цикл с предусловием) Пример 1.4: Нахождение наибольшего общего делителя двух целых положительных чисел с помощью известного алгоритма Евклида.Пока X ? Y делать если X> Y то X:=X-Y иначе Y:=Y-X; Писать (‘НОД=’, X);WHILE X <> Y DO IF X> Y THEN X:=X-Y ELSE Y:=Y-X; WRITE


2.2.2. Цикл типа “до” (цикл с постусловием)

Из книги автора

2.2.2. Цикл типа “до” (цикл с постусловием) Этот цикл выполняется не менее одного разаПример 1.5: Решение предыдущей задачи. Цикл с постусловиемПовторять если X> Y то X:=X-Y иначе Y:=Y-X до X=Y;Писать (‘НОД=’, X);REPEAT IF X> Y THEN X:=X-Y ELSE Y:=Y-X UNTIL X=Y;WRITE (‘НОД=’, X);REPEAT –


2.2.1. Цикл типа “пока” (цикл с предусловием)

Из книги автора

2.2.1. Цикл типа “пока” (цикл с предусловием) Пример 2.4: Программа находит наибольший общий делитель двух целых чисел.#include <assert. h>#include <stdio. h>int main (){int x, y;printf (“Введите два целых числа через пробел ”);int r = scanf (”%d%d”, &x, &y);assert (r == 2);while (x!= y) if (x> y) x = x – y; else y =


ЦИКЛ for 

Из книги автора

ЦИКЛ for      В цикле for все три вышеуказанных действия собраны вместе. Используя цикл for, фрагмент, приведенный выше, можно записать в виде одного оператора: for(count = 1; count <= NUMBER; count++)    printf(" Будь моим Валентином! ");     В круглых скобках содержатся три выражения,


18.5. Цикл for

Из книги автора

18.5. Цикл for Общий формат цикла:for имя_перемениой in list doкоманда1 команда… doneЦикл for однократно обрабатывает всю информацию для каждого значения, включенного в список list. Чтобы получить доступ к каждому значению в списке, достаточно задать параметр имя_переменной. Командой


18.6. Цикл until

Из книги автора

18.6. Цикл until Цикл until позволяет выполнять ряд команд, пока условие остается истинным. Практически цикл until противоположен по смыслу циклу while. Цикл while является более предпочтительным, но в определенных случаях цикл until лучше справляется с работой. Формат цикла until:until


18.7. Цикл while

Из книги автора

18.7. Цикл while Цикл while выполняет ряд команд до тех пор, пока истинно условие. Этот цикл используется также для просмотра данных из файла ввода. Формат цикла while:while команда doкоманды1команды2doneМежду конструкциями while и do находится несколько команд, хотя в общем случае


Компьютерра №33 (605) Тема номера: Выставки ТЕМА НОМЕРА SIGGRAPH 2005

Из книги автора

Компьютерра №33 (605) Тема номера: Выставки ТЕМА НОМЕРА SIGGRAPH 2005 В начале августа в Лос-Анджелесе прошла выставка SIGGRAPH 2005. Полное название этого мероприятия звучит следующим образом: 32-я Международная конференция по компьютерной графике и интерактивным технологиям


ТЕМА НОМЕРА: Как родилась эта тема

Из книги автора

ТЕМА НОМЕРА: Как родилась эта тема Автор: Владимир ГуриевОбычно мы стараемся придумать на первое апреля что-нибудь веселое, но последние несколько лет редакции и без первого апреля живется все лучше и веселее, так что настроения шутить у нас не было, и в тематическом