arduino
Loops
Sök…
Syntax
- för (deklaration, villkor, iteration) {}
- medan (villkor) {}
- gör {} medan (villkor)
Anmärkningar
General Remark
Om du tänker skapa en slinga för att vänta på att något ska hända, är du förmodligen på fel väg här. Kom ihåg snarare att all kod efter installationen () körs från en metod som heter loop (). Så om du behöver vänta på något, är det lättast att inte göra någonting (eller bara andra oberoende saker) och komma tillbaka för att kontrollera om väntetillståndet nästa gång.
do { } while(condition)
kommer inte att utvärdera tillståndsuttalandet förrän efter den första iterationen. Detta är viktigt att komma ihåg om tillståndsdeklarationen har biverkningar.
Medan
En while
slinga kommer att utvärdera dess tillstånd, och om det är true
kommer den att köra inuti och börja om igen. Det är, så länge dess tillstånd utvärderas till true
, kommer while
loopen att köras om och om igen.
Denna slinga körs 100 gånger, varje gång läggs 1 till variabeln num
:
int num = 0;
while (num < 100) {
// do something
num++;
}
Ovanstående slinga motsvarar en for
loop:
for (int i = 0; i < 100; i++) {
// do something
}
Denna slinga kommer att köras för alltid:
while (true) {
// do something
}
Ovanstående slinga motsvarar en for
loop:
for (;;) {
// do something
}
För
for
slingor är förenklade syntax för en mycket vanlig slingmönster, som kan åstadkommas på flera linjer med en while
slinga.
Följande är ett vanligt exempel på en for
loop, som kommer att köras 100 gånger och sedan stoppa.
for (int i = 0; i < 100; i++) {
// do something
}
Detta är ekvivalent med en while
loop:
int num = 0;
while (num < 100) {
// do something
num++;
}
Du kan skapa en ändlös slinga genom att utelämna villkoret.
for (;;) {
// do something
}
Detta är ekvivalent med en while
loop:
while (true) {
// do something
}
Göra medan
En do while
loop är densamma som en while
loop, förutom att den garanteras att köra minst en gång.
Följande slinga körs 100 gånger.
int i = 0;
do {
i++;
} while (i < 100);
En liknande slinga, men med ett annat tillstånd, kör en gång.
int i = 0;
do {
i++;
} while (i < 0);
Om ovanstående slingan var bara en while
slinga skulle köra 0 gånger, eftersom villkoret skulle utvärderas till false
innan den första iteration. Men eftersom det är en do while
loop kör den en gång och kontrollerar sedan dess tillstånd innan den körs igen.
Flödeskontroll
Det finns några sätt att bryta eller ändra en slingas flöde.
break;
kommer att lämna den aktuella slingan och kommer inte att köra fler rader inom den slingan.
continue;
kommer inte att köra mer kod inom den aktuella iterationen av slingan, men kommer att förbli i slingan.
Följande slinga kommer att exekvera 101 gånger (i = 0, 1, ..., 100) i stället för 1000, på grund av break
uttalande:
for (int i = 0; i < 1000; i++) {
// execute this repeatedly with i = 0, 1, 2, ...
if (i >= 100) {
break;
}
}
Följande slinga kommer att resultera i att j
värdet blir 50 istället för 100 på grund av 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.