arduino
Loops
Zoeken…
Syntaxis
- voor (verklaring, voorwaarde, iteratie) {}
- terwijl (staat) {}
- do {} while (staat)
Opmerkingen
General Remark
Als je van plan bent een lus te maken om te wachten tot er iets gebeurt, zit je hier waarschijnlijk op het verkeerde spoor. Vergeet niet dat alle code na setup () wordt uitgevoerd vanaf een methode met de naam loop (). Dus als je ergens op moet wachten, is het het gemakkelijkst om niets te doen (of alleen andere onafhankelijke dingen) en de volgende keer terug te komen om de wachttoestand te controleren.
do { } while(condition)
zal de voorwaarde-instructie pas na de eerste iteratie evalueren. Dit is belangrijk om in gedachten te houden als de toestandsverklaring bijwerkingen heeft.
Terwijl
Een while
lus evalueert de toestand ervan en als deze true
, wordt de code van binnen uitgevoerd en begint hij opnieuw. Dat wil zeggen, zolang de toestand ervan true
, wordt de while
lus steeds opnieuw uitgevoerd.
Deze lus wordt 100 keer uitgevoerd, waarbij telkens 1 wordt toegevoegd aan het variabele num
:
int num = 0;
while (num < 100) {
// do something
num++;
}
De bovenstaande lus is gelijk aan een for
lus:
for (int i = 0; i < 100; i++) {
// do something
}
Deze lus wordt voor altijd uitgevoerd:
while (true) {
// do something
}
De bovenstaande lus is gelijk aan een for
lus:
for (;;) {
// do something
}
Voor
for
lussen zijn vereenvoudigde syntaxis voor een veel voorkomend lussenpatroon, wat in meer lijnen met een while
lus kan worden bereikt.
Het volgende is een veelgebruikt voorbeeld van een for
lus, die 100 keer wordt uitgevoerd en vervolgens stopt.
for (int i = 0; i < 100; i++) {
// do something
}
Dit komt overeen met een while
lus:
int num = 0;
while (num < 100) {
// do something
num++;
}
U kunt een eindeloze lus maken door de voorwaarde weg te laten.
for (;;) {
// do something
}
Dit komt overeen met een while
lus:
while (true) {
// do something
}
Doen terwijl
Een do while
lus is hetzelfde als een while
lus, behalve dat deze gegarandeerd ten minste één keer wordt uitgevoerd.
De volgende lus wordt 100 keer uitgevoerd.
int i = 0;
do {
i++;
} while (i < 100);
Een vergelijkbare lus, maar met een andere voorwaarde, wordt 1 keer uitgevoerd.
int i = 0;
do {
i++;
} while (i < 0);
Als de bovenstaande lus slechts een while
lus was, zou deze 0 keer worden uitgevoerd, omdat de voorwaarde vóór de eerste iteratie als false
zou worden geëvalueerd. Maar omdat het een do while
lus is, wordt het eenmaal uitgevoerd en wordt de toestand vervolgens gecontroleerd voordat het opnieuw wordt uitgevoerd.
Debietregeling
Er zijn enkele manieren om de stroom van een lus te onderbreken of te veranderen.
break;
verlaat de huidige lus en voert geen lijnen meer uit binnen die lus.
continue;
zal geen code meer uitvoeren binnen de huidige iteratie van de lus, maar blijft in de lus.
De volgende lus wordt 101 keer uitgevoerd (i = 0, 1, ..., 100) in plaats van 1000, vanwege de instructie break
:
for (int i = 0; i < 1000; i++) {
// execute this repeatedly with i = 0, 1, 2, ...
if (i >= 100) {
break;
}
}
De volgende lus resulteert in de waarde van j
in plaats van 100, vanwege de instructie continue
:
int j=0;
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) { // if `i` is even
continue;
}
j++;
}
// j has the value 50 now.