Kezdőoldal » Számítástechnika » Programozás » Miért ne használhatnék goto...

Miért ne használhatnék goto utasítást, ha break, continue és exit utasítások sem kevésbé különbözőek?

Figyelt kérdés
Ugyanazt a célt szolgálják, az utasítás végrehajtási sorrendjét változtatják. Ha jól belegondoltok az összes többi elágazás és ciklus is ugyanezt teszi. Sőt, a programunk végül alacsony szinten jump utasításokra fordítódik, akár mit írunk. A ciklusunkból ha elég terjedelmes, sima jump utasítás keletkezik.
2013. jún. 11. 00:28
1 2
 1/14 A kérdező kommentje:
Elfelejtettem: ha nem lenne egyértelmű, C típusú nyelvekről beszélek.
2013. jún. 11. 00:34
 2/14 anonim ***** válasza:

Mert átláthatatlanná teszik a kódot.

A break, continue, exit és hasonló utasítások sem a struktúrált programozás részei, de sokszor jóval hatékonyabbá tehetik a kódot, és sokkal kevésbé lehet vele szörnyűségeket csinálni, mint goto-val.

[link]

2013. jún. 11. 06:34
Hasznos számodra ez a válasz?
 3/14 anonim ***** válasza:
Azért nem mindegy, hogy egy ciklusból lépsz ki egy utasítással v. átugrálsz függvények között...
2013. jún. 11. 07:56
Hasznos számodra ez a válasz?
 4/14 anonim ***** válasza:
Mért csak C típusú nyelveknél kérdés? Máshol, pl. Pascalban sem szép.
2013. jún. 11. 09:21
Hasznos számodra ez a válasz?
 5/14 iostream ***** válasza:

1. Az exit nem utasítás, hanem függvény.

2. A break és a continue is töri a struktúrált programozást, de vannak fokozatok. A goto bárhova ugorhat (na jó, nem bárhova, de jóval kötetlenebb), de a break/continue jól meghatározott helyre csak.


Minden csak absztrakció kérdése. Persze, végső soron gépi kód lesz mindenből, de nekünk ezzel miért is kéne foglalkozni, ha magasabb szinten sokkal könnyebb megfogalmazni a megoldásokat a problémáinkra?

2013. jún. 11. 09:59
Hasznos számodra ez a válasz?
 6/14 anonim ***** válasza:
45%

Ki mondta, hogy nem használhatsz? Senki nem töri le a kezed ha használod, a kulcsszó az ésszerűség. A goto ördögtől való voltát a strukturálatlan programok miatt hangoztatták mindig is, a strukturált programozás azonban nem a goto teljes elhagyásáról szól, hanem arról, hogy mit tehetsz meg vele és mit nem.

Az más kérdés, hogy volt itt negyven év, ami alatt a goto kikerülésére kismillió módszer született szinte minden helyzetre, úgyhogy nagyon ritka az, hogy tényleg használnod kelljen.

2013. jún. 11. 10:20
Hasznos számodra ez a válasz?
 7/14 anonim ***** válasza:
Nagy kódbázisban elveszel ha televan goto-val. Kis, 100 soros "kipróbálokvalamit" teszteknél 1-2 goto szerintem belefér. Ha hosszabb használatra kell átlátható kód, akkor pedig inkább ne használd.
2013. jún. 11. 17:00
Hasznos számodra ez a válasz?
 8/14 anonim ***** válasza:
Ritkán kell, de akkor nagyon. Javában esetleg téphetnéd a hajad, hogy nem tudsz kiugrani egy dupla ciklusból, mert a goto szó tabu.
2013. jún. 11. 21:54
Hasznos számodra ez a válasz?
 9/14 anonim ***** válasza:
Ha a goto tabu egy dupla ciklusban, akkor csinálsz egy boolean flag-et, vagy returnolsz ha megvan ami kell, meg lehet azért találni a módját.
2013. jún. 12. 06:27
Hasznos számodra ez a válasz?
 10/14 anonim ***** válasza:

Itt csupa okosságot mondtak, azt tenném még hozzá, hogy baromira nem érdekes, mire fordul le a program (ilyen szempontból). Naná, hogy gépi kódban lesz ugró utasítás, senki nem is állította, hogy az strukturált. Egy bölcs mondás szerint a forráskódnak nem a számítógép, hanem az ember számára kell olvashatónak lennie. Na ezért.


Más a helyzet természetesen, ha sebességorientált feladatod van, és nanosecundumokon akarsz spórolni. De a feladatok többsége nem ilyen.

2013. jún. 12. 07:06
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!