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