Prisijungę

We have 6 guests and no members online

For ciklai 

 

Programuojant neretai susidaro situacija, kad tam tikrą kodo dalį reikia pakartoti kelis kartus ar netgi daug kartų. Standartiškai veiksmai programoje atliekami eilės tvarka. Iš pradžių pirmas veiksmas, tada antras, trečias ir t.t.

Programavimo kalbos suteikia įvairių kontrolės būdų, kurie leidžia veiksmus atlikti sudėtingesne eiga. Pavyzdžui, ciklai mums leidžia įvykdyti vieną veiksmą ar veiksmų grupę keletą kartų. Kaip atrodo grafiškai:

1

Dažniausiai pasitaikantys ciklų tipai yra šie:

Ciklo tipas Apibūdinimas
For ciklas Kartoja veiksmų seką daug kartų ir eigoje keičia ciklo kintamąjį.
While ciklas Kartoja veiksmų seką daug kartų kol sąlyga yra teisinga. Sąlygą tikrina kiekvieną kartą prieš pradedant kartoti ciklą.
Ciklas cikle Galima vieną ar daugiau ciklų įkelti į kitą ciklą.

 

Vienas iš esminių punktų yra tai, kad cikle sukurti kintamieji pasibaigus ciklui yra sunaikinami. Taip pat atkreipkite dėmesį, kad yra begaliniai ciklai. Pavyzdžiui, for ciklui nėra būtina aprašyti visas tris antraštės dalis, mes galima jas palikti tuščias.

 

for( ; ; ){
   veiksmas1
   veiksmas2
}

 

Gauname ciklą kurio sąlyga visada bus teisinga ir jis vyks amžinai. 

 

Pats for ciklas labai patogus veiksmų kontroliavimui, kai mes norime juos atlikti numatytą kartų skaičių. Tarkim 5, 10 ar 100 kartų. Jo sintaksė yra tokia:

for( pradžia; sąlyga; pokytis){

    veiksmai;

  }

  for( init; condition; increment){

    statement(s);

  } 

 

 Kaipgi vyksta ciklas: 

•  Iš pradžių įvyksta pirmoji antraštės dalis (pradžia, init). Ji mums leidžia aprašyti ciklo kintamuosius.

•  Toliau tikrinama sąlyga (contition). Jeigu ji tenkinama, tai pradedami veiksmai. Jeigu ji netenkinama, tai ciklo veiksmai neatliekami ir ciklas nutraukiamas, pereinama prie už ciklo esančių veiksmų. 

•  Kai atliekami ciklo veiksmai, grįžtama prie antraštės pokyčio (increment) dalies. Tuo metu yra atnaujinami ciklo kintamieji. 

•  Viskas kartojama iš naujo. Tikrinama sąlyga ir procesas pradedamas iš naujo (veiksmai, pokytis, sąlyga). Tai tęsiasi tol, kol sąlyga pasidaro netenkinama.

 

Ciklo diagrama

02

 

 

Dažnai pasitaiko, kad naudojami ciklai pakeisti kintamųjų reikšmėms. Tarkim mes norime, kad keistųsi mirksėjimo dažnis programos eigoje automatiškai. Tai labai patogu aprašyti for cikle.

const int LED=9; 

void setup()

{

pinMode (LED, OUTPUT);

}

void loop()

{

  for (int i=100; i<=1000; i=i+100)

  {

    digitalWrite(LED, HIGH);

    delay(i);

    digitalWrite(LED, LOW);

    delay(i);

  }

}

Sukompiliuojame šį kodą ir nusiunčiame į Arduino. Kas nutiks? Galite iš pradžių stebėti ir pabandyti suprasti patys. For ciklo antraštė susideda iš trijų dalių, atskirtų kabliataškiais: 

   1. Pirma dalis nurodo nuo kurios reikšmės prasideda ciklo intervalas.

   2. Antroji dalis nurodo kada ciklas turi sustoti. Ciklo veiksmai bus kartojami vėl ir vėl kol sąlyga bus teisinga. <= reiškia mažiau arba lygu. Taigi šiame cikle veiksmai bus kartojami tol, kol kintamasis i bus mažesnis arba lygus 1000.

   3. Paskutinė dalis sako, kaip keisis kintamasis i kiekvieno ciklo gale. Šiuo atveju ji padidės 100.

 

Geresniam suvokimui pervelkime 2 ciklo fazes:

   1. i lygu 100 (prasideda pirmoji fazė).

   2. LED‘as įsijungia ir šviečia 100 ms.

   3. LED‘as išsijungia ir laukia 100 ms.

   4. Ciklo gale kintamasis i padidėja 100 ir įgauna reikšmę 200 (baigiasi pirmoji fazė).

   5. 200 yra mažiau nei 1000 ir ciklas vėl kartojamas (prasideda antroji fazė).

   6. LED‘as įsijungia ir šviečia 200 ms.

   7. LED‘as išsijungia ir laukia 200 ms.

   8. Ciklo gale kintamasis i padidėja 100 ir įgauna reikšmę 300 (baigiasi antroji fazė).

   9. 300 yra mažiau nei 1000 ir ciklas vėl kartojamas kol viršys 1000 reikšmę. Tada i įgaus reikšmę 100 ir taip viskas kartosis nuolat.


  

Papildomos užduotys:

1. Pabandykite LED‘o mirksėjimu pademonstruoti bombos sprogimą, t. y. mirksėjimas turi tankėti iki kol ledas pradės šviesti nuolat. Po kelių sekundžių visas procesas turi kartotis iš naujo.

2. Padarykite taip, kad LED'ai degtų tokia tvarka: 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 2... ir t.t.

3. Uždekite pakaitomis lyginius ir nelyginius LED'us.

4. Pakeiskite LED'ų mirksėjimą savo nuožiūra.