Il concetto
Programmi validi che producono un risultato diverso da quello richiesto.
Un errore logico riguarda il rapporto tra il programma e il risultato desiderato. Il compilatore può accettare il codice perché le operazioni sono ammesse. Nell’esempio della media, due numeri interi vengono sommati e divisi per l’intero 2: la parte frazionaria del quoziente viene scartata prima dell’assegnazione.
Assegnare il risultato a double non corregge automaticamente la divisione: è importante il tipo degli operandi nel momento del calcolo. Con 7 e 8 la divisione intera produce 7; usando 2.0 il calcolo produce 7.5. Questo caso rende visibile una differenza che con 6 e 8 resterebbe nascosta.
Un test efficace sceglie dati capaci di distinguere il comportamento corretto da quello errato. Calcola prima il valore atteso, poi confrontalo con l’output. Se il risultato non coincide, osserva i valori intermedi e identifica la prima operazione che devia dalla previsione.
Procedura passo passo
Una sequenza da eseguire sul proprio computer.
- Apri l’esempio media errata e prevedi il risultato per 7 e 8.
- Compila ed esegui: confronta il valore ottenuto con 7.5.
- Individua il tipo degli operandi della divisione.
- Sostituisci 2 con 2.0, salva e ricompila.
- Ripeti con 6 e 8 e spiega perché quel test da solo non avrebbe individuato il difetto.
Codice e risultato
Il codice va aperto e compilato in Dev-C++; il riquadro mostra il risultato previsto.
Sorgente C++
#include <iostream>
int main() {
int primo = 7;
int secondo = 8;
double media = (primo + secondo) / 2;
std::cout << "Media: " << media << "\n";
return 0;
}
Risultato atteso
Media: 7 Il risultato richiesto e invece 7.5: esempio volutamente errato.
Questo riquadro è una previsione didattica, non una console che esegue il C++ nel browser.
Controllare il risultato
Confronta ciò che accade con una previsione formulata prima della prova.
| Controllo | Risultato o criterio |
|---|---|
| Operandi | 7 e 8: somma 15 |
| Divisione per 2 | Il calcolo intero produce 7 |
| Divisione per 2.0 | Il calcolo produce 7.5 |
Errori da evitare
Le cause da controllare prima di ripetere l’operazione.
- Credere che un programma senza diagnosi sia sempre corretto.
- Verificare solo dati che nascondono il problema.
- Cambiare il tipo della variabile risultato senza esaminare gli operandi.
Riferimenti: Compilazione: documentazione ufficiale.