Учебники

ЛИСП — Петли

Может возникнуть ситуация, когда вам нужно выполнить блок кодовых номеров раз. Оператор цикла позволяет нам выполнять оператор или группу операторов несколько раз, и в большинстве языков программирования ниже приводится общая форма оператора цикла.

Loops

LISP предоставляет следующие типы конструкций для обработки требований зацикливания. Нажмите на следующие ссылки, чтобы проверить их детали.

Sr.No. Конструкция и описание
1 петля

Конструкция цикла — это самая простая форма итерации, предоставляемая LISP. В своей простейшей форме он позволяет выполнять несколько операторов несколько раз, пока не найдет оператор возврата .

2 цикл для

Цикл for construct позволяет вам реализовать итерацию, подобную циклу for, как это наиболее часто встречается в других языках.

3 делать

Конструкция do также используется для выполнения итерации с использованием LISP. Это обеспечивает структурированную форму итерации.

4 DOTIMES

Конструкция dotimes позволяет выполнять циклы для некоторого фиксированного числа итераций.

5 DOLIST

Конструкция dolist позволяет выполнять итерацию по каждому элементу списка.

Конструкция цикла — это самая простая форма итерации, предоставляемая LISP. В своей простейшей форме он позволяет выполнять несколько операторов несколько раз, пока не найдет оператор возврата .

Цикл for construct позволяет вам реализовать итерацию, подобную циклу for, как это наиболее часто встречается в других языках.

Конструкция do также используется для выполнения итерации с использованием LISP. Это обеспечивает структурированную форму итерации.

Конструкция dotimes позволяет выполнять циклы для некоторого фиксированного числа итераций.

Конструкция dolist позволяет выполнять итерацию по каждому элементу списка.

Изящно выход из блока

Блок и возврат позволяют изящно выйти из любых вложенных блоков в случае любой ошибки.

Функция block позволяет вам создать именованный блок с телом, состоящим из нуля или более операторов. Синтаксис —

(block block-name(
...
...
))

Функция return-from принимает имя блока и необязательное (по умолчанию nil) возвращаемое значение.

Следующий пример демонстрирует это —

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код —

Live Demo

(defun demo-function (flag)
   (print 'entering-outer-block)
   
   (block outer-block
      (print 'entering-inner-block)
      (print (block inner-block

         (if flag
            (return-from outer-block 3)
            (return-from inner-block 5)
         )

         (print 'This-wil--not-be-printed))
      )

      (print 'left-inner-block)
      (print 'leaving-outer-block)
   t)
)
(demo-function t)
(terpri)
(demo-function nil)

Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат —