Station - Die Programmiersprache MyWhile
Die Sprache MyWhile
Die Sprache While
ist eine sehr einfache Programmiersprache, die auf vieles verzichtet und nur
ganz wenige Konstrukte zur Verfügung stellt. Diese Sprache wird wegen ihrere Einfachheit oft für
theoretische Untersuchungen genutzt (siehe ...).
Wir benutzen eine Variante von While
, die wir MyWhile
nennen.
Die Sprache MyWhile
ist nicht ganz so restriktiv wie die Sprache While
,
aber dennoch so einfach, dass Funktionsprinzipien von Interpretern und Compilern in einem überschaubaren
Kontext verdeutlicht werden können.
Syntax und Semantik von MyWhile
Beginnen wir mit einem konkreten MyWhile-Programm:
x = 24 y = 15 d = x - y while d != 0: if d > 0: x = x - y else: y = y - x #if d = x - y #while
Anhand dieses Programms lassen sich alle wesentlichen Syntaxregeln informell beschreiben.
Zentrale Bausteine von MyWhile-Programmen sind Zuweisungen an Variablen. Die folgende Tabelle zeigt, welche Zuweisungen erlaubt sind.
Zuweisung | Struktur |
---|---|
x = 0 | "Variable" = "Zahl" |
neu = alt | "Variable" = "Variable" |
x = x + 1 | "Variable" = "Variable" + "Zahl" |
y1 = x0 - 2 | "Variable" = "Variable" - "Zahl" |
z = x + y | "Variable" = "Variable" + "Variable" |
x = x - y | "Variable" = "Variable" - "Variable" |
Als Bezeichner von Variablen sind alle Zeichenketten erlaubt, die aus Kleinbuchstaben und Ziffern bestehen und mit einem Buchstaben beginnen.
Als Zahlen dürfen hier nur die ganzen Zahlen benutzt werden.
Zuweisungen bilden die elementaren Anweisungen der Sprache MyWhile. Beachte, dass auf der rechte Seite einer Zuweisung nur recht einfache Terme erlaubt sind. Beachte auch, dass als Rechenoperationen nur die Addition und Subraktion vorgesehen sind.
Die Auswertung von Zuweisungen erfolgt in der üblichen Weise.
Neben Zuweisungen gibt es noch eine weitere elementare Anweisung pass
, die bei der Auswertung
nichts bewirkt.
In der folgenden Tabelle sind die möglichen Bedingungen von MyWhile aufgelistet.
Bedingung | Struktur |
---|---|
x == 0 | "Variable" == 0 |
zahl != 0 | "Variable" != 0 |
x2 > 0 | "Variable" > 0 |
y < 0 | "Variable" < 0 |
Beachte, dass ebenfalls nur recht einfache Bedingungen erlaubt sind. Man kann nur abtesten, ob der Wert einer Variablen gleich, ungleich, größer oder kleiner als Null ist.
Die letzte Tabelle zeigt, wie man mit Kontrollstrukturen komplexere Anweisungen bilden kann. Beachte, dass diese Kontrollstrukturen auch geschachtelt werden können.
Kontrollstruktur | Struktur | Bedeutung |
---|---|---|
Sequenz | "Anweisung" "Anweisung" ... "Anweisung" | Führe die Anweisungen der Reihe nach aus. |
Fallunterscheidung | if "Bedingung": "Anweisungssequenz" else: "Anweisungssequenz" #if | Wenn die Bedingung erfüllt ist, dann führe die erste Anweisungssequenz aus, ansonsten die zweite Anweisungssequenz. |
Wiederholung | while "Bedingung": "Anweisungssequenz" #while | Solange die Bedingung erfüllt ist, führe die Anweisungssequenz aus. |
Aufgabe 1
Ist das folgende Programm ein syntaktisch korrektes MyWhile-Programm?
x=24 y=15 d=x-y while d != 0 : if d > 0 : x = x - y else: y=y-x#if d=x-y #while
Warum kann man das nicht eindeutig entscheiden?
Aufgabe 2
Was bewirkt das folgende MyWhile-Programm?
while x > 0: x = x-1 #while
Warum kann man das nicht eindeutig entscheiden?