Visual C#: Mi a különbség a for és a while között, és hogyan kell őket használni?
Úgy tudom, hogy a while egy végtelen ciklus (vagy addig ismétli, amíg nem teljesül a feltétel), a for meg valami más.
De MI?
A for ciklust általában arra szkták használni, hogy egyesével elszámoljon valamennyitól valamennyiig.
pl:
for(int i = 0; i < 10; i++) {} 1-tol 9-ig számol
persze while-lal minden megoldható, ami forral. Az előző ciklus while-lal:
int i = 0;
while (i < 10) { i++ }
A fenti csak az általános hazsnálati módja a for ciklusnak, ami minden nyelvben így szokás.
C szerű nyelveknél for ciklussal is minden megoldható, ami whillal.
A fenti példában láthattad, hogy 3 "paramétere" van a ciklusnak.
Egy inicializálás szerű: int i = 0
Egy feltétel: i < 10
Egy kifejezés, ami gyakorlatilag bármit csinálhat: i++
Mind a 3 külön külön elhagyható, tehát pl for-ral is csinálhatsz végtelen ciklust:
for (;;){ }
Tehát összefoglalva a for ciklust egy akkor szokták használni, ha egy intervallumban lévő számokon kell egyesével (esetleg többesével) végigmenni.
A while-t pedig akkor, ha valami bonyolultabb feltétel van.
Tehát ez:
for (int counter = 2; counter < szam1; counter++)
addig ismétli a ciklust, amíg a counter kisebb a számmal, vagy addig, amíg kisebb nem lesz, mint a szám (tehát a feltétel teljesülésekor fejezi be vagy addig ismétli, amíg igaz a feltétel)?
És a counter++ annyit jelent, hogy minden egyes ismétléskor növeli eggyel a counter változót?
Tételezzük fel hogy van "F" darab autónk, ebből van ami ugyanolyan színű, van ami különböző (a típusokat nem nézzük, csak a színt).
Ha meg akarod számolni, hogy hány darab kék színű van, akkor úgy csinálod, hogy:
int kek; //itt tárolod a "kék" autók számát
for (int k = 0; k <= f; k++) /* egy deklarált számtól az összes darabszámig (F-ig) növeli a K értékét 1-el, ha lefutott a ciklus egyszer (annyiszor fut le, amennyi a 2. argumentumban van megadva (k <= f) */
{
if (szín == kék) /* ha a szín kék, belép a ciklusba */
{
kek++; /* és növeli 1-el a kek változót */
}
/*else ág nem kell, mert ha nem "kek", akkor ne csináljon semmit */
}
Tehát ez végigmegy az összes autón, és ha a szín kék, belép az if ciklusba, ha a szín például "zöld", akkor nem csinál semmit.
A while ciklussal pedig azt tudod megnézni, hogy hányadik kocsi színe kék. Itt konkrétan nem adsz meg intervallumot, ahol keressen, hanem addig megy, amíg a feltétel nem érvényesül (a szín nem egyenlő kékkel), majd belép a ciklusba, végrehajtja ami bentvan, és kilép.
while (szín != "kék")
{
/*ide valami kód, hogy mit akarsz addig csinálni (kiíratni mondjuk, hogy "ez nem kék", stb...) */
}
A while-os példa elég béna lett, de most nem telik jobb tőlem, remélem azért érthető volt.
Kedves Előző, a példád kicsit ferdít. C#-ban minden for és elől-, hátultesztelő ciklus átírható bármelyikbe.
(Ráadásul a while-os példa végtelen ciklus lesz ha nincs kék).
1)
int k=0;
while (k<=f)
{
if (szin==kék) {kek++;}
}
2)
for (k=0;( (szin!=kék) && (k<=f) );k++) { }
Tehát a végén az a K++ annyit tesz (harmadik válaszoló), hogy mindig, amikor lefutott a ciklus, növeli eggyel a K változót?
És az elhagyható?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!