Yuyu_13 ha scritto:@ quinzio
Sono uno studente di matematica, invece, il libro è Programmazione in C, Kim N. King.
Per quanto riguarda l'uso del goto, hai usato le stesse parole del mio prof., perché non va bene usarlo ?
Il strcmp non confronta le lunghezze delle parole? Sul mio libro ci sta scritto che serve per confrontare le lunghezze delle parole mediante gli operatori di $<, >....$?
Il libro che hai non lo conosco ma non ho dubbi che sia di alto livello.
Veniamo al GOTO.
La questione e' una di quelle capaci di far litigare anche programmatori che per 8 ore stanno mansueti davanti al monitor senza dire una parola.
Non e' facile spiegare il perche' usare il GOTO e' male e su internet ci sono decine di discussioni al merito. Basta cercare su google "why goto is evil in C".
Ti do la mia spiegazione: evitare di usare il GOTO fa si che i programmi assumano una struttura gerarchica. Ossia ci sono funzioni che chiamano altre funzioni, che chiamano altre funzioni, ecc. E in ogni funzione ci possono essere cicli di esecuzione che contengono annidati altri cicli, e cosi' via.
Per ciclo di esecuzione intendo il "for loop", ovvero un gruppo di istruzioni eseguito diverse volte.
Il punto chiave e' che non si esce a un ciclo se il ciclo non e' terminato.
Ovvero non si salta da un ciclo all'altro.
Il GOTO rende possibile il salto da un punto all'altro in modo indiscriminato, anche se il ciclo non e' terminato si puo' saltare fuori anche da diversi cicli annidati. Questo rompe la struttura gerarchica di un programma e rende molto piu' difficile la comprensione di un programma da parte dello sviluppatore.
E' anche vero che ogni linguaggio di programmazione contiene dei GOTO camuffati e dissimulati sotto altro nome.
Anche la "if else" in realta' non e' altro che un GOTO, per non parlare poi dell'istruzione "break" e continue.
Pero' queste istruzioni non rompono la gerarchia del codice e non effettuano dei salti fuori dal blocco di istruzioni dove sono collocati.
Per te che sei agli inizi, la morale della storia e' questa: non usare MAI il GOTO, MAI e poi MAI. E' fuorilegge.
La strcmp.
La strcmp significa STRing CoMPare, ossia confronta due stringhe.
Ossia la funzione prende due stringhe, dove ogni stringa e' una sequenza di bytes.
La stringa finisce al primo 0x00 che si incontra. Attenzione, non il numero '0' (0x30 in ASCII), ma 0x00 scritto nel byte.
Se le due stringhe sono uguali (fino al primo 0x00 compreso) allora la strcmp restituisce 0, altrimenti restituisce un numero diverso da zero.
Ora, vedi subito che la strcmp non e' utile per avere informazioni sulla lunghezza di una stringa.
La funzione che ti serve e' la strlen, ovvero string length.