Off-by-one error: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Aggiunto paragrafo "Errore Fencepost" |
→Errore Fencepost: Corretti errori formattazione del codice inserito |
||
Riga 23:
Un errore fencepost (letteralmente "Staccionata", chiamato anche '''telegraph pole''', '''lamp-post''' o '''picket fence''') è un tipo specifico di errore di off-by-one. Una descrizione primitiva di questo errore apparve nei testi di [[Marco Vitruvio Pollione|Vitruvio]]<ref>{{Cita web|url=http://www.dsm.fordham.edu/~moniot/Opinions/fencepost-error-history.shtml|titolo=History of fence-post error|sito=www.dsm.fordham.edu|lingua=en|accesso=2017-11-04}}</ref>. Il problema si può illustrare nel modo seguente:
<nowiki>{{ Quote|Se costruisci una recinzione dritta lunga 30 metri, con paletti spaziati 3 metri l'uno dall'altro, di quanti paletti necessiti? }}</nowiki>
La risposta più immediata, ovvero 10, è sbagliata. La recinzione è composta infatti da 10 sezioni ed 11 paletti.
Riga 31:
Più in generale, il problema può essere posto nel modo seguente:
<nowiki>{{Quote| Se hai </nowiki>''n''<nowiki> paletti, quante sezioni ci sono tra di essi? }}</nowiki>
La risposta corretta dovrebbe essere ''n'' – 1 se la sequenza di paletti è aperta alla fine, ''n'' se si chiudono a cerchio, o ''n'' + 1 se il lato aperto della sequenza di paletti è considerato come una sezione. Bisogna prestare molta attenzione alla definizione precisa del problema, perché il setup di una certa configurazione potrebbe dare la risposta sbagliata per altre. Errori di fencepost derivano in sostanza dal contare gli elementi piuttosto che gli spazi che li separano e viceversa, o trascurando di considerare se l’oggetto in esame dovrebbe essere contato soltanto in uno o in entrambi gli estremi della fila.
Riga 41:
In caso di utilizzo di numeri molto grandi, avere una ripetizione in più può non essere un problema così evidente. Avendo a che fare con numeri più piccoli invece, soprattutto in casi specifici nei quali la precisione è essenziale, commettere un errore off-by-one può essere disastroso. A volte l’errore potrà essere inoltre ripetuto e anche peggiorato, nel caso in cui un susseguirsi di persone utilizzino uno stesso calcolo errato portandoselo dietro di volta in volta (ovviamente l’errore potrebbe anche venire corretto).
Un esempio di quando un errore di questo tipo si può verificare coinvolge il linguaggio [[MATLAB]], durante l’utilizzo della funzione
{{Portale|informatica}}
|