Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
lehrkraefte:blc:informatik:glf20:programmieren:division [2020/10/28 10:33] mirco.triner created |
lehrkraefte:blc:informatik:glf20:programmieren:division [2020/10/30 13:27] (current) mirco.triner |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Ganzzahlige Division - Modulo ====== | ====== Ganzzahlige Division - Modulo ====== | ||
- | Schleifen, werden benötigt, um einen Codeblock, den man auch als Schleifenkörper bezeichnet, wiederholt auszuführen. In Python gibt es zwei Schleifentypen: | ||
<WRAP info> | <WRAP info> | ||
- | Die meisten Schleifen enthalten einen Zähler oder ganz allgemein Variablen, die im Verlauf der Berechnungen innerhalb des Schleifenkörpers ihre Werte ändern. Ausserhalb, d.h. noch vor dem Beginn der Schleife, werden diese Variablen initialisiert. | + | * |
- | | + | < |
- | Vor jedem Schleifendurchlauf wird geprüft, ob ein Ausdruck, in dem diese Variable oder Variablen vorkommen, wahr ist. Dieser Ausdruck bestimmt | + | |
- | Wenn ja, geht es wie oben beschrieben weiter, ansonsten wird der Schleifenkörper nicht mehr ausgeführt und es wird mit dem Rest des Skriptes fortgefahren. Das nebenstehende Diagramm zeigt dies schematisch. | + | * Der Modulo-Operator bezeichnet hingegen den Rest, welcher bei einer ganzzahligen Division übrig bleibt. In unserem Beispiel wäre das zwei. |
- | * Solange | + | < |
+ | |||
+ | * Der Variablentyp des Resultats einer ganzzahligen Division, oder dem Rest, hängt vom Input ab. Sind beide Zahlen Integer, so ist auch das Resultat ein Integer. Ist eine der Inputvariablen Float, so ist auch das Resultat Float. | ||
</ | </ | ||
Line 14: | Line 15: | ||
Kopieren, testen und verstehen Sie folgenden Code: | Kopieren, testen und verstehen Sie folgenden Code: | ||
<code python> | <code python> | ||
- | counter | + | x = 4 |
- | while counter < 10: | + | y = 10 |
- | print(counter) | + | |
- | | + | print(y//x) |
+ | print(y%x) | ||
</ | </ | ||
+ | Ändern Sie die Werte von x und y. | ||
</ | </ | ||
<WRAP info> | <WRAP info> | ||
- | Bei einer While-Schleife | + | BREAK: Ein break in einer Schleife |
</ | </ | ||
+ | <WRAP info> | ||
+ | Negative Zahlen werden gleich wie positive Zahlen bei einer ganzzahligen Division behandelt. | ||
- | <WRAP todo> | + | * Aus 10/3=3,3 wird bei der ganzzahligen Division 3. 3,3 wird in diesem Fall abgerundet. |
- | Schreiben Sie ein Programm, bei welchem | + | |
+ | * Aus -10/3=-3,3 wird bei der ganzzahligen Division -4. -3,3 wird in diesem Fall ebenfalls gegen unten gerundet. | ||
- | Beispiel einer Ausgabe | ||
- | <code text> | ||
- | Neue Zahl: 15 | ||
- | Zahl zu gross | ||
- | Neue Zahl: | ||
- | </ | ||
</ | </ | ||
<WRAP todo> | <WRAP todo> | ||
- | Nun drehen wir den Spiess um. Schreiben Sie ein Programm, welches eine zufällige Zahl zu finden versucht. Versuchen Sie einen möglichst effizienten Algorithmus zu finden. | ||
- | </ | ||
- | <WRAP todo> | + | <quizlib id=" |
- | Schreibe ein Programm, welches eine Liste bestehend aus ganzen Zahlen aufsteigend sortiert. Der Benutzer soll per Eingabe entscheiden, welche Elemente in die Liste kommen und er soll so viele Elementen eingeben können, wie er will. Wenn er mit der Eingabe fertig | + | < |
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
</ | </ | ||
- | <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 ===== | ||
- | * Schreibe ein anderes Programm, welches eine Liste aus Zeichenketten alphabetisch sortiert. | ||
- | * 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(" | + | |
- | </ | + | |
- | </ | + |