====== Исполнитель черепашка ====== **Условие задачи** {{:wiki:turtle_task.jpg|}} **Ключ к решению:** Если исполнитель "черепашка" совершает два **предопределенных** действия: перемещение вперед на **заданное расстояние** и поворот направо на **заданный угол**, то при определенном количестве повторов, "черепашка" вернется в ту точку из которой началось движение, если число, которое получается при делении 360 на величину угла, целое. Чем больше угол поворота, тем за меньшее количество повторов "черепашка" вернется в исходную точку. Если угол поворота равен 1, замкнутая фигура будет иметь 360 углов. //Сумма внешних углов правильного многоугольника - 360 градусов.// **Очевидно, что величина угла и количество повторов взаимосвязаны.** Эта взаимосвязь становиться ясна, если мы поймем, что в момент возвращения "черепашки" в исходную точку, она совершает суммарный поворот на 360 градусов и каждый повтор есть равная угловая часть этой суммы. Пусть X - количество повторов, A - величина внешнего угла поворота,- искомая формула: X = 360/A или A = 360/X Проверим на простых упражнениях: |Повтори 4 [Вперёд 50 Направо 90] | 360/90 = 4 или 360/4 = 90 | "Черепашка" рисует квадрат | С целью внести дополнительную сложность в нахождение ответа, задача может быть информационно усложнена, например, так: |Повтори 25 [Вперёд 50 Направо 90] | 360/90 = 4 или 360/4 = 90 | "Черепашка" рисует квадрат | Но сути решения это не меняет, просто "Черепашка" "обойдет" нарисованный квадрат несколько раз. ==== Упражнение ==== Прежде, чем решить приведенную выше задачу, пройдите ряд простых заданий: * [[http://intepra.ru/turtle/terrapin_gia_a6_v1.html|вариант 1]] - преобразуйте квадрат в треугольник, в шестиугольник и ромб * [[http://intepra.ru/turtle/terrapin_gia_a6_v3.html|вариант 2]] - внесите изменения в код так, чтобы 2 квадрата касались вершинами и были расположены напротив друг друга * [[http://intepra.ru/turtle/terrapin_gia_a6_e.html|вариант 3]] - напишите программу, которая нарисует, изображенную на рисунке фигуру: {{:gia:4_romba.png?200|}} ==== Дополнительные варианты фигур ==== **Необычный восьмиугольник** repeat 8[ repeat 8[ forward 50 turn 45 ] turn 45 ] * [[http://intepra.ru/turtle/terrapin_ru.htm|Орнамент]] Если Вы справились со всеми заданиями и у Вас осталось время:[[http://intepra.ru/turtle/tangram.html|tangram]] Исходный код: [[http://intepra.ru/turtle/terrapin_gia_a6.zip|terrapin_gia_a6.zip]] ==== Python Turtle ==== Если Вы повторяете материал, после того, как ознакомились с основными командами языка программирования **Python**, используйте для проверки решения поставленных задач, среду исполнителя: ** Python Turtle ("Черепашка")** [[http://pythonturtle.org/]] - Учебный игровой тренажер, позволяющий в деятельностной игровой форме осваивать принципы алгоритмизации, визуализировать действия исполнителя, интерпретирующего программный код, написанный на языке Python. На рисунке представлен пример, моделирующий вариант решения одной из задач ГИА: {{:wiki:image002_.jpg|}} Полагаю Вас не должно "испутать" то, что имена переменных на данном примере не соответствуют именам переменных в предыдущих примерах и обозначают: n - количество повторов, x - расстояние, которое преодолевает "Черепашка" за одно действие, а угол программа вычисляет автоматически. ==== Упражнение ==== Напишите алгоритм, позволяющий вернуться "Черепашке" в исходную точку, повторно совершая два предопределенных действия (движение вперед и поворот), если известно, что x = 30 # расстояние при движении вперед a = 40 # угол при повороте направо # допишите программный код # Внимание! Количество повторов программа должна вычислить автоматически. ==== Упражнение ==== Если Вы уже имели дело с [[http://ru.wikipedia.org/wiki/Блок-схема|блок-схемами]], перейдите в программу [[http://www.lucidchart.com|lucidchart]] и составьте блок-схему алгоритма программы, следуя которой, исполнитель "Черепашка" рисует правильные многоугольники (для первого варианта: известно количество повторов). Сравните результат, который у Вас получился с [[help_turtle_chart|данным результатом]] (если желаете оценить свой уровень - заранее не смотрите подсказку). **Фрактальная графика (дерево)** import random def tree(size): width(size/25) go(size) if (size > 2): scale = random.randrange(20)/100.0 + 0.6 angle = random.randrange(10) + 30.0 turn(angle/2) tree(size*scale) turn(-angle) tree(size*scale) turn(angle/2) go(-size) reset() color("green") go(-50) tree(50) {{:practicum:pytree.png?300|}} from turtle import * import random def tree(size): width(size/25 + 1) fd(size) if (size > 2): scale = random.randrange(11)/50.0 + 0.4 angle = random.randrange(5) + 40.0 rt(angle/2) tree(size*scale) lt(angle) tree(size*scale) rt(angle/2) fd(-size) reset() lt(90) color("green") fd(-70) tree(70)