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++ - Programma C che non si chiude correttamente
Forum - C/C++ - Programma C che non si chiude correttamente - Pagina 3

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 23:46
Domenica, 06/09/2015
Testo quotato

Postato originariamente da AldoBaldo:
Aggiungo che si sconsiglia di usare "==" e "!=" su valori in virgola mobile, perché talora (spesso?) gli arrotondamenti li rendono inaffidabili. Sul manuale che ho studiato tempo fa si consigliava di sostituirli con "<" o ">" o, al limite, "<=" o ">=". In effetti mi sono imbattuto davvero in situazioni nelle quali quando tentavo d'usare "==" e "!=" con valori in virgola mobile finivo per creare problemi nei quali, ragionando "alla lettera", uno non si aspetterebbe d'incorrere.



Una tecnica che si può usare è questa
Codice sorgente - presumibilmente C/C++

  1. if (fabsf(value - 0.5f) < EPS)


Ad esempio questo controlla se value sia uguale a 0.5 con uno scarto di EPS (epsilon).
In genere lo scarto è da determinare a seconda dell'utilizzo, ma per la maggior parte dei casi definire una costante sufficientemente piccola va bene.

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 0:55
Lunedì, 07/09/2015
Mah, io ho sempre pensato che fosse bruttissimo uscire da un ciclo con un break..... Dei flag mi sembrano molto più ordinati.... Precisi..... Con facilità di rintracciare il motivo di uscita dal ciclo in caso di uscita forzata.......


Non sto dicendo di NON usarli assolutamente, ma dove si può evitare senza appesantire troppo non usare il break non costa nulla. Io stesso uso dei break, c'è anche in un sorgente di un parser di json che ho recentemente postato.....

Ma quando uno è agli inizi e fa programmi "a pezzi concatenati" c'è il serio rischio di assemblare un programma dal flusso incomprensibile.... Questa mia visione dei break, goto e continue è data da esperienze dirette e giornaliere nella mia aula di scuola........ Insomma, è capitato più di qualche volta di dover correggere programmi molto più che spaghetti a miei compagni..... In ambito microcontrollori ho visto "biboli alla carbonara" code, ed è una visione che non voglio vedere mai più, e non voglio che qualcun altro produca simili porcherie!

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 2:27
Lunedì, 07/09/2015
I break non generano spaghetti code, e su questo siamo stati più che chiari. break, non complica il codice ma lo semplifica. Se serve segnalare un uscita da un ciclo basta aggiungere una semplice variabile, ma senza dover rinunciare ai break. Stesso discorso con continue, può solo semplificare il codice. Entrambi fanno saltare a pari passo parte del codice senza possibilità di tornare indietro nel flusso di esecuzione.
Non quando qualcuno è agli inizi ma quando qualcuno non è intenzionato ad imparare un metodo di progettazione strutturato. (Questo è un concetto ben più basilare della semplice programmazione) Non si può dare certamente la colpa a questi costrutti, se no come dice ZioCrocifisso, addio a tutti i linguaggi di programmazione e torniamo tutti a programmare solo in assembly x86.

Non confondere più goto e break. E sopratutto evita queste sparate come <L'uso di break; è MOLTO, MOLTO MALE!>, come ti è stato ricordato da Piero e me qualche topic fa, non esiste un unica buona soluzione, la risposta giusta che ogni buon ingegnere ti fornirà ad ogni problema è "dipende".

PM Quote
Avatar
Trusted (Normal User)
Newbie


Messaggi: 14
Iscritto: 06/09/2015

Segnala al moderatore
Postato alle 14:33
Lunedì, 07/09/2015
Ok risolto finalmente seguendo il codice di Aldo modificando giusto la sensibilità di %f (visto che nessuno usa 14.785943 galloni di benzina :rofl: )

Ultima modifica effettuata da Trusted il 07/09/2015 alle 14:35
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 14:38
Lunedì, 07/09/2015
Non sapevo si potessero confondere i goto

PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 15:59
Lunedì, 07/09/2015
Secondo me volta per volta si sceglie quello che fa più comodo per sintesi, per linearità, per chiarezza, anche per simbiosi con la propria personalissima struttura mentale... Sono tutti strumenti, la loro finalità è aiutare a svolgere meglio un compito, no? Poi è evidente che chi ha più esperienza sa usare meglio gli strumenti, per cui se uno del mestiere mi consiglia in un senso o nell'altro tendo a dargli retta!


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 16:03
Lunedì, 07/09/2015
Testo quotato

Postato originariamente da Trusted:

Ok risolto finalmente seguendo il codice di Aldo modificando giusto la sensibilità di %f (visto che nessuno usa 14.785943 galloni di benzina :rofl: )



Sì, in effetti hai ragione. Io userei 55.970882869752312 litri di benzina, piuttosto!!! :rotfl:


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 16:17
Lunedì, 07/09/2015
Testo quotato

Postato originariamente da AldoBaldo:

Secondo me volta per volta si sceglie quello che fa più comodo per sintesi, per linearità, per chiarezza, anche per simbiosi con la propria personalissima struttura mentale... Sono tutti strumenti, la loro finalità è aiutare a svolgere meglio un compito, no? Poi è evidente che chi ha più esperienza sa usare meglio gli strumenti, per cui se uno del mestiere mi consiglia in un senso o nell'altro tendo a dargli retta!


Si, la risposta giusta è sempre dipende, ma qui si è parlato di un pattern preciso e questo contempla l'uso dei goto non dei break. Nessuno vieta l'uso dei goto, ma è risaputo che sono indicatori di cattiva programmazione, e rendono sia il codice che la struttura del processo piu complicata e difficile da interpretare.

PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo