• Non ci sono risultati.

Programmazione Procedurale in Linguaggio C++

N/A
N/A
Protected

Academic year: 2021

Condividi "Programmazione Procedurale in Linguaggio C++"

Copied!
10
0
0

Testo completo

(1)

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

(2)

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

(3)

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

(4)

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

(5)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 9

Errori Frequenti

m

In caso di codice scorretto sintatticamente

ðil compilatore restituisce messaggi per

segnalare gli errori

m

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)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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.

Riferimenti

Documenti correlati

www.acs.org Potassium-Mediated supramolecular Organization of Water and Dyes in Zeolite nanochannels (see page

• PATOLOGIA DIVERSA DAL QUESITO CLINICO PER IL QUALE L’ INDAGINE E’ MIRATA... SE TALI GIUSTIFICAZIONI REGGONO NEL

expectations of good outcomes by the Medical Science; finally he discusses the evolution of the Science; finally he discusses the evolution of the juridical concept of

Si costruisca la curva di possibilità pluviometrica mediante il metodo della precipitazione indice, utilizzando sia il modello probabilistico di Gumbel che il modello

In the field of statistics, the correction process is often subdivided into an error localization phase, in which the set of erroneous values within each record is determined, and a

• la Natura è vista come una trama interconnessa di relazioni (“è un tutto polisistemico”)... Ecosistema della foca: rete delle

L'elasticità complessiva della membrana, influenzata anche dalla mescola, garantisce la resistenza alla fatica del manto impermeabile. resistenza alla fatica del

Differ- ent mechanisms are involved in the inflammasome activation: direct crystal interaction with the cell membrane and subsequent tyrosine kinase Syk activation; crystal