Bereiche
Viele Bedingungen fragen, ob eine Zahl in einem Bereich liegt: Liegt die Temperatur zwischen 10 und 25 Grad? Wiegt der Kürbis von 4 bis 8 kg? In der Mathematik würdest du 10 ≤ t ≤ 25 schreiben. In Lua brauchst du zwei Vergleiche, die mit and verbunden sind:
local temperatur = 18
if temperatur >= 10 and temperatur <= 25 then
print("Den Hühnern ist es angenehm")
endDas gibt Folgendes aus:
Den Hühnern ist es angenehmJeder Teil ist ein vollständiger Vergleich mit temperatur. Die mathematische Schreibweise funktioniert nicht, und ihr Fehler kann dich verwirren:
local temperatur = 18
if 10 <= temperatur <= 25 then
print("Den Hühnern ist es angenehm")
endmain.lua:2: attempt to compare boolean with numberLua vergleicht von links nach rechts: 10 <= temperatur ergibt true, und dann versucht es true <= 25, einen Wahrheitswert mit einer Zahl. Das Gegenteil, „außerhalb des Bereichs“, braucht or: temperatur < 10 or temperatur > 25. Mit and wäre es nie wahr, weil keine Zahl gleichzeitig unter 10 und über 25 liegt.
Wenn du Zahlen in mehrere Bereiche einteilst, nimm elseif. Jedes elseif läuft nur, wenn alle Bedingungen darüber falsch waren, es muss sie also nicht wiederholen:
local gewicht = 6
if gewicht < 4 then
print("Kleiner Kürbis: 10 Münzen")
elseif gewicht <= 8 then
print("Mittlerer Kürbis: 20 Münzen")
else
print("Großer Kürbis: 35 Münzen")
endDas gibt Folgendes aus:
Mittlerer Kürbis: 20 MünzenDas Programm kommt zu gewicht <= 8 nur, wenn gewicht < 4 falsch ist, deshalb braucht es gewicht >= 4 and gewicht <= 8 nicht. Achte auf die Grenzen: Ein Kürbis von 4 kg ist mittel, einer von 8 kg ist noch mittel, und else nimmt alles über 8. Jede Zahl sollte in genau einen Bereich fallen: Bei gewicht < 4 und gewicht > 4 würde ein Kürbis von genau 4 kg durch die Lücke zwischen ihnen fallen.
Bereiche lassen sich mit anderen Bedingungen kombinieren. Wie Emma das Feld gießt, hängt vom Wetter und von der Temperatur ab:
local wetter = "sonnig"
local temperatur = 31
if wetter == "regnerisch" then
print("Heute nicht gießen")
elseif temperatur >= 30 then
print("Morgens und abends gießen")
elseif temperatur >= 15 then
print("Abends gießen")
else
print("Jeden zweiten Tag gießen")
endDas gibt Folgendes aus:
Morgens und abends gießenSo schreibst du es:
Anweisungen
- 1
Führe das Programm aus: Es endet mit einem Fehler. Korrigiere die Bedingung mit
and. Das Programm gibt dann Folgendes aus:Hühnerstall: 18 °C Den Hühnern ist es angenehm - 2
Füge zwei weitere Zweige mit
elseifundelsehinzu: Unter 10 °C gibDie Lampe im Hühnerstall einschaltenaus, über 25 °C gibDie Fenster im Hühnerstall öffnenaus. Ändere danntemperaturin31. Das Programm gibt Folgendes aus:Hühnerstall: 31 °C Die Fenster im Hühnerstall öffnen - 3
Prüfe eine Grenze: Ändere
temperaturin10. Bei 10 °C ist es den Hühnern noch angenehm, das Programm gibt also Folgendes aus:Hühnerstall: 10 °C Den Hühnern ist es angenehmWenn es
Die Lampe im Hühnerstall einschaltenausgibt, sieh dir<und<=in deinen Bedingungen an.