Bedingungen
Vorbemerkung
Das Ergebnis bei der Auswertung einer Bedingung ist einer der beiden Wahrheitswerte True
und False
. Dieses Ergebnis wird in ein Hilfsregister abgelegt und mit einer Hilfsvariablen zugänglich gemacht. Zur Codierung der Wahrheitswerte benutzen wir die Zuordnung True -> 1
und False -> 0
.
a == 0
Die Übersetzung dieser Bedingung ist recht einfach. Zu beachten ist nur, dass die Hilfsvariable h zunächst auf einen festen Anfangswert (hier: 0) initialisiert wird.
Teste das Code-Schnipsel.
a != 0
Ändere das Code-schnipsel für a == 0
geeignet an.
a == b
Hier könnte man so vorgehen:
{a: III; b: IIIII; h: ...} eine weitere Hilfsvariable h_c erzeugen {a: III; b: IIIII; h: ...; h_c: } Register h ggf. leeren {a: III; b: IIIII; h: ; h_c: } Register a und Register b abbauen und Register h_c aufbauen bis mindestens eines leer ist {a: ; b: II; h: ; h_c: III} testen, ob a und b leer ist; ggf. h inkrementieren {a: ; b: II; h: ; h_c: III} transportiere den Inhalt von Register h_c zurück in Register a und Register b {a: III; b: IIIII; h: ; h_c: }
Eine Umsetzung dieser Idee könnte so aussehen:
Teste das Code-Schnipsel.
a != b
Gehe analog zum Code-Schnipsel a == b
vor.
a < b
Gehe analog zum Code-Schnipsel a == b
vor.
a <= b
Gehe analog zum Code-Schnipsel a == b
vor.