Programmeerimisel on sageli vaja sama tegevust mitu korda järjest korrata. Selleks kasutatakse tsükleid.
C++ keeles on kaks levinud tsüklit:
-
while -
for
while-tsükkel
while-tsükkel kordab koodiplokki seni, kuni etteantud tingimus on tõene.
Üldine kuju:
while (tingimus) {
// Käsud, mida korratakse
}
Enne iga kordust kontrollitakse tingimust. Kui tingimus on tõene, täidetakse looksulgude vahel olevad käsud.
Kui tingimus muutub vääraks, lõpetatakse tsükli täitmine.
Näide:
Järgmine programm loendab kolmest üheni ja väljastab lõpuks teksti „Head uut aastat!“.
int countdown = 3;
while (countdown > 0) {
cout << countdown << "\n";
countdown--;
}
cout << "Head uut aastat!\n";
Mis siin toimub?
-
Loome muutuja
countdown, mille algväärtus on 3. -
Kontrollime, kas
countdownon suurem kui 0. -
Kui tingimus on tõene, väljastame muutuja väärtuse.
-
Vähendame muutuja väärtust ühe võrra.
-
Kordame tegevust, kuni muutuja väärtus jõuab nullini.
-
Kui tingimus ei ole enam tõene, väljastame teksti „Head uut aastat!“.
Programmi väljund:
3
2
1
Head uut aastat!
NB! Selles näites kasutatakse C++ standardset väljundkäsku cout, mille jaoks tuleb lisada teek <iostream> ja kasutada std::cout või sobivat nimeruumi määrangut. ESP32 ja Arduino puhul kasutatakse teksti väljastamiseks sageli hoopis Serial.println() funktsiooni. TLDR: cout vajab <iostream>
for-tsükkel
Kui teame ette, mitu korda soovime mingit tegevust korrata, on tavaliselt mugavam kasutada for-tsüklit.
Üldine kuju:
for (algväärtus; tingimus; muutmine) {
// Käsud, mida korratakse
}
for-tsüklis on kolm osa:
-
Algväärtus – määrame loenduri algväärtuse.
-
Tingimus – määrame, millal tsüklit jätkatakse.
-
Muutmine – määrame, kuidas loenduri väärtus pärast iga kordust muutub.
Näide:
Järgmine programm väljastab paarisarvud nullist kümneni.
for (int i = 0; i <= 10; i = i + 2) {
cout << i << "\n";
}
Programmi väljund:
0
2
4
6
8
10
Mis siin toimub?
-
int i = 0– loome muutujai(i nagu index number), mille algväärtus on 0. -
i <= 10– tsükkel jätkub seni, kuniion väiksem või võrdne kümnega. -
i = i + 2– pärast iga kordust suurendame muutujat kahe võrra.
Seega väljastatakse ainult paarisarvud.
for-tsükkel meie mootorite näidis programmis
for (int i = 0; i < 50; i++) {
paremKiirus++;
analogWrite(PAREM_PWM, paremKiirus);
}
Selles näites korratakse looksulgude vahel olevaid käske 50 korda.
Iga kordusega suurendatakse muutuja paremKiirus väärtust ühe võrra ning saadetakse uus PWM-väärtus parema mootori juhtpin'ile.
Kui paremKiirus algväärtus on 100, siis pärast tsükli lõppu on selle väärtus 150.
Pane tähele, et selles näites kasutatakse PAREM_PWM pin'i, sest soovime juhtida paremat mootorit.
