Off-by-one error: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: passaggio degli url da HTTP a HTTPS |
m rimossa ripetizione |
||
Riga 1:
{{W|informatica|gennaio 2015}}
Un
== Iterazioni oltre il termine dell'
Consideriamo un [[array]] di oggetti, dei quali processare quelli compresi da un certo valore ''m'' ad uno ''n'' (estremi inclusi). Quanti elementi si trovano in questo range? Una risposta intuitiva potrebbe essere ''n'' – ''m'', ma questo è proprio un errore di off-by-one, più precisamente del tipo '''fencepost'''; la risposta corretta è infatti (''n'' – ''m'') + 1.
Riga 18:
Errori relativi agli array possono inoltre essere risultato di differenze concettuali tra i vari linguaggi di programmazione. La numerazione che fa riferimento alla prima cella come la cella 0 è molto comune, ma alcuni linguaggi la numerano come la 1. [[Pascal (linguaggio di programmazione)|Pascal]] utilizza gli array con indici definiti dagli utenti, rendendone possibile la modellazione successivamente al problema del dominio.
== Errore
[[File:Fencepost error.svg|miniatura|Una recinzione dritta con ''n'' sezioni ha ''n'' + 1 paletti]]
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:
|