- Az IF-ENDIF
Működése : az IF "megeszi" a verem tetején lévő jelzőt, ha az igaz végrahajtódik a IF - ENDIF közti rész, ha nem akkor nem.
- ELSE
Használat :
IF (itt van amit akkor kell tenni,
ha a jelző igaz)
ELSE (itt van amit akkor kell tenni, ha a jelző nem
igaz)
ENDIF
A virem
A FORTH
használ egy úgynevezett visszatérési vermet, amit FORTH-ban röviden "virem"-nek
is szoktak nevezni. A program futása során itt vannak eltárolva a visszatérési
címek, egy szó lefuttatása után innen lehet megtudni a visszatérési
címet.
Manipuláló utasítások:
>R (n ----) - a verem legfelső elemét
áthelyezi a viremre
R> ( ---- n) - a virem legfelső elemét a viremre
helyezi
R (---- n) - u.a. mit az előző, de a virem
változatlan marad
Indexes
ciklusok
- DO-LOOP ciklus :
A DO-LOOP indexes ciklus.
Veremhatása :
(indexhatár kezdőérték ---- )
Pl. irassuk ki 1-10-ig a számokat:
10 0 DO R
. LOOP
A DO az indexhatárt és a kezdőértéket a viremre teszi, a veremről pedig eltünteti. A ciklus futása során a virmen legfelül a ciklusindex, alatta a ciklushatár található meg. A futás végén a viremről is eltűnik ez a két érték.
- Kiszálláss a ciklusból (LEAVE) :
A ciklusból futása közben bármikor kiszállhatunk, ha a virem tetején lévő két értéket egyenlővé tesszük. Pont erre való a LEAVE szó.
- A DO - +LOOP ciklus :
A +LOOP a LOOP-tól annyiban tér el, hogy
-
a ciklusindexet nem 1-el növeli, hanem a vermen talált számmal
- akkor fejezi
be a ciklust, ha az index meghaladta a határt alulról ill. felülről (és nem
akkor ha ciklusindex=határ)
A +LOOP veremhatása : (n ---- )
Pl.: 0 10 DO R . -1 +LOOP
A ciklus itt most 10-től megy lefele.
Index nélküli ciklusok
- A végtelen ciklus (BEGIN - AGAIN)
A BEGIN - AGAIN a végtelenségig ismételgeti a magjában lévő részt. Kilépni belőle az EXIT szóval lehet.
- BEGIN - UNTIL ciklus
A ciklusmag minden lefutása után az UNTIL megeszik egy jelzőt a veremről, és ha az igaz akkor ugrik csak vissza a ciklus elejére.
UNTIL hatása a veremre ( f ---- )
- BEGIN - WHILE - REPEAT ciklus
A WHILE megeszik egy jelzőt a veremről, ha igaz
akkor végrehajtódik a WHILE és REPEAT közti rész, majd a REPEAT-nál a vezérlés
feltétel nélkül visszaugrik a BEGIN-re,
ha hamis akkor a REPEAT utáni résznél
folytatódik a futás.