- •1. Структура программы.
- •2. Раздел объявлений.
- •3. Раздел исполняемых операторов.
- •4. Решение вычислительных задач.
- •5. Структура графической программы.
- •6. Графические операторы.
- •7. Решение графических задач.
- •8. Блок операторов.
- •9. Оператор ветвления.
- •10. Решение задач на ветвления.
- •11. Оператор цикла с параметром.
- •12. Решение задач на цикл с параметром.
- •13. Двойные и тройные циклы.
- •14. Решение задач на двойные циклы.
- •15. Решение задач на циклы по окружности.
- •16. Использование генератора случайных чисел.
- •17. Операции над строками.
- •18. Решение задач на обработку строк.
- •19. Функции пользователя.
- •20. Построение графиков функций.
- •21. Решение задач на построение графиков функций.
- •22. Подпрограммы.
- •23. Решение задач на подпрограммы.
- •1. Написать программу для построения изображения:
- •2. Добавьте в вашу программу следующие элементы:
- •3. Дополнительно добавьте следующие элементы.
- •24. Задача «Звездный коврик».
- •25. Понятие массива.
- •26. Объявление массивов в программе.
- •27. Заполнение одномерных массивов данными.
- •28. Решение простых задач на массивы.
- •29. Решение задач средней сложности.
- •30. Сортировка элементов массива.
- •31. Решение задач на сортировку.
- •32. Заполнение двухмерных массивов данными
- •33. Решение задач на двухмерные массивы.
13. Двойные и тройные циклы.
У двойных циклов должно быть два изменяющихся параметра:
For параметр1:=НЗ1 To КЗ1 Do
For параметр2:=НЗ2 To КЗ2 Do Оператор(блок);
У тройных циклов должно быть три изменяющихся параметра:
For параметр1:=НЗ1 To КЗ1 Do
For параметр2:=НЗ2 To КЗ2 Do
For параметр3:=НЗ3 To КЗ3 Do Оператор(блок);
Примеры:
For n1:=1 To 15 Do Begin x:=n1*40;Circle(x,40,10); End;
Даст следующую картину:
For n1:=1 To 15 Do
For n2:=1 To 11 Do Begin x:=n1*40;y:=n2*40; Circle(x,y,10); End;
Даст следующую картину:
For n1:=1 To 15 Do
For n2:=1 To 11 Do
For n3:=1 To 4 Do Begin x:=n1*40;y:=n2*40;r:=n3*10;Circle(x,y,r); End;
Даст следующую похожую на салфетку картину:
14. Решение задач на двойные циклы.
Задача 1. Построить изображение дома с помощью двойного цикла.
Задача 2. «Шахматная доска». Построить следующее изображение.
Схема решения:
Введем два параметра:
n1 – номер столбца, n1=1,2,3,….8
n2 – номер строки, n2=1,2,3,…8
Тогда координаты левого верхнего угла каждой клетки можно найти как:
x=n1*40, y=n2*40
а координаты нижнего правого угла будут на 40 пикселей больше:
xk=x+40; yk=y+40;
Таким образом, используя двойной цикл, мы можем нарисовать всю доску:
Для всех n1 от 1 До 8 Делать
Для всех n2 от 1 До 8 Делать блок (x=n1*40; y=n2*40; xk=x+40; yk=y+40; bar(x,y,xk,yk))
Проблема: как закрасить клетки в шахматном порядке?
Обратим внимание на то, что сумма n1+n2 для черных клеток всегда четная, а для белых нечетная.
Можно поступить так:
Если (n1+n2) mod 2=0 То черный цвет Иначе белый цвет
Теперь можно написать программу:
Program Chess; Uses Graph; Var gd,gm,n1,n2,x,y,xk,yk: Integer; Begin gd:=Detect; InitGraph(gd,gm,’’); SetFillStyle(1,2); Bar(20,20,380,380); For n1:=1 To 8 Do For n2:=1 To 8 Do Begin x:=n1*40;y:=n2*40;xk:=x+40;yk:=y+40; If (n1+n2) mod 2=0 Then SetFillStyle(1,0) Else SetFillStyle(1,15); Bar(x,y,xk,yk); End; ReadLn; CloseGraph; End. |
Изо зеленой доски
Координаты углов Выбор цвета заливки Изо клетки |
Задача 3. «Шашки». Построить следующее изображение.
Задача 4. «Уголки». Построить следующее изображение.
Задача 5. «Трехцветная доска». Построить следующее изображение.
15. Решение задач на циклы по окружности.
Задача 1. «Одуванчик». Построить следующее изображение:
Схема решения:
В качестве параметра цикла возьмем номер лепестка, который будет принимать значения 0,1,2,3,4,….,21 (всего 22 лепестка)
Угол отклонения от оси абсцисс для лепестка номер 0 будет равен -45 градусов (-/4)
Угол отклонения от оси абсцисс для лепестка номер 21 будет равен 225 градусов (5*/4)
Угол между соседними лепестками будет (5*/4-(-/4))/21=/14
Формула для угла лепестка номер n будет U=n*/14-/4
Зная угол можно найти координаты центра лепестка:
x=320+100*cos(u) и y=240-100*sin(u)
Так как координаты получатся нецелыми числами, то их нужно будет округлить до целых с помощью функции Round (Round(3.762)=4).
Теперь можно написать программу:
Program Oduvan; Uses Graph; Var gd,gm,n,x,y: Integer; u: Real; Begin gd:=Detect; InitGraph(gd,gm,’’); For n:=0 To 21 Do Begin u:=n*Pi/14-Pi/14; x:=Round(320+100*Cos(u));y:=Round(240-100*Sin(u)); SetColor(2);Line(320,240,x,y); SetColor(15); Circle(x,y,10); SetFillStyle(1,15); FloodFill(x,y,15); End; SetColor(2);Line(320,240,320,480); ReadLn; CloseGraph; End. |
Вычисляем угол Находим координаты Рисуем отрезок Рисуем окружность Заливаем окружность Рисуем стебель |
Задача 2. «Ромашка». Построить следующее изображение: