LISP - Loops

Potrebbe esserci una situazione in cui è necessario eseguire un blocco di numeri di codice di volte. Un'istruzione loop ci consente di eseguire un'istruzione o un gruppo di istruzioni più volte e la seguente è la forma generale di un'istruzione loop nella maggior parte dei linguaggi di programmazione.

LISP fornisce i seguenti tipi di costrutti per gestire i requisiti di loop. Fare clic sui seguenti collegamenti per verificarne i dettagli.

Sr.No. Costruisci e descrizione
1 ciclo continuo

Il loopcostrutto è la forma più semplice di iterazione fornita da LISP. Nella sua forma più semplice, ti consente di eseguire alcune istruzioni ripetutamente finché non trova un filereturn dichiarazione.

2 loop per

Il costrutto loop for ti consente di implementare un'iterazione simile al ciclo for, come più comune in altri linguaggi.

3 fare

Il costrutto do viene utilizzato anche per eseguire l'iterazione utilizzando LISP. Fornisce una forma strutturata di iterazione.

4 dotimes

Il costrutto dotimes consente il ciclo per un numero fisso di iterazioni.

5 dolista

Il costrutto dolist consente l'iterazione attraverso ogni elemento di un elenco.

Uscita con grazia da un blocco

Il block e return-from ti permette di uscire con grazia da qualsiasi blocco annidato in caso di errore.

Il blockLa funzione consente di creare un blocco denominato con un corpo composto da zero o più istruzioni. La sintassi è -

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

Il return-from funzione accetta un nome di blocco e un valore di ritorno opzionale (il valore predefinito è nullo).

Il seguente esempio lo dimostra:

Esempio

Crea un nuovo file di codice sorgente denominato main.lisp e digita il seguente codice in esso -

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

Quando fai clic sul pulsante Esegui o digiti Ctrl + E, LISP lo esegue immediatamente e il risultato restituito è -

ENTERING-OUTER-BLOCK 
ENTERING-INNER-BLOCK 

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