i

Exkurs - MyKaGoto

Programme mit Sprungbefehlen

Die Ablauflogik eines MyKa-Programms wird mit Hilfe von Kontrollanweisungen (wie z.B. der Wiederholeanweisung while ...) festgelegt.

links
while nichtVorWand:
  ziegelHinlegen
  schritt
#while

Die Ablauflogik kann aber auch mit Hilfe von Sprungbefehlen beschrieben werden. Das folgende Flussdiagramm zeigt, wie die einzelnen Anweisungen und Bedingungen verknüpft werden müssen.

Programmablaufplan

Ein MyKaGoto-Programm setzt die Verknüpfung von Anweisungen und Bedingungen mit Hilfe von Sprungmarken und Sprungbefehlen wie folgt um:

links
label .L0
if nichtVorWand: goto .L1
else: goto .L2
label .L1
ziegelHinlegen
schritt
goto .L0
label .L2

Wir werden solche MyKaGoto-Programme auch in einer strukturierten Form benutzen. Ein zugehöriges strukturiertes MyKaGoto-Programm ist eine Liste bestehend aus Label-Anweisung-Paaren.

[
(None, ['links'])
('.L0', ['noop'])
(None, ['if', ['nichtVorWand'], ['goto', '.L1'], ['goto', '.L2']])
('.L1', ['noop'])
(None, ['ziegelHinlegen'])
(None, ['schritt'])
(None, ['goto', '.L0'])
('.L2', ['noop'])
]

Die Codesprache Goto

Syntax und Semantik der Sprache Goto werden hier nur informell beschrieben.

Goto-Programme bestehen aus Anweisungen, die mit natürlichen Zahlen als Marken versehen sind. In jeder Zeile des Quelltextes steht nur eine Anweisung. Der Einfachheit haber werden nur die benötigten Marken dargestellt. Es gibt verschiedene Typen von Anweisungen:

  • Zuweisungen der Gestalt [Variable] = [Term]
  • Bedingungen der Gestalt [Variable] != 0
  • Sprunganweisungen der Gestalt GOTO [Marke]
  • Passieranweisungen der Gestalt PASS
  • Stoppanweisungen der Gestalt STOP

Variablenbezeichner dürfen nur in der Form x[Zahl] gebildet werden, d.h., nach dem Symbol x folgt eine natürliche Zahl.

Terme in Zuweisungen müssen immer vom Typ [Zahl] oder [Variable] + [Zahl] oder [Variable] - [Zahl] sein. Auch hier steht [Zahl] für eine beliebige natürliche Zahl.

Bei der Ausführung von Goto-Programmen sind folgende Vorgaben zu beachten:

  • Eine Zuweisung der Gestalt [Variable] = [Term] wird wie in der Sprache While ausgeführt. Als nächste Anweisung wird die in der nächsten Programmzeile ausgeführt.
  • Für die Ausführung einer Bedingungen der Gestalt [Variable] != 0 gilt: Wenn die Bedingung nicht erfüllt ist, führe die Anweisung in der nächsten Zeile aus, ansonsten die in der übernächsten Zeile.
  • Bei einer Sprunganweisungen der Gestalt GOTO [Marke] wird die Ausführung mit der Anweisung fortgesetzt, die mit der angegebenen Marke versehen ist.
  • Eine Passieranweisung der Gestalt PASS wird übergangen. Es wird also in der darauf folgenden Zeile weitergemacht.
  • Eine Stoppanweisung der Gestalt STOP führt zum Abbruch der Ausführung.

Suche

v
4.3.3.2
dev.inf-schule.de/automaten-sprachen/interpretercompiler/interpretercompilerueberblick/exkurs_mykagoto
dev.inf-schule.de/4.3.3.2
dev.inf-schule.de/@/page/qCMNeOovNAt0EKuH

Rückmeldung geben