AlapokC ProgramozasJava Programozas

Ismétléses utasítások – A While Ciklus

Egy korábbi cikkemben már bemutattam a ciklikus végrehajtás fontosságát. Java és C programozásban egy ciklus létrehozására két fajta nyelvi elem létezik, a korábban már bemutatott For ciklus és az úgynevezett While ciklus.

 

A két nyelvi elem mindig átjárható, tehát egy adott szituációra bármelyik használható. Azt, hogy ki melyiket választja az inkább helyzet és megszokás kérdése. A leglényegesebb különbség a kettő között, hogy amíg a For ciklusnál a létrehozáskor egy sorban meg tudjuk adni a feltételt és a ciklus számlálót, addig a While ciklusnál csak a feltételt tudjuk közvetlenül definiálni. A ciklusváltozó kezelését magunknak kell megoldani! Ez tipikusan azt jelenti, hogy a ciklus előtt már létre kell hoznunk a ciklusváltozót és a cikluson belülről kell növelnünk az értékét, ciklusonként egyszer.

 

Röviden vegyük át ismét a ciklusok működésének alapelvét:

  1. Meddig kell ismételni az utasításmagot, feltétel megadása
  2. Maga az utasításmag

 

A While ciklusnak két fajtája van:

  1. Elöl Tesztelő Ciklus

Azért elöl tesztelő, mert már az első végrehajtás előtt ellenőrzi a megadott feltételt, tehát nem biztos, hogy a ciklus egyszer is végre fog hajtódni. Az elöl tesztelő ciklus szintaktikailag így épül fel:

 

while(condition)

{

}

 

Látható, hogy a létrehozása jóval kevesebb karakterből megoldható mint egy For ciklus esetében (ez azonban nem biztos, hogy előny), mindössze a While kulcsszót és egy feltételt kell leírnunk. A ciklus addig fut amíg a feltétel teljesül. Nézzünk egy konkrét példát, adjuk össze az egész számokat 1-től 5-ig:

int baseNumber = 5;

int result = 0;

while (baseNumber > 0)

{

result = result + baseNumber;

baseNumber--;

}

 

Amire ennél a formánál nagyon oda kell figyelni, az a ciklusváltozó kezelése a cikluson belül. Nem hívja fel rá semmi a figyelmünket, ezért könnyen el tud felejtődni!

Nézzük meg ugyanezt a feladatot For ciklussal:

int result = 0;

for(int baseNumber = 5; baseNumber > 0; baseNumber--)

{

result = result + baseNumber;

}

 

  1. Hátul Tesztelő Ciklus

Ennél a formánál garantált, hogy a ciklus egyszer lefut! A nevét onnan kapta, hogy a feltétel ellenőrzés a ciklus végén történik. Íme a váza ennek a formának:

do

{

                …

} while(condition);

 

Ennél a formánál bejön egy új kulcsszó, a „do”. Ezzel jelöljük a ciklus elejét és a while kulcsszó az előző formához hasonló. A ciklus itt is addig fut ameddig a feltétel teljesül. Nézzük meg az előző példát ebben az alakban:

int result = 0;

int baseNumber = 5;

do

{

result = result + baseNumber;

baseNumber--;

} while(baseNumber > 0);

 

Láthatjuk, hogy az elől és a hátul tesztelő ciklusok nagyon hasonlóak. De mikor melyiket kell használni?
Erre nincs kifejezett szabály. Azt mondanám, hogy az elől tesztelő leírás sokkal elterjedtebb, gyakrabban használt mint a hátul tesztelő, de van olyan szituáció amikor a hátul tesztelőre van szükség. Ökölszabályként azt mondanám, hogy alapból az elöl tesztelőt használjuk és ha a helyzet úgy kívánja, akkor használjuk csak a hátul tesztelőt. Ha pedig a For ciklust is belevesszük, akkor az én véleményem, hogy az a leggyakoribb és én magam is azt a formát preferálom a legjobban. Egyszerűen sokkal jobban átlátható, hogy mi a feltétel és mi a ciklusváltozó.

 

Remélem sikerült egy teljes képet adnom a For illetve a While ciklusról. Mind a kettő egy nagyon alapvető nyelvi elem, viszonylag gyorsan el lehet őket sajátítani. Ehhez kívánok sok sikert!

Bajor Tamás - Programozz Te Is!

Hello, Bajor Tamás vagyok, a Programozz Te Is oldal alapítója és oktatója. Kösz, hogy itt vagy és éppen az én cikkem olvasására fordítod a drága idődet! Azért dolgozom minden nap, hogy neked segítsek a programozás világában minél profibban elmélyülni. A cikkek egyetlen írójaként rengeteg munkát és energiát fektetek mind az oldalba, mind pedig az oktatásba!

 

Arra kérlek, ha tetszett cikk amit olvastál vagy szívesen veszed az ingyenes anyagokat akkor dobj egy Like-ot a Facebook-on, ezzel is támogatva a munkámat. Ez egy apró kattintás neked, de hatalmas segítség nekem!