Miért használnak egyesek for ciklus helyett while ciklust számláláshoz?
Van-e esetleg ennek valami hatékonyságbeli oka, vagy csak egyszerű szimpátia?
Tehát például ehelyett: for (int i = 0; i < 20; i++) { cout << i << endl; } van, aki ezt használja: int i; while (i < 20) { cout << i << endl; i++; }
Ha belegondolsz a for nem más mint while és fordítva.
X
while(Y) { ... Z }
for(X,Y,Z) { ... }
És persze, break-el kiléphező, és X, Y, Z-k se kötelezőek.
Tehát lehet szimpátia is.
Mert kontárok.
A programozók nagy része bizony ilyen. Híg a szakma.
"Bizonyos esetekben a for-hoz kellhet segédváltozó, míg a while-hoz nem."
Milyen esetekre gondolsz?
Kérdező, a kettő tök ugyan azt csinálja, nincs különbség.
Jó esetben inkább a kód többi részétől függ, hogy adott helyre mit használnak.
"Kérdező, a kettő tök ugyan azt csinálja, nincs különbség."
Hú de gáááz..
Na, ez az amikor vki azt sem tudja miről beszél.
"Hú de gáááz..
Na, ez az amikor vki azt sem tudja miről beszél."
De te se mondasz semmit, csak oltogatni tudsz. Akkor gondolhatom, hogy neked sincs semmi közöd a témához.
Aki azonosnak mondja, annak félig igaza is van. Igazából 1 különbség van: for esetén a ciklus változó elveszik, ha belül definiálod.
for (int x = 0; x < 100; x++) {
... //amíg x >= 100
}
int count = 0;
while (count < 100) {
... // amíg count >= 100
... count++;
}
Ha azt nézzük a kommentár helyére amit beírunk, az mind két esetben 100x fut le. Tehát ilyen értelemben nincs különbség.
A while esetén a count érték megmarad, de a for esetén az x csak a belső {-tól }-ig blokkra érvényes.
Vagyis már az se:
int x = 0
for (; x < 100; x++) {
... //amíg x >= 100
}
Vagy így? Konkrétan egy while forma:
int x = 0
for (; x < 100;) {
... //amíg x >= 100
... x++
}
Szóval? Valaki érvelések nélkül akarja még a száját tépni, hogy okosnak tűnjön?
"Igazából 1 különbség van:"
Jajjaj..
A while ciklus adott esetben le sem fut. Mivel feltételfüggő és még a ciklusmag lefutása előtt értékeli ki a feltételt (elöltesztelő). Ugyanez for esetén helyből kizárt, az ugyanis legalább egyszer mindenképpen lefut.
De van még sok egyéb is, a programozók alapban lustaságból kerülik a while alkalmazását, holott a lehetőség sokkal több while esetében. Már mindössze négy while ciklus egymásba ágyazásával (plusz egyébségek) hihetetlenül komoly automatizmus építhető ki. Ugyanez for esetén, hmm. nevetséges eredményt szülne.
" while ciklus adott esetben le sem fut. Mivel feltételfüggő és még a ciklusmag lefutása előtt értékeli ki a feltételt (elöltesztelő). Ugyanez for esetén helyből kizárt, az ugyanis legalább egyszer mindenképpen lefut"
Kizárt hogy ez így legyen függetlenül a nyelvtő mert hátultesztelős ciklus csak a do while a for pedig nem az.
Kipróbáltam c# Ben és nem fut le a for egyszer sem ha a benne levő feltétel egyből hamis.
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!