A Forth programozási nyelv

Vezérlési szerkezetek

Vezérlési szerkezetek

A feltételes utasítás

- 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

Ciklusok

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.

CASE struktúra
Egy nem szabványos struktúra: a CASE. Ha például a német nyelvű felhasználókat a G, az angol nyelvűeket az E,
a franciákat az F jelzi, akkor ez lehet egy elköszönő felirat:
: VISZLAT ( nyelvkod -----)
CASE
71 ( G betu ) OF
." AUF WIEDERSEHEN"
ENDOF
69 ( E betu ) OF
." GOOD BYE"
ENDOF
70 ( F betu ) OF
." AU REVOIR"
ENDOF
( egyeb )
." MIT KEZDJEK VELED?"
ENDCASE
;
A kulcsszavak forrása megtalálható a példaprogramok között.