i

Kontrollstrukturen

Einrückungen in Python

Betrachte noch einmal das folgende in Standard-Python geschriebene Beispielprogramm.


a=42
b=23
if a<b: 
	c=b 
else:
	c=a
d=b

Die Anweisung c=a wird in diesem Fall nur ausgeführt, wenn die Bedingung hinter dem if nicht wahr ist. Hingegen wird die Anweisung d=b immer ausgeführt. Der Unterschied zwischen den beiden Zeilen liegt ausschließlich in der Einrückung. Dass Einrückungen (letztlich also das Vorhandensein unsichtbarer Leerzeichen bzw. Tabulatoren) eine derart große inhaltliche Bedeutung besitzen, ist eine typische Python-Eigenart (die manche Informatiker auch als sehr gewöhnungsbedürftig oder sogar hässlich empfinden).

Auch der Bau von Übersetzungsprogrammen wird durch diese Eigenart deutlich erschwert. Deshalb fordern wir in MiniPython, dass

  • am Ende der eingerückten Blöcke zusätzlich ein "#end" steht. Für die Verarbeitung in Standard-Python-Entwicklungsumgebungen wie IDLE ist das kein Problem, da diese alle Zeilen, die mit einem # beginnen, als reinen Kommentar auffassen.
  • jede Alternative auch einen else-Teil besitzt. Das ist insofern keine wesentliche Einschränkung, da es in Standard-Python auch einen Befehl gibt, der schlicht gar nichts tut: pass.

Übersicht

Die Tabelle zeigt, wie man in MiniPython 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.

Mit diesen zusätzlichen Bedingungen wäre das korrekte Einrücken gar nicht mehr notwendig. Damit aber Standard-Python-Entwicklungsumgebungen die Programme ausführen können, werden wir weiterhin auf Python-typische Weise einrücken.

Das folgende Programm ist also sowohl ein korrektes MiniPython-Programm als auch ein korrektes Standard-Python-Programm.


x = 2
y = 3
xky = 0
if x < y:
    xky = 1
else:
    pass
#end

Aufgabe 1

Formuliere das folgende Standard-Python-Programm so um, dass es sowohl ein korrektes MiniPython-Programm als auch ein korrektes Standard-Python-Programm ist.


x=23
y=42
z=x
while z!=0:
    if x<y: 
		x=x+y
	z=z-1

Teste zunächst das ursprüngliche Programm mit mehreren Anfangswerten für x und y und notiere die Werte nach dem Durchlaufen des Programms. Vergleiche die Ergebnisse des entstehenden MiniPython-Programms mit diesen Notizen.

Aufgabe 2

Formuliere das folgende Standard-Python-Programm in ein Standard- und MiniPython-Programm um.


x=23
y=42
while 2*y>x:
    x=2*x
    y=y-1
z=2*(x+y)

Aufgabe 3

Transformiere wieder in ein gültiges MiniPython-Programm.


x=23
y=42
if (x<23) and (x>2*y):
    x=0

Verwende den folgenden MiniPython-Interpreter, um deine Programme zu testen.

Suche

v
12.5.1.4
www.inf-schule.de/rechner/compiler/minipython/kontrollstrukturen
www.inf-schule.de/12.5.1.4
www.inf-schule.de/@/page/LilMdtGYx6Hs9Rth

Rückmeldung geben