At My Fingertips

Documentation

Lerne nun, das Konzept der Verzweigungen auch für die Grafikkomposition zu nutzen!

Zweifarbiges Punkte-Raster

Den Code unten kennst du bereits. Führst du ihn aus, wird ein Raster aus blauen Punkten ausgegeben.

Loading...

Passe den Code mithilfe einer if-else-Verzweigung so an, dass folgendes Raster ausgegeben wird:

a) blau-rotes Punkte-Raster, spaltenweise

Punkte-Raster, spaltenweise

Loading...

b) blau-rotes Punkte-Raster, zeilenweise

Punkte-Raster, zeilenweise

Loading...

c) blau-rotes Punkte-Raster, spalten- und zeilenweise

Punkte-Raster, spalten- und zeilenweise

Loading...

Übrigens, aber wirklich nur für diejenigen, die den Mount-Everest der Programmierkunst besteigen wollen, ...

...diese vier Rastervariationen (und weitere) lassen sich mit nur einer einzigen Funktion (siehe unten) umsetzen!

Warum das, was du unten siehst, funktioniert, erfährst du hier.Bei der unten gezeigten Funktion punkte_raster_generisch handelt es sich um eine sog. Funktion höherer Ordnung, also eine Funktion, die eine oder mehrere Funktionen als Parameter akzeptiert und/oder eine Funktion als Rückgabewert liefert. In diesem speziellen Fall akzeptiert die Funktion punkte_raster_generisch eine Funktion faerber als Parameter. Diese Funktion faerber erwartet zwei Parameter vom Typ int und gibt einen Wert vom Typ Farbe zurück. Durch die Übergabe dieser Funktion als Parameter ermöglicht punkte_raster_generisch eine flexible Anpassung des Verhaltens, indem es der Aufruferin/dem Aufrufer erlaubt, eine spezifische Farbgebungsfunktion zu definieren, die dann auf jeden Punkt im Raster angewendet wird. Bei den Aufrufen von punkte_raster_generisch wird die spezifische Farbgebungsfunktion jeweils als sog. Lambda-Funktion definiert und als Argument faerber an punkte_raster_generisch übergeben. Im Lambda-Ausdruck lambda z, s: blau if (s+z) % 2 == 0 else rot (zitiert aus dem vierten Aufruf) wird für jede Koordinate (z, s) überprüft, ob die Summe von z und s gerade ist. Wenn die Summe gerade ist, wird die Farbe blau zurückgegeben, andernfalls wird die Farbe rot zurückgegeben. Lambda-Ausdrücke sind ein mächtiges Werkzeug in der Programmierung, das es ermöglicht, anonyme (sprich: unbenannte) Funktionen auf eine kompakte und prägnante Weise zu definieren. Im Gegensatz zu benannten Funktionen benötigen Lambda-Ausdrücke keine separate Definition, sondern können direkt an Stellen verwendet werden, an denen Funktionen benötigt werden, wie z.B. als Argumente für Funktionen höherer Ordnung.
Loading...

Das hat soweit gut geklappt für zweifarbige Muster. Was aber, wenn man mehr als zwei Bedingungen prüfen lassen möchte?

Die if-elif-else-Verzweigung

In Python und vielen anderen Programmiersprachen ermöglicht die if-elif-else-Verzweigung die Überprüfung mehrerer unabhängiger Bedingungen nacheinander. elif steht dabei für else if, also sonst wenn. Die Bedingungen werden von oben nach unten überprüft, und der Block, der zuerst die wahre Bedingung enthält, wird ausgeführt. Die verbleibenden Bedingungen werden nicht mehr geprüft. Wenn keine der Bedingungen zutrifft, wird der else-Block ausgeführt.

Studiere das kurze Programm in der Codezelle unten sowie und die beiden nachfolgenden Flussdiagramme. Beantworte auch die jeweils zugehörigen Fragen.

Loading...
Dafür steht das f im print-ArgumentDas f am Anfang des Strings, welcher der print Funktion übergeben wird, zeigt an, dass es sich um einen sogenannten "formatierten String" handelt. Das bedeutet, dass die Platzhalter in geschweiften Klammern durch die angegebenen Werte ersetzt werden, wenn der Text auf der Konsole ausgegeben wird.
AntwortWenn die vorherige if-Bedingung nicht wahr ist (was hier der Fall ist, da punktzahl 10 ist), wird die elif-Bedingung punktzahl >= 70 überprüft, d.h., es wird geprüft, ob punktzahl grössergleich 70 ist. Wenn diese Bedingung wahr ist (was hier auch nicht zutrifft), wird der dazugehörige Codeblock ausgeführt, andernfalls wird der eingerückte Block übersprungen und das Programm auf der nicht eingerückten Programmzeile weiter ausgeführt.
AntwortDer Wert von punktzahl >= 70 ist False, da punktzahl 10 und somit kleiner als 70 ist.
AntwortDie Bedingungen in if- und elif-Anweisungen werden nacheinander geprüft. Sobald eine Bedingung als wahr erkannt wird, wird der dazugehörige Codeblock ausgeführt. Daher ist es in diesem Fall nicht notwendig, die genaue obere Grenze (in diesem Fall 90) in der elif-Bedingung zu überprüfen, da diese bereits durch die vorherige Bedingung (in diesem Fall punktzahl >= 90) abgedeckt wird. Das spart nicht nur Schreibarbeit, sondern macht den Code auch lesbarer und weniger fehleranfällig.

Flussdiagramm if-elif

Flussdiagramm mehrere_if_anweisungen_wetter

AntwortDie if-elif-else-Verzweigung wird verwendet, um Werte in verschiedene Kategorien zu klassifizieren, während mehrere if-Anweisungen unabhängige Bedingungen nacheinander prüfen. Die Entscheidung, welche Konstruktion zu verwenden ist, sollte auf der spezifischen Logik des Problems basieren, wobei die Struktur der Bedingungen und die Anforderungen der Kategorisierung berücksichtigt werden müssen.

Blumenwiesen zum Zweiten (Partnerarbeit)

Aufgaben

a) (Einzelarbeit) Verwende die if-elif-else-Verzweigung, um deine eigene Version einer Blumenwiese zu kreieren. Lass deiner Kreativität freien Lauf! ABER: Achte darauf, dass deine Partnerin/dein Partner hierbei deinen Bildschirm nicht einsehen kann!

Loading...

b1) Schüler/in 1:

Zeig deinen Code, nicht aber die Blumenwiese selbst, deiner Partnerin/deinem Partner. Sie/Er soll nun anhand des Codes beschreiben, wie "deine" Blumenwiese aussieht.

b2) Schüler/in 2:

Lass "deine" Blumenwiese ausgeben und mach einen Screenshot davon. (Alternativ kannst du sie auch mit deinem Smartphone fotografieren.) Wichtig: Der Code darf auf dem Bild nicht zu sehen sein!

Speichere deinen Code an einem sicheren Ort ab, sodass du schnell wieder darauf zugreifen kannst. Baue nun in deinen Code drei Fehler ein. Zeig nun deiner Partnerin/deinem Partner den Screenshot und den fehlerhaften Code. Sie/Er soll nun die Fehler finden und beheben, sodass wieder "deine" Blumenwiese ausgegeben wird.

Was du gelernt hast

Du hast gelernt, Verzweigungen für die Grafikkomposition zu nutzen.

Du weisst, dass die if-elif-else-Verzweigung eine effiziente Methode ist, um verschiedene Bedingungen nacheinander zu überprüfen und damit Werte in verschiedene Kategorien zu klassifizieren. Dabei wird der Codeblock des ersten wahren Zweigs ausgeführt, und die nachfolgenden Bedingungen werden übersprungen.

Ausserdem sorgt die if-elif-else-Verzweigung für logische Klarheit und erleichtert die Fehlersuche. Sie ist eine wichtige Technik zur Steuerung des Programmflusses in Python-Programmen.


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

It is derived from this activity.

Verzweigungen für Grafikkompositionen

Logo of PyTamaro

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

Privacy PolicyPlatform Version c08406b (Wed, 20 Nov 2024 12:30:00 GMT)