Цикл loop-for-count производит указанные действия некоторое количество раз согласно заданному параметру <диапазон>. Если параметр <минимальное-значение-индекса> не задан, ему автоматически присваивается 1. CLIPS предусматривает наличие параметра <переменная-цикла>, определяющего имя локальной переменной, которая может использоваться в теле цикла для определения текущего числа итераций. В теле цикла могут быть указаны любые внешние по отношению к циклу переменные (как глобальные, так и локальные). Однако при совпадении имени переменной цикла с какой-нибудь внешней переменной внешняя переменная скрывается. Использование переменной цикла после завершения работы функции loop-for-count вне тела цикла запрещено. Определение цикла может содержать необязательный символ do между условием и первым действием тела цикла. Если параметр <минимальное-значение-индекса> изначально больше параметра <максимальное-значение-индекса>, тело цикла не будет выполнено ни разу. Функции break и return могут быть использованы для экстренного прерывания работы цикла. В теле цикла может содержаться произвольное количество действий, включая вложенные циклы или функцию if. Функция loop-for-count возвращает значение false, если для экстренного прерывания ее работы не использовалась функция return. Пример функции loop-for-count приведен ниже (см. также рис. 15.19).
Пример 15.22. Использование функции loop-for-count
(loop-for-count 2
(printout t "Hello world" crlf))
(loop-for-count (?cntl 2 4) do
(loop-for-count (?cnt2 1 3) do
(printout t ?cntl " " ?cnt2 crlf)))
Рис. 15.19.Использование функции loop-for-count
Функция progn предназначена для выполнения нескольких вычислений (действий) в рамках одной команды, т. е. эта функция позволяет группировать и объединять набор действий в одну логическую команду.