Kezdőoldal » Számítástechnika » Programozás » For ciklus esetén van-e olyan...

For ciklus esetén van-e olyan eset, amikor elhagyjuk a ciklus fejlécéből a feltételt és a ciklusmagban if+breakkel állítjuk le a ciklust?

Figyelt kérdés
Persze technikailag ezt bármelyik for ciklussal meg lehet csinálni, de arra vagyok kíváncsi, hogy van-e olyan eset, amikor indokolt.

2021. szept. 30. 09:42
1 2
 1/12 anonim ***** válasza:
60%

Szóval te gyakorlatilag egy while(true){if(...) break} ciklust szeretnél?

Határozottan nem szerencsés ilyet írni. Ha csak így tudsz valamit megoldani, érdemes végiggondolni, hogy korábban a kódban hol tudnád azt refaktorálni hogy ne kelljen ilyet írnod.

2021. szept. 30. 09:48
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
60%

Ha egy for ciklusból elhagyod a feltételet akkor az nem for ciklus. Pont ez a lényege és ez különbözteti meg a kolléga által írt "while" ciklustól. A for ciklus lényege, hogy a feltételben szereplő ciklus változót minden futáskor a megadottak szerint "lépteti" és nem neked kell minden ciklusban még ezzel is foglalkozzál. Nem tudom milyen könyvből meg milyen rendszerben tanultad de ez egy nagyon alapvető fogalom, és nagyjából 50 éve biztosan így van.

És pont az ilyenek miatt van több féle ciklus szervezési módszer, hogy ezek elkerülhetőek legyenek, és mindig tiszta legyen, hogy mikor melyiket használjuk. A for ciklus nem arról szól, hogy csinálunk egy végtelen ciklust vele. Arra ott a while (legelterjedtebben). És pl. egy esemény ciklusnál van értelme (bár ott is vannak elegánsabb megoldások) mint a while(true){if(...)break...} megoldás. Eleve az a szerencsés ha egy ciklusban tudjuk mikor lépünk be és mikor ki. A break nagyon ritkán használt, illetve olyanok használják akiknek minimális fogalmuk van a programozásról. Lehet neked is kéne még párat lapozzál a tankönyvedben.


Összefoglalva: Egy normális környezetben for ciklus esetén "nem életszerű" ennek a használata. Ott valami baj van ha egy for ciklusból break-kel kell kiszállni. Nem is emlékzem olyan esetre, hogy valaha használtam volna for ciklusban break-et.

2021. szept. 30. 10:03
Hasznos számodra ez a válasz?
 3/12 A kérdező kommentje:

Itt például találtam egy ilyet:

[link]

Csak azt nem értem, hogy mi értelme ennek... miért nem lehet a feltételbe írni, miért kell break? Vagy egyszerűen van, aki így szereti és kész?

2021. szept. 30. 10:20
 4/12 anonim ***** válasza:
100%
És ezt hogy írndá bele a feltételbe? Igen, ez azon ritka esetek egyike amikor van (némi) értelme. Lehetne ezt elegensábban is megírni lelke rajta annak aki írta.
2021. szept. 30. 10:23
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:
100%
Ez is már ilyen egymás közti easter egg kategória, ennél bonyolultabb esetben nem is lenne mókás.
2021. szept. 30. 11:07
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:

Egyébként pontosan azért tettem fel a kérdést, mert szeretem az ilyen easter eggeket :)

Vagyis hát ebbe a tananyagba a speciális esetek részhez poénnak jó lesz:

[link]

2021. szept. 30. 12:18
 7/12 anonim ***** válasza:
Ezt te írod?
2021. szept. 30. 12:24
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
100%

#3

az még hagyján, hogy a breakkel lép ki for ciklusból (szerintem egy do-while ciklussal sokkal elegánsabb lenne), még a külső ciklus számlálóját is a cikluson belül manipulálja.

az a baj, hogy habár technikailag ez jó megoldás, és neked akár még érthető is, ha elkezdesz valahol csapatban dolgozni, ezekért nagyon utálni fognak.

sokaknak nem esik le, de a kód olvashatósága iszonyúan fontos hosszú távon. ezért léteznek különböző íratlan szabályok, konvenciók, hogy ezt egységesítsük. nem szerencsés ezektől eltérni.

2021. szept. 30. 13:37
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:
100%
8: Ez a tipikusan röviden leírt de teljesen követhetetlen ciklus...
2021. szept. 30. 13:39
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:
100%

A legjobb példa amúgy erre a goto. Van egy két nagyon ritka use case, ahol nem feltétlenül rossz ötlet (érdemes utánanézni, hogy pl a linux kernelben hogy használják)

de az esetek 99.99999%ában menekülj. lehet, hogy éppen abban a pillanatban kellemes megoldás lesz egy problémára, de hosszú távon olyan spagetti kódot eredményez, hogy megéri inkább kicsit többet ülni egy probléma felett és másik megoldást találni.

2021. szept. 30. 13:41
Hasznos számodra ez a válasz?
1 2

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!