1. Можно ли решить задачу, рассмотренную в тексте параграфа, без процедур? В чём недостатки такого варианта?
Да, задачу можно решить без процедур, просто записав команды рисования каждого квадрата по отдельности. Однако этот вариант неудобен, так как код становится длинным, сложным для изменения и переиспользования. Если нужно изменить размер или количество квадратов, придется исправлять каждую команду вручную.
2. Попробуйте решить задачу, рассмотренную в тексте параграфа, с помощью цикла. Сравните решения, использующие процедуру и цикл. Какое из них можно легко переделать для рисования серии квадратов, расположенных иначе, чем на 3.10?
Определяем процедуру Квадрат, которая рисует квадрат со стороной 40 шагов: Квадрат { опусти_перо; повтори (4) { вперед(40); вправо(90); } подними_перо; }
Основная программа использует эту процедуру в цикле: Три_квадрата { покажись; опусти_перо; повтори (3) { Квадрат; вперед(40); вправо(90); вперед(40); влево(90); } } Этот код делает следующее:
Рисует первый квадрат. Сдвигает Черепаху вперед на 40 шагов, затем вниз на 40 шагов, поворачивая в процессе. Рисует второй квадрат. Снова сдвигается вниз и рисует третий квадрат.
3. Как вы думаете, что произойдёт, если процедура, записанная после основной программы, не вызывается внутри основной программы или другой процедуры? Будет ли при этом синтаксическая ошибка?
Если процедура не вызывается, она просто будет проигнорирована исполнителем. Синтаксической ошибки не будет, но процедура не выполнится, и ожидаемый результат не появится.
4. Как вы думаете, использование процедур в программе увеличивает или уменьшает общее количество строк в программе вместе с процедурой? А время выполнения?
Использование процедур уменьшает количество строк в программе, так как повторяющийся код записывается один раз. Это также сокращает время разработки, упрощает отладку и делает код более читаемым.
5. Можно ли использовать процедуры для сокращения времени разработки и отладки большой программы? Как это сделать?
Процедуры помогают сократить время разработки и упрощают отладку, так как изменения в одной процедуре автоматически применяются ко всем ее вызовам. Для этого нужно выделить повторяющиеся фрагменты кода и оформить их в виде процедур.
6. Напишите программы, выполнив которые, Черепаха нарисует следующие фигуры:
Для каждой из фигур напишем программы, используя процедуры для рисования квадратов и треугольников.
Определим основные процедуры: 1. Квадрат (размер 40) Квадрат { опусти_перо; повтори (4) { вперед(40); вправо(90); } подними_перо; }
2. Треугольник (равносторонний, сторона 40) Треугольник { опусти_перо; повтори (3) { вперед(40); вправо(120); } подними_перо; }
а) Один закрашенный квадрат Программа { покажись; Квадрат; вправо(45); вперед(10); опусти_перо; закрась(желтый); подними_перо; назад(10); влево(45); }
б) Четыре квадрата Программа { покажись; повтори(2) { Квадрат; вперед(40); } назад(80); вправо(90); вперед(40); влево(90); повтори(2) { Квадрат; вперед(40); } }
в) Четыре повернутых квадрата Программа { покажись; повтори(4) { вправо(45); Квадрат; вперед(40); влево(45); } }
г) Три треугольника в ряд Программа { покажись; повтори(3) { Треугольник; вперед(40); } }
д) Треугольник из трёх треугольников Программа { покажись; Треугольник; вперед(40); вправо(120); Треугольник; вправо(120); Треугольник; }
е) Большой треугольник из четырёх треугольников Программа { покажись; Треугольник; вперед(40); Треугольник; назад(40); вправо(60); вперед(40); влево(60); Треугольник; назад(40); вправо(60); вперед(40); Треугольник; }
ж) Фигура из шести треугольников Программа { покажись; повтори(3) { Треугольник; вперед(40); } назад(120); вправо(60); вперед(40); влево(60); повтори(3) { Треугольник; вперед(40); } }