Повторяющий код можно спрятать в подпрограмму. Подпрограммы могут принимать какие то параметры, и не запрещают вызывать их рекурсивно.
Для объявления новой программы используются ключевые слова — ПРОГРАММА — КОНЕЦ ПРОГРАММЫ.
1 2 3 4 5 6 7 8 9 |
# рисуем квадрат ПРОГРАММА квадрат(размер) а = 1 повторять пока а <= 4 вперед размер поворот влево а = а + 1 конец цикла КОНЕЦ ПРОГРАММЫ |
Программа объявлена, теперь её можно запустить (ключевое слово ЗАПУСТИТЬ). Например, нарисуем квадрат с шириной стороны в 5 шагов:
1 |
ЗАПУСТИТЬ квадрат(5) |
Из подпрограммы можно выйти досрочно, если это требуется логикой программы (токен — ВЫЙТИ).
Как обычно есть и английские варианты команд. Познакомьтесь с ними на примере гипотетической процедуры:
1 2 3 4 5 6 7 |
RUN alphaJump(1, 2, 3) SUB alphaJump (a, b, c) if (c > 0) RETURN end if jump down a + b + c END SUB |
Небольшой пример использования процедур.
Соглашения и пространства имен
Регистр в названии как имен переменных, так и имени программы не имеет значения. Разрешено использовать только буквы (кириллица или латиница).
Процедуру (подпрограмму) можно объявлять где угодно, но только не внутри другой программы. Удобнее это делать после текста основной программы.
При выполнении программы Джек запоминает место, где он находился и переменные, которые были объявлены. После выполнения эти значения восстанавливаются. Внутри процедуры локальные переменные переопределят внешние. Но любые изменения внешних переменных повлияет только на выполнение программы внутри самой процедуры.
Синтаксис процедуры без параметров выглядит вот так:
1 2 3 4 |
RUN alphaJump() SUB alphaJump() jump down 5 END SUB |
т.е. скобки нужно всё равно указать, даже если нет переменных.