Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
lehrkraefte:blc:informatik:glf20:programmieren:selektion [2020/09/29 08:58] Ivo Blöchliger created |
lehrkraefte:blc:informatik:glf20:programmieren:selektion [2020/10/23 11:35] (current) Ivo Blöchliger |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Selektion: if, if/else, if/ | ====== Selektion: if, if/else, if/ | ||
+ | Programme sollen auf unterschiedliche Eingaben oder Zustände unterschiedliche reagieren können. Dies wird mit '' | ||
+ | |||
+ | <WRAP todo> | ||
+ | Kopieren, testen und verstehen Sie folgenden Code: | ||
+ | <code python> | ||
+ | # Ganze Zahl einlesen | ||
+ | zahl = inputInt(" | ||
+ | |||
+ | # Der Abstand um das '>' | ||
+ | # Der Doppelpunkt am Ende der if-Zeile muss stehen | ||
+ | # Danach wird der Code eingerückt. | ||
+ | if zahl > 10: | ||
+ | print(" | ||
+ | print(" | ||
+ | print(" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP info> | ||
+ | Nach '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * ''< | ||
+ | Bedingungen können negiert und verknüpft werden: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | </ | ||
+ | |||
+ | <WRAP todo> | ||
+ | True oder False? Bei den letzen beiden Aufgaben **nicht rechnen**, sondern überlegen! | ||
+ | <quizlib id=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP info> | ||
+ | Mit '' | ||
+ | <code python> | ||
+ | a = 4 | ||
+ | if a<3: | ||
+ | print(" | ||
+ | else: | ||
+ | print(" | ||
+ | </ | ||
+ | Es ist auch möglich, mit '' | ||
+ | <code python> | ||
+ | name = " | ||
+ | if name==" | ||
+ | print(" | ||
+ | elif name==" | ||
+ | print(" | ||
+ | else: | ||
+ | print(" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP todo> | ||
+ | Schreiben Sie ein Programm, das eine Aussentemperatur einliest und dann die Temperatur in Worten ausgibt, z.B. " | ||
+ | |||
+ | Beispiel einer Ausgabe | ||
+ | <code text> | ||
+ | -8°C ist kalt. | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP todo> | ||
+ | Schreiben die ein Programm, das die allgemeine lineare Gleichung $ax + b = 0$ löst. Das Programm soll die Koeffizienten $a$ und $b$ einlesen und die Lösung ausgeben. Behandeln Sie auch den Spezialfall, | ||
+ | </ | ||
+ | |||
+ | <hidden Aufgabe, wenn die Lösung der quadratischen Gleichung schon behandelt wurde> | ||
+ | <WRAP todo> | ||
+ | Schreiben Sie ein Programm, das die quadratische Gleichung $ax^2+bx+c=0$ löst. Die Koeffizienten $a$, $b$ und $c$ sollen am Anfang direkt im Programmcode definiert werden. | ||
+ | |||
+ | Unterscheiden Sie dazu die unterschiedlichen Fälle, die auftreten können und melden Sie die Anzahl der Lösungen und die Lösungen selbst. | ||
+ | |||
+ | Starten Sie Ihr Programm wie folgt: | ||
+ | <code python> | ||
+ | # Definition der Koeffizienten in einer Zeile, durch Kommas getrennt. | ||
+ | a,b,c = 4,2,-3 | ||
+ | print(" | ||
+ | </ | ||
+ | Beispiel-Ausgaben: | ||
+ | <code text> | ||
+ | Gleichung 4.00x^2+2.00x-3.00 = 0 | ||
+ | Zwei Lösungen x1=-1.151388 und x2=0.651388 | ||
+ | |||
+ | Gleichung 1.00x^2+2.00x+1.00 = 0 | ||
+ | Genau eine Lösung x=-1.000000 | ||
+ | |||
+ | Gleichung 1.00x^2+2.00x+3.00 = 0 | ||
+ | Keine reelle Lösung | ||
+ | |||
+ | Gleichung 0.00x^2+1.00x+2.00 = 0 | ||
+ | Lineare Gleichung, eine Lösung: x=-2.000000 | ||
+ | |||
+ | Gleichung 0.00x^2+0.00x+1.00 = 0 | ||
+ | Falsche Aussage, keine Lösung | ||
+ | |||
+ | Gleichung 0.00x^2+0.00x+0.00 = 0 | ||
+ | Wahre Aussage, L=R, jedes x ist Lösung | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP info> | ||
+ | Der **Modulo-Operator** '' | ||
+ | |||
+ | Werden Zahlen mit '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | </ | ||
+ | |||
+ | <WRAP todo> | ||
+ | **FIZZ BUZZ!** Programmieren Sie ein Programm, das alle Zahlen von 1 bis 100 ausgibt, aber alle jene, die durch 3 teilbar sind durch '' | ||
+ | <hidden Verlangte Ausgabe bis 30> | ||
+ | <code text> | ||
+ | 1 | ||
+ | 2 | ||
+ | fizz | ||
+ | 4 | ||
+ | buzz | ||
+ | fizz | ||
+ | 7 | ||
+ | 8 | ||
+ | fizz | ||
+ | buzz | ||
+ | 11 | ||
+ | fizz | ||
+ | 13 | ||
+ | 14 | ||
+ | fizz buzz | ||
+ | 16 | ||
+ | 17 | ||
+ | fizz | ||
+ | 19 | ||
+ | buzz | ||
+ | fizz | ||
+ | 22 | ||
+ | 23 | ||
+ | fizz | ||
+ | buzz | ||
+ | 26 | ||
+ | fizz | ||
+ | 28 | ||
+ | 29 | ||
+ | fizz buzz | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Optionale, weitere Aufgaben ===== | ||
+ | * Geben Sie alle Teiler einer Zahl aus. | ||
+ | * Geben Sie die Primfaktorzerlegung einer Zahl aus. | ||
+ | * Bestimmen Sie, ob eine gegebene Zahl eine Primazahl ist oder nicht. | ||
+ | * Geben Sie die Primzahlen der Reihe nach aufsteigend aus. | ||
+ | |||
+ | ===== Lösungsvorschläge ===== | ||
+ | <hidden Lösungvorschläge> | ||
+ | <code python> | ||
+ | for i in range(1, | ||
+ | if i % 3 == 0 and i % 5 == 0: | ||
+ | print(" | ||
+ | elif i % 3 == 0: | ||
+ | print(" | ||
+ | elif i % 5 == 0: | ||
+ | print(" | ||
+ | else: | ||
+ | print(i) | ||
+ | </ | ||
+ | |||
+ | <code python> | ||
+ | t = inputInt(" | ||
+ | text = "%d°C ist " % t | ||
+ | if (t< | ||
+ | text += " | ||
+ | elif t<25: | ||
+ | text += " | ||
+ | else: | ||
+ | text += " | ||
+ | |||
+ | print(text+" | ||
+ | </ | ||
+ | |||
+ | <code python> | ||
+ | # Definition der Koeffizienten | ||
+ | a,b,c = 0,0,0 | ||
+ | print(" | ||
+ | |||
+ | if a==0: # Lineare Gleichung | ||
+ | if b==0: # Gleichung ohne x | ||
+ | if c==0: | ||
+ | print(" | ||
+ | else: | ||
+ | print(" | ||
+ | else: | ||
+ | print(" | ||
+ | else: # Quadratische Gleichung | ||
+ | d = b*b-4*a*c | ||
+ | if (d<0): | ||
+ | print(" | ||
+ | elif d==0: | ||
+ | print(" | ||
+ | else: | ||
+ | d = d**0.5 # Wurzel aus der Diskriminante | ||
+ | x1 = (-b-d)/ | ||
+ | x2 = (-b+d)/ | ||
+ | print(" | ||
+ | </ | ||
+ | </ |