204a
<< <> >>

204

Die Programmiersprache Forth
home
Über das Compile-Time- und Run-Time-Verhalten von IF THEN BEGIN usw.

Kontrollstrukturen I

1. Wie es einfach geht

Erst die Daten, dann der Ausführungsbefehl. Diese Grundregel von Forth findet auch beim Treffen von Entscheidungen in Programmen mit Hilfe von bedingten Sprüngen Anwendung. Ein Flag auf dem Stack ist das 'Datenfutter' für die 'Operatoren' IF oder UNTIL, die daraufhin entscheiden, ob gesprungen werden soll oder nicht. In vielen Programmiersprachen haben wir die Konstruktion:
IF        \ Bestimme den Flag-Wert von 'KALT'.
 KALT     \ Formulierung des Flags
THEN      \ Verlasse die Konstruktion, wenn flag=false
 SCHAL-UM \ Bedingt auszufuehrender Code
ENDIF     \ Endpunkt; koennte auch ENDTHEN heissen
In Forth gehört die Bestimmung des Flag-Wertes nicht zur Grammatik der Konstruktion. Es gibt lediglich den Operator IF mit seinem Abschlusselement THEN. Der Programmierer muss dafür sorgen, dass ein Flag bereitsteht:
( KALT?   \ Flag auf Stack )
IF        \ Spring bei 'false' vorwaerts nach THEN
 SCHAL-UM \ Bedingt auszufuehrender Code
THEN      \ Endpunkt; koennte auch ENDIF heissen
Der Rückwärtssprung mit UNTIL geht in Forth analog:
BEGIN      \ Anfangspunkt
 ... WARM? \ Der Programmierer sorgt dafuer, dass
           \   dieser Code ein Flag produziert
UNTIL      \ Spring bei 'false' zurueck nach BEGIN
( SCHAL-AB )
Sie können diese Strukturen ineinander schachteln. Wenn Sie das sauber tun, wie in
... BEGIN ... IF ... THEN ... UNTIL ...,
heißt das strukturierte Programmierung.

In ... BEGIN ... IF ... UNTIL ... THEN ...
wird Forth protestieren, wenn es auf UNTIL trifft, denn das IF ist noch nicht abgeschlossen.

Und in ... IF ... IF ... THEN ... THEN ...
gehört das erste THEN darum zum zweiten IF.
>>