i

Beispiel - Experimente mit Variablen

Was macht das Programm?

Das folgende Programm führt irgendwelche Berechnungen aus. Aber was genau? Versuche nur durch eine Analyse des Quelltextes vorherzusagen, welche Ausgaben das Programm am Ende der Ausführung macht.

# Funktionsdefinitionen
def inc(x):
    return x+1

def dec(x):
    return x-1

def add(x, y):
    while y > 0:
        x = inc(x)
        y = dec(y)
    return x

def mul(x, y):
    z = 0
    while y > 0:
        z = add(z, x)
        y = dec(y)
    return z 

# Hauptprogramm
x = 1
y = 2
x = add(x, y)
y = mul(x, y)
print(x, y)

Ein Blick hinter die Kulissen

Mit der folgenden Visualisierung kann man mit [Step] Schritt für Schritt die Ausführung des Programms mitverfolgen. Probiere das selbst. Kontrolliere auch, ob deine Vorhersage zur Programmausgabe gestimmt hat.

Schwierige Ausführsituationen

In den folgenden Programmen werden Ausführsituationen vorgestellt, die z.T. recht schwierig sind, weil z.B. gleichnamige Variablen in unterschiedlichen Rollen vorkommen.

Aufgabe 1

Teste deine Ausführungsintuition, indem du für jedes Programm eine Prognose erstellst, ob das Programm so lauffähig ist und welche Ausgabe ggf. erzeugt wird. Notiere alle deine Vermutungen.

Beispiel 1:

# Funktionsdefinitionen
def inc(x):
    y = x+1
    return y

# Hauptprogramm
a = 1
b = inc(a)
print(a, b)

Beispiel 2:

# Funktionsdefinitionen
def inc(x):
    y = x+1
    return y

# Hauptprogramm
y = 0
b = inc(1)
print(y, b)

Beispiel 3:

# Funktionsdefinitionen
def inc(x):
    y = x+1
    return y

# Hauptprogramm
x = 0
b = inc(1)
print(x, b)

Beispiel 4:

# Funktionsdefinitionen
def inc(x):
    y = x+1
    return y

# Hauptprogramm
x = 0
y = inc(x)
print(x, y)

Beispiel 5:

# Funktionsdefinitionen
def inc():
    y = x+1
    return y

# Hauptprogramm
x = 0
z = inc()
print(x, z)

Beispiel 6:

# Funktionsdefinitionen
def inc():
    y = x+1
    return y

# Hauptprogramm
x = 0
z = inc()
print(x, y, z)

Beispiel 7:

# Funktionsdefinitionen
def inc():
    x = x+1
    return x

# Hauptprogramm
x = 0
z = inc()
print(x, z)

Beispiel 8:

# Funktionsdefinitionen
def inc():
    global x
    x = x+1
    return x

# Hauptprogramm
x = 0
z = inc()
print(x, z)

Aufgabe 2

Kontrolliere deine Vermutungen aus Aufgabe 1, indem du die Programme jeweils ausführst. Erkläre mit Hilfe der Visualisierung, warum die jeweiligen erbenisse zustande kommen.

Beispiel 1:

Beispiel 2:

Beispiel 3:

Beispiel 4:

Beispiel 5:

Beispiel 6:

Beispiel 7:

Beispiel 8:

Suche

v
6.3.2.13.1
www.inf-schule.de/imperative-programmierung/python/konzepte/namensraeume/beispiel_experimente
www.inf-schule.de/6.3.2.13.1

Rückmeldung geben