Station - Die Programmiersprache MyKa
Die Sprache MyKa
Die Sprache MyKa
ist eine sehr einfache Programmiersprache, die auf vieles verzichtet und nur
ganz wenige Konstrukte zur Verfügung stellt.
Wir benutzen sie ebenfalls wegen ihrer Einfachheit. Um Aufbau und Funktionsweise von Interpretern und Compilern zu verstehen, reicht es aus, die Zusammenhänge an einer überschaubaren Sprache zu verstehen.
Syntax von MyKa
Beginnen wir mit einigen Beispielen für MyKa-Programme:
Programm 1:
links while nichtVorWand: ziegelHinlegen schritt #while
Programm 2:
if nichtVorWand: if nichtVorZiegel: schritt schritt schritt schritt else: ziegelHinlegen #if else: links #if
Programm 3:
markeSetzen schritt while nichtAufMarke: while nichtVorWand: schritt #while links #while
Anhand dieser Programme lassen sich alle wesentlichen Syntaxregeln informell beschreiben.
While-Programme sind Sequenzen von Anweisungen.
Anweisungen können elementare Anweisungen oder Kontrollanweisungen sein.
Als elementare Anweisungen sind erlaubt:
schritt
links
rechts
ziegelHinlegen
ziegelAufheben
markeSetzen
markeLoeschen
pass
Als Kontrollananweisungen dürfen vorkommen:
- Wiederholungen der Gestalt:
while [Bedingung] : [Anweisungssequenz] #while
- Fallunterscheidungen der Gestalt:
if [Bedingung] : [Anweisungssequenz] else : [Anweisungssequenz] #if
Bedingungen müssen folgende Gestalt haben:
vorZiegel
nichtVorZiegel
vorWand
nichtVorWand
aufMarke
nichtAufMarke
Vorgaben zur Gestaltung des Programmcodes werden nicht gemacht. Einrückungen und Leerzeichen dienen nur der besseren Lesbarkeit und haben ansonsten keine Bedeutung. Programm 1 (siehe oben) könnte also auch so dargestellt werden:
links while nichtVorWand: ziegelHinlegen schritt #while
Aufgabe 1
Eine informelle Klärung lässt oft noch Fragen offen, z.B.: Aus wie vielen Anweisungen kann eine Sequenz bestehen? Kann eine Sequenz leer sein, oder muss sie mindestens aus einer Anweisung bestehen?
Formuliere selbst weitere Fragen, die noch offen sind.
Semantik von While
Die Bedeutung der elementaren Anweisungen erschließt sich aus den Bezeichnern der Anweisungen. Entsprechendes gilt für Bedingungen:
Fallunterscheidungen der Gestalt if [Bedingung] : [Anweisungssequenz] else : [Anweisungssequenz] #if
werden in der üblichen Weise ausgeführt: Wenn die Bedingung erfüllt ist, dann wird die erste
Anweisungssequenz ausgeführt, ansonsten die zweite.
Wiederholungen der Gestalt while [Bedingung] : [Anweisungssequenz] #while
werden wie while-Anweisungen
ausgeführt: Solange die Bedingung erfüllt ist, wird die Anweisungssequenz ausgeführt.
Aufgabe 2
Auch hier bleiben noch Fragen offen, z.B.:
Wie verhält sich der Roboter bei einer schritt
-Anweisung, wenn er direkt vor der Wand steht?
Formuliere selbst weitere Fragen, die noch offen sind.