Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - goto e etichette in c++
Forum - C/C++ - goto e etichette in c++

Avatar
DeSa97 (Normal User)
Newbie


Messaggi: 5
Iscritto: 27/03/2014

Segnala al moderatore
Postato alle 22:49
Sabato, 05/04/2014
su un altro topic del forum ho letto un codice dove c'erano delle etichette e dei goto. degli utenti hanno commentato dicendo che anche se esiste goto in c++, non si dovrebbe usare perchè non porta a una buona programmazione. ma perchè questa cosa? a me sembra abbastanza utile usare le etichette e goto (non sempre, in particolari casi), forse mi sbaglio?

PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 23:57
Sabato, 05/04/2014

PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 12:51
Domenica, 06/04/2014
L'uso di goto, break e continue e' contro il paradigma della programmazione strutturata.
In parole povere puoi usarli senza problema ma rendi il tuo codice meno leggibile e più difficile da maneggiare.

Inoltre possono essere sempre evitati! Lo hanno dimostrato i due informatici Böhm e Jacopini.
http://it.wikipedia.org/wiki/Teorema_di_Böhm-Jacopini
Infatti ogni programma può essere costituito solo da 3 strutture:
-sequenza (blocco di istruzioni)
-selezione (if)
-ciclo (while,do-while,for)

Ti consiglio anche di vedere questa pagina di wikipedia per capire meglio il concetto di programmazione strutturata: http://it.wikipedia.org/wiki/Programmazione_strutturata

È "solo" una tecnica di programmazione ma è caldamente consigliata per creare un codice migliore.

Ogni tanto i break e i continue possono essere usati per evitare inutili flag, ma come tutte le cose non bisogna abusarne.

In conclusione evita sempre i goto ed evita il più possibile l'utilizzo di break e continue nei tuoi programmi :k:


PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 13:22
Domenica, 06/04/2014
In certe situazioni goto è meglio, per esempio quando bisogna uscire da più loop nidificati. Si può fare anche senza goto, usando una variabile e controllandola, ma se si usa goto in questo caso il codice è sicuramente più chiaro e immediato.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:44
Domenica, 06/04/2014
Testo quotato

Postato originariamente da XBarboX:
In conclusione evita sempre i goto ed evita il più possibile l'utilizzo di break e continue nei tuoi programmi
  



Esistono alcune limitate situazioni in cui l'uso del goto puo' essere utile.

Ad esempio:

Codice sorgente - presumibilmente C++

  1. int someFunction( void )
  2. {
  3.         result = failure;
  4.         blah = allocate_some_memory();
  5.         if( do_something( blah ) == failure )
  6.         {
  7.                 goto bailout;
  8.         }
  9.        
  10.         ack = open_a_file();
  11.         if( process_file( blah, ack ) == failure )
  12.         {
  13.                 goto bailout;
  14.         }
  15.        
  16.         hoover = do_something_else();
  17.         if( have_fun( blah, hoover ) == failure )
  18.         {
  19.                 goto bailout;
  20.         }
  21.         //      we survived!
  22.         result = success;
  23.  
  24. bailout:
  25.         if( blah ) free_the_memory( blah );
  26.         if( ack ) close_the_file( ack );
  27.         if( hoover ) clean_this_up( hoover );
  28.  
  29.         return result;
  30. }



Il mio blog: https://piero.dev
PM Quote