Урок №25. Вкладені
цикли.
Повторимо
правила запису команд повторення у задачах.
Завдання 1. Доповни код побудови п’ятикутника.
Завдання 2. Заповни пропуски в заголовку циклу з
лічильником, якщо змінна і
має початкове значення 3, останнє значення 9, крок 3.
Завдання 3. Заповни пропуски в заголовку циклу з
лічильником, якщо змінна і має початкове значення 5, крок 2,
кількість значень 4.
Завдання 4. Встановити відповідність між командами
та їх призначення.
Команди
|
Призначення
|
|
turtle.down()
|
Підняти курсор
|
|
turtle.left(45)
|
Опустити курсор
|
|
turtle.backward(100)
|
Побудова кола
|
|
turtle.forward(100)
|
Переміщення назад
|
|
turtle.circle(100)
|
Переміщення вперед
|
|
turtle.right(45)
|
Поворот
за годинниковою стрілкою
|
|
turtle.up()
|
Поворот
проти годинниковою стрілкою
|
Ознайомимось детальніше з командою circle побудови кола
Зауваження! Після
побудови кола черепашка знаходиться в тій самій точці як до побудови, а коло
міститься зліва від напрямку, у якому дивиться черепашка.
Код для першого
ряду кіл виглядає так:
Щоб над першим
рядом кіл розташувати ще один ряд кіл потрібно виконати такі дії:
1) Перемістити
курсор в точку (0;60)
2) Скопіювати код
для побудови першого ряду кіл
Щоб над двома
рядами кіл розташувати ще один ряд кіл потрібно виконати такі дії:
1) Перемістити
курсор в точку (0;120)
2) Скопіювати код
для побудови першого ряду кіл
Щоб над двома
рядами кіл розташувати ще один ряд кіл потрібно виконати такі дії:
1) Перемістити
курсор в точку (0;120)
2) Скопіювати код
для побудови першого ряду кіл
Для побудови
усього трьох рядів кіл ми отримаємо доволі велику та громіздку програму
А якщо таких рядів
має бути 5 або 120?
Якщо уважно
переглянути код програми, то видно, що різниця у побудові рядів є лише
значення, які переміщають курсор по осі у.
Щоб спростити
код, вкладемо один цикл всередину іншого. Лічильником внутрішнього циклу є
змінна і , що набуває значення 0, 1,
2, 3, 4, а лічильником зовнішнього циклу буде змінна у, що набуватиме значення 0, 60, 120, 180, 240 (різниця між
значеннями дорівнює 60). То діапазон для зовнішнього циклу буде range(0,241,60)
Код програми набуде вигляду:
Цикл такого типу
називається вкладеним.
Тут внутрішній цикл буде створювати
зображення одного ряду кіл, а зовнішній
– переміщувати курсор на початок нового ряду.
Приклад 2. Побудуємо ось таку сніжинку.
У побудові сніжинки
потрібно реалізувати за допомогою внутрішнього циклу побудову маленької зірочки.
Код програми
буде мати вигляд:
Приклад 3. Побудуємо піраміду з прямокутних
цеглин.
Код побудови
однієї цеглини із зазначеними розмірами має вигляд (курсор має повернутися в
початкове положення):
Оптимізуємо
даний код за допомогою циклу:
Внутрішній цикл
будуватиме ряд прямокутних цеглин. Щоб перейти від побудови однієї цеглини до
наступної потрібно після побудови прямокутника додати команду
Оскільки є 10
рядів цеглин, то зовнішній цикл буде виконуватися 10 разів. А на кожній
ітерації зовнішнього циклу буде виконуватися тіло внутрішнього циклу стільки
разів, скільки цеглин у рядку.
Піраміду
малюватимемо зверху вниз. Тоді після побудови кожного рядка кількість цеглин
наступного рядка збільшуватиметься на 1.
З малюнку видно,
що якщо початкове положення черепашки (0,0) зіставити з верхнім лівим кутом
найвищої цеглини піраміди, то координати початку наступних рядів будуть від’ємними.
Визначимо
координати лівих верхніх кутів перших цеглин 2-го і 3-го ряду, якщо одна
цеглина має розміри 40х20.
Зовнішній цикл
буде мати вигляд: