Feladat: hasonlítsuk össze a háromféle ciklust

Ebben a feladatban ugyanazt a problémát fogjuk megoldani a három különböző ciklus segítségével.

Szeretnénk megtudni annak a sorozatnak az összegét, amelyik 5-től kezdődik, 10 számot tartalmaz, ahol minden elem (item) az előzőnek a duplája.

Tehát: 5 +10 +20 +40 +80 +160 +320 +640 +1280 +2560

A várt eredmény: 5115

13. ábra 

A program kód:

namespace ConsoleApplication8

{

class Program

{

static void Main(string[] args)

{

//for ciklus használata

int data = 5;

int store = 5;

for (int i = 0; i < 9; i++)

{

data *= 2;

System.Console.WriteLine("A \"data\" változó tartalma " + (i + 1) + ". lépésben = " + data);

store += data;

System.Console.WriteLine("A \"data\" változó tartalma " + (i + 1) + ". lépésben = " + data);

}

System.Console.WriteLine("Eredmény a \"for\" használatával: " + store);

//a while ciklus használata

int data2 = 5;

int store2 = 5;

int i2 = 0;

while (i2 < 9)

{

i2++;

data2 *= 2;

System.Console.WriteLine("A \"data\" változó tartalma " + (i2 + 1) + ". lépésben = " + data2);

store2 += data2;

System.Console.WriteLine("A \"data\" változó tartalma " + (i2 + 1) + ". lépésben = " + data2);

}

System.Console.WriteLine("Eredmény a \"while\" használatával: " + store2);

//do-while ciklus használata

data = 5;

store = 5;

int j = 0;

do

{

j++;

data *= 2;

System.Console.WriteLine("A \"data\" változó tartalma " + (j + 1) + ". lépésben = " + data);

store += data;

System.Console.WriteLine("A \"data\" változó tartalma " + (j + 1) + ". lépésben = " + data);

}

while (j < 9);

System.Console.WriteLine("Eredmény a \"do-while\" használatával: " + store);

}

}

}

Nem ez a legrövidebb megoldás, ám a ciklusok megtanulásához tökéletesen jó.

A kódban láthatjuk, hogy a programban a következő változók találhatóak: store (tároló), data (adat), j, i (az i kétszer is, majd megnézzük, hogy ez hogyan lehetséges). Az első lépésben a változót deklaráljuk és inicializáljuk 5-re.

int data=5;

int store=5;

Fontos, hogy megértsük, hogy ezzel az inicializálással kapjuk meg 10 elemből álló sorozatunk első elemeit. Következtetés: a mi ciklusfeltételünk nem lehet több 8-nál (azaz kisebb, mint 9).

for(int i=0;i<9;i++) {

A léptető kifejezés i=i+1, ami azt jelenti, hogy 0-tól 8-ig megy a ciklus.

Az utasítás első futása során megduplázzuk az adat változók értékét. Ez a következő képletet jelenti data = data * 2;.

Azután megjelenítjük az aktuális változó értékét (vegyük figyelembe a korábban említett escape karaktert: \” utasítja a fordítót, hogy mutassa a következő “ jelet.)

System.Console.WriteLine("A \"data\" változó tartalma "+(i+1)+". lépésben = "+data);

Hozzáadunk egy új adatot a tároló változóhoz, megtartva az eredetit és az újat is. Ez a képlete: store=store+data;

store += data;

Megjelenítjük a store (tároló) változó aktuális értékét.

System.Console.WriteLine("A \"data\" változó tartalma "+(i+1)+". lépésben = "+data);

}

Végül megjelenítjük a tároló változó értékét: 5115

System.Console.WriteLine("Eredmény a \"for\" használatával: "+store);

Megoldás a while ciklus használatával:

Az adat és tároló változók a fő hatókőrben vannak és lehetőségünk van újra használni őket (ahogy azt tettük a do-while ciklusnál, ahol ismét az 5 értéket adtunk nekik) vagy deklarálunk és inicializálunk új változókat, melyeket data2 és store2-nek hívunk.

int data2=5;

int store2=5;

A változót előbb kell deklarálni és inicializálni a while cikluson kívül. Ez lesz az inicializáló kifejezés.

int i=0;

A ciklus futási feltétele a while szót követi.

while(i2<9)

{

i2++;

A ciklus feltétel teljesülésekor a ciklusváltozót kell módosítani az forráskódban. Ha ezt elfelejtettük, akkor egy soha véget nem érő végtelen ciklust kapunk, mert az i változó nem éri el a 9-et, így a ciklus soha nem áll meg. Ne feledjük, hogy i++ megegyezik i=i+1-el;

data2 *= 2;

System.Console.WriteLine(„A \"data\" változó tartalma "+(i2+1)+". lépésben = "+data2);

store2 += data2;

System.Console.WriteLine(„A \"data\" változó tartalma "+(i2+1)+". lépésben = "+data2);

}

System.Console.WriteLine("Eredmény a \"while\" használatával: "+store2);


A harmadik megoldás do-while ciklus használatával

A meglévő változókat újra használhatjuk (nem i = a deklaráció nem látható) új értékekkel.

data=5;

store=5;

int j=0;

Használhatjuk az i változót, de helyette bevezethetünk egy újat, hagyományosan elnevezve: az abc következő betűjével:

do

{

j++;

Ha a ciklusfeltétel teljesül, akkor a ciklusváltozót az utasításnak megfelelően kell változtatni. Ha elfelejtettük ezt megtenni, akkor egy soha véget nem érő ciklust kapunk, mert a j változó soha nem éri el a 9-et, így a ciklus soha nem áll meg.

data *= 2;

System.Console.WriteLine(„A \"data\" változó tartalma "+(j+1)+". lépésben = "+data);

store += data;

System.Console.WriteLine(„A \"data\" változó tartalma "+(j+1)+". lépésben = "+data);

}

while(j<9);

Ahol a ciklusfeltételt pontosvessző követi!

System.Console.WriteLine("Eredmény a \"do-while\" használatával: "+store);

A tananyag a követkkező licenc alá esik: GNU Free Documentation License