Чертежник может рисовать любые фигуры из отрезков, например цифры почтового индекса. Как известно, каждая такая цифра вписана в прямоугольник (рис. 3.9).
Условимся при рисовании каждой цифры за начальную точку брать левую нижнюю точку соответствующего прямоугольника.
Программа рисования цифры 0 может иметь вид:
опусти перо сдвинь на вектор (0, 2) сдвинь на вектор (1, 0) сдвинь на вектор (0, -2) сдвинь на вектор (-1, 0) подними перо сдвинь на вектор (2, 0)
Для рисования цифры б можно использовать программу:
сдвинь на вектор (1, 2) опусти перо сдвинь на вектор (-1, -1) сдвинь на вектор (1, 0) сдвинь на вектор (0, -1) сдвинь на вектор (-1, 0) сдвинь на вектор (0, 1) подними перо сдвинь на вектор (2, -1)
♦ Для чего нужна последняя команда?
А теперь представьте, что необходимо составить алгоритм рисования почтового индекса города Красноярска — 660000.
Самый простой вариант — составить очень длинную программу, в которой дважды повторить алгоритм рисования цифры 6 и четырежды — цифры 0.
Но есть и другой способ. Оказывается, Чертежник может «запомнить», как рисуется та или иная цифра. Для решения основной задачи (рисования почтового индекса 660000) достаточно «научить» Чертежника рисовать цифру 6 и цифру 0. Для этого алгоритм рисования цифры нужно предварительно оформить в виде процедуры (вспомогательного алгоритма).
Процедура рисования цифры 0 будет выглядеть так:
ПРОЦ цифра_0 НАЧАЛО
опусти перо сдвинь на вектор (0, 2) сдвинь на вектор (1, 0) сдвинь на вектор (0, -2) сдвинь на вектор (-1, 0) подними перо сдвинь на вектор (2, 0)
КОНЕЦ
Строка ПРОЦ цифра 0 называется заголовком процедуры. Имя процедуры — цифра О. Алгоритм рисования буквы помещается чуть правее между служебными словами НАЧАЛО и КОНЕЦ.
Процедура рисования цифры 6 будет выглядеть так:
ПРОЦ цифра_6 НАЧАЛО
сдвинь на вектор (-1, -1) сдвинь на вектор (1, 0) сдвинь на вектор (0,-1) сдвинь на вектор (-1, 0) сдвинь на вектор (0,1) подними перо сдвинь на вектор (2, -1)
КОНЕЦ
Приказ на выполнение вспомогательного алгоритма (процедуры) называется вызовом процедуры и записывается в основном алгоритме.
Теперь запишем основной алгоритм, с помощью которого будет нарисован индекс 660000:
переведи в точку (1, 1) цифра_6 цифра_6 цифра_0 цифра_0 цифра_0 цифра_0
♦ К какому типу алгоритмов относится этот основной алгоритм?