Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:snr:informatik:bruehl-2022:funktionen [2022/03/22 14:22] Olaf Schnürer [Lernziele heute] |
lehrkraefte:snr:informatik:bruehl-2022:funktionen [2022/04/02 13:23] (current) Olaf Schnürer [Zusammenfassung] |
||
---|---|---|---|
Line 8: | Line 8: | ||
* Funktionen oder: Wie man grössere Programm übersichtlich gestaltet: modularer Entwurf, Baukastenprinzip. | * Funktionen oder: Wie man grössere Programm übersichtlich gestaltet: modularer Entwurf, Baukastenprinzip. | ||
- | * Nebenbei: Rechnen mit Strings (= Zeichenketten) | + | |
===== Aufgabe 1 ===== | ===== Aufgabe 1 ===== | ||
Line 72: | Line 72: | ||
^ ohne Rückgabewert | [[lehrkraefte: | ^ ohne Rückgabewert | [[lehrkraefte: | ||
^ | '' | ^ | '' | ||
- | ^ mit Rückgabewert | [[lehrkraefte: | ||
- | ^ | '' | ||
</ | </ | ||
Line 179: | Line 177: | ||
(Für das Folgende kannst du entweder ein neues Programm schreiben oder das obige Programm in eine neues Programmierfenster kopieren und modifizieren.) | (Für das Folgende kannst du entweder ein neues Programm schreiben oder das obige Programm in eine neues Programmierfenster kopieren und modifizieren.) | ||
- | Schreibe nun selbst eine Funktion '' | + | Schreibe nun selbst eine Funktion '' |
{{: | {{: | ||
</ | </ | ||
- | + | ===== Aufgabe 4, Mäander (Ornamentik), | |
- | + | ||
- | ===== Sprungstelle Klasse 1AFGsK: Gehe direkt zu Aufgabe 8! ===== | + | |
- | + | ||
- | ===== Sprungstelle Klasse 1CFP: Erkläre die folgende Infobox, springe dann zu Aufgabe 6 und danach direkt zu Aufgabe 8 (es sei denn, ich verschätze mich zeitlich total, dann einfach direkt mit Aufgabe 4 weiter) ===== | + | |
- | + | ||
- | ===== Addition von Strings und kombinierte Ausgabe von Strings und Zahlen ===== | + | |
- | + | ||
- | <WRAP center round info 100%> | + | |
- | Strings (= Zeichenketten = Text) werden in Python links und rechts durch Anführungszeichen gekennzeichnet. Beispielsweise ist ''" | + | |
- | + | ||
- | Wir spielen mit dem folgenden Programm, bis wir die folgenden Fragen beantworten können: | + | |
- | * Wie " | + | |
- | * Wie kann man den ersten '' | + | |
- | + | ||
- | <code python> | + | |
- | s = " | + | |
- | t = "St. Gallen" | + | |
- | + | ||
- | print(s + t) | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | Das Programm | + | |
- | <code python> | + | |
- | x = input(" | + | |
- | print(" | + | |
- | </ | + | |
- | ist fehlerhaft! Man kann einen String((Tigerjython schreibt " | + | |
- | + | ||
- | Um bei der Eingabe '' | + | |
- | '' | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | + | ||
- | ===== Aufgabe 4, Rechnen mit Strings (= Zeichenketten) und Zeilenumbruch ===== | + | |
- | + | ||
- | <WRAP center round todo 100%> | + | |
- | **Einzelarbeit, | + | |
- | + | ||
- | Strings (= Zeichenketten = Text) werden in Python links und rechts durch Anführungszeichen gekennzeichnet. Beispielsweise ist ''" | + | |
- | Spiele mit dem folgenden Programm, bis du die folgenden Fragen beantworten kannst: | + | |
- | * Wie " | + | |
- | * Wie kann man den ersten '' | + | |
- | * Was passiert, wenn man eine Zahl mit einem String multipliziert? | + | |
- | * Was bewirkt '' | + | |
- | <code python> | + | |
- | s = " | + | |
- | t = "St. Gallen" | + | |
- | + | ||
- | print(s + t) | + | |
- | print(3 * " | + | |
- | print(" | + | |
- | </ | + | |
- | + | ||
- | Hinweis: //n// steht für //new line//, also Zeilenumbruch. In der Fachsprache nennt man '' | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ===== Aufgabe 5, Funktionen ohne Parameter und mit Rückgabewert definieren ===== | + | |
- | + | ||
- | <WRAP center round todo 100%> | + | |
- | **Einzelarbeit, | + | |
- | + | ||
- | Der folgende Code definiert eine Funktion '' | + | |
- | + | ||
- | Der Rückgabewert steht rechts des Schlüsselworts '' | + | |
- | + | ||
- | <code python> | + | |
- | # In der folgenden Zeile beginnt die Definition der Funktion | + | |
- | def buchstabeZ(): | + | |
- | s1 = " | + | |
- | s2 = " | + | |
- | s3 = " | + | |
- | s4 = " | + | |
- | s5 = " XX | + | |
- | s6 = " | + | |
- | s7 = " | + | |
- | + | ||
- | # Die folgende Zeile bewirkt, dass die Funktion den String s1 + s2 + s3 + s4 + s5 + s6 berechnet und retourniert. | + | |
- | return s1 + s2 + s3 + s4 + s5 + s6 + s7 | + | |
- | + | ||
- | # In der folgenden Zeile beginnt das Hauptprogramm | + | |
- | b = buchstabeZ() | + | |
- | print(buchstabeZ()) | + | |
- | </ | + | |
- | + | ||
- | Ändere diesen Code in die Definition einer Funktion '' | + | |
- | </ | + | |
- | + | ||
- | ===== Kombinierte Ausgabe von Strings und Zahlen ===== | + | |
- | + | ||
- | <WRAP center round info 100%> | + | |
- | Das Programm | + | |
- | <code python> | + | |
- | x = input(" | + | |
- | print(" | + | |
- | </ | + | |
- | ist fehlerhaft! Man kann einen String((Tigerjython schreibt " | + | |
- | + | ||
- | Um bei der Eingabe '' | + | |
- | '' | + | |
- | </ | + | |
- | ===== Aufgabe 6, Funktionen mit Parameter und mit Rückgabewert definieren ===== | + | |
- | + | ||
- | <WRAP center round todo 100%> | + | |
- | + | ||
- | **Einzelarbeit, | + | |
- | + | ||
- | <WRAP center round info 100%> | + | |
- | Zusätzliche mündliche Erklärung durch mich: | + | |
- | Der folgende Code definiert eine Funktion '' | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | # In der folgenden Zeile beginnt die Definition der Funktion | + | |
- | def konvertiereFahrenheitInCelsius(f): | + | |
- | c = (f - 32) / 1.8 | + | |
- | return c | + | |
- | + | ||
- | # In der folgenden Zeile beginnt das Hauptprogramm | + | |
- | x = input(" | + | |
- | y = konvertiereFahrenheitInCelsius(x) | + | |
- | print(str(x) + " Grad Fahrenheit entspricht " + str(y) + " Grad Celsius." | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | Kopiere den Python-Code unten in ein neues Programmierfenster und ergänze ihn um die Definition der Funktion '' | + | |
- | + | ||
- | <code text> | + | |
- | Länge der Seite des Quadrats: 4 cm | + | |
- | Länge der Diagonalen: 5.65685424949 cm | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | # Funktionsdefinition zu ergänzen | + | |
- | + | ||
- | s = input(" | + | |
- | + | ||
- | # Ergänze hier den Code für die Ausgabe. | + | |
- | </ | + | |
- | + | ||
- | Hinweis: Die Funktion '' | + | |
- | <hidden Hier ist die Formel versteckt, damit es nicht daran scheitert...> | + | |
- | In einem Quadrat mit Seitenlänge '' | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | ===== Aufgabe 7, Funktionen mit Parameter und mit Rückgabewert definieren ===== | + | |
- | + | ||
- | <WRAP center round todo 100%> | + | |
- | **Einzelarbeit, | + | |
- | + | ||
- | Ergänze den folgenden Code um die Definition der Funktion '' | + | |
- | <WRAP center box 100%> | + | |
- | <WRAP left round box 50%> | + | |
- | <code python> | + | |
- | # Funktionsdefinition zu ergänzen | + | |
- | + | ||
- | print(brief(" | + | |
- | print(brief(" | + | |
- | </ | + | |
- | </ | + | |
- | <WRAP right round box 45%> | + | |
- | <code text> | + | |
- | Liebe(r) Jessica | + | |
- | Liebe(r) Mattia | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | <hidden Bonus:> | + | |
- | Erzeuge nun mit demselben Hauptprogamm die Ausgabe (nur die Funktion '' | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | <hidden Hinweis:> | + | |
- | Nutze das Escape-Zeichen '' | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | ===== Aufgabe 8, Mäander (Ornamentik), | + | |
<WRAP center round todo 100%> | <WRAP center round todo 100%> | ||
Line 433: | Line 245: | ||
<WRAP center round todo 100%> | <WRAP center round todo 100%> | ||
- | * Aufgabe | + | * Aufgabe |
Abgabe bis **spätestens Sonntagabend 23:59 Uhr** vor der nächsten Doppellektion über den folgenden Link: | Abgabe bis **spätestens Sonntagabend 23:59 Uhr** vor der nächsten Doppellektion über den folgenden Link: | ||
Line 447: | Line 259: | ||
* Wie unterscheiden sich Funktionsaufruf und Funktionsdefinition? | * Wie unterscheiden sich Funktionsaufruf und Funktionsdefinition? | ||
* Was ist ein Parameter? | * Was ist ein Parameter? | ||
- | * Was ist ein Rückgabewert? | ||
===== Struktur von Programmen ==== | ===== Struktur von Programmen ==== | ||
Line 533: | Line 344: | ||
* Funktionen dienen der besseren Strukturierung von Programmen. | * Funktionen dienen der besseren Strukturierung von Programmen. | ||
* Sie sind besonders nützlich, wenn man gewisse Programmteile mehrfach verwenden möchte. | * Sie sind besonders nützlich, wenn man gewisse Programmteile mehrfach verwenden möchte. | ||
- | * Teilweise: Ich weiss, wie man mit Strings rechnet (Addition zweier Strings, Multiplikation eines Strings mit einer Zahl) und was ''" | + | * <del>Teilweise: Ich weiss, wie man mit Strings rechnet (Addition zweier Strings, Multiplikation eines Strings mit einer Zahl) und was ''" |
- | </ | + | </ |
Line 546: | Line 357: | ||
- | ===== Bonusaufgabe 1 (leicht), Funktionen mit mehreren Parametern und ohne Rückgabewert definieren ===== | ||
- | <WRAP center round todo 100%> | ||
- | **Einzelarbeit, | ||
- | |||
- | Genauso kann man Funktionen mit mehreren Parametern definieren: | ||
- | Ergänze den folgenden Code um die Definition der Funktion '' | ||
- | <WRAP left round box 50%> | ||
- | <code python> | ||
- | from gturtle import * | ||
- | |||
- | def polygon(n, dicke, farbe, s): | ||
- | # Rest der Funktionsdefinition zu ergänzen | ||
- | |||
- | makeTurtle() | ||
- | hideTurtle() | ||
- | polygon(7, 12, " | ||
- | polygon(5, 10, " | ||
- | polygon(3, 8, " | ||
- | </ | ||
- | </ | ||
- | <WRAP right round box 40%> | ||
- | {{: | ||
- | </ | ||
- | </ | ||
- | |||
- | ===== Bonusaufgabe 2 (leicht), Funktionen mit mehreren Parametern und mit Rückgabewert definieren ===== | ||
- | |||
- | <WRAP center round todo 100%> | ||
- | **Einzelarbeit, | ||
- | |||
- | Schreibe eine Funktion '' | ||
- | |||
- | Die Ausgabe soll wieder gut lesbar sein und beispielsweise wie folgt aussehen. | ||
- | <code text> | ||
- | Kathetenlängen: | ||
- | Länge der Hypotenuse: 5 | ||
- | </ | ||
- | |||
- | Hinweis: Die Funktion '' | ||
- | <hidden Hier ist die Formel versteckt, damit es nicht daran scheitert...> | ||
- | Wenn die beiden Katheten (= " | ||
- | <WRAP center round box 100%> | ||
- | $$c = \sqrt{a^2+b^2}$$ | ||
- | </ | ||
- | |||
- | </ | ||
- | </ | ||
- | ===== Bonusaufgabe | + | ===== Bonusaufgabe: |
<WRAP center round todo 100%> | <WRAP center round todo 100%> | ||
Line 820: | Line 584: | ||
===== Lösungsvorschläge ===== | ===== Lösungsvorschläge ===== | ||
- | < | + | < |
<code python> | <code python> | ||
+ | from gturtle import * | ||
+ | |||
+ | # In der folgenden Zeile beginnt die Definition der Funktion | ||
+ | def quadrat100(): | ||
+ | repeat 4: | ||
+ | forward(100) | ||
+ | right(90) | ||
+ | |||
+ | def dreieck100(): | ||
+ | repeat 3: | ||
+ | forward(100) | ||
+ | left(120) | ||
+ | | ||
+ | # In der folgenden Zeile beginnt das Hauptprogramm | ||
+ | makeTurtle() | ||
+ | # hideTurtle() | ||
+ | |||
+ | # Erstes Muster | ||
+ | repeat 6: | ||
+ | dreieck100() | ||
+ | right(60) | ||
+ | |||
+ | # Bewege nach rechts | ||
+ | penUp() | ||
+ | right(90) | ||
+ | forward(370) | ||
+ | left(90) | ||
+ | penDown() | ||
+ | |||
+ | # Zweites Muster | ||
+ | repeat 6: | ||
+ | dreieck100() | ||
+ | quadrat100() | ||
+ | forward(100) | ||
+ | left(360/6) | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | <hidden Aufgabe 3> | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | |||
+ | def vieleck(x): | ||
+ | repeat x: | ||
+ | forward(50) | ||
+ | right(360/ | ||
+ | |||
+ | makeTurtle() | ||
+ | # hideTurtle() | ||
+ | |||
+ | n = 3 | ||
+ | repeat 11: | ||
+ | vieleck(n) | ||
+ | n = n + 1 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <hidden Aufgabe 4, Lösung von Vanessa (nur '' | ||
+ | <code python> | ||
+ | from gturtle import* | ||
+ | |||
+ | def ornament(): | ||
+ | forward(60) | ||
+ | right(90) | ||
+ | forward(40) | ||
+ | right(90) | ||
+ | forward(20) | ||
+ | right(90) | ||
+ | forward(20) | ||
+ | left(90) | ||
+ | forward(20) | ||
+ | left(90) | ||
+ | forward(40) | ||
+ | left(90) | ||
+ | forward(60) | ||
+ | left(90) | ||
+ | forward(60) | ||
+ | right(90) | ||
+ | | ||
+ | |||
+ | def wiederholeOrnament(n): | ||
+ | repeat n: | ||
+ | ornament() | ||
+ | |||
+ | def eckBewegung(): | ||
+ | left(90) | ||
+ | forward(20) | ||
+ | left(90) | ||
+ | forward(60) | ||
+ | right(90) | ||
+ | |||
+ | makeTurtle() | ||
+ | hideTurtle() | ||
+ | |||
+ | penUp() | ||
+ | backward(230) | ||
+ | right(90) | ||
+ | backward(310) | ||
+ | penDown() | ||
+ | setPenColor(" | ||
+ | penWidth(10) | ||
+ | # | ||
+ | repeat 2: | ||
+ | wiederholeOrnament(8) | ||
+ | eckBewegung() | ||
+ | wiederholeOrnament(6) | ||
+ | eckBewegung() | ||
+ | </ | ||
+ | </ | ||
+ | |||
<hidden Kreis aus St. Galler Wappen> | <hidden Kreis aus St. Galler Wappen> |