Bedingungen als Funktionen
Im letzten Abschnitt haben wir gesehen, dass man Bedingungen miteinander verknüpfen kann. Wir betrachten nochmal das Programm, dass beim Wurf zweier Würfel ein Pasch und noch dazu ein Sechserpasch erkennt.
Das Programm funktioniert hervorragend. Wenn man es aber verändern möchte, muss man sich immer wieder in die nicht ganz einfachen logischen Verknüpfungen von Bedingungen hineindenken. Einfacher wäre es, wenn man auch für die einzelnen betrachteten Fälle eigene Namen hätte.
Das kann man erreichen, wenn man wieder Funktionen benutzt:
Hinter return
steht jetzt im Grunde wieder eine Formel,
so wie bei anderen Funktionen auch. Aber hier ist es keine Formel, die eine Zahl zurückliefert. Stattdessen ist es eine
Formel für eine Bedingung. Der Wert dieser Formel ist keine Zahl,
sondern eine Information darüber, ob die Bedingung erfüllt ist oder
nicht. Letztlich ist der Wert also entweder ein WAHR oder ein FALSCH.
Solche Formeln mit den Werten WAHR oder FALSCH kennt man normalerweise
nicht aus dem Mathematikunterricht. Sie werden als Boolesche Formeln
bezeichnet, wieder nach dem Mathematiker George Boole (1815-1864); die
Werte WAHR und FALSCH werden als Boolesche Werte (im Englischen als
"booleans") bezeichnet.
Funktionen, die einen Booleschen Wert zurückliefern, nennt man auch
Boolesche Funktionen.
Das Verwenden von Booleschen Funktionen hat unser Programm — ehrlich gesagt — nicht kürzer gemacht, sondern länger. Dafür ist es aber für einen Außenstehenden deutlich lesbarer geworden, denn er kann mit einem Blick erkennen, dass es hier um gewöhnliche Pasch-Würfe und Sechserpaschs geht.
Aufgabe 1: Kein Pasch
kein_pasch(w1,w2)
.
Aufgabe 2: Teilbarkeit
Beim Lesen bist du vielleicht über die Bedingung
((zahl1 % zahl2)==0)
gestolpert. Sie bedeutet folgendes:
Das Zeichen %
steht für eine Rechenoperation, die du aus vermutlich aus deiner
Grundschulzeit kennst. Dort hat man beispielsweise gerechnet:
$17:5 = 3 \mathrm{~Rest~} 2$.
Der Python-Ausdruck zahl1 % zahl2
berechnet den Rest, wenn
man zahl1
durch zahl2
ganzzahlig (also so wie
in der Grundschule) dividiert. Wenn bei einer ganzzahligen Division als
Rest 0 herauskommt, dann weiß man, dass die erste Zahl durch die
zweite Zahl teilbar war.
Jetzt wissen wir, wie (bzw. wieso) die Zeile so funktioniert, aber ein Außenstehender müsste sich erst wieder hineindenken.
Erstelle in dem gegebenen Programmtext eine Boolesche Funktion teilbar(...)
und schreibe
den Programmtext so um, dass bei der Fallunterscheidung die neue
Funktion benutzt wird.
Aufgabe 3: Zahlenbereiche
liegtzwischen(...)
und teste sie
mit eiem entsprechenden kleinen Programm.