Gli errori

Nella pratica della programmazione possono comparire errori lessicali, sintattici e logici.

Il compilatore interrompe la traduzione del codice sorgente quando riconosce un errore lessicale o sintattico e lo segnala al programmatore in modo più o meno corretto…

Gli esempi seguenti si riferiscono al linguaggio di programmazione Pascal

Errori lessicali

La parola non appartiene al linguaggio

  1. Than, invece di Then
  2. Cost, invece di Const

Errori sintattici

La struttura della frase è sbagliata

  1. manca Then

  2. il punto e virgola prima dell’Else è proibito

Errori logici

Gli errori logici si rivelano quando il programma è in esecuzione (run-time) perché succedono delle cose strane

  1. i risultati sono sbagliati
  2. il programma si blocca (non appaiono i risultati)
  3. il programma si interrompe (il controllo torna all’ambiente di sviluppo o al sistema operativo)

Testing

Per individuare eventuali errori logici si passa alla fase di testing

problema10

Si mette più volte alla prova il programma oggetto utilizzando dati in ingresso

  • diversi (diverse istanze del problema)
  • significativi (casi particolari, dubbi)
  • sicuri (per i quali si conosce già la risposta corrispondente)

Debugging

Quando la risposta ottenuta non è quella attesa si passa alla fase di debugging per individuare gli errori commessi nella stesura del sorgente / programma / algoritmo (e se fosse sbagliato il problema?).

problema11

La fase di testing and debugging si conclude quando si raggiunge la ragionevole certezza che il software non contenga errori logici.

Alcuni ambienti di sviluppo forniscono un debugger. Si tratta di una funzionalità che permette di eseguire il codice istruzione per istruzione e contemporaneamente seguire i cambiamenti delle variabili fino all’individuazione dell’errore.

Errori comuni

Con la pratica si riconosceranno alcuni errori molto frequenti

  1. caso particolare del problema non previsto
  2. confusione tra variabili con nomi simili
  3. divisione per zero
  4. argomento illegale di una funzione (radice quadrata, resto, logaritmo, …)
  5. loop infinito, un ciclo While che non termina mai

Alcuni errori logici possono essere frequenti con un linguaggio di programmazione e impossibili con un altro

  1. BASIC, PASCAL: uso di variabili non inizializzate
  2. PYTHON: indentazione scorretta
  3. C, PASCAL: else ciondolante