Informatik

Rückblick

Funktionen bringen nichts Neues, was das Programm kann – sie bringen Ordnung. Der Gewinn zeigt sich erst beim Ändern: Was einmal dasteht, ändert man einmal.

Das kann ich jetzt

  • Ich kann eine Funktion mit def definieren und aufrufen. (4.1)
  • Ich weiß, dass beim Definieren noch nichts passiert. (4.1)
  • Ich kann Funktionen mit Parametern schreiben und den Unterschied zum Argument erklären. (4.2)
  • Ich kann eine Funktion mit Rückgabewert schreiben und den Unterschied zu print erklären. (4.3)
  • Ich erkenne, wann sich eine eigene Funktion lohnt.

Gemischte Aufgaben

Aufgabe 1: Was wird ausgegeben?

def gruss():
    print("Hallo")
 
def doppelt(zahl):
    return zahl * 2
 
def dreifach(zahl):
    print(zahl * 3)
 
print("A")
gruss()
ergebnis = doppelt(5)
print(ergebnis)
print(doppelt(doppelt(3)))
x = dreifach(4)
print(x)

a) Notiere alle Ausgaben in der richtigen Reihenfolge.

b) Warum erscheint „Hallo" erst nach „A", obwohl gruss weiter oben steht?

c) Die letzte Zeile gibt None aus. Erkläre, warum.

d) Worin unterscheiden sich doppelt und dreifach? Welche der beiden kannst du in einer Rechnung weiterverwenden?

Ausgabe

      
    
def gruss(): print("Hallo") def doppelt(zahl): return zahl * 2 def dreifach(zahl): print(zahl * 3) print("A") gruss() ergebnis = doppelt(5) print(ergebnis) print(doppelt(doppelt(3))) x = dreifach(4) print(x)
Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 2: Vier Funktionen mit Fehlern

# a)
def quadrat(zahl)
    return zahl * zahl
 
# b)
def flaeche(laenge, breite):
    return laenge * breite
 
print(flaeche(5))
 
# c)
def summe(a, b):
    ergebnis = a + b
 
print(summe(3, 4))
 
# d)
print(begruessung())
 
def begruessung():
    return "Hallo"

Sag für jeden Ausschnitt: Was ist falsch, und was meldet Python?

Tipp zu c)

Die Funktion rechnet richtig – aber was macht sie mit dem Ergebnis? Vergleiche mit dreifach aus Aufgabe 1.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 3: Die Ampel, aufgeräumt

Im Rückblick zu Kapitel 3 hast du eine Ampel gezeichnet – mit dreimal fast demselben Block. Bau sie jetzt mit einer Funktion um.

a) Schreib eine Funktion lampe(y, farbe), die eine gefüllte Lampe an der Höhe y in der angegebenen Farbe zeichnet.

b) Ersetze die drei Blöcke durch drei Aufrufe.

c) Wie viele Zeilen hat dein Programm jetzt, wie viele vorher?

d) Die Lampen sollen größer werden: Radius 40 statt 30. An wie vielen Stellen musst du jetzt ändern, an wie vielen vorher?

e) Schreib zusätzlich eine Funktion ampelfarbe(frei, warnung), die den Text "gruen", "gelb" oder "rot" zurückgibt. Warum ist ein Rückgabewert hier besser, als direkt zu zeichnen?

Tipp 1: Der Kopf der Funktion
def lampe(y, farbe):
    penup()
    goto(0, y)
    pendown()
    # ...

Alles, was sich zwischen den drei Blöcken unterschieden hat, wird zum Parameter. Alles, was gleich war, kommt unverändert in den Rumpf.

Tipp 2: zu e)

Die Funktion soll entscheiden, nicht zeichnen:

def ampelfarbe(frei, warnung):
    if warnung:
        return "gelb"
    if frei:
        return "gruen"
    return "rot"

Ein return beendet die Funktion sofort – deshalb braucht es hier gar kein else.

from turtle import * shape("turtle") speed(0) frei = True warnung = False # Deine Funktionen und dein Hauptprogramm:
Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 4: Der wachsende Wald

Baue das Zielbild nach: fünf Bäume, die von links nach rechts um je 30 höher werden. Der kleinste ist 60 hoch, zwischen zwei Bäumen liegt ein Abstand von 130.

a) Zeichne die fünf Bäume mit einer Schleife und nur einem Aufruf von baum darin.

b) Bäume, die mindestens 120 hoch sind, bekommen eine dunkelgrüne Krone (darkgreen), die anderen eine grüne (green). Schreibe dafür eine Funktion kronenfarbe(hoehe), die die passende Farbe zurückgibt.

c) Warum ist es sinnvoll, die Farbe in einer eigenen Funktion zu bestimmen, statt sie in baum festzulegen?

from turtle import * shape("turtle") speed(0) hideturtle() def baum(hoehe, farbe): pensize(30) pencolor("brown") pendown() forward(hoehe) pencolor(farbe) dot(70) penup() backward(hoehe) def abstand(weite): right(90) forward(weite) left(90) # Deine Funktion kronenfarbe: # Hauptprogramm penup() goto(-260, -150) left(90)
Tipp 1: Die Höhe in der Schleife

Die Zählvariable i läuft von 0 bis 4. Daraus kannst du die Höhe berechnen: hoehe = 60 + i * 30.

Tipp 2: Funktion im Aufruf

Ein Rückgabewert kann direkt als Argument dienen:

baum(hoehe, kronenfarbe(hoehe))

Python berechnet zuerst kronenfarbe(hoehe) und setzt das Ergebnis dann als zweites Argument ein.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Selbsttest

Rückblick

Teilbare URL erstellen

Abschnitte auswählen