204a
<< <> >>

204

De programmeertaal Forth
home
Over het compile-time en run-time gedrag van IF THEN BEGIN enz.

Controlestructuren I

1. Hoe het simpel kan

Eerst de data, dan de operatie. Deze grondregel van Forth gaat ook op bij het nemen van beslissingen in een programma door middel van voorwaardelijke sprongen. Een vlag op stack is het 'data-voer' voor de 'operatoren' IF of UNTIL die vervolgens beslissen of er zal worden gesprongen. In veel programmeertalen is de constructie:
IF       \ Bepaal de vlagwaarde van 'koud'.
 koud    \ Formulering van de vlag
THEN     \ Verlaat de constructie als vlag=false.
 das-om  \ Voorwaardelijk uit te voeren code
ENDIF    \ Eindpunt; zou ook ENDTHEN kunnen heten.
In Forth is de waardebepaling van de vlag geen grammaticaal onderdeel van de constructie. Er is alleen de operator IF met zijn afsluiter THEN. De programmeur moet er voor zorgen dat er een vlag klaarstaat:
( koud?    \ Vlag op stack )
IF         \ Spring bij 'false' vooruit naar THEN.
 das-om    \ Voorwaardelijk uit te voeren code
THEN       \ Eindpunt; zou ENDIF kunnen heten
De achterwaartse sprong met UNTIL gaat in Forth analoog:
BEGIN      \ Beginpunt
 ... warm? \ De programmeur zorgt ervoor dat
           \   deze code een vlag produceert.
UNTIL      \ Spring bij 'false' terug naar BEGIN.
( das-af )
Je kunt deze constructies in elkaar nesten. Als je dat netjes doet, zoals in
... BEGIN ... IF ... THEN ... UNTIL ...
heet dat gestructureerd programmeren.

In ... BEGIN ... IF ... UNTIL ... THEN ...
zal Forth protesteren als hij UNTIL tegenkomt, want de IF is nog niet afgesloten.

En in ... IF ... IF ... THEN ... THEN ...
hoort de eerste THEN daarom bij de tweede IF.
>>