DO … LOOP ciklus
A DO … LOOP ciklus segítségével egyaránt készíthetünk elöl tesztelő és hátul tesztelő ciklust. A ciklusmagot addig hajtjuk végre, amíg a ciklus feltétel igaz.
Elöl tesztelő ciklus szintaxisa
DO WHILE feltétel
Ciklusmag
LOOP
vagy
DO UNTIL feltétel
Ciklusmag
LOOP
DO WHILE szerkezet használata
A feltétel egy logikai kifejezés lehet. A DO WHILE szerkezet használatakor a ciklusmag végrehajtása előtt a program kiértékeli a feltételt, és ha hamis akkor a végrehajtás a LOOP utasítás után folytatódik. Ha igaz, akkor lefut a ciklusmagban elhelyezett utasítás sorozat, majd visszatér a DO utasításra, és ismét kiértékeli a feltételt. A ciklusmag mindaddig újra és újra végrehajtásra kerül, amíg a feltétel nem lesz hamis. Mivel a kiértékelés a ciklus elején történik, ezért lehet hogy a ciklus egyszer sem fut le.
A DO UNTIL szerkezet abban különbözik a DO WHILE-tól, hogy a ciklusmag akkor kerül végrehajtásra, ha a feltétel nem teljesül.
EXIT DO parancs
A ciklus végrehajtását a ciklusmagban elhelyezett EXIT DO parancs segítségével is megszakíthatjuk. Az EXIT DO parancs hatására a program végrehajtása a ciklushoz tartozó LOOP-ot követő utasítással folytatódik.
WHILE ... WEND ciklus
A DO … LOOP ciklushoz elöl tesztelős változatához hasonló ciklusokat hozhatunk létre a WHILE ... WEND ciklus segítségével. A WHILE … WEND ciklus használata esetén a ciklusmag végrehajtása addig ismétlődik, amíg a feltétel értéke igaz.
WHILE feltétel
ciklusmag
WEND
Ez a szerkezet csak a Visual Basic korábbi verzióival való kompatibilitást megőrzése céljából áll rendelkezésre, helyette a rugalmasabb DO LOOP szerkezet alkalmazása ajánlott.
DO LOOP hátul tesztelő változata
Abban az esetben, ha azt szeretnénk, hogy a ciklusmag egyszer mindenképpen fusson le, használhatjuk a DO LOOP hátul tesztelő változatát. Itt a feltételt a ciklus végén helyezzük el.
Hátul tesztelő ciklus szintaxisa
DO
Ciklusmag
LOOP WHILE feltétel
vagy
DO
Ciklusmag
LOOP UNTIL feltétel
A DO … LOOP ciklus segítségével egyaránt készíthetünk elöl tesztelő és hátul tesztelő ciklust.