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.