Вложенные циклы и их использование при работе с графикой в АВС Pascal 1
Цикл - многократное повторение последовательности действий по некоторому условию. Тело цикла - последовательность действий, которые необходимо выполнить многократно. 2
Типы циклов 1. Цикл с предусловием (цикл-пока) наиболее универсальная циклическая структура. Реализуется оператором While. Формат оператора: while do ; Тело цикла выполняется до тех пор, пока значение логического выражения = true (истина) 3
Типы циклов 2. Цикл с постусловием имеет формат: repeat until ; Выполнение операторов тела цикла заканчивается, когда логическое выражение принимает значение true. Тело цикла с постусловием выполняется хотя бы один раз. 4
Типы циклов 3. Цикл с параметром имеет два варианта записи: 1) for I: = In to Ik do ; 2) for I:= In downto Ik do, где I - параметр цикла, In - начальное значение параметра, Ik -конечное значение параметра Выполнение операторов тела цикла повторяется до тех пор, пока значение параметра лежит в интервале между In и Ik. 5
Вложенные циклы Если в теле цикла содержится другой цикл, то такие циклы называются вложенными. При организации вложенных циклов выделяются внешний и внутренний циклы. Цикл, содержащий в себе другой цикл, называют внешним, а цикл, содержащийся в теле другого цикла – внутренним Внутренний и внешний циклы могут быть любыми из трёх видов: цикл с параметром, цикл с предусловием или цикл с постусловием. 6
Вложенные циклы При использовании вложенных циклов необходимо соблюдать следующее правило: все операторы внутреннего цикла должны полностью располагаться в теле внешнего цикла. При организации вложенных циклов изменение значений параметра (или управляющей переменной) внешнего цикла происходит только тогда, когда полностью отработает внутренний цикл 7
Пример 1 Разработать программу для создания серии повторяющихся по вертикали и горизонтали квадратов. Задать толщину контура, цвет контура и заливку фигур. 8
Словесное описание алгоритма Квадрат создаем как графический примитив прямоугольник с равными сторонами. Прямоугольник задается с помощью процедуры Rectangle(x1,y1,x2,y2), где x1,y1- координаты верхнего левого угла; x2,y2 – координаты нижнего правого угла. Для решения задачи используем вложенные циклы. Внешний и внутренний цикл имеют тип цикл с параметром. 9
Словесное описание алгоритма ( продолжение ) Во внутреннем цикле будем изменять координаты по горизонтали, соответственно получим повторяющиеся по горизонтали изображения. Во внешнем цикле будем изменять координаты по вертикали, соответственно получим повторяющиеся ряды изображений, полученных в результате выполнения внутреннего цикла. 10
Программа 1 Program Primer1; uses GraphABC; {подключение модуля ABC} var i, j, x, y: integer; begin SetPenWidth(5); {задается толщина контура} SetPenColor(clblue); {задается цвет контура} SetBrushColor(clred); {задается цвет заливки } SetBrushStyle(7); {задается стиль заливки } y:=5; {начальное значение координаты Y} {длина стороны квадрата =50} {расстояние между квадратами = 10} 11
Продолжение программы 1 for i:=1 to 4 do begin x:=5; { начальное значение координаты X} for j:=1 to 5 do begin rectangle (x, y, x+50, y+50); x:=x+50+10; end; y:=y+10+50; end; end. 12
Результат выполнения программы 13
j=1 j=2 j=3 j=4 j=5 i=1 i=2 i=3 i=4 На этом слайде в режиме анимации представлен процесс последовательного выполнения внешнего и внутреннего циклов for i:=1 to 4 do begin x:=5; for j:=1 to 5 do begin rectangle(x,y,x+50,y+50); x:=x+50+10; end; y:=y+10+50; end; end. p значения параметра внешнего цикла значения параметра внутреннего цикла 14
Пример 2 Разработать программу для создания серии повторяющихся по вертикали и горизонтали квадратов. Длину стороны квадрата, расстояние между квадратами и размер окна вывода результатов задавать путем ввода соответствующих значений с клавиатуры. 15
Программа 2 Программа 2 Program Primer1; uses GraphABC; var i, j, x, y, a, d, m, n: integer; begin SetPenWidth(5); SetPenColor(clblue); SetBrushColor(clred); SetBrushStyle(7); y:=5; Writeln('a='); Readln(a); {ввод длины стороны квадрата} Writeln('d='); Readln(d); {ввод расстояния между квадратами} Writeln('m='); Readln(m); {ширина окна вывода результата} Writeln('n='); Readln(n); {высота окна вывода результата} SetWindowSize(m,n); {задание размера окна вывода результата} 16
Программа 2 (продолжение) y:=5; while y<=n do begin x:=5; while x<=m do begin rectangle (x, y, x+a,y+a); x:=x+a+d; end; y:=y+a+d; end; end. 17
Результат выполнения программы На данном слайде представлен результат выполнения программы при a=30, d=20 18
Практическая работа Разработать программу для создания серии повторяющихся по вертикали и горизонтали окружностей. Задать толщину контура, цвет контура и заливку фигур. 19
Домашнее задание Разработать программу для создания повторяющихся графических примитивов: Задать толщину контура, цвет контура и заливку фигур. Размер стороны квадрата, радиуса окружности, расстояние между фигурами и размер окна вывода результатов задавать путем ввода соответствующих значений с клавиатуры. 20