G. Mecca – Università della Basilicata – [email protected]
Programmazione Procedurale in Linguaggio C++
Elementi di Base Parte 5
Conclusioni
versione 2.1
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Sommario
m
Ricapitolazione
m
Simulazione di un Programma
m
Errori Frequenti
Elementi di Base: Conclusioni >> Sommario
G. Mecca - Programmazione Procedurale in Linguaggio C++ 3
Elementi di Base di un Linguaggio
m Regole sintattiche di base
ðstruttura del programma, commenti, identificatori
m Istruzioni di dichiarazione
ðtipi di dato: int, float, double, char (string), bool ðdichiarazione di costanti e di variabili
m Istruzioni di Assegnazione
ðEspressioni
m Istruzione di Lettura e Stampa
ðconsole e file
Elementi di Base: Conclusioni >> Ricapitolazione
Elementi di Base: Conclusioni >> Ricapitolazione
// 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;
}
Un Semplice Programma
G. Mecca - Programmazione Procedurale in Linguaggio C++ 5
Simulazione del Programma
m
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
m
Essenzialmente
ðconsiste nell’applicare la semantica delle istruzioni una per una (esec. sequenziale)
Simulazione del Programma
m
NOTA
ðsi tratta di una forma di esercitazione didatticamente fondamentale
ðsoprattutto per chi si avvicina per la prima volta alla programmazione
m
Il problema dell’”astrazione”
ðabituarsi a “interpretare” il comportamento della macchina durante l’esecuzione
ðsenza vederlo
Elementi di Base: Conclusioni >> Ricapitolazione
ATTENZIONE all’importanza delle simulazioni
G. Mecca - Programmazione Procedurale in Linguaggio C++ 7
Simulazione del Funzionamento
Elementi di Base: Conclusioni >> Ricapitolazione
...
#1004 cerchio
#1003 circonf
#1002 raggio
#1001
3.14 pigreco
#1000 ...
Il cerchio ha superficie: 314.0 La circonferenza misura: 62.8 _10
(deve essere un numero intero)
Memoria RAM
Schermo
// 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;
} Immetti la lungh. del raggio
xxx xxx xxx
314.0 62.8 10
Errori Frequenti
m
Di seguito
ðalcuni errori sintattici molto frequenti
m
In particolare
ðpunti e virgola mancanti
“Statement missing ;”
ðcostanti o variabili non dichiarate
“Undefined symbol”
ðerrori nella scelta degli identificatori
Elementi di Base: Conclusioni >> Errori Frequenti
G. Mecca - Programmazione Procedurale in Linguaggio C++ 9
Errori Frequenti
m
In caso di codice scorretto sintatticamente
ðil compilatore restituisce messaggi persegnalare gli errori
m
Esempio: errore frequente
ðpunto e virgola mancanteError 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)
Errori Frequenti
m
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()
Elementi di Base: Conclusioni >> Errori Frequenti
G. Mecca - Programmazione Procedurale in Linguaggio C++ 11
Errori Frequenti
m
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()
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti
m
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()
Elementi di Base: Conclusioni >> Errori Frequenti
NOTA: in questo caso il messaggio
G. Mecca - Programmazione Procedurale in Linguaggio C++ 13
Errori Frequenti
m NOTA BENE
ðpurtroppo non sempre i messaggi di errore sono completamente affidabili nella descrizione e nel numero di linea
m Numero di linea
ðl’errore può essere alla linea segnalata ðoppure in una delle linee precedenti
m Inoltre
ða volte un errore singolo può generare molti messaggi di errore diversi
Errori Frequenti: Esempio
// 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;
}
Elementi di Base: Conclusioni >> Errori Frequenti
parentesi mancante
G. Mecca - Programmazione Procedurale in Linguaggio C++ 15
>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 ***
Elementi di Base: Conclusioni >> Errori Frequenti
Errori Frequenti
m
Di conseguenza, valgono le regole
ða) analizzare i messaggi di errore 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
Elementi di Base: Conclusioni >> Errori Frequenti
G. Mecca - Programmazione Procedurale in Linguaggio C++ 17
Riassumendo
m
Elementi di base
ðtipi, costanti, variabiliðistruzioni di assegnazione ed espressioni ðistruzioni di lettura e stampa
m
Simulazione del programma
m
Errori frequenti
Elementi di Base: Conclusioni >> Ricapitolazione
// 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;
}
Un Semplice Programma
G. Mecca - Programmazione Procedurale in Linguaggio C++ 19
Termini della Licenza
m This work is licensed under the Creative Commons Attribution- ShareAlike 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.
Termini della Licenza
m 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.