28. Slučky s podmienkou: REPEAT, UNTIL, WHILE, WEND

Na čo to je

FOR sa hodí, keď vieš, koľkokrát opakovať. Často to však nevieš: „opakuj, kým hráč neuhádne“, „čítaj, kým nie je koniec“. V Atari BASICu na to bol IF a GOTO (kapitola 9). Turbo-BASIC XL má dve slučky, ktoré to povedia priamo.

Ako sa to píše

Turbo Basic XL
REPEAT
  príkazy
UNTIL podmienka

„Opakuj …, až kým podmienka nezačne platiť.“ Podmienka sa skúša na konci, takže telo sa vykoná aspoň raz.

Turbo Basic XL
WHILE podmienka
  príkazy
WEND

„Kým podmienka platí, opakuj …“ Podmienka sa skúša na začiatku, takže telo sa nemusí vykonať ani raz. WEND je skratka z while end.

REPEAT … UNTILWHILE … WEND
kedy sa skúša podmienkapo telepred telom
telo sa vykonánajmenej razmožno ani raz
slučka končí, keď podmienkaplatíneplatí

Celý program

Súbor examples/loops.tbas:

Turbo Basic XL
10 REM REPEAT ... UNTIL and WHILE ... WEND
20 N=1
30 REPEAT
40   PRINT N;" ";
50   N=N*2
60 UNTIL N>1000
70 PRINT
80 REM The greatest common divisor of two numbers
90 A=84:B=36
100 WHILE A<>B
110   IF A>B
120     A=A-B
130   ELSE
140     B=B-A
150   ENDIF
160 WEND
170 PRINT "The divisor is ";A
180 REM WHILE may not run at all, REPEAT runs at least once
190 K=10
200 WHILE K<5:PRINT "WHILE ran":WEND
210 REPEAT:PRINT "REPEAT ran":UNTIL K>5

Preklad a spustenie

Basic26 loops.tbas --sim

Čo uvidíš

1 2 4 8 16 32 64 128 256 512 
The divisor is 12
REPEAT ran

Ako to funguje

Ktorú použiť

Časté chyby

Čo sa staloČo sa stane
chýba WENDerror B26024: WHILE without WEND
chýba UNTILerror B26024: REPEAT without UNTIL
UNTIL alebo WEND bez začiatkuerror B26023: there is nothing for this to close
podmienka sa v tele nikdy nezmenínekonečná slučka
podmienka UNTIL napísaná ako pre WHILEUNTIL N<1000 skončí hneď po prvom prechode – UNTIL hovorí, kedy prestať
slučky sa krížia (WHILE … REPEAT … WEND … UNTIL)error B26023: WEND without WHILE – vnútorná musí skončiť skôr

Vyskúšaj si

  1. Prepíš hru guess.abas so slučkou REPEAT … UNTIL G=SECRET.
  2. Spýtaj sa na heslo; pýtaj sa znova, kým nie je správne.
  3. Zisti, koľkokrát treba zdvojnásobiť číslo 1, aby prekročilo milión. (WHILE a počítadlo.)

Zhrnutie

Späť: 27. Podmienka na viac riadkov · Ďalej: 29. Slučka bez konca