LISP - Boucles

Il peut arriver que vous deviez exécuter un bloc de numéros de code plusieurs fois. Une instruction de boucle nous permet d'exécuter une instruction ou un groupe d'instructions plusieurs fois et voici la forme générale d'une instruction de boucle dans la plupart des langages de programmation.

LISP fournit les types de constructions suivants pour gérer les exigences de bouclage. Cliquez sur les liens suivants pour vérifier leurs détails.

N ° Sr. Construire et description
1 boucle

le loopconstruct est la forme la plus simple d'itération fournie par LISP. Dans sa forme la plus simple, il vous permet d'exécuter certaines instructions à plusieurs reprises jusqu'à ce qu'il trouve unreturn déclaration.

2 boucle pour

La boucle pour la construction vous permet d'implémenter une itération de type boucle for comme la plus courante dans d'autres langages.

3 faire

La construction do est également utilisée pour effectuer des itérations à l'aide de LISP. Il fournit une forme structurée d'itération.

4 dotimes

La construction dotimes permet de boucler pour un nombre fixe d'itérations.

5 faire une liste

La construction dolist permet une itération à travers chaque élément d'une liste.

Sortie gracieuse d'un bloc

le block et return-from vous permet de quitter gracieusement tous les blocs imbriqués en cas d'erreur.

le blockLa fonction vous permet de créer un bloc nommé avec un corps composé de zéro ou plusieurs instructions. La syntaxe est -

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

le return-from function prend un nom de bloc et une valeur de retour facultative (la valeur par défaut est nil).

L'exemple suivant illustre ceci -

Exemple

Créez un nouveau fichier de code source nommé main.lisp et tapez le code suivant -

(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)

Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, LISP l'exécute immédiatement et le résultat renvoyé est -

ENTERING-OUTER-BLOCK 
ENTERING-INNER-BLOCK 

ENTERING-OUTER-BLOCK 
ENTERING-INNER-BLOCK 
5 
LEFT-INNER-BLOCK 
LEAVING-OUTER-BLOCK