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 [2024-12-12 20:50] – [Auftrag zu Primzahlen] hof | gf_informatik:algorithmen_ii [2025-12-11 09:14] (aktuell) – hof | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| ===== Struktogramme und Python ===== | ===== Struktogramme und Python ===== | ||
| + | < | ||
| ==== Aufgaben A ==== | ==== Aufgaben A ==== | ||
| Zeile 11: | Zeile 12: | ||
| === Aufgabe A1: Maximum === | === Aufgabe A1: Maximum === | ||
| - | * Teil 1: Zwei Zahlen sollen eingegeben und die grössere der beiden Zahlen ausgegeben werden. | + | * Teil 1: Zwei Zahlen sollen eingegeben |
| - | * Teil 2: Schreibe Code um als Funktion `max2(a, b)`, die das Maximum von a und b mit `return` _zurückgibt_. Die _Eingabe_ (`input`) | + | * 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!_ |
| <nodisp 1> | <nodisp 1> | ||
| ++++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 37: | Zeile 38: | ||
| <nodisp 1> | <nodisp 1> | ||
| ++++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 111: | Zeile 131: | ||
| <nodisp 1> | <nodisp 1> | ||
| ++++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 199: | Zeile 219: | ||
| * Eine Funktion, die herausfindet (_zurückgibt_), | * Eine Funktion, die herausfindet (_zurückgibt_), | ||
| * Wieviele Parameter hat die Funktion `is_divisor`? | * Wieviele Parameter hat die Funktion `is_divisor`? | ||
| + | |||
| === Auftrag zu Primzahlen === | === Auftrag zu Primzahlen === | ||
| Zeile 225: | Zeile 246: | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| import math | import math | ||
| Zeile 238: | 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. | ||
| - | while i <= math.sqrt(n): | + | while t <= math.sqrt(n): |
| - | if is_divisor(n, | + | if is_divisor(n, |
| # Wir haben einen Teiler gefunden -> keine Primzahl, beenden. | # Wir haben einen Teiler gefunden -> keine Primzahl, beenden. | ||
| return False | return False | ||
| - | | + | |
| # Keinen Teiler gefunden -> wir haben eine Primzahl! | # Keinen Teiler gefunden -> wir haben eine Primzahl! | ||
| return True | return True | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 260: | 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 299: | 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 311: | Zeile 332: | ||
| print(ggt(544, | print(ggt(544, | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 321: | 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 338: | Zeile 359: | ||
| print(wurzel(225)) | print(wurzel(225)) | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||