Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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> | ||