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