i

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?

Suche

v
4.3.5.1
dev.inf-schule.de/automaten-sprachen/interpretercompiler/compilerwhile/station_while
dev.inf-schule.de/4.3.5.1
dev.inf-schule.de/@/page/dYOwUnEbOn67AekV

Rückmeldung geben