Programmazione Procedurale in
Linguaggio C++
Elementi di Base
Parte 5
Conclusioni
versione 2.0
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons
(vedi ultima pagina)
G. Mecca – Università della Basilicata – [email protected]
Elementi di Base: Conclusioni >> Sommario
Sommario
 Ricapitolazione
 Simulazione
di un Programma
 Errori Frequenti
G. Mecca - Programmazione Procedurale in Linguaggio C++
2
Elementi di Base: Conclusioni >> Ricapitolazione
Elementi di Base di un Linguaggio
 Regole
sintattiche di base
struttura del prog., commenti, identificatori
 Tipi
di dato
int, float, double, char (string), bool
 Costanti
e Variabili
dichiarazioni
 Istruzioni
di Assegnazione ed Espressioni
 Istruzione di Lettura e Stampa
G. Mecca - Programmazione Procedurale in Linguaggio C++
3
Elementi di Base: Conclusioni >> Ricapitolazione
Un Semplice Programma
// Calcolo della superficie del cerchio
#include <iostream.h>
void main() {
// Dichiarazioni
const float pigreco=3.14;
int raggio;
float cerchio, circonf;
// Operazioni
cout << “Immetti la lungh. del raggio” << endl;
cout << “(deve essere un numero intero)” << endl;
cin >> raggio;
cerchio = raggio*raggio*pigreco;
circonf = 2*pigreco*raggio;
cout << “La circonferenza misura: “ << circonf << endl;
cout << “Il cerchio ha superficie: “ << cerchio << endl;
}
G. Mecca - Programmazione Procedurale in Linguaggio C++
4
Elementi di Base: Conclusioni >> Ricapitolazione
Simulazione del Programma
 Consiste
nel simulare sulla carta
l’esecuzione delle istruzioni
utile se usato congiuntamente alla
sperimentazione diretta al calcolatore
aiuta a ragionare su alcuni meccanismi
interni di funzionamento
 Essenzialmente
consiste nell’applicare la semantica delle
istruzioni una per una (esec. sequenziale)
G. Mecca - Programmazione Procedurale in Linguaggio C++
5
Elementi di Base: Conclusioni >> Ricapitolazione
Simulazione del Funzionamento
Memoria RAM
...
#1000
pigreco
3.14
#1001
raggio
xxx
10
#1002
circonf
xxx
62.8
#1003
cerchio
xxx
314.0
#1004
...
Schermo
Immetti la lungh. del raggio
(deve essere un numero intero)
_10
La circonferenza misura: 62.8
// Calcolo della superficie del cerchio
#include <iostream.h>
void main() {
// Dichiarazioni
const float pigreco=3.14;
int raggio;
float circonf, cerchio;
// Operazioni
cout << “Immetti la lungh. del raggio”
<< endl;
cout << “(deve essere un numero intero)”
<< endl;
cin >> raggio;
cerchio = raggio * raggio * pigreco;
circonf = 2 * raggio * pigreco;
cout << “La circonferenza misura: “
<< circonf << endl;
cout << “Il cerchio ha superficie: “
<< cerchio << endl;
}
Il cerchio ha superficie: 314.0
G. Mecca - Programmazione Procedurale in Linguaggio C++
6
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti
 Di
seguito
alcuni errori sintattici molto frequenti
 In
particolare
punti e virgola mancanti
“Statement missing ;”
costanti o variabili non dichiarate
“Undefined symbol”
errori nella scelta degli identificatori
G. Mecca - Programmazione Procedurale in Linguaggio C++
7
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti
 In
caso di codice scorretto sintatticamente
il compilatore restituisce messaggi per
segnalare gli errori
 Esempio:
errore frequente
punto e virgola mancante
Error E2379 prova.cpp 16: Statement missing ; in function main()
*** 1 errors in Compile ***
codice
di errore
nome
del file
numero
di riga
descrizione dell’errore
(punto e virgola mancante)
G. Mecca - Programmazione Procedurale in Linguaggio C++
8
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti
 Un
altro errore frequente
utilizzare una variabile non dichiarata
es: raggio
void main()
const float pigreco = 3.14;
float cerchio, circonf;
cout << “Immetti la lungh. del raggio” << endl;
cin >> raggio;
Error E2451 cerchio.cpp 14: Undefined symbol 'raggio' in function
main()
G. Mecca - Programmazione Procedurale in Linguaggio C++
9
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti
 Errori
nella scelta degli identificatori
es: spazi
es: int lung raggio;
Error E2141 prova.cpp 4: Declaration syntax
error in function main()
lung raggio = 1;
Error E2379 prova.cpp 6: Statement missing
; in function main()
G. Mecca - Programmazione Procedurale in Linguaggio C++
10
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti
 Errori
nella scelta degli identificatori
altra fonte di errori sono i caratteri speciali
(codice ASCII superiore a 127)
es: int capCittà;
Error E2206 prova.cpp 5: Illegal character 'Ó'
(0xe0) in function main()
G. Mecca - Programmazione Procedurale in Linguaggio C++
11
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti
 NOTA
BENE
purtroppo non sempre i numeri di linea sono
affidabili
 In
generale
l’errore può essere alla linea segnalata
oppure in una delle linee precedenti
 Inoltre
a volte un errore sintattico ne può generare
molti altri
G. Mecca - Programmazione Procedurale in Linguaggio C++
12
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti: Esempio
parentesi mancante
// cerchioErrori.cpp
#include <iostream.h>
void main()
const float pigreco = 3.14;
int raggio;
float cerchio, circonf;
cout << “Immetti la lungh. del raggio” << endl;
cout << “(deve essere un numero intero)” << endl;
cin >> raggio;
cerchio = raggio * raggio * pigreco;
circonf = 2 * pigreco * raggio;
cout << “La circonferenza misura: “ << circonf << endl;
cout << “Il cerchio ha superficie: “ << cerchio << endl;
}
G. Mecca - Programmazione Procedurale in Linguaggio C++
13
Elementi di Base: Conclusioni >> Errori Frequenti
>bcc32 cerchioErrori.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
cerchioErrori.cpp:
Error E2310 cerchioErrori.cpp 7: Only member functions may be 'const' or 'volatile'
Error E2141 cerchioErrori.cpp 7: Declaration syntax error
Error E2141 cerchioErrori.cpp 12: Declaration syntax error
Error E2015 cerchioErrori.cpp 13: Ambiguity between 'cout' and 'std::cout'
Error E2238 cerchioErrori.cpp 13: Multiple declaration for 'cout'
Error E2344 cerchioErrori.cpp 12: Earlier declaration of 'cout'
Error E2141 cerchioErrori.cpp 13: Declaration syntax error
Error E2141 cerchioErrori.cpp 14: Declaration syntax error
Error E2303 cerchioErrori.cpp 15: Type name expected
Error E2238 cerchioErrori.cpp 15: Multiple declaration for 'cerchio'
Error E2344 cerchioErrori.cpp 9: Earlier declaration of 'cerchio'
Error E2451 cerchioErrori.cpp 15: Undefined symbol 'pigreco'
Error E2303 cerchioErrori.cpp 16: Type name expected
Error E2238 cerchioErrori.cpp 16: Multiple declaration for 'circonf'
Error E2344 cerchioErrori.cpp 9: Earlier declaration of 'circonf'
Error E2015 cerchioErrori.cpp 17: Ambiguity between 'cout' and 'std::cout'
Error E2238 cerchioErrori.cpp 17: Multiple declaration for 'cout'
Error E2344 cerchioErrori.cpp 13: Earlier declaration of 'cout'
Error E2141 cerchioErrori.cpp 17: Declaration syntax error
Error E2015 cerchioErrori.cpp 18: Ambiguity between 'cout' and 'std::cout'
Error E2238 cerchioErrori.cpp 18: Multiple declaration for 'cout'
Error E2344 cerchioErrori.cpp 17: Earlier declaration of 'cout'
Error E2141 cerchioErrori.cpp 18: Declaration syntax error
Error E2190 cerchioErrori.cpp 19: Unexpected }
*** 24 errors in Compile ***
G. Mecca - Programmazione Procedurale in Linguaggio C++
14
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti
 Di
conseguenza, valgono le regole
a) analizzare gli errori sintattici uno ad uno
b) dopo aver eliminato ciascun errore,
ricompilare e verificare gli ulteriori errori
c) per eliminare un errore, cercare di capire il
messaggio di errore
d) ispezionare subito la linea segnalata
e) successivamente ispezionare le linee
precedenti alla caccia di possibili cause
G. Mecca - Programmazione Procedurale in Linguaggio C++
15
Elementi di Base: Conclusioni >> Sommario
Riassumendo
 Elementi
di base
tipi, costanti, variabili
istruzioni di assegnazione ed espressioni
istruzioni di lettura e stampa
 Simulazione
del programma
 Errori frequenti
G. Mecca - Programmazione Procedurale in Linguaggio C++
16
Elementi di Base: Conclusioni >> Ricapitolazione
Un Semplice Programma
// Calcolo della superficie del cerchio
#include <iostream.h>
void main() {
// Dichiarazioni
const float pigreco=3.14;
int raggio;
float cerchio, circonf;
// Operazioni
cout << “Immetti la lungh. del raggio” << endl;
cout << “(deve essere un numero intero)” << endl;
cin >> raggio;
cerchio = raggio*raggio*pigreco;
circonf = 2*pigreco*raggio;
cout << “La circonferenza misura: “ << circonf << endl;
cout << “Il cerchio ha superficie: “ << cerchio << endl;
}
G. Mecca - Programmazione Procedurale in Linguaggio C++
17
Termini della Licenza
Termini della Licenza

This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to
Creative Commons, 559 Nathan Abbott Way, Stanford, California
94305, USA.

Questo lavoro viene concesso in uso secondo i termini della
licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere
una copia della licenza, è possibile visitare
http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una
lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way,
Stanford, California 94305, USA.
G. Mecca - Programmazione Procedurale in Linguaggio C++
18
Scarica

Programmazione Procedurale in Linguaggio C++