Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
turtle [2013/09/27 10:09] super_admin [Упражнение] |
turtle [2021/09/20 15:09] (текущий) super_admin |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Исполнитель черепашка ====== | ====== Исполнитель черепашка ====== | ||
| - | **Описание задачи** | + | **Условие задачи** |
| {{:wiki:turtle_task.jpg|}} | {{:wiki:turtle_task.jpg|}} | ||
| Строка 6: | Строка 6: | ||
| **Ключ к решению:** | **Ключ к решению:** | ||
| - | Если исполнитель "черепашка" совершает два **предопределенных** действия: перемещение вперед на **заданное расстояние** и поворот направо на **заданный угол**, то при определенном количестве повторов, "черепашка" вернется в ту точку из которой началось движение. Чем больше угол поворота, тем за меньшее количество повторов "черепашка" вернется в исходную точку. Чем меньше угол поворота, тем больше фигура, которую описывает черепашка, будет походить на окружность и тем больше повторов потребуется "черепашке", чтобы вернуться в исходную точку. | + | Если исполнитель "черепашка" совершает два **предопределенных** действия: перемещение вперед на **заданное расстояние** и поворот направо на **заданный угол**, то при определенном количестве повторов, "черепашка" вернется в ту точку из которой началось движение, если число, которое получается при делении 360 на величину угла, целое. Чем больше угол поворота, тем за меньшее количество повторов "черепашка" вернется в исходную точку. Если угол поворота равен 1, замкнутая фигура будет иметь 360 углов. |
| + | |||
| + | //Сумма внешних углов правильного многоугольника - 360 градусов.// | ||
| **Очевидно, что величина угла и количество повторов взаимосвязаны.** | **Очевидно, что величина угла и количество повторов взаимосвязаны.** | ||
| Строка 12: | Строка 14: | ||
| Эта взаимосвязь становиться ясна, если мы поймем, что в момент возвращения "черепашки" в исходную точку, она совершает суммарный поворот на 360 градусов и каждый повтор есть равная угловая часть этой суммы. | Эта взаимосвязь становиться ясна, если мы поймем, что в момент возвращения "черепашки" в исходную точку, она совершает суммарный поворот на 360 градусов и каждый повтор есть равная угловая часть этой суммы. | ||
| - | Пусть X - количество повторов, A - величина угла поворота,- искомая формула: X = 360/A или A = 360/X | + | Пусть X - количество повторов, A - величина внешнего угла поворота,- искомая формула: X = 360/A или A = 360/X |
| Проверим на простых упражнениях: | Проверим на простых упражнениях: | ||
| Строка 25: | Строка 27: | ||
| ==== Упражнение ==== | ==== Упражнение ==== | ||
| - | |||
| - | **Теория утверждается практикой.** | ||
| Прежде, чем решить приведенную выше задачу, пройдите ряд простых заданий: | Прежде, чем решить приведенную выше задачу, пройдите ряд простых заданий: | ||
| * [[http://intepra.ru/turtle/terrapin_gia_a6_v1.html|вариант 1]] - преобразуйте квадрат в треугольник, в шестиугольник и ромб | * [[http://intepra.ru/turtle/terrapin_gia_a6_v1.html|вариант 1]] - преобразуйте квадрат в треугольник, в шестиугольник и ромб | ||
| - | * [[http://intepra.ru/turtle/terrapin_gia_a6_v3.html|вариант 2]] | + | * [[http://intepra.ru/turtle/terrapin_gia_a6_v3.html|вариант 2]] - внесите изменения в код так, чтобы 2 квадрата касались вершинами и были расположены напротив друг друга |
| * [[http://intepra.ru/turtle/terrapin_gia_a6_e.html|вариант 3]] - напишите программу, которая нарисует, изображенную на рисунке фигуру: | * [[http://intepra.ru/turtle/terrapin_gia_a6_e.html|вариант 3]] - напишите программу, которая нарисует, изображенную на рисунке фигуру: | ||
| {{:gia:4_romba.png?200|}} | {{:gia:4_romba.png?200|}} | ||
| - | После того, как данное задание будет выполнено, испытайте свои навыки на следующих заданиях (ссылки указывают на одно задание): | + | ==== Дополнительные варианты фигур ==== |
| - | * [[https://docs.google.com/document/d/1-x1yy_p-bxphPDQ5iep5pVOlRjSzUxpr_S2Jzym50WI/edit?authkey=CN7Qq_0J | Дополнительные задачи]] | + | **Необычный восьмиугольник** |
| - | * [[http://intepra.ru/wp-content/uploads/2011/03/cherepashka3.pdf | Дополнительные задачи (pdf) ]] | + | |
| - | **//Попробуйте сперва решить задачу в уме (можно пользоваться черновиком) и только для проверки правильности решения, используйте среду исполнителя!//** | + | <code> |
| + | repeat 8[ | ||
| + | repeat 8[ | ||
| + | forward 50 | ||
| + | turn 45 | ||
| + | ] | ||
| + | turn 45 | ||
| + | ] | ||
| - | Повышенный уровень сложности: | + | </code> |
| - | * [[http://intepra.ru/wp-content/uploads/2011/03/terrapin_ru_4.html|Снежинка]] | ||
| * [[http://intepra.ru/turtle/terrapin_ru.htm|Орнамент]] | * [[http://intepra.ru/turtle/terrapin_ru.htm|Орнамент]] | ||
| - | * [[http://en.literateprograms.org/Turtle_graphics_%28JavaScript%29|ссылка на прототип]] | ||
| Строка 64: | Строка 68: | ||
| Полагаю Вас не должно "испутать" то, что имена переменных на данном примере не соответствуют именам переменных в предыдущих примерах и обозначают: n - количество повторов, x - расстояние, которое преодолевает "Черепашка" за одно действие, а угол программа вычисляет автоматически. | Полагаю Вас не должно "испутать" то, что имена переменных на данном примере не соответствуют именам переменных в предыдущих примерах и обозначают: n - количество повторов, x - расстояние, которое преодолевает "Черепашка" за одно действие, а угол программа вычисляет автоматически. | ||
| + | |||
| + | |||
| ==== Упражнение ==== | ==== Упражнение ==== | ||
| Строка 79: | Строка 85: | ||
| Сравните результат, который у Вас получился с [[help_turtle_chart|данным результатом]] (если желаете оценить свой уровень - заранее не смотрите подсказку). | Сравните результат, который у Вас получился с [[help_turtle_chart|данным результатом]] (если желаете оценить свой уровень - заранее не смотрите подсказку). | ||
| + | **Фрактальная графика (дерево)** | ||
| + | |||
| + | <code python> | ||
| + | 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) | ||
| + | </code> | ||
| + | |||
| + | {{:practicum:pytree.png?300|}} | ||
| + | <code Python> | ||
| + | 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) | ||
| + | </code> | ||