Kezdőoldal » Számítástechnika » Programozás » Az egyetemi tanár miért nem...

Az egyetemi tanár miért nem engedi a break (kivéve switch-case), vagy ciklusból return használatát?

Figyelt kérdés
C# nyelven tanulunk programozni, de minden második óránk elhangzott, hogy ezek használata tilos, meg 0 pontot kapunk a feladatra, ha úgy csináljuk.
2021. máj. 4. 10:44
1 2 3
 1/24 anonim ***** válasza:
47%
Mert egy gyökér. :) Csináld úgy, ahogy kéri, ha ennyi kell a boldogságához.
2021. máj. 4. 11:05
Hasznos számodra ez a válasz?
 2/24 anonim ***** válasza:
68%

Nekem volt olyan tanárom aki a for ciklust nem akarta látni egy kódban sem. Ha megjelent valahol a for, akkor 0 pont.

Az ilyennel nem lehet mit kezdeni. Úgy kell csinálni ahogy kéri.

2021. máj. 4. 11:08
Hasznos számodra ez a válasz?
 3/24 anonim ***** válasza:
27%
Ez azért van, hogy a füvek megtanuljanak strukturáltan programozni.
2021. máj. 4. 11:08
Hasznos számodra ez a válasz?
 4/24 anonim ***** válasza:
18%

Ciklusból return.

Ezt a nagymamádtól tanultad?

2021. máj. 4. 11:11
Hasznos számodra ez a válasz?
 5/24 anonim ***** válasza:
66%

Mert az esetek 99%-ában ez átgondolatlan, hibás tervezés eredménye. Egy átlátható, és jól megtervezett algoritmus mentes a közvetlen vezérlésátadó utasításoktól.

Persze, amit a nyelv megenged, azt ki is lehet használni, csak épp nem biztos, hogy célszerű is. Az egyetemi képzésnek pedig az is a célja, hogy előrelátó, alapos szakembereket képezzen, ehhez pedig hozzá tartozik, hogy nem alkalmazol olyan szerkezeteket, amik könnyen spagetti-kódhoz vezetnek.

Tényleg rendkívül kevés olyan eset van, amikor break nélkül ne lehetne elegánsabban megírni egy algoritmust.

2021. máj. 4. 11:14
Hasznos számodra ez a válasz?
 6/24 anonim ***** válasza:
85%

Ez a "Single Entry, Single Exit"-elv, a strukturált programozás kezdetének korára tehető (mint a "GOTO considered harmful"-elv is - és hasonló az indoka is).


Bővebben:

[link]

[link]

2021. máj. 4. 11:39
Hasznos számodra ez a válasz?
 7/24 anonim ***** válasza:
55%

Két C++ példa egy függvényre, ami egy vektorból visszaadja az első negatív elem indexét, ha nincs ilyen, akkor a vektor hosszát adja vissza.


std::size_t negativIndex(const std::vector<int> & vec) {

for (std::size_t i = 0; i != vec.size(); ++i)

if (vec[i] < 0)

return i;

return vec.size();

}

Ez egy sima for ciklus, ami látszólag végiglépked a vektor összes elemén, aztán ha talál egy negatív elemet, akkor kitör a függvényből és az aktuális index értéket adja vissza.


std::size_t negativIndex(const std::vector<int> & vec) {

std::size_t i = 0;

while (i != vec.size() && !(vec[i] < 0))

++i;

return i;

}

Itt pedig a ciklusfeltétel része, hogy találunk-e negatív számot, ha nem, akkor növeljük a ciklusváltozót. Miután kiléptünk a ciklusból, visszaadjuk az i értékét. Mint látható, a feladat "ugrálás" nélkül is megoldható. Nem is kellett azt a határesetet kezelnünk, hogy mi van, ha nem talál negatív számot a ciklusban.


A tanár a másodikat preferálja, szerintem méltányolható a preferenciája. Hogy melyik a szebb és az érthetőbb, azt mindenki döntse el maga. A második talán közelebb áll a "gépi logikához", a megvalósítandó algoritmushoz, de lehet hogy "emberi logikával" az első a logikusabb.

2021. máj. 4. 12:32
Hasznos számodra ez a válasz?
 8/24 anonim ***** válasza:
84%
A tanár részéről ez talán nem is a kód hatékonyságáról vagy robosztusságáról szól, hanem hogy először megtanulja a deák a strukturált tervezést. Ha az ember már keni-vágja, akkor eldöntheti, hogy melyik a jobb választás adott feladat esetén, és nem azért használja úgy, mert csak azt ismeri, vagy mert úgy sikerült. :)
2021. máj. 4. 13:02
Hasznos számodra ez a válasz?
 9/24 anonim ***** válasza:
93%
Szerintem óra után (megfelelő stílusban) akár meg is kérdezhetnéd a tanártól.
2021. máj. 4. 13:52
Hasznos számodra ez a válasz?
 10/24 anonim ***** válasza:
54%

1. Ahogy írták single entry, single return, így sokkal átláthatóbb, struktúráltabb, debuggolhatóbb lesz a programod.


2. Pont emiatt sok helyen elvárás, hogy így fejlessz (pl autóipar)?

2021. máj. 4. 14:10
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!