Dev C++

Errori Logici

Programmi validi che producono un risultato diverso da quello richiesto.

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.

  1. Apri l’esempio media errata e prevedi il risultato per 7 e 8.
  2. Compila ed esegui: confronta il valore ottenuto con 7.5.
  3. Individua il tipo degli operandi della divisione.
  4. Sostituisci 2 con 2.0, salva e ricompila.
  5. 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.

Scarica l’esempio

Controllare il risultato

Confronta ciò che accade con una previsione formulata prima della prova.

ControlloRisultato o criterio
Operandi7 e 8: somma 15
Divisione per 2Il calcolo intero produce 7
Divisione per 2.0Il 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.