Cyklus DO LOOP

Používá se k opakování těla cyklu, v závislosti na ukončovací podmínce.
Pokud je v podmínce použito While tak cyklus je ukončen pokud není podmínka splněna. Když je použito Untile, pak cyklu je ukončen při splnění podmínky. Do cyklu je možno vnořovat další cykly.

Cyklus Do Loop má dvě varianty, variantu s podmínkou na začátku a s podmínkou na konci.

Cyklus Do Loop podmínkou na začátku

Zde se nejprve testuje podmínka. Pokud je použito klíčové slovo While, bude se provádět tělo cyklu v případě, že je podmínka splněna. Pokud je použito klíčové slovo Until, bude se provádět tělo cyklu, dokud podmínka není splněna. Tato forma cyklu nemusí být provedena ani jednou.

Syntaxe příkazu

Do [While (Untile) podmínka]
   [příkazy]
   [Exit Do]
   [příkazy]
Loop

Př. Vytvoř program, který sčítá čísla, jakmile zadáte 0, pak program bude ukončen.

varianta s While

soucet = 0
cislo = Val(InputBox("Zadej číslo, pokud zadáš nulu, pak program bude ukončen."))
Do While cislo <> 0 
   soucet = soucet + cislo
   cislo = Val(InputBox("Zadej číslo, pokud zadáš nulu, pak program bude ukončen."))
Loop

varianta s Untile

soucet =0
cislo = Val(InputBox("Zadej číslo, pokud zadáš nulu, pak program bude ukončen."))
Do Untile cislo = 0 
   soucet = soucet + cislo
   cislo = Val(InputBox("Zadej číslo, pokud zadáš nulu, pak program bude ukončen."))
Loop

Použití Exit Do

Uvnitř cyklu může být použit a to i vícekrát příkaz Exit Do. Tento způsobí ukončení cyklu nezávisle na hodnotě podmínky a předá řízení na příkaz následující za příkazem Loop.

Př. Vytvoř program, který sčítá čísla, jakmile zadáte 0, pak program bude ukončen. Použijte Exit Do.

cislo = 0: soucet =0
Do
   cislo = Val(InputBox("Zadej číslo, pokud zadáš nulu, pak program bude ukončen."))
   soucet = soucet + cislo
   If cislo =0 then Exit Do 
Loop

Př. Vytvořte program, který bude načítat kladná čísla. Program ukončí načítání pokud součet čísel bude větší než 100, nebo pokud bude vybrána volba konec. Program zobrazí načtená čísla a jejich součet.

soucet = 0
cislo = val(InputBox("Zadej číslo"))
soucet = soucet + cislo: v = v & cislo & vbCrLf

Do Until soucet > 100
   k = val(InputBox("Konec 1"))
   if k = 1 then Exit Do
   cislo = val(InputBox("Zadej číslo"))
   soucet = soucet + cislo: v = v & cislo & vbCrLf
Loop

MsgBoc v,,"Výpis"
MsgBoc soucet,,"Součet"