Informatik

Funktionen ohne Parameter

Aufgabe 1: Ein Dorf entsteht

Das folgende Beispiel liefert das darunter abgebildete Bild.

Ein Baum, ein Haus mit rotem Dach und noch ein Baum

a) Analysiere zunächst das Beispiel, um zu verstehen, wie es aufgebaut ist. Notiere Fragen, wenn etwas unklar bleibt.

b) Modifiziere das Beispiel so, dass noch ein zweites Haus gezeichnet wird.

c) Modifiziere es nun so, dass die Baumkronen dunkler gefärbt sind (darkgreen).

d) Erläutere Vorteile, die dir bei der Verwendung von Funktionen auffallen.


      
    
from turtle import * shape("turtle") screensize(800, 400) speed(0) # Funktion für den Baum def baum(): pensize(40) pencolor("brown") pendown() forward(100) pencolor("green") dot(100) penup() backward(100) # Funktion für das Haus def haus(): pensize(2) pencolor("black") pendown() forward(100) right(90) fillcolor("red") begin_fill() forward(100) left(135) forward(71) left(90) forward(71) end_fill() left(90) forward(141) left(135) forward(100) left(135) forward(141) left(135) forward(100) penup() backward(100) left(90) # Funktion für den Abstand def abstand(): right(90) forward(180) left(90) # Hauptprogramm penup() goto(-320, -150) left(90) baum() abstand() haus() abstand() baum()
  • Mit def name(): definierst du eine Funktion. Das ist wie ein Eintrag im Wörterbuch: Du legst fest, was der Name bedeutet.
  • Der Rumpf der Funktion ist wieder eingerückt – genau wie bei Schleifen und Verzweigungen.
  • Beim Definieren passiert noch gar nichts. Erst der Aufruf name() führt den Rumpf aus.
  • Funktionen müssen vor dem Hauptprogramm definiert werden.
  • Der Klammern-Paar () gehört immer dazu – sowohl bei der Definition als auch beim Aufruf.
Tipp zu b): Wo muss ich etwas ändern?

Du musst die Funktion haus nicht anfassen. Es genügt, im Hauptprogramm unten weitere Aufrufe zu ergänzen – zum Beispiel:

baum()
abstand()
haus()
abstand()
haus()
abstand()
baum()

Vergrößere gegebenenfalls die Zeichenfläche mit screensize.

Tipp zu c): Nur eine Zeile

Die Baumkrone wird in der Funktion baum gezeichnet. Ändere dort pencolor("green") zu pencolor("darkgreen").

Beachte: Du änderst eine Zeile – und beide Bäume werden dunkler. Genau darum geht es bei Funktionen.

Warum Funktionen?

Drei Gründe sprechen für Funktionen:

  1. Weniger Wiederholung. Der Code für den Baum steht nur einmal da, wird aber zweimal verwendet.
  2. Änderungen an einer Stelle. Wird die Krone dunkler, gilt das automatisch für alle Bäume.
  3. Lesbarkeit. Das Hauptprogramm liest sich fast wie ein Text: Baum, Abstand, Haus, Abstand, Baum. Man muss nicht wissen, wie ein Haus gezeichnet wird, um zu verstehen, was passiert.

Diesen dritten Punkt nennt man Abstraktion. Er ist einer der wichtigsten Gedanken der ganzen Informatik.

Aufgabe 2: Eine eigene Funktion

Entwickle eine weitere Funktion zum Zeichnen einer Wolke und verwende sie im Hauptprogramm.

Beachte dabei die Regel: Funktionen werden vor dem Hauptprogramm festgelegt.


      
    
from turtle import * shape("turtle") screensize(800, 400) speed(0) def wolke(): # Dein Code hier pass # Hauptprogramm penup() goto(-200, 100) wolke()
Tipp 1: Woraus besteht eine Wolke?

Am einfachsten ist eine Wolke aus mehreren überlappenden weißen oder grauen Punkten unterschiedlicher Größe.

Tipp 2: Wichtige Regel für Funktionen

Achte darauf, dass die Turtle am Ende deiner Funktion wieder dort steht, wo sie am Anfang war – und in dieselbe Richtung schaut.

Sonst verschiebt jeder Aufruf alles Nachfolgende. Sieh dir an, wie die Funktion baum das mit backward(100) löst.

Tipp 3: Was bedeutet pass?

pass heißt „hier passiert nichts". Python verlangt nach einem Doppelpunkt immer mindestens eine eingerückte Zeile – pass ist ein Platzhalter dafür.

Sobald du eigenen Code einfügst, kannst du pass löschen.

Aufgabe 3: Ein ganzes Bild

Baue nun ein eigenes Bild aus mindestens vier verschiedenen Funktionen zusammen.

Ideen: Sonne, Blume, Zaun, Auto, Straße, Berg, Vogel, Teich …

Achte darauf, dass sich alle Funktionen an die Regel aus Tipp 2 halten.


      
    
from turtle import * shape("turtle") screensize(800, 500) speed(0) # Deine Funktionen hier # Hauptprogramm penup() goto(-350, -200)

Selbsttest

Funktionen ohne Parameter

Teilbare URL erstellen

Abschnitte auswählen