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++ - istruzioni break goto e continue
Forum - C/C++ - istruzioni break goto e continue

Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 17:53
Giovedì, 15/07/2010
ciao a tutti...ho appena iniziato a leggere un manuale di c..
premetto che sono abituato al pascal e diciamo che la mia prima impressione è che sia un linguaggio molto potente che lascia molto controllo al programmatore, ma con un infinità di sottigliezze...(pensiamo solo alle funzioni printf e scanf)ma d'altronde con così tanta libertà deve essere per forza così...

comunque volevo chiedere: le istruzioni break goto e continue vengono usate molto spesso?
xk a me hanno sempre insegnato che sono indice di scarsa qualità del programma e che non vanno usate....(almeno in pascal)...e poi c'è quel famoso teorema che dimostra che qualsiasi algoritmo può essere descritto con la sequenza, la selezione e l'iterazione....

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 17:57
Giovedì, 15/07/2010

in realtà si usano piuttosto spesso break e continue, ma molto meno goto.
la pulizia del codice è importante come la velocità di esecuzione, spesso troppi cicli e condizioni complesse peggiorano sia una che l'altra cosa, quindi entrano in gioco break e continue :)
per quanto riguarda goto posso dire che l'unico ambito in cui lo considero utile è l'uscita da n dei h cicli annidati in cui siamo, senza ritornare dalla funzione, una specie di botola di emergenza. ma a parte questo utilizzo, è veramente deprecato.

PM Quote
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Segnala al moderatore
Postato alle 18:05
Giovedì, 15/07/2010
è giustissimo quello che ha detto Hedo. break; and continue; si usano spesso. goto e meglio non utilizzarlo ..

PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 18:17
Giovedì, 15/07/2010
grazie mille=)

questo linguaggio continua a stupirmi...




sono rimasto perplesso dal fatto che il ciclo do while non è il ciclo repeat until del pascal...la condizione non è ribaltata rispetto al while come in pascal..


se il pascal è = a un bel praticello inglese il c è la foresta amazzonica in confronto!!

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 18:22
Giovedì, 15/07/2010
Testo quotato

Postato originariamente da Alex:

se il pascal è = a un bel praticello inglese il c è la foresta amazzonica in confronto!!



più che altro si ha la sensazione di passare da un vero e proprio giocattolo ad un linguaggio con tutti gli strumenti per fare grandi cose :)

PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 18:27
Giovedì, 15/07/2010
in effetti;);) xò anche il pascal non è un linguaggio cattivo....il fatto è che è molto molto astratto...


ma se uno sa bene il c può fare ad esempio il firmware di un lettore mp3? o c'è la necessità di sapere qualcosa anche di assembly?

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 19:32
Giovedì, 15/07/2010
Testo quotato

Postato originariamente da Alex:

ma se uno sa bene il c può fare ad esempio il firmware di un lettore mp3? o c'è la necessità di sapere qualcosa anche di assembly?



si, anche se si chiama embedded c, ovvero tutta quella programmazione legata ai microcontrollori. Oltre al fatto che nei casi di firmware et simila non si esclude l'utilizzo di inserti di assembler. Infatti in c/c++ si possono inserire delle righe di assembler tranquillamente, usando i blocchi asm. Ti faccio un esempio:

Codice sorgente - presumibilmente C++

  1. int main() {
  2.  
  3.     int c = 0;
  4.  
  5.     asm {
  6.  
  7.         mov c, 1;
  8.  
  9.         [...]
  10.  
  11.     }
  12.  
  13.     printf("c vale %d\n", c);
  14.  
  15.     return 0;
  16.  
  17. }



assegni tramite assembler il valore 1 a c :)

PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 21:24
Giovedì, 15/07/2010
Testo quotato

Postato originariamente da HeDo:

Postato originariamente da Alex:

ma se uno sa bene il c può fare ad esempio il firmware di un lettore mp3? o c'è la necessità di sapere qualcosa anche di assembly?

si, anche se si chiama embedded c, ovvero tutta quella programmazione legata ai microcontrollori. Oltre al fatto che nei casi di firmware et simila non si esclude l'utilizzo di inserti di assembler. Infatti in c/c++ si possono inserire delle righe di assembler tranquillamente, usando i blocchi asm. Ti faccio un esempio:



questo anche in pascal se non sbaglio....
comunque occorrono particolari conoscenze in più per programmare microcontrollori?
Testo quotato


assegni tramite assembler il valore 1 a c :)


mi pare che su un manuale di architettura che ho ci sia anche l'assembly...quindi dopo il c approfondirò un pò il discorso:k:

Ultima modifica effettuata da Alex il 15/07/2010 alle 21:26
PM Quote
Avatar
Steno94 (Normal User)
Rookie


Messaggi: 29
Iscritto: 09/07/2010

Segnala al moderatore
Postato alle 14:08
Venerdì, 16/07/2010
Testo quotato

Postato originariamente da HeDo:


in realtà si usano piuttosto spesso break e continue, ma molto meno goto.
la pulizia del codice è importante come la velocità di esecuzione, spesso troppi cicli e condizioni complesse peggiorano sia una che l'altra cosa, quindi entrano in gioco break e continue :)
per quanto riguarda goto posso dire che l'unico ambito in cui lo considero utile è l'uscita da n dei h cicli annidati in cui siamo, senza ritornare dalla funzione, una specie di botola di emergenza. ma a parte questo utilizzo, è veramente deprecato.



Sono pienamente d'accordo con HeDo:D

PM Quote