Ciklas
Ciklas - tai pasikartojantis veiksmas, kuris užrašomas, kai būna kas nors daroma programoje daug kartų, o daug kartų užrašyti kokį tai dalyką nesinori, o norisi kaip paprasčiau.
Bendru atveju bet koks ciklas susideda iš trijų dalių:
- Ciklo sąlygos tikrinimo - ar reikia dar kartą ciklą vykdyti, ar ne
- Ciklo turinio - tų veiksmų, kurie kartojami
- Perėjimo į ciklo kartojimą
Dažniausios ciklų rūšys
Yra įvairūs ciklai, priklausomai pagal poreikį. Labiausiai bazinis ciklas yra "While", nes jo pagrindu galima padaryti beveik visus kitus ciklus. Tačiau paprastai niekas nesigilina ir ima paprasčiausią variantą, koks konkrečiai situacijai tinkamas.
Gyvenime dažniausiai pasitaiko While arba For ciklai, tuo tarpu kiti būna retesni. Čia pateiksim visokių pavyzdžių, užrašytų panašiai, kaip C kalboje, nors nebūtinai šioje kalboje tokius ciklus rasit. Kitą vertus, analogiška sintaksė yra naudojama ir daugybėje kitų kalbų, pvz., Perl, PHP, JavaScript ar kitose. Taip ar anaip, šiuo atveju svarbu principo supratimas.
While ciklas
While ciklo esmė - kartoti kažkokį dalyką tol, kol teisinga ciklo sąlyga.
Tipiškas While ciklo variantas:
while (x==TRUE) {
do something;
}
For ciklas
For ciklo esmė - atlikti paprastus skaičiavimus su kintamuoju, kuris paskui gali būti naudojamas ciklo viduje. Todėl cikle būna du ar trys parametrai, o ne vienas.
Tipiškas For ciklo variantas:
for(x=1; x<10; x++) {
print(x);
}
Until ciklas
Until ciklo esmė - tai aukštyn kojomis apverstas While ciklas, kuris patikrinimą daro po veiksmų. Ciklas kadaise buvo įdėtas į Pascal kalbą, bet nelabai pasiteisino.
Tipiškas Until ciklo variantas, kaip Pascal kalboje:
repeat do something; until x=TRUE;
Foreach ciklas
Foreach ciklo esmė - pakartoti kažkokį dalyką visiems kokio nors masyvo elementams iš eilės. Šitas ciklas išpopuliarėjo per Perl kalbą, nes buvo velniškai patogus išradimas, nes nors galima viską tą patį padaryti su For ar While, bet kodėl gi to nepadaryti paprasčiau?
Tipiškas Foreach ciklo variantas, kaip PHP kalboje:
foreach($array in $array_value) {
do something with current $array_value;
}
Kiek giliau apie ciklų veikimo principus
Tipišką ciklą galim kokia nors kalba užrašyti maždaug taip, naudodami goto operatorių ir if-else (čia naudojama pseudokalba, panaši į Pascal):
:MARKER
begin
if (sąlyga=TRUE) then
begin
[...]
end;
else goto QUIT
goto MARKER
:QUIT
end;
Duotame pavyzdyje yra tipiškas senoviniu būdu užrašytas ciklas - analogiški būdavo naudojami senose Fortran ar Basic programose, .BAT failuose ir panašiai, o ir dabar panašiai organizuoti ciklai naudojami asembleryje. Išties kai kompiliatorius kompiliuoja kokią nors programą, ją transliuodamas į asemblerį, tai sutransliuoja bet kokį ciklą į panašią seką.