Функция loop-for-count
Функция loop-for-count реализует простой арифметический цикл. Её синтаксис:
(loop-for-count <границы цикла> [do] <действие>*)
<границы цикла>::= <конечный индекс>|(<переменная цикла> <начальный индекс> <конечный индекс>)|(<переменная цикла> <конечный индекс>) <начальный индекс>::= <целочисленное выражение> <конечный индекс>::= <целочисленное выражение>
Если <начальный индекс> окажется больше, чем <конечный индекс>, цикл не выполнится. Если <начальный индекс> не задан, то ему присваивается значение 1. Цикл может быть прерван командой break или return. Если позволить циклу выполниться до конца, функция loop-for-count возвратит значение FALSE. Слово do не является обязательным для заполнения. Рассмотрим примеры:
Рисунок 6.1 – выполнение цикла с указанием только конечного индекса (<границы цикла::= <конечный индекс>)
Предположим, что была заранее объявлена переменная?*x* = 1. На рисунке 6.1 осуществляется вызов функции loop-for-count и устанавливается аргумент <конечный индекс> равный 5. Начальный индекс цикла автоматически получает значение 1. Переменная цикла не объявляется. В цикле каждую итерацию выполняется проверка переменной?*x* на нечётность при помощи предикатной функции oddp и вывод соответствующего сообщения на экран. После вывода сообщения, цикл каждую итерацию увеличивает значение переменной?*x* на 1 при помощи функции bind. Цикл выводит 5 сообщений (по количеству итераций от 1 до 5) и завершается, возвращая значение FALSE. Переменная цикла не может быть объявлена вне пределов цикла, то есть использовать глобальную переменную как переменную цикла нельзя. Однако, глобальная переменная может быть использована как аргумент <конечный индекс> или как аргумент <начальный индекс>. Имя переменной цикла всегда начинается с символа?. Если объявляются одновременно аргументы <начальный индекс> и <переменная цикла>, то переменная получает значение начального индекса:
Рисунок 6.2 – выполнение цикла с указанием начального индекса, конечного индекса и объявлением переменной цикла (<границы цикла>::= (<переменная цикла> <начальный индекс> <конечный индекс>)) На рисунке 6.2 осуществляется вызов функции loop-for-count. В случае, если функции задаётся более одного аргумента, все аргументы при объявлении заключаются в круглые скобки. Первой объявляется переменная цикла?cycle, которая по правилу начинается с символа?. Следом указывается начальный и конечный индексы цикла (4 и 10 соответственно). При запуске цикла переменной?cycle будет автоматически присвоено значение начального индекса 4. В цикле выполняется функция вывода на печать сообщения о значении текущей переменной цикла. После завершения функция цикла возвращает значение FALSE.
|