Logische Operatoren
Manchmal reicht eine Bedingung nicht. „Emma geht zum Markt, wenn sie mindestens 12 Eier hat und die Sonne scheint“ besteht aus zwei Bedingungen, die durch „und“ verbunden sind. Lua benutzt genau dieses Wort:
local eier = 18
local wetter = "sonnig"
if eier >= 12 and wetter == "sonnig" then
print("Emma geht zum Markt")
endDas gibt Folgendes aus:
Emma geht zum Marktand, or und not sind logische Operatoren. Sie arbeiten mit Bedingungen:
a and bist nur wahr, wenn beide Teile wahr sind;a or bist wahr, wenn mindestens ein Teil wahr ist;not amacht aus wahr falsch und aus falsch wahr.
Lua schreibt sie als Wörter. Viele andere Sprachen benutzen &&, || und !, aber in Lua endet && mit unexpected symbol near '&'.
„Opa Josef kommt am Samstag oder Sonntag zum Helfen“:
local tag = "Sonntag"
if tag == "Samstag" or tag == "Sonntag" then
print("Opa Josef kommt zum Helfen")
endDas gibt Folgendes aus:
Opa Josef kommt zum HelfenJeder Teil muss ein vollständiger Vergleich sein. Wenn du ihn so abkürzt, wie wir sprechen, zu tag == "Samstag" or "Sonntag", ist der rechte Teil nur der Text "Sonntag", und ein Text zählt als wahr (mehr dazu in der nächsten Übung). Die Bedingung ist dann an jedem Tag wahr, auch am Montag, und Lua meldet keinen Fehler.
not ist praktisch bei Wahrheitswert-Variablen. Lies not regnet als „es regnet nicht“:
local regnet = false
if not regnet then
print("Emma gießt das Feld")
endDas gibt Folgendes aus:
Emma gießt das Feldnot gilt nur für den Wert direkt dahinter. not eier > 10 bedeutet nicht „nicht mehr als 10 Eier“: Lua berechnet zuerst not eier, das ist false, und vergleicht dann false mit 10:
local eier = 8
if not eier > 10 then
print("Nicht genug Eier")
endmain.lua:2: attempt to compare number with booleanSetze den Vergleich in Klammern, not (eier > 10), oder schreibe einfach den umgekehrten Vergleich, eier <= 10. In einer längeren Bedingung kommt not zuerst, dann and und zuletzt or, genau wie die Multiplikation vor der Addition. Benutze Klammern, um zu gruppieren, was zusammengehört: (tag == "Samstag" or tag == "Sonntag") and not regnet.
So schreibst du es:
Anweisungen
- 1
Emma bringt die Eier zum Markt, wenn sie mindestens
12Eier hat und es nicht regnet. Schreibe unter die letzte Zeile eineif-Anweisung, die in diesem FallEmma geht zum Marktausgibt. Benutzeandundnot. - 2
Füge einen
else-Zweig hinzu, derEmma bleibt auf dem Hofausgibt. Ändere dannregnetintrue. Ein falscher Teil genügt, um die ganzeand-Bedingung falsch zu machen, das Programm gibt also Folgendes aus:Eier: 20 Emma bleibt auf dem Hof - 3
An Regentagen oder wenn Emma mehr als
30Eier hat, kommt der Händler Hugo auf den Hof, um sie zu kaufen. Schreibe unter dasendeine weitereif-Anweisung mitor, dieHugo kommt auf den Hofausgibt. Das Programm gibt Folgendes aus:Eier: 20 Emma bleibt auf dem Hof Hugo kommt auf den Hof