Station - Die Programmiersprache MiniPython

MiniPython

Die Sprache MiniPython ist eine stark einfache Version der Programmiersprache Python. Diese Sprache stellt nur ganz wenige Konstrukte zur Erstellung von Programmen zur Verfügung. Hier ein Beispiel eines Programms in MiniPython:

x = 9
y = 6
while x != y:
    if x <= y:
        y = y - x
    else:
        x = x - y
    #end
#end

Aufgabe 1

Teste das Programm in einer normalen Python-Entwicklungsumgebung. Die berechneten Variablenwerte kannst du im Ausführfenster anzeigen lassen. Variiere auch die Vorgaben für x und y. Kannst du aus den Testfällen auf das Verhalten des Programms schließen?

Daten und ihre Verwaltung

Als Daten sollen hier ausschließlich natürliche Zahlen verarbeitet werden. Beachte, dass eine Subtraktion wie 3 - 5 in diesem Zahlenraum nicht ausgeführt werden kann.

Daten werden mit Hilfe von Variablen verwaltet. Als Bezeichner von Variablen sind alle Zeichenketten erlaubt, die aus Kleinbuchstaben und Ziffern bestehen und mit einem Buchstaben beginnen.

Eine Eingabe von Daten ist nicht vorgesehen. Die Vorgabe der zu verarbeitenden Daten erfolgt in der Regel mit Hilfe von Zuweisungen an Variablen zu Beginn eines Programm.

Eine Ausgabe von Daten ist ebenfalls nicht vorgesehen. Die berechneten Variablenwerte muss man sich direkt durch eine Inspektion des aktuellen Variablenzustands besorgen.

Zuweisungen

Zuweisungen sind die Grundbausteine von MiniPython-Programmen. Die folgende Tabelle zeigt, welche Zuweisungen erlaubt sind.

Struktur Beispiel
"Variable" = "Zahl" x = 0
"Variable" = "Variable" neu = alt
"Variable" = "Variable" + "Zahl" x = x + 1
"Variable" = "Variable" - "Zahl" y = x - 2
"Variable" = "Variable" + "Variable" z = x + y
"Variable" = "Variable" - "Variable" x = x - y

Beachte, dass auf der rechten Seite einer Zuweisung nur recht einfache Terme erlaubt sind. Beachte auch, dass als Rechenoperationen nur die Addition und Subraktion vorgesehen sind.

Neben Zuweisungen gibt es noch eine weitere elementare Anweisung pass, die bei der Auswertung nichts bewirkt.

Aufgabe 2

Ordne jeder Zuweisung im folgenden Programm die Struktur gemäß der Tabelle oben zu.

x = 2
y = 3
p = 0
while y != 0:
    p = p + x
    y = y - 1
#end

Bedingungen

Bedingungen werden benötigt, um komplexere Anweisungen bilden zu können. Die folgende Tabelle zeigt, welche Zuweisungen erlaubt sind.

Struktur Beispiel
"Variable" == 0 x == 0
"Variable" != 0 zahl != 0
"Variable" < "Variable" x < y
"Variable" <= "Variable" x <= y
"Variable" == "Variable" a == b
"Variable" != "Variable" zahl1 != zahl2

Beachte, dass ebenfalls nur einfache Vergleiche als Bedingungen erlaubt sind. Eine Kombination von Vergleichen mit logischen Operatoren ist nicht vorgesehen.

Aufgabe 3

Im folgenden MiniPython-Programm kommen unzulässige Bedingungen vor. Schreibe das Programm so um, dass es nur zulässige Bedingungen enthält und dasselbe leistet wie das vorgegebene Programm.

x = 2
while x <= 10:
    x = x + 1
#end
y = 3
while x >= y:
    x = x - 1
#end

Kontrollstrukturen

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" #end Wenn die Bedingung erfüllt ist, dann führe die erste Anweisungssequenz aus, ansonsten die zweite Anweisungssequenz.
Wiederholung while "Bedingung": "Anweisungssequenz" #end Solange die Bedingung erfüllt ist, führe die Anweisungssequenz aus.

Die Programmiersprache MiniPython verlangt kein Einrücken von Anweisungssequenzen bei Wiederholungen und Fallunterscheidungen. Wir verwenden sie dennoch in den Beispielen, um sie auch in Python selbst testen zu können. MiniPython verlangt auch nicht, dass Anweisungen einer Anweisungssequenz in verschiedenen Zeilen stehen müssen.

Beachte, dass mit der Anweisung pass auch einseitige Fallunterscheidungen (ohne echten SONST-Fall) gebildet werden können.

Aufgabe 4

Ist das folgende Programm ein korrekt gebildetes MiniPython-Programm?

x=2 y=4 
if y <= x :
d = x - y
else: d=y-x#end
while d != 0 : if y <= x :
x = x - y 
else: y=y-x 
#end
if y <= x : d = x - y else: d=y-x#end
#end

Warum kann man das nicht eindeutig entscheiden?

X

Fehler melden

X

Suche