Ciklusok

BecomeAnXcoder – Ciklusok

Bevezető

Minden eddigi programkódunkban az utasítások csak egyszer hajtódtak végre. Úgy is lehet ismételtetni függvényekben levő programrészeket, hogy többször meghívjuk őket [1].

//[1] 
NSLog(@"Julia a kedvenc színésznőm."); 
NSLog(@"Julia a kedvenc színésznőm."); 
NSLog(@"Julia a kedvenc színésznőm.");

Itt a függvényhívásokat ismételgettük. Gyakran előfordul, hogy egy, vagy több utasítást többször is ismételni kell. Az Objective C a többi programozási nyelvhez hasonlóan többfajta lehetőséget is biztosít erre.

for()

Ha pontosan tudod a szükséges ismétlések számát, akkor ezt a számot beírhatod a for ciklus fejrészébe ahogy a [2]-es példában látható. Ez a szám csak egész szám lehet, hiszen nem lehet megismételni egy műveletet mondjuk 2.7-szer.

//[2] 
int x; 
for (x = 1; x 10; x++) 
{
     NSLog(@"Julia a kedvenc színésznőm.");     //[2.4] 
}
 NSLog(@"Az x értéke %d", x); //[2.6]

A [2]-es példában a [2.4] string 10-szer lesz kinyomtatva. Első lépésben az x felveszi az 1 értéket. Ezután a számítógép elvégzi a vizsgálatot: x 10. Ez a feltétel teljesül (mivel x egyenlő 1-gyel), ezért a kapcsos zárójelen belül levő utasítások végrehajtódnak. Ezután az x értékét megnöveli a program – itt most 1-gyel – az x++ kifejezés hatására. Az eredmény, ami most 2 lesz, ismét összehasonlításra kerül a 10-zel. Mivel az még mindig kisebb mint 10, a kapcsos zárójeleken belüli utasítások ismét végrehajtódnak. Amint x egyenlő lesz 11-gyel, az x 10 feltétel már nem fog teljesülni. Az utolsó utasítás [2.6] pontosan megmutatja, hogy x értéke 11 és nem 10, miután a ciklus befejeződött.

Amennyiben nagyobb lépésekre van szükség a ciklusváltozó növelésekor, akkor az x++ helyett a megfelelő értéknövelő kifejezést kell írni. A következő példa a Fahrenheit fokokat váltja át Celsius fokra 20-as lépésekben.

//[3] 
float celsius, tempInFahrenheit; 
for (tempInFahrenheit = 0; tempInFahrenheit 200; tempInFahrenheit = tempInFahrenheit + 20) 
{
     celsius = (tempInFahrenheit - 32.0) * 5.0 / 9.0;
     NSLog(@"%10.2f -> %10.2f", tempInFahrenheit, celsius); 
}

A program futásának eredménye:

0.00 -> -17.78 
20.00 -> -6.67 
40.00 ->  4.44 
60.00 -> 15.56 
80.00 -> 26.67 
100.00 -> 37.78 
120.00 -> 48.89 
140.00 -> 60.00 
160.00 -> 71.11 
180.00 -> 82.22 
200.00 -> 93.33

while()

Az Objective-C két másik lehetőséget is biztosít utasítások ismétlésére:

while () { }

és

do {} while ()

Formailag hasonlóan működnek, mint amit a for-ciklusnál már láttunk. Az első most is egy feltételvizsgálattal kezdődik. Ha az nem igaz, akkor a ciklusban levő műveletek nem hajtódnak végre.

//[4] 
int counter = 1; 
while (counter 10) 
{
     NSLog(@"Julia a kedvenc színésznőm.\n");
     counter = counter + 1; 
}
 NSLog(@"A számláló értéke %d", counter);

A számláló értéke s végén 11. A későbbiekben szükséged lehet erre a programban!

A do {} while () utasításban a kapcsos zárójelek közötti rész legalább egyszer biztosan végrehajtódik, mert a vizsgálat csak azután történik.

//[5] 
int counter = 1; 
do 
{
     NSLog(@"Julia a kedvenc színésznőm.\n");
     counter = counter + 1; 
}
while (counter 10); 
NSLog(@"A számláló értéke %d", counter);

A számláló értéke a ciklus végén: 11.

Most már egyre többet tudsz a programozásról, komolyabb feladatokra is képes leszel. A következő fejezetben elkészítjük első grafikus felhasználói felületet (GUI) használó programunkat.

eredeti oldal