lehrkraefte:blc:informatik:glf20:programmieren:selektion

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf20:programmieren:selektion [2020/10/18 08:30]
Ivo Blöchliger [Selektion: if, if/else, if/elif/else]
lehrkraefte:blc:informatik:glf20:programmieren:selektion [2020/10/23 11:35] (current)
Ivo Blöchliger
Line 15: Line 15:
   print("Ihre Zahl ist grösser als 10")   print("Ihre Zahl ist grösser als 10")
   print("Wird nur ausgegeben, wenn die Zahl grösser als 10 ist...")   print("Wird nur ausgegeben, wenn die Zahl grösser als 10 ist...")
-print("Das wird immer ausgegeben, nicht mehr im 'if' drin.")+print("Das wird immer ausgegeben, weil nicht mehr eingerückt und damit nicht mehr im 'if' drin.")
 </code> </code>
 </WRAP> </WRAP>
Line 29: Line 29:
   * ''or'': Logisch oder. Ergibt genau dann ''True'', wenn eine der beiden oder beide Bedingungen wahr sind. Z.B. ''if a==b or b==c:''   * ''or'': Logisch oder. Ergibt genau dann ''True'', wenn eine der beiden oder beide Bedingungen wahr sind. Z.B. ''if a==b or b==c:''
 </WRAP> </WRAP>
 +
 +<WRAP todo>
 +True oder False? Bei den letzen beiden Aufgaben **nicht rechnen**, sondern überlegen!
 +<quizlib id="quiz" rightanswers="[['a1'], ['a0'], ['a1'], ['a1'], ['a0']]" submit="Check Answers">
 +    <question title="&lt;pre&gt;2>3&lt;/pre&gt;" type="radio">True|False</question>
 +    <question title="&lt;pre&gt;7>9 or 9>7&lt;/pre&gt;" type="radio">True|False</question>
 +    <question title="&lt;pre&gt;not(True and (False or True))&lt;/pre&gt;" type="radio">True|False</question>
 +    <question title="&lt;pre&gt;234*345&lt;321*251 and False&lt;/pre&gt;" type="radio">True|False</question>
 +    <question title="&lt;pre&gt;1234*4321&lt;2468*2160 or True&lt;/pre&gt;" type="radio">True|False</question>
 +</quizlib>
 +</WRAP>
 +
 +<WRAP info>
 +Mit ''else'' kann ein Code-Block begonnen werden, der ausgeführt wird, wenn das vorhergehende Code-Block im ''if'' nicht ausgeführt wurde. 
 +<code python>
 +a = 4
 +if a<3:
 +  print("a ist kleiner als 3")
 +else:
 +  print("a ist nicht kleiner als 3")  
 +</code>
 +Es ist auch möglich, mit ''elif'' noch weitere Bedingungen zu testen und ein ''else'' am Schluss anzufügen, das ausgeführt wird, wenn alle vorhergehenden Bedingungen falsch waren.
 +<code python>
 +name = "Python"
 +if name=="Python":
 +  print("Hallo Schlange!")
 +elif name=="Monty":
 +  print("Da fehlt doch Python!")
 +else:
 +  print("No comment")
 +</code>
 +</WRAP>
 +
 +
 +<WRAP todo>
 +Schreiben Sie ein Programm, das eine Aussentemperatur einliest und dann die Temperatur in Worten ausgibt, z.B. "kalt", "warm", "heiss" oder mehr Abstufungen.
 +
 +Beispiel einer Ausgabe
 +<code text>
 +-8°C ist kalt.
 +</code>
 +</WRAP>
 +
 +
 +<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, wenn $a=0$ ist.
 +</WRAP>
 +
 +<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("Gleichung %.2fx^2%+.2fx%+.2f = 0" % (a,b,c))  # %+f fügt auf jeden Fall ein Vorzeichen hinzu (+ oder -).
 +</code>
 +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
 +</code>
 +</WRAP>
 +</hidden>
  
 <WRAP info> <WRAP info>
Line 76: Line 158:
 </hidden> </hidden>
 </WRAP> </WRAP>
 +
 +===== 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 ===== ===== Lösungsvorschläge =====
Line 89: Line 177:
     else:     else:
         print(i)         print(i)
 +</code>
 +
 +<code python>
 +t = inputInt("Temperatur in Grad Celsius")
 +text  =  "%d°C ist " % t
 +if (t<15):    
 +    text += "kalt"   # eine Abkürzung für text = text + "kalt"
 +elif t<25:
 +    text += "warm"
 +else:
 +    text += "heiss"
 +
 +print(text+".")
 +</code>
 +
 +<code python>
 +# Definition der Koeffizienten
 +a,b,c = 0,0,0
 +print("Gleichung %.2fx^2%+.2fx%+.2f = 0" % (a,b,c))
 +
 +if a==0:  # Lineare Gleichung
 +    if b==0:  # Gleichung ohne x
 +        if c==0:
 +            print("Wahre Aussage, L=R, jedes x ist Lösung")
 +        else:
 +            print("Falsche Aussage, keine Lösung")
 +    else:
 +        print("Lineare Gleichung, eine Lösung: x=%f" % (-c/b))
 +else: # Quadratische Gleichung
 +    d = b*b-4*a*c  # Diskriminante
 +    if (d<0):
 +        print("Keine reelle Lösung")
 +    elif d==0:
 +        print("Genau eine Lösung x=%f" % (-b/(2*a)))
 +    else:
 +        d = d**0.5 # Wurzel aus der Diskriminante
 +        x1 = (-b-d)/(2*a)
 +        x2 = (-b+d)/(2*a)
 +        print("Zwei Lösungen x1=%f und x2=%f" % (x1, x2))
 </code> </code>
 </hidden> </hidden>
  • lehrkraefte/blc/informatik/glf20/programmieren/selektion.1603002658.txt.gz
  • Last modified: 2020/10/18 08:30
  • by Ivo Blöchliger