![]()
Cykly v programu slouží k opakovanému provádění úseku kódu. AutoLISP používá dva typy cyklů:
![]()
Cykly repeat slouží ve funkcích AutoLISPu k provádění určité skupiny příkazů po pevný, předem daný počet opakování. Cyklus repeat má proto smysl například při provádění několika spolu souvisejících výpočtů, při práci s elementy na obrazovce nebo při zpracování určité množiny vstupních dat.
(repeat int [expr...])
Po vykonání všech příkazů v cyklu se hodnota kroku přičte k čítači int. V tomto okamžiku se buď příkazy v cyklu provedou znovu (na základě stejného testu, podle kterého se cyklus vykonal i původně) nebo se cyklus ukončí a běh pokračuje následující příkazem za funkcí repeat.
![]()
Následující úsek programu nejprve nastaví střed a poloměr kružnic. Dále je nastavena proměnná počet - pomocná proměnná pro kreslení kružnic. Následuje tělo cyklu, které je vykonáno 5x. V každém průchodu cyklem je vykreslena jedna kružnice:
(setq stred '(1.1 2.2 0.0))
(setq polomer 50)
(setq pocet 5)
(repeat 5)
(setq pol_kresl (+ polomer (* 3 (- pocet 1))))
;;; nastavení aktuálního poloměru kružnice
(command "_circle" stred pol_kresl)
;;; vykresli kruznici
(setq pocet (- pocet 1))
;;; zmenši počet kružnic o 1
);_ konec repeat
![]()
Cyklus while představuje alternativu k cyklu repeat. Opakovaně vyhodnocuje výrazy, dokud testexpr není rovná hodnotě nil. Cykly while tedy mají smysl zejména v případech, kdy nemůžeme dopředu určit počet opakování.
(while testexpr [expr...])
Následující úsek programu nejprve nastaví střed a poloměr kružnic, následuje test podmínky jestli je pocet kružnic, proměnná pocet > 0, pokud ano program vstoupí do smyčky a vykreslí kružnici. Na konci cyklu je proměnná pocet zmenšena o 1. Cyklus se vrátí na začátek a je opět testována podmínka:
(setq stred '(1.1 2.2 0.0))
(setq polomer 50)
(while (> pocet 0)
;;; dokud je co kreslit opakuj
(setq pol_kresl (+ polomer (* 3 (- pocet 1))))
;;; nastavení aktuálního poloměru kružnice
(command "_circle" stred pol_kresl)
;;; vykresli kruznici
(setq pocet (- pocet 1))
;;; zmenši počet kružnic o 1
);_ konec while
U příkazů, kterým nerozumíte je možné po kliknutí nad příkazem zobrazit referenční příručku.
![]()