Zählen
Das zweite Muster zählt: An wie vielen Tagen, Beeten oder Eiern ist eine Bedingung erfüllt? Es sieht aus wie das Addieren, aber statt eines Wertes addierst du 1, und nur dann, wenn ein if es sagt.
Der Händler Hugo kommt jeden 5. Tag auf den Hof. Wie oft kommt er in 30 Tagen?
local besuche = 0
for tag = 1, 30 do
if tag % 5 == 0 then
besuche = besuche + 1
end
end
print("Hugos Besuche: " .. besuche)Hugos Besuche: 6Der Zähler besuche beginnt vor der Schleife bei 0. Die Schleife geht jeden Tag durch, und das if entscheidet, ob er gezählt wird. Das % kennst du aus der Lektion über Variablen: Es gibt den Rest einer Division. tag % 5 == 0 ist wahr, wenn sich der Tag ohne Rest durch 5 teilen lässt, also an jedem 5. Tag: 5, 10, 15, 20, 25 und 30. Mit % 7 bekämst du jeden 7. Tag und mit % 2 jeden zweiten Tag (die geraden). Das Ergebnis gibst du wieder nach der Schleife aus.
Achte auf die beiden end: Das erste schließt das if, das zweite die Schleife. Mit 4 Leerzeichen mehr Einrückung für jede Ebene siehst du, welches end zu was gehört. Wenn besuche = besuche + 1 außerhalb des if landet (aber noch in der Schleife), zählt das Programm jeden Tag und gibt Hugos Besuche: 30 aus.
Eine Schleife kann mehrere Dinge zählen, jedes in einem eigenen Zähler. Mit if und else wird jeder Tag genau einmal gezählt, im einen oder im anderen Zähler:
local besuche = 0
local ohne_hugo = 0
for tag = 1, 30 do
if tag % 5 == 0 then
besuche = besuche + 1
else
ohne_hugo = ohne_hugo + 1
end
end
print("Tage mit Hugo: " .. besuche)
print("Tage ohne Hugo: " .. ohne_hugo)Tage mit Hugo: 6
Tage ohne Hugo: 246 + 24 ist 30, einer für jeden Tag. Die Zähler so zusammenzuzählen ist eine schnelle Probe, ob du richtig gezählt hast.
So schreibst du es:
Anweisungen
- 1
In dieser Saison regnet es jeden 3. Tag: am Tag 3, 6, 9 und so weiter. Zähle die Regentage: Erzeuge eine lokale Variable
regenmit dem Wert0, gehe die Tage von 1 bistagemit einerfor-Schleife durch und erhöheregenan jedem Tag, der sich durch 3 teilen lässt, um 1. Gib nach der Schleife Folgendes aus:Regentage: 13 - 2
An allen anderen Tagen muss Emma gießen. Zähle sie in derselben Schleife: Erzeuge vor der Schleife eine lokale Variable
trockenmit dem Wert0und erhöhe sie in einemelse-Zweig. Gib nach der Schleife das Ergebnis in der Zeile unter den Regentagen aus:Regentage: 13 Trockentage: 27 - 3
Emma geht jeden 7. Tag auf den Markt, aber nicht, wenn es regnet. Zähle in derselben Schleife die Tage, die sich durch 7, aber nicht durch 3 teilen lassen, in einem dritten Zähler,
markt. Gib am Ende Folgendes aus:Markttage: 4