Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:algorithmen_ii [2025-11-28 08:47] – [Aufgabe A1: Maximum] hof | gf_informatik:algorithmen_ii [2025-12-13 20:56] (aktuell) – [Aufgabe B2: Quersumme] hof | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| ===== Struktogramme und Python ===== | ===== Struktogramme und Python ===== | ||
| + | < | ||
| ==== Aufgaben A ==== | ==== Aufgaben A ==== | ||
| Zeile 12: | Zeile 13: | ||
| * Teil 1: Zwei Zahlen sollen eingegeben (`input`) und die grössere der beiden Zahlen ausgegeben werden. Sind die Zahlen gleich gross, soll einfach die Zahl ausgegeben (`print`) werden. | * Teil 1: Zwei Zahlen sollen eingegeben (`input`) und die grössere der beiden Zahlen ausgegeben werden. Sind die Zahlen gleich gross, soll einfach die Zahl ausgegeben (`print`) werden. | ||
| - | * Teil 2: Schreibe Code um als Funktion `max2(a, b)`, die das Maximum von `a` und `b` mit `return` _zurückgibt_. Die _Eingabe_ | + | * Teil 2: Schreibe Code um als Funktion `max2(a, b)`, die das Maximum von `a` und `b` mit `return` _zurückgibt_. Die Eingabe |
| * Teil 3: Schreibe eine Funktion `max3(a, b, c)`, die das Maximum von **drei** Zahlen zurückgibt. _Verwende dazu die `max2` Funktion!_ | * Teil 3: Schreibe eine Funktion `max3(a, b, c)`, die das Maximum von **drei** Zahlen zurückgibt. _Verwende dazu die `max2` Funktion!_ | ||
| - | < | + | < |
| ++++Lösung| | ++++Lösung| | ||
| - | <code python> | + | <html>< |
| def max2(a, b): | def max2(a, b): | ||
| if a > b: | if a > b: | ||
| Zeile 28: | Zeile 29: | ||
| print(max3(int(input(' | print(max3(int(input(' | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 35: | Zeile 36: | ||
| * Teil 1: Drei Zahlen sollen eingegeben werden und danach in absteigender Reihenfolge der Grösse ausgegeben werden. | * Teil 1: Drei Zahlen sollen eingegeben werden und danach in absteigender Reihenfolge der Grösse ausgegeben werden. | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| def sort(a, b, c): | def sort(a, b, c): | ||
| if a > b: | if a > b: | ||
| Zeile 55: | Zeile 56: | ||
| sort(input(), | sort(input(), | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| <nodisp 2> | <nodisp 2> | ||
| - | * (Ausgeblendet): | + | ++++Ausgeblendet| |
| + | * Teil 2: Schreibe Code um als Funktion `my_sort(a, | ||
| + | ++++ | ||
| </ | </ | ||
| Zeile 89: | Zeile 92: | ||
| ===== Mathematische Algorithmen ===== | ===== Mathematische Algorithmen ===== | ||
| + | Mit _iterativen_ Algorithmen berechnen wir Schritt für Schritt das gewünschte Resultat. Das Resultat wird in einer Variable sukzessive akkumuliert. In einer Schleife wird jede Runde ein Wert hinzugefügt, | ||
| + | |||
| + | **Beispiel**: | ||
| + | |||
| + | < | ||
| + | def summe_aller_zahlen(n): | ||
| + | # Berechnet die Summe aller natürlicher Zahlen von 1..n | ||
| + | resultat = 0 # Akkumulator, | ||
| + | | ||
| + | # Klassische Schleife mit Zähler-Variable | ||
| + | zahl = 1 | ||
| + | while zahl <= n: | ||
| + | resultat = resultat + zahl | ||
| + | zahl = zahl + 1 | ||
| + | return resultat | ||
| + | print(summe_aller_zahlen(10)) | ||
| + | </ | ||
| ==== Aufgaben B ==== | ==== Aufgaben B ==== | ||
| - | === Aufgabe B1: Einfache (math.) | + | === Aufgabe B1: Iterative |
| Schreibe für jede Aufgabe eine Funktion, die passende Argumente entgegennimmt und das Resultat zurück gibt. | Schreibe für jede Aufgabe eine Funktion, die passende Argumente entgegennimmt und das Resultat zurück gibt. | ||
| Zeile 109: | Zeile 129: | ||
| ++++ | ++++ | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| def multiply(a, b): | def multiply(a, b): | ||
| """ | """ | ||
| Zeile 147: | Zeile 167: | ||
| return test == n | return test == n | ||
| - | a = input(" | + | a = int(input(" |
| - | b = input(" | + | b = int(input(" |
| print(str(a) + " * " + str(b) + " = " + str(multiply(a, | print(str(a) + " * " + str(b) + " = " + str(multiply(a, | ||
| print(str(a) + " ^ " + str(b) + " = " + str(exponentiate(a, | print(str(a) + " ^ " + str(b) + " = " + str(exponentiate(a, | ||
| Zeile 157: | Zeile 177: | ||
| print(str(a) + " ist eine Zweierpotenz: | print(str(a) + " ist eine Zweierpotenz: | ||
| print(str(b) + " ist eine Zweierpotenz: | print(str(b) + " ist eine Zweierpotenz: | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 172: | Zeile 192: | ||
| ++++ | ++++ | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| def quersumme(x): | def quersumme(x): | ||
| summe = 0 | summe = 0 | ||
| Zeile 184: | Zeile 204: | ||
| print(quersumme(413)) | print(quersumme(413)) | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 226: | Zeile 246: | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| import math | import math | ||
| Zeile 239: | Zeile 259: | ||
| if n < 2: | if n < 2: | ||
| return False | return False | ||
| - | | + | |
| # Es reicht, bis zur Wurzel von n zu testen - gäbe es einen grösseren Teiler t so dass | # Es reicht, bis zur Wurzel von n zu testen - gäbe es einen grösseren Teiler t so dass | ||
| # t*x == n, dann müsste x kleiner sein als Wurzel(n) und wir hätten x bereits gefunden. | # t*x == n, dann müsste x kleiner sein als Wurzel(n) und wir hätten x bereits gefunden. | ||
| Zeile 249: | Zeile 269: | ||
| # Keinen Teiler gefunden -> wir haben eine Primzahl! | # Keinen Teiler gefunden -> wir haben eine Primzahl! | ||
| return True | return True | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 261: | Zeile 281: | ||
| * Schreibe eine Funktion `prime_factors(x)`, | * Schreibe eine Funktion `prime_factors(x)`, | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | Mit den Funktionen `is_prime` und `is_divisor` von oben: | + | Mit den Funktionen `is_prime` und `is_divisor` von oben ([[https:// |
| <code python> | <code python> | ||
| def next_prime(n): | def next_prime(n): | ||
| Zeile 300: | Zeile 320: | ||
| * Schreibe eine Funktion `ggT(x,y)`, die zwei Zahlen `x` und `y` entgegennimmt und den ggT der beiden zurückgibt. | * Schreibe eine Funktion `ggT(x,y)`, die zwei Zahlen `x` und `y` entgegennimmt und den ggT der beiden zurückgibt. | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| def ggt(a, b): | def ggt(a, b): | ||
| """ | """ | ||
| Zeile 312: | Zeile 332: | ||
| print(ggt(544, | print(ggt(544, | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 322: | Zeile 342: | ||
| * Schreibe eine Funktion `wurzel(x)`, | * Schreibe eine Funktion `wurzel(x)`, | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| def wurzel(n, precision=0.0001): | def wurzel(n, precision=0.0001): | ||
| """ | """ | ||
| Zeile 339: | Zeile 359: | ||
| print(wurzel(225)) | print(wurzel(225)) | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||