Correttezza del codice Java

4

Click here to load reader

description

Verifica di correttezzaCorrettezza sintatticaCorrettezza logicaErrori tipiciSimulazione dell'esecuzione di un programma

Transcript of Correttezza del codice Java

Page 1: Correttezza del codice Java

Correttezza del codice Java

Introduzione

L’obiettivo della dispensa è chiarire l’ultimo punto della metodologia illustrata nel modulo precedente per risolvere un problema con l’ausilio del calcolatore: la verifica di correttezza del programma.

1. Analisi del problema mediante individuazionea. dei dai inizialib. dei risultati attesic. del procedimento risolutivo (algoritmo)

2. Formalizzazione dell’analisi (scrittura dell’algoritmo)3. Codifica nel linguaggio di programmazione scelto (scrittura del programma)4. Verifica della correttezza del programma

Verifica di correttezza

Quando si parla di correttezza di un programma occorre distinguere tra correttezza sintattica e correttezza logica.

La correttezza sintatticaè facilmente verificabile in fase di compilazione del codice. Eventuali errori sono segnalati dal compilatore e possono essere corretti, una volta individuati. Tra gli errori più comuni ci sono:

La mancanza del punto e virgola alla fine di un’istruzione, che viene segnalata con un messaggio del tipo

D:\Documents and Settings\Documenti\Mod1.3\Codice\Addizione.java:14: ';' expected

System.out.println("La somma e': "+ somma) ^

1 error

Procedura completata con codice di uscita 1

Il compilatore riporta le seguenti informazioni: il nome completo del file (pathname)

D:\Documents and Settings\Documenti\Mod1.3\Codice\Addizione.java la riga di codice dove è stato rilevato l’errore

14 il tipo di errore riscontrato

';' expected la posizione dell’errore nella riga di codice

System.out.println("La somma e': "+ somma) ^

il numero di errori1 error

Autore: Cinzia BocchiUltimo aggiornamento: 08/08/11

1

Page 2: Correttezza del codice Java

La scrittura di una classe con iniziale minuscola (per es. system invece di System), che viene segnalata con un messaggio del tipo

D:\Documents and Settings\Documenti\Mod1.3\Codice\Addizione.java:3: cannot find symbolsymbol : class stringlocation: class Addizione

public static void main(string args[]) ^

1 error

Procedura completata con codice di uscita 1

La mancanza di una parentesi graffa chiusa, che viene segnalata con un messaggio del tipo

D:\Documents and Settings\Documenti\Mod1.3\Codice\Addizione.java:16: reached end of file while parsing} ^1 error

Procedura completata con codice di uscita 1

La correttezza logica ha invece a che fare con il comportamento del programma. Un programma è logicamente corretto se fa ciò che noi ci aspettiamo, cioè se restituisce i risultati attesi a partire dai dati iniziali. Quando ci accorgiamo che i risultati sono diversi da quelli desiderati occorre andare alla ricerca dell’errore. Questa ricerca non è banale e può essere svolta manualmente, quando i programmi sono costituiti da poche righe di codice, oppure con l’ausilio di strumenti software chiamati debugger. Nel seguito riprenderemo la metodologia vista in precedenza per verificare la correttezza di un algoritmo e la applicheremo ai programmi.

OsservazioneMentre la correttezza sintattica di un programma può essere verificata solo quando il codice è già stato scritto, la correttezza logica può essere verificata prima di scrivere il codice, andando a simulare l’algoritmo. Quest’ultima possibilità è molto vantaggiosa poiché consente di mettere a punto la logica dell’algoritmo e di rilevare eventuali errori, prima ancora di scrivere il codice, risparmiando così tempo e fatica. Tuttavia, nonostante l’algoritmo sia corretto, altri errori possono essere introdotti in fase di codifica. In tal caso occorre effettuare un’ulteriore simulazione del codice.

Simulazione dell’esecuzione di un programma

Utilizzeremo a tal scopo una tabella con tante colonne quante sono le variabili del programma più una per l’output. Prima di iniziare la simulazione occorre determinare un insieme di valori di input, che siano significativi ai fini della verifica di correttezza, e stabilire quali debbano essere i risultati dopo l’esecuzione.Considerando sempre il precedente esempio dell’addizione possiamo fissare come valori di input i due numeri 10 e 5 e attenderci come risultato il valore 15.

Autore: Cinzia BocchiUltimo aggiornamento: 08/08/11

2

Page 3: Correttezza del codice Java

Se il risultato al termine della simulazione è diverso da 15, significa che è presente un errore logico nel programma.

STEP 11. Numeriamo ogni riga di codice significativa (escludiamo dalla numerazione le

parentesi, i commenti, l’intestazione, le direttive import, le dichiarazioni utilizzate per la classe Scanner)

1

2

34

import java.util.*;

class Addizione{

public static void main(String args[]){

//Dichiarazioni di variabiliint num1,num2,somma;Scanner console= new Scanner(System.in);//IstruzioniSystem.out.println(“Inserisci il primo addendo”);num1= console.nextInt();System.out.println(“Inserisci il secondo addendo”);num2= console.nextInt();somma= num1+num2;System.out.println(“La somma e’: “+ somma);

}}

STEP 2Creiamo una tabella contenente tante colonne quante sono le variabili più una per l’output.

num1 num2 somma output

STEP 3Per ogni istruzione che andiamo a eseguire, creiamo una riga nella precedente tabella e inseriamo i valori delle variabili nella cella opportuna.

num1 num2 somma outputistruzione 1 10

L’istruzione 1 acquisisce in input il primo numero (10) e lo assegna alla variabile num1.

num1 num2 somma outputistruzione 1 10

istruzione 2 5

L’istruzione 2 acquisisce in input il secondo numero (5) e lo assegna alla variabile num2.

Autore: Cinzia BocchiUltimo aggiornamento: 08/08/11

3

Page 4: Correttezza del codice Java

num1 num2 somma outputistruzione 1 10istruzione 2 5

istruzione 3 15

L’istruzione 3 prende il valore di num1 (10), lo aggiunge al valore di num2 (5) e pone il risultato (15) in somma.

num1 num2 somma outputistruzione 1 10istruzione 2 5istruzione 3 15

output 15

L’istruzione 4 produce in output il valore di somma, cioè 15.

Il risultato ottenuto è uguale a quello che ci aspettavamo, quindi il programma è logicamente corretto.

_______________________________________________________________________Quest'opera è stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Autore: Cinzia BocchiUltimo aggiornamento: 08/08/11

4