Kezdőoldal » Számítástechnika » Programozás » Miért használnak egyesek for...

Miért használnak egyesek for ciklus helyett while ciklust számláláshoz?

Figyelt kérdés

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++; }



2017. máj. 27. 09:28
1 2 3 4 5 6
 31/59 anonim ***** válasza:
0%

WHILE ciklus


A WHILE és a FOR közötti különbség abban van, hogy míg a FOR ciklusnál a ciklusváltozó kezdő- és végértéke határozta meg az ismétlések számát, a WHILE ciklusnál az ismétlések számát nem egy ciklusváltozó, hanem egy feltétel határozza meg (pl. a < b). Amíg a feltétel igaz, addig az adott parancsokat a WHILE ciklus ismételni fogja.

2017. máj. 29. 00:49
Hasznos számodra ez a válasz?
 32/59 anonim ***** válasza:
Aha. Csakhogy itt egész végig C-like nyelvekről volt szó, ahol a for ciklus kivétel nélkül egy kibővített while. Az, hogy Pascalban, meg a társaiban a for ciklus máshogy van megvalósítva irreleváns, a kérdésben speciel C++ van, és a C-szerű szintaxist követő nyelvekben jön elő igazából ez a praktika. De gondolome zt már nem sikerült feldolgoznod, mielőtt elkezdtél okoskodni.
2017. máj. 29. 01:18
Hasznos számodra ez a válasz?
 33/59 anonim ***** válasza:
0%

"ahol a for ciklus kivétel nélkül egy kibővített while."


A for egyetlen nyelvben sem kibővített while, mivel, ahogy idéztem is (c++ esetén például*) a for nem alternatívája a while-nak (fordítva ez már igaz). Ha így volna, akkor a while-t már felemésztette volna a nyelvek életében elkerülhetetlen fejlődés, letisztulás. Senki nem hülye, hogy felesleges nyelvi elemekkel terhelje a saját implementációját.


* (C++-ban a for ciklus MAJDNEM teljesen ekvivalens az elől tesztelős ciklussal (a continue viselkedése más), de más nyelvekben nem feltétlenül van ez így: a for ciklus átírható más ciklussá, de visszafelé általában NEM.)


Nem kell hozzá atomtudósnak lenni, hogy belássa bárki, a for szimplább, gyengébb, kevesebb lehetőséget felvonultató iteráció mint a while. Ez nyilvánvaló. Én magam eddig egyetlen egy, nagyon szegényes eszközkészlettel bíró nyelvet feljesztettem. Annál (nyilván) átgondoltam, hogy mit fogok implementálni egyetlen iterációs lehetőségként. Akkor is 100-ból 100 forrás a while ciklust emelte ki a többi lehetőség közül. A for ugyanakkor messze a legrosszabb. Akit korábban idéztem, annak igaza van, azért alkalmazzák a for-t, mert a többinél áttekinthetőbb, az emberi gondolkodással leginkább rokonítható.

2017. máj. 29. 02:16
Hasznos számodra ez a válasz?
 34/59 anonim ***** válasza:

Hatékonyságbeli ok: Compiler máshogy fordítja át a két

ciklust. Ez teljes mértékben azon múlik, hogy hogy

optimalizálták. Sok esetben a while ciklus nagy ismét-

lődési számnál gyorsabb eredményt produkál egy sima

ms compiler esetén.


A példádnál szinte mindegy, melyiket használod.


Amikor megjelentek a fejlettebb programozási nyelvek,

akkor csináltak 2 módszert, egyiket for, másikat while

névre keresztelték, más paraméterezéssel lehet őket

használni, ennek csupán kényelmi oka volt, hogy az adott

feladatot minél kevesebb agyi munkával lehessen megoldani,

és pl a for számlálóját ne kelljen állandóan fejben tarta-

ni, míg while esetén a teljes ciklust le kell játszani

fejben, különben jönnek a bugok :)

2017. máj. 29. 04:11
Hasznos számodra ez a válasz?
 35/59 anonim ***** válasza:
90%

Megkérnék minden kedves (minimális önérzettel rendelkező programozót), hogy írjon az info@gyakorikerdesek.hu-ra és kérvényezze ennek a 43%-os majomnak a végleges kitiltását az oldalról, hogy megállíthassuk az elképesztően ostoba károkozását.

Linkeljétek be a kérdéseket, idézzétek a válaszokat, hogy az egyrészt miért hibás, másrészt miért iszonyú bunkó és lekezelő, mindezt nulla alapra, így az üzemeltetők is kénytelenek lesznek belátni, hogy nem való erre az oldalra.

Ha így teszünk talán ma este már nem fog részegen ide írogatni!

2017. máj. 29. 09:00
Hasznos számodra ez a válasz?
 36/59 anonim ***** válasza:
92%
Édes Bulldogom, az általad másolt idézet igazolja hogy hülyeséget beszélsz. A c++ nyelvben az egyetlen lényegi különbség a while és a for között a continue viselkedése, az is abban tér el, hogy a for esetében a léptetést is lefuttatja, mielőtt újra kiértékeli a ciklusfeltételt, a while-ban ugyanakkor, mivel nincs léptetés, nem tesz ilyet. Rettentő szánalmas, hogy a saját igazadat próbálod bizonygatni egy olyan idézett szöveggel, ami épp megcáfolja amit mondasz.
2017. máj. 29. 15:10
Hasznos számodra ez a válasz?
 37/59 anonim ***** válasza:
100%

"A c++ nyelvben az egyetlen lényegi különbség a while és a for között a continue viselkedése, az is abban tér el, hogy a for esetében a léptetést is lefuttatja"


A continue nem futtat le semmit azon kívül hogy megszakítja a blokk futását. A ciklus van úgy megvalósítva hogy a blokkja lefutása után minden esetben megtörténjen a for harmadik argumentumában levő kód lefutása. Ezért tökéletes számlálásokhoz. És minden nyelvben így van.

2017. máj. 29. 17:10
Hasznos számodra ez a válasz?
 38/59 anonim ***** válasza:
0%

"Ezért tökéletes számlálásokhoz."


Vagy nem.


"És minden nyelvben így van."


LOL

2017. máj. 29. 17:56
Hasznos számodra ez a válasz?
 39/59 anonim ***** válasza:
100%

"Nem kell hozzá atomtudósnak lenni, hogy belássa bárki, a for szimplább, gyengébb, kevesebb lehetőséget felvonultató iteráció mint a while."


Még ha fordítva mondanád csak szimpla baromság lenne, így viszont ordas nagy baromság...

A for pont, hogy többet tud, annyival, hogy létezik egy "nulladik" "lépése" (az első paraméter), meg egy opcionális utolsó "lépése" (a harmadik paraméter) ami a ciklusmag utolsó utasítása után végrehajtódik.


Mellesleg visszafelé is simábban átírod, csak a for(;<feltétel>;){} hülyén néz ki.


Ahogy ez sem igaz: "a FOR ciklusnál a ciklusváltozó kezdő- és végértéke határozta meg az ismétlések számát". Ez konvenció kérdése, mint már említettük.


Honnan idézgeted a baromságaid? Kezd érdekelni mi ez a könyv amit fekete listára kell tennem a diákjaimnak.

2017. máj. 29. 20:42
Hasznos számodra ez a válasz?
 40/59 anonim ***** válasza:
100%

Mondjuk ez a kedvencem:

"Ezzel csak az a baj, hogy ha a benne lévő feltételt vizsgálja, akkor már legalább egyszer le is futott, tehát nem lehet azt kijelenteni, hogy egyszer sem futott le."


:-D Remélem nem dolgozol sehol, mert aki ilyet kijelent, arra egy Hello Worldöt sem szabad bízni.

2017. máj. 29. 20:51
Hasznos számodra ez a válasz?
1 2 3 4 5 6

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!