Codeduplikationen vermeiden

Code-Duplikationen vermeiden

Angenommen du möchtest einen ganz einfachen Schneemann aus zwei weissen, übereinander liegenden Kreisen zeichnen, dann erinnerst du dich an eben definierte Kreis-Funktion.

  • Schreibst du sie erneut?
  • Kopierst du den Code und generierst Code-Klone?
  • Oder bist du clever?

Code kopieren ist weniger Aufwand als ihn erneut zu schreiben, ABER das ist schlecht. Obwohl das Copy-Pasting von Code zu Beginn den Anschein hat, Arbeit zu reduzieren, generiert es längerfristig mehr. Warum? Nun, das ist eine gute Frage.

Kurz gesagt: Wenn du Code kopierst, hast du am Ende viele Klone. Wenn du im ersten Code einen Fehler hattest, dann ist er nun in jeder Kopie und du musst ihn überall beheben. Oder du möchtest deinen Code verbessern und musst dies wiederum in all deinen Code-Klonen einzeln tun. Das ist mühsam... Machs also nicht!

Aber Sie, wie kann ich dann trotzdem Zeit und mühseliges Coden einsparen?

Entweder:

  • Wenn du mit Jupyter-Notebooks arbeitest (oder auf dieser Webseite), musst du sicher die Code-Zelle mit der gewünschten Funktion ausführen, bevor du sie in einer anderen Code-Zelle brauchst/aufrufst. Oder:
  • Wenn du in der Python-IDLE eine neue .py-Datei erstellst, alle benötigten Funktionen da hinein schreibst.
  • Wenn du die Datei mit der benötigten Funktion bzw. die Funktion importierst. Und für später:
  • In der objektorientierten Programmierung (OOP) stellen wir sicher, dass die benötigte Funktion in einer importierten Klasse oder Datei enthalten ist.

Für den Moment und diese Webseite üblich: Speichere deine Funktion gemäss nachfolgender Anleitung in der Toolbox (Werkzeugbox) ab. Anschliessend kannst du sie in die neue Codezelle aus der Toolbox importieren.

Anleitung zum Abspeichern in der Toolbox

Lies die gesamte Anleitung durch, bevor du mit der Ausführung startest.

  1. Klicke in der untenstehenden Code-Zelle ganz unten rechts auf das Werkzeugsymbol.

  2. Ein Fenster geht auf:

    a. Wähle im Dropdown-Menu den Namen 'kreis' an.

    b. Erläutere im grauen Feld rechts davon, was die Funktion tut.

  3. Unter Beispiel zur Verwendung Deiner Funktion schreibst du den nötigen import aus Pytamaro und eine Ausgabe und Aufruf deiner Funktion. Z.B. 'zeige_grafik(kreis(100, gruen))

  4. Führe die Code-Zelle aus und speichere deine Funktion in der Toolbox ab.

Loading...

Anleitung zur Verwendung der Funktionen aus der Toolbox

Für die Codezelle, in der du die kreis-Funktion brauchen möchtest, schreibst du eine import-Zeile:

from toolbox import kreis
Loading...
Lösungen
from toolbox import kreis
from pytamaro.de import ellipse, neben, schwarz, gruen, cyan, zeige_grafik

meine_kreise = neben(kreis(100, cyan), kreis(90, schwarz))

zeige_grafik(meine_kreise)

Übungen

  1. Definiere eine Funktion, die den oben angesprochenen Schneemann aus zwei Schneekugeln/-kreisen zeichnet. Lies jeweils die Kommentare (# oder ''') und vervollständige dann die Code-Zelle.
Loading...
Lösungen
from pytamaro.de import ueber, weiss, zeige_grafik
from toolbox import kreis

def Schneemann(kopfdurchmesser, körperdurchmesser):
    kopf = kreis(kopfdurchmesser, weiss)
    körper = kreis(körperdurchmesser, weiss)
    return ueber(kopf, körper)

zeige_grafik(Schneemann(100, 150))
  1. Der Schneemann ist Ende Winter nicht mehr so wunderbar weiss. Wie kannst du ihn in ein vom Saharastaub gelbes Gewand (oder rotes oder schwarzes - wegen Dreck) kleiden, indem du die Funktion noch etwas allgemeiner machst.
Loading...
Lösungen
from pytamaro.de import ueber, weiss, gelb, zeige_grafik
from toolbox import kreis

def Schneemann(kopfdurchmesser, körperdurchmesser, farbe):
    kopf = kreis(kopfdurchmesser, farbe)
    körper = kreis(körperdurchmesser, farbe)
    return ueber(kopf, körper)

zeige_grafik(Schneemann(100, 150, gelb))

Du hast wahrscheinlich gemerkt, dass in den Funktionen jeweils zwei Namen definiert wurden, die sich auf den Kopf und den Körper des Schneemanns beziehen. Dies erlaubt uns, den sehr leserlichen und verständlichen Ausdruck (engl. expression) ueber(kopf, körper) zu schreiben und gleichzeitig begreifen wir, aus welchen Bestandteilen der Schneemann zusammengesetzt ist.

Diese zwei Namen sind lokal, also nur in der Schneemann-Funktion zu sehen. Ausserhalb der Funktion existieren sie nicht. Code ausserhalb der Funktion soll sich nicht darum scheren, dass ein Schneemann aus einem Kopf und einem Körper besteht.

Was du nun ebenfalls gelernt hast

Du hast einen einfachen Schneemann "komponiert" (zusammengesetzt), indem du zwei Kreise mit der Funktion `ueber()`` zusammengefügt hast.

Mit den zwei Übungen hast du zudem wichtige Konzepte angetroffen:

  • Naming: gute Namen zu wählen ist wichtig fürs Verständnis von Code.
  • Composition / Decomposition: In der Programmierung ist es relevant, ein Problem bzw. eine Aufgabenstellung in seine Teilprobleme zu zerlegen (de-compose) und über Teillösungen wieder zu einem ganzen zusammenzufügen (compose).

PyTamaro Module

Die Grafikbibliothek enthält wie gesagt vordefinierte Funktionen. Für dich relevant sind im Folgenden diese hier:

  • Objektfunktionen: rechteck(breite, hoehe, farbe), dreieck(seite1, seite2, winkel dazwischen, farbe)
  • Composition-Funktionen: neben(linke_grafik, rechte_grafik), ueberlagere(vordere_grafik, hintere_grafik)

Fahre mit dem Cursor über die hier in rot hinterlegten Funktionen. neben, ueber oder ueberlagere

Die Funktionen sind auch unter der API-Documentation https://pytamaro.si.usi.ch/documentation/pytamaro.de aufgelistet.

  1. Erstelle mit Hilfe dieser Funktionen und allenfalls der Hilfe deiner Lehrperson eine Funktion, die ein einfaches weisses Haus mit rotem Dach zeichnet. Verwende allenfalls die Hilfestellungen unterhalb der Code-Zelle. (# To do heisst, hier schreibst du deinen Code).
Loading...
  • Importiere alle nötigen Funktionen und Farben.
  • Zerlege (decompose) die gewünschte Grafik im Kopf in seine Einzelteile (möglichst in solche, die mit den oben genannten Funktionen zeichenbar sind).
  • Ergänze die Funktion mit Parametern, die du verändern möchtest. Überlege dir, was bei Dach und bei Haus übereinstimmen muss, das kannst du als einzelnen Parameter zusammenfassen.
  • im return-statement klebst du die Einzelteile aneinander.
  • Ausserhalb der Funktion benötigst du mit Sicherheit den Befehl (die Funktion) zeige_grafik(), um das Haus in der Ausgabezelle (Konsole) anzuzeigen (und nicht einfach nur unsichtbar im Computer irgendwo zu existieren).
  1. Erstelle ein weiteres Objekt und dafür eine Funktion. Verwende die gegebenen Objekte: rechteck, dreieck oder ellipse, kreis. Beispielsweise kannst du einen Hammer aus zwei Rechtecken konstruieren, oder ein Auge (mindestens Pupille und Regenbogenhaut) oder ein Blumenköpfchen - schon etwas schwieriger.
Loading...
Loading...
Loading...

Was du weiter gelernt hast

  • Du hast Module einer Grafikbibliothek benutzt und nebenbei eigene Funktionen kreiiert.
  • Du hast Codeduplikationen vermieden, indem du eigene Funktionen in der Toolbox zur Wiederverwendung abgespeichert hast.

This activity has been created by Bernhard and is licensed under CC BY-SA 4.0.

It is derived from this activity.

Codeduplikationen vermeiden

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version 667200c (Sun, 05 Oct 2025 00:25:30 GMT)