Was sind &&, || und !? | Programmieren lernen mit JavaScript #13
In diesem Video zeige ich euch, was logische Verknüpfungen sind.
Im letzten Video habe ich die Frage gestellt, wie man herausfinden kann, ob eine Zahl in
einem bestimmten Bereich liegt, zum Beispiel zwischen 0 und 100.
Wir haben das gemacht, indem wir zuerst geguckt haben, ob die Zahl zum Beispiel über 0 ist,
und wenn das der Fall ist, haben wir geguckt, ob die Zahl kleiner als 100 ist.
Das Problem an der Sache war, wenn wir jetzt zum Beispiel eine Fehlermeldung ausgeben wollen,
dann reicht das nicht, das ganze einmal zu machen.
Denn wenn wir zum Beispiel die Zahl auf 200 setzen, funktioniert das ganze: Die Zahl liegt
nicht im gewünschten Bereich.
Aber wenn wir die Zahl auf zum Beispiel minus 5 setzen, dann kommt keine Fehlermeldung,
weil wir diese Fehlermeldung hier nur dann ausführen, wenn die Zahl über 0 ist, aber
dann größer als 100.
Und um das zu beheben, müssen wir das ganze doppelt machen und diese Fehlermeldung zweimal
hier einfügen, damit die auch ausgeführt wird, wenn die Zahl kleiner als 0 ist, also
wenn die erste Bedingung schon falsch ist, was ja bei -5 der Fall ist.
Führen wir das hier mal aus.
Jetzt erhalten wir auch hier die Fehlermeldung: Die Zahl liegt nicht im gewünschten Bereich.
Und das ganze ist natürlich unschön, wenn man jetzt alles zweimal machen muss.
Da wäre es natürlich super, wenn man das irgendwie so verbinden könnte, dass das nicht
der Fall ist, dass man nicht doppelte Arbeit hat.
Und das geht mit den logischen Verknüpfungen, die ich euch hier in diesem Video zeigen will.
So wäre das eigentlich ganz cool, wenn man irgendwie das in einer Bedingung haben könnte
— number größer 0 und number kleiner 100, dann direkt dieses alert, Die Zahl liegt im
gewünschten Bereich, und ansonsten halt diese Fehlermeldung
und dann könnte man nämlich diesen Rest hier weglassen.
Aber wir haben das auch im letzten Video ausprobiert, es funktioniert nicht.
Das Problem ist, dass wir hier nicht gesagt haben,
wie das verbunden werden soll bzw. wir haben eigentlich überhaupt nicht gesagt, dass das
verbunden werden soll, wir haben es einfach nur hintereinander geschrieben.
Was wir sagen wollen, ist, dass dieses ganze nur dann der Fall sein soll, wenn sowohl number
größer 0, als auch number kleiner 100 der Fall sind.
Nur dann ist die Zahl im gewünschten Bereich.
Und das kann man machen mit dem Schlüsselwort UND
und damit sagen wir jetzt: Wenn number größer 0 UND number kleiner 100, dann "Die Zahl liegt
im gewünschten Bereich", ansonsten "Die Zahl liegt nicht im gewünschten Bereich.
Führen wir das mal aus und jetzt wird unser Code tatsächlich ausgeführt
und der gibt uns hier die Fehlermeldung, denn die Zahl ist immer noch -5 und -5 liegt natürlich
nicht zwischen 0 und 100, also nicht im gewünschten Bereich.
Und jetzt will ich hier nochmal aufklären, was hier eigentlich abgegangen ist.
Was ist hier passiert?
Das ist die Bedingung.
Ist number größer 0 und number kleiner 100?
Das wurde natürlich erstmal aufgelöst und number ist -5.
Also es wurde geguckt: Ist -5 größer 0?
Natürlich nicht, nein, -5 ist kleiner als 0!
Und ist -5 kleiner als 100?
Ja, -5 ist kleiner als 100.
Das heißt, das ist dabei rausgekommen — false und true.
Das sind diese booleschen Werte, die ich schon mal in einem Video vorgestellt habe, falsch
und wahr.
Und dieses falsch und wahr wird oftmals auch in 0 und 1 ausgedrückt und jetzt seht ihr
schon: Wir sind jetzt auf der tiefsten Ebene des Computers angekommen, auf der grundlegendsten
Ebene, denn der Computer arbeitet ja mit diesen Nullen und Einsen, wie wir ja alle wissen,
und damit arbeiten wir jetzt auch hier in diesem Video.
Angenommen, ihr schließt eine Lampe an eine Stromquelle an (in diesem Fall eine Batterie)
und schaltet zwei Schalter dazwischen.
Wenn der erste Schalter an ist und der zweite Schalter an ist, dann fließt der Strom und
die Lampe leuchtet.
Diese Einsen stehen hier für: Strom fließt.
Wenn wir den ersten Schalter ausmachen, den zweiten aber noch anlassen, dann leuchtet
aber trotzdem die Lampe nicht, weil der Strom einfach nicht mehr durchkommt, weil der erste
Schalter ja aus ist.
Wenn wir auch noch den zweiten Schalter ausmachen, der erste ist immer noch aus, aber das bringt
nichts, weil die Lampe leuchtet dann trotzdem nicht — es kommt einfach gar kein Strom
mehr durch.
Dasselbe wenn wir den ersten wieder anmachen, aber den zweiten noch auslassen.
Auch dann fließt kein Strom und die Lampe bleibt aus.
Das wirkt jetzt total — Uäh, klar?!
Ist doch selbstverständlich!
— aber genau darum geht es ja: Das ist pure Logik!
Was wir hieran sehen, ist, dass die Lampe nur dann leuchtet, wenn beide Schalter an
sind.
Und was ich hiermit dargestellt habe, ist die UND-Verknüpfung oder im Englischen AND.
Das ist genau das, was wir eben gerade verwendet haben, um festzustellen, ob eine Zahl zwischen
0 und 100 liegt.
Da haben wir getestet, ob sie größer als 0 ist und kleiner als 100.
Das waren zwei Vergleiche, und nur wenn beide zugetroffen haben, traf die komplette Bedingung
zu, nämlich nur dann war die Zahl in dem gewünschten Bereich.
Und das ist genau das, was hier auch passiert: Nur wenn beides zutrifft, trifft das komplette
zu.
Wenn das erste zutrifft, aber das zweite nicht, oder das erste trifft nicht zu, aber dafür
das zweite, oder beide treffen nicht zu, dann trifft's einfach insgesamt nicht zu.
Das ganze sieht völlig anders aus, wenn wir unsere Schaltung etwas verändern!
Wenn wir die Schalter nicht mehr hintereinander schalten, sondern parallel, also so gleichberechtigt,
nebeneinander, dann kommt ein völlig anderes Ergebnis raus.
Wenn der erste Schalter an ist und auch der zweite, dann brennt natürlich wieder die
Lampe.
Aber wenn der erste Schalter aus ist, kann noch immer Strom durch den zweiten Schalter
fließen und dadurch brennt auch die Lampe.
Erst wenn beide Schalter aus sind, ist auch die Lampe aus.
Aber wenn wir den einen Schalter wieder anschalten, während der zweite noch aus ist, fließt
wieder Strom und die Lampe kann brennen.
Was wir hieran sehen, ist, dass die Lampe immer dann brennt, wenn mindestens ein Schalter
an ist.
Was ich hiermit gezeigt hab, ist ODER oder im Englischen OR.
Es muss nicht die eine UND die andere Bedingung zutreffen, es reicht, wenn eine ODER die andere
Bedingung zutrifft.
Der dritte und letzte Operator ist NICHT, im Englischen NOT.
Was ist das?
Wir haben jetzt mal nur einen Schalter und der ist aus, aber die Lampe ist an.
Wenn wir den Schalter jetzt an machen, geht die Lampe aus.
Was wir hier haben, ist, dass man das einfach umdreht: Aus 0 wird 1 und aus 1 wird 0.
Und genau das ist dieses NICHT.
Nicht 0, also nicht falsch, heißt wahr.
Wenn etwas nicht falsch ist, dann ist es wahr.
Und andersrum: Wenn etwas nicht wahr ist, dann ist es falsch.
Nicht 1 ist also 0.
Man negiert also einfach den Wert.
Und das passiert in JavaScript und in vielen anderen Programmiersprachen durch dieses Ausrufezeichen.
Fragt mich nicht, warum es ein Ausrufezeichen geworden ist, ist einfach so.
Am Anfang des Videos hab ich schon gezeigt, wie man diese logischen Verknüpfungen anwenden
kann, aber da hatten wir jetzt nur die UND-Verknüpfung ausprobiert.
Jetzt will ich auch nochmal die ODER-Verknüpfung ausprobieren und die Negation.
Öffnet eure Konsole.
Wir machen uns nochmal diese Variable number und setzen die jetzt zum Beispiel auf 12.
Und jetzt wollen wir gucken, ob number Modulo 3 Null ergibt, also quasi, ob es durch 3 teilbar
ist, und ob es durch 4 teilbar ist, also ob number Modulo 4 auch Null ergibt.
Und das ist so.
Es kommt true heraus.
Jetzt ist hier eine interessante Sache und zwar hatte ich euch ja im letzten Video truthy-
und falsy-Werte vorgestellt.
Und wenn wir uns einmal number Modulo 3 ausrechnen, kommt 0 raus.
Und ich hatte euch ja gesagt, dass 0 ein falsy-Wert ist, also der wird als false angenommen, auch
wenn es nicht wirklich false ist.
Was wir hier machen können, ist: Wir nehmen diese number Modulo 3 und setzen die in Klammern
und setzen ein Ausrufezeichen davor.
Dadurch negieren wir quasi das Ergebnis von number Modulo 3, also in diesem Fall die 0,
und dadurch wird daraus true!
D.h. statt dass wir hier gleich Null überprüfen, ob number Modulo 3 Null ergibt, drehen wir
quasi einfach nur den booleschen Wert um, wir negieren das quasi nur.
Und dann können wir number Modulo 3 negiert und number Modulo 4 negiert testen und wir
haben dasselbe Ergebnis.
Wenn wir number jetzt auf einen anderen Wert setzen, zum Beispiel 25, und das dann nochmal
ausführen, dann kommt natürlich false raus, weil 25 ist weder durch 3 noch durch 4 teilbar.
Wir können jetzt allerdings hier hinter ein ODER setzen.
Diese zwei Striche vom ODER kriegt ihr übrigens beim Mac hin, indem ihr die alt-Taste drückt
und dann die 7; bei Windows müsst ihr Alt Gr und dann die Taste mit den eckigen Klammern
drücken.
Dann habt ihr also ein ODER erschaffen und dann prüfen wir, ob die Zahl durch 5 teilbar
ist — und das ist der Fall und dadurch wird
das zu true.
Unsere Zahl muss jetzt also entweder durch 3 und 4 oder durch 5 teilbar sein.
Was wir auch machen können, ist: Angenommen wir haben einen Namen, zum Beispiel irgendwie
Albert oder keine Ahnung, völlig egal, und das ist ein Name aus einem Karteisystem in
einer Verwaltung und die müssen so viele Leute, so viele Namen verwalten, dass es dort
mehrere Angestellte gibt.
Und jeder Angestellte oder jede Angestelle ist für einen Namensbereich zuständig.
Dann gucken wir, wie der Name anfängt, d.h. wir gucken, was der erste Buchstabe des Namens
ist, und gucken, ob der A ist oder B, denn dann ist
Victoria für Sie zuständig (was auch immer).
Und ansonsten halt irgendjemand anderes und so können wir das ganze Alphabet durchgehen.
Solche Sachen könnte man damit machen bzw. solche Sachen kann man damit machen.
Logische Verknüpfungen sind einfach sehr essentiell und gerade für solche Kontrollstrukturen
wie dieses if total wichtig, deswegen ist es auch sehr notwendig die zu kennen.
Im nächsten Video zeige ich euch, wie ihr Kommentare im Code schreibt, also wie ihr
Code schreiben könnt, der nicht ausgeführt wird.
Das macht durchaus Sinn, ich werde das im nächsten Video erklären und ich gebe die
erste Zusammenfassung von dieser Videoserie hier.
Um dieses Video zu sehen, klickt hier in das große Feld in der Mitte oder, falls ihr dieses
Video in einer Playlist seht, zum Beispiel bei css3-html5.de, bleibt einfach dran.