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
 21/59 anonim ***** válasza:
Vagy te fogalamzol félreérthetően, vagy hülyeséget mondasz. A for ciklus inicializációs szegmensében létrehozott változó scope-ja a ciklus maga.
2017. máj. 28. 15:43
Hasznos számodra ez a válasz?
 22/59 anonim ***** válasza:
100%

std::vector<int> v;


// Sokan írnak ilyet, ami részben hibás mivel a vector méretét tartalmazó változó nem int típusú hanem std::vector<int>::size_type

for(int i = 0; i < v.size(); ++i)

{

//...

}


// Kiírni általában ezeken a módokon szokás


// simán iteratoral

for(std::vector<int>::const_iterator it = v.cbegin(); it < v.cend(); ++it)

{

std::cout << *it << '\n';

}


// range-based for, c++11 -től

for(const std::vector<int>::value_type& value : v)

{

std::cout << value << '\n';

}


// függvénnyel

std::copy(v.cbegin(), v.cend(), std::ostream_iterator<int>(std::cout, "\n"));

// vagy

std::for_each(v.cbegin(), v.cend(), [&v, i = 1](const auto& value) mutable { std::cout << "Sor " << i++ << ": " << value << '\n'; });



Sokféleképpen lehet még végigiterálni valamin, illetve az auto -t ízlés szerint lehet használni a hosszú típusnevek helyett. Ami pedig a legfontosabb, hogy ha értelmes kérdésed van akkor azt szakértői fórumon tedd fel, pl. prog.hu -n ha hozzáértő emberektől szeretnél választ kapni.

2017. máj. 28. 18:05
Hasznos számodra ez a válasz?
 23/59 anonim ***** válasza:
91%

"A for ciklus az számlálós ciklus, a while meg nem az."


A for ciklus felhasználását tekintve (konvenció szerint) számlálós ciklus, de funkcionalitásában csak a while ciklus kibővítése. Ha tudod igazolni ennek az ellenkezőjét (nem fogod tudni, mivel ahhoz az kéne, hogy alacsony szinten [mondjuk egy Assemblyben] szintén létezzen a 'for ciklus' fogalma, ami persze nem létezik) akkor kapsz egy kekszet. Mint már megmutattam,a for ciklussal teljesen kiváltható a while ciklus, ha akarjuk, és a while ciklust picit kibővítve megkapjuk a for ciklust. A legtöbb C típusú nyelvben legalábbis. Tehát mi is az, ami annyira megkülönbözteti a for ciklust?

2017. máj. 28. 18:54
Hasznos számodra ez a válasz?
 24/59 anonim ***** válasza:
0%

"Kipróbáltam c# Ben és nem fut le a for egyszer sem ha a benne levő feltétel egyből hamis."


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.


A do-while pedig soha nem volt hátultesztelős ciklus, az ugyanis a repeat-until. A do-while az bizony - ha barkácsolásaid során ez nem tűnt volna fel - WHILE ciklus. Ha tudnál angolul akkor ezt bármiféle utánajárás nélkül ki tudtad volna deríteni.


repeat -- until = Ismételd (a ciklusmagban foglaltakat) amíg a feltétel be nem következik.

A while ciklus ennek ellentettje, ott akkor és csak akkor lesz végrehajtva a ciklusmag tartalma, amíg a feltétel igaznak nem bizonyul. Ha egyszer sem, akkor a ciklusmag nem fog lefutni soha.

2017. máj. 28. 20:02
Hasznos számodra ez a válasz?
 25/59 anonim ***** válasza:
24%

Te egy akkora retardált vagy, hogy remeg a ház.


A do-while a repeat until C-like változata. Majdnem. A különbség, hogy az egyik folytatási, a másik megállási feltételt néz. De mindkettő a ciklus lefutása UTÁN ellenőrzi a feltételt. A for ciklus ellenben MINDIG a ciklusmag előtt. Minden létező nyelvben ahol van for ciklus, az előltesztelős. Ahogy a while is előltesztelős.


Akkora észnek tartod magad, de még azt sem sikerül jól visszamondanod, amit a legelső programozás órán elmondanak bármelyik pusztafalvi iskolában: Van 3 fajta ciklus, sima előltesztelős, sima hátultesztelős, és számlálós, ami szintén előltesztelős. Elég szánalmas, hogy ilyen vérmesen köpködöd a hülyeségeidet, miközben a legalapvetőbb dolgokat sem tudod jól mondani. Szóval mindenki nevében szépen megkérlek: Fogd be a pofádat.

2017. máj. 28. 21:15
Hasznos számodra ez a válasz?
 26/59 anonim ***** válasza:
18%

"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.

A for ciklusnak KISEBB a kifejezőereje, de könnyebb olvasni ezért a használata javasolt ott ahol ez lehetséges."

2017. máj. 28. 21:34
Hasznos számodra ez a válasz?
 27/59 anonim ***** válasza:
Gratulálok, most igazoltad a saját tévedésed.
2017. máj. 28. 21:46
Hasznos számodra ez a válasz?
 28/59 anonim ***** válasza:
0%

"amit a legelső programozás órán elmondanak bármelyik pusztafalvi iskolában: Van 3 fajta ciklus, sima előltesztelős, sima hátultesztelős, és számlálós, ami szintén előltesztelős."


Az lehet, pusztafalván, de egyetemen, progalapon ez úgy megy, hogy vannak:

- Feltételes ciklusok

- Számlálós ciklusok

2017. máj. 28. 22:48
Hasznos számodra ez a válasz?
 29/59 anonim ***** válasza:

44%-os. Most tényleg ennyire IQ fighter vagy?


Akkor inkább olvass:

[link]

[link]

[link]

[link]


Az egyetemmel meg nem vágnék fel, ezzel a produkció mellet.

2017. máj. 28. 23:03
Hasznos számodra ez a válasz?
 30/59 anonim ***** válasza:

Egész egyszerűen a while bizonyos esetekben intuitívabb. Én while ciklust leginkább bash-ben szoktam használni, mikor egy file-t kell soroként feldolgozni. Valahogy így:


cat file | while read line; do

echo $line;

done


Ez for loopban kicsit problematikusabb:


for line in $(cat file); do

echo $line

done


Ez olyankor lehet még nyilvánvalóbb, amikor egy nagyon hosszan összefőzött kifejezésláncot pipe-olunk a loop-ba.

2017. máj. 29. 00:27
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!