Õppematerjal 09

while- ja for-tsüklid – kuidas tegevust mitu korda korrata

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?

  1. Loome muutuja countdown, mille algväärtus on 3.

  2. Kontrollime, kas countdown on suurem kui 0.

  3. Kui tingimus on tõene, väljastame muutuja väärtuse.

  4. Vähendame muutuja väärtust ühe võrra.

  5. Kordame tegevust, kuni muutuja väärtus jõuab nullini.

  6. 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 muutuja i (i nagu index number), mille algväärtus on 0.

  • i <= 10 – tsükkel jätkub seni, kuni i on 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.