Mi a különbség a while ciklus és a for ciklus között?
On február 17, 2021 by adminMi a különbség a while ciklus és a for ciklus között? Számomra úgy tűnik, hogy ugyanazok.
Megjegyzések
Válasz
A while
ciklust általában akkor használják, amikor meg kell ismételni valamit, amíg egy adott feltétel igaz. :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
Másrészt a for
ciklust általában akkor használják, amikor meg kell ismételni egy adott számot alkalommal:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Ha tetszik, felváltva is használhatja őket:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
Vagy
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
És:
var i = 0; while(i < 100) { //do your logic here i++; }
megjegyzések
- Amint láthatja, ezek a nem szabványos használatok kevésbé elegáns, nehezebben olvasható kódokat eredményeznek. A motorháztető alatt a különböző huroktípusok ugyanazok a feltételes goto-k, ezért próbáld meg használni azt, amely szintaktikailag a legjobban illeszkedik ahhoz, amit elérni próbálsz.
- Az alábbi kódban azt is mondhatom, hogy csinálj valamit 10-szer. (Kitölti az argumentumot, mint a ciklus @ npinti esetében) var count = 0; míg (számít < 10) {document.writeln (" hurok elszakad! ") ; szám ++; }
- Ne feledje, hogy C-ben harmadik példáját átírhatja
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
névre. De igen, az alapállapotod teljesen helytálló, és egyfor
hurok valójában csak szintaxis cukor. Egyes nyelvek teljesen nélkülözik. A Cfor
hurok furcsa fenevad, valójában inkább egy baromirawhile
, ellentétben olyan nyelvekkel, mint a Pascal, ahol az A “>
ciklus csak diszkrét egész számok közötti lépéshez használható.
Válasz
alapvető különbség van a kettő között: for
hurok, akkor előzetesen tudnia kell, hogy milyen gyakran hajtják végre a ciklustestet. Ez egy jelentős korlátozás, mivel sok olyan probléma merül fel, ahol ezt egyszerűen nem tudja. Néha azt sem tudja, hogy ez a szám véges-e vagy sem egyáltalán !
Vegyünk például egy programot, amely a felhasználótól kéri egy sor név megadását. Mondjuk, egy fogorvos betegkezelő rendszere. Honnan tudhatnád előzetesen, hogy a fogorvos hány beteget fog beírni? Ehhez nem írhat for
ciklust.
Megjegyzések
- A for ciklus korai megszüntetésének többféle módja van, ezért csak a hurok körüli iteráció maximális idejét kell tudnia. Továbbá, ha ' hajlandó rosszul használni a for ciklus feltételes részét, akkor megteheti, hogy bármit megtegyen, amire egy darab hurok képes.
- nyelvről beszélsz?A pascal-ban az argumentumnak van némi érdeme (nagy szám kemény kódolása, mivel a határ csúnya), de C-ben tetszőleges feltételeket használhat az
for
paranccsal. Nincs különbség afor(;xxx;)
és awhile(xxx)
között. - lefelé mutató nyíl. A káosz pontosan helytálló. A
initializer;
, amelyet awhile(condition){ ... increment;}
követ, megegyezik afor(initializer; condition; increment){ ... }
for
hurok csak szintaxis cukor, amely olyan felhasználási esetek egy részhalmazát támogatja, amelyeketwhile
támogat. Néha a " szintaxis cukor " -t lenézik, de valóban tisztább, könnyebben érthető kód létrehozásának módjaként kell nézni .for
hurok valójában egy divatos ruhábanwhile
hurok.