Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni...

56
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale – BAER Unità 1 Introduzione alla programmazione Unità 1 Domenico Daniele Bloisi

Transcript of Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni...

Page 1: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Corso di Programmazione e Metodi NumericiIngegneria Aerospaziale – BAER

Unità 1

Introduzione alla programmazione

Unità 1

Domenico Daniele Bloisi

Page 2: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Docenti

Metodi Numericiprof. Vittoria Bruni

[email protected]

Programmazioneprof. Domenico Daniele Bloisi

[email protected]

2011/2012Introduzione alla programmazioneUnità 1

Pagina 2

[email protected]

Sito del corso http://www.dis.uniroma1.it/~pmnNota: %7E corrisponde alla tilde ~

Page 3: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Orario delle Lezioni

Lunedì 10.15 – 11.45Martedì 08.30 – 10.00Martedì 08.30 – 10.00Giovedì 10.15 – 11.45Venerdì 10.15 – 11.45

Aula 15, Via Scarpa 14

2011/2012Introduzione alla programmazioneUnità 1

Pagina 3

Aula 15, Via Scarpa 14

Page 4: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Informazioni Generali

Ing. Domenico Daniele Bloisi, PhD

Dipartimento di Ingegneria Informatica Dipartimento di Ingegneria Informatica Automatica e GestionaleVia Ariosto 25(adiacente Piazza Dante,

A fermate Manzoni, Vittorio Emanuele,Tram 3 fermata via Labicana)

mailto:[email protected]

http://www.dis.uniroma1.it/~bloisi2011/2012Introduzione alla programmazione

Unità 1Pagina 4

Page 5: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Ricevimento

Martedì 15.00 – 17.00DIS via Ariosto 25DIS via Ariosto 25

Aula docenti adiacente aula A4

Si consiglia di inviare una email per conferma edi controllare preventivamente la bacheca degli avvisiavvisi

2011/2012Introduzione alla programmazioneUnità 1

Pagina 5

Page 6: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Programma Preliminare del Corso

1. Nozioni di base dei calcolatori e della programmazi one2. Nozioni introduttive dell’analisi numerica, classi ficazione

degli erroridegli errori3. Tipi di dato primitivi, variabili, espressioni e assegnazioni4. Istruzioni condizionali e espressioni booleane5. Soluzione di equazioni e sistemi di equazioni non li neari6. Istruzioni di ciclo7. Array e matrici8. Soluzione di sistemi di equazioni lineari9. Approssimazioni di dati e funzioni

2011/2012Introduzione alla programmazioneUnità 1

Pagina 6

9. Approssimazioni di dati e funzioni10.Integrazione numerica11.Definizione e uso di classi e cenni sull'ereditar ietà12.Cenni di Fortran

Page 7: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Obiettivi

• Imparare il concetto di algoritmo e programma

• Imparare a risolvere problemi in modo • Imparare a risolvere problemi in modo algoritmico

• Imparare a tradurre l’algoritmo in programma

• Imparare a scrivere e compilare un programma in • Imparare a scrivere e compilare un programma in linguaggio C++

2011/2012Introduzione alla programmazioneUnità 1

Pagina 7

Page 8: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Sommario – Unità 1: Introduzione

• Architettura dei calcolatori• Linguaggi di programmazione• Programmi = dati + operazioni• Programmi = dati + operazioni• Primo programma C++• Scrittura, compilazione, esecuzione di un programma

• Errori nei programmi• Input da tastiera• Input da tastiera• Invocazione di funzioni

2011/2012Introduzione alla programmazioneUnità 1

Pagina 8

Page 9: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Come è fatto un calcolatore?

• Hardware– Processore– Memoria– Memoria– Periferiche

• Funzionamento– Esegue istruzioni elementari– Esegue istruzioni molto velocemente– Deve essere programmato: il software, cioè i – Deve essere programmato: il software, cioè i

programmi, caratterizzano il compito che esso svolge

2011/2012Introduzione alla programmazioneUnità 1

Pagina 9

Page 10: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Componenti di un calcolatore

2011/2012Introduzione alla programmazioneUnità 1

Pagina 10

Page 11: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Schema di un calcolatoreTastieraMouseStampanteModem

Porte I/OController

dischi

Hard diskCD/ROMDVD

Modem

CPU

Memoria

Schedavideo

Schedaaudio

Monitor

CasseMicrofono

bus

Schedarete

Altro PCInternet

2011/2012Introduzione alla programmazioneUnità 1

Pagina 11

Page 12: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Linguaggi di programmazione

• Linguaggio macchina21 40 16 100 163 240

• Linguaggio assemblativo (Assembler)iload intRatebipush 100if icmpgt intError

• Linguaggi ad alto livelloif (intRate > 100) ...

2011/2012Introduzione alla programmazioneUnità 1

Pagina 12

Page 13: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Gerarchia di astrazioni

6 programma applicativo

5 linguaggio ad alto livello

alto

5 linguaggio ad alto livello

4 Linguaggio assembly (assemblativo)

3 Nucleo di sistema operativo

2 Linguaggio macchina

1 microprogramma

livello

1 microprogramma

0 Logica digitale basso

2011/2012Introduzione alla programmazioneUnità 1

Pagina 13

Page 14: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Linguaggio di ProgrammazioneÈ dotato di un insieme di istruzioni che indicano al calcolatore cosa fare.

Le istruzioni hanno una sintassi e una semantica ben determinataLe istruzioni hanno una sintassi e una semantica ben determinata

Sintassi: insieme di regole su come usare le istruzi oni e scrivere un programma.

Semantica: attribuzione del significato alle istruzio ni e alla loro concatenazione.

Esempi sono il C++ (studiato in questo corso), il P ascal, Java, etc.La traduzione verso il basso avviene tramite un comp ilatore.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 14

Page 15: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Programma

I programmi caratterizzano il compito che il calcolat ore svolge.

Un programma ( indipendentemente dal linguaggio in cui è scritto ) è Un programma ( indipendentemente dal linguaggio in cui è scritto ) è costituito da due aspetti fondamentali:

• rappresentazione delle informazioni relative al dom inio di interesse: DATI o OGGETTI

• manipolazioni della rappresentazione che realizzano l e funzionalità richieste:OPERAZIONI

Per scrivere un programma si devono affrontare entrambi gli aspetti .

2011/2012Introduzione alla programmazioneUnità 1

Pagina 15

Page 16: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Rappresentazione delle informazioni

Le informazioni si rappresentano mediante tipi di dato .

Un tipo di dato raccoglie informazioni dello stesso tipo (ad esempio, i numeri interi, i caratteri, le stringhe, ecc.).

Nei linguaggi di programmazione ad alto livello esis tono tipi di dato predefiniti , ed è possibile definire tipi per rappresentare informazioni di interesse specifiche p er rappresentare informazioni di interesse specifiche p er un’applicazione (esempio, autovetture, persone, ecc. ).

2011/2012Introduzione alla programmazioneUnità 1

Pagina 16

Page 17: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Realizzazione delle operazioni

In genere, si realizza un’operazione quando deve essere risolto un problema.

Problema: dato un nominativo, trovare il corrispondente numero telefonico su un elencotelefonico.

Per delegare ad un calcolatore la soluzione di un Per delegare ad un calcolatore la soluzione di un problema è necessario individuare un algoritmoche risolve il problema.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 17

Page 18: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Algoritmo: definizione

AlgoritmoAlgoritmo

Procedimento risolutivo attraverso il quale Procedimento risolutivo attraverso il quale otteniamo la soluzione ad un problema, ovvero un insieme di passi che, eseguiti in ordine, permettono di calcolare i risultati a partire dalle informazioni date in ingresso.

Informazioni in SequenzaInformazioni in ingresso

INPUT

Sequenzaordinata di passi

ALGORITMO

Risultati

OUTPUT

2011/2012Introduzione alla programmazioneUnità 1

Pagina 18

Page 19: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Algoritmo: proprietà

Un algoritmo è caratterizzato da:

• non ambiguità : le istruzioni devono essere univocamente interpretabili dall’esecutore

• eseguibilità : ogni istruzione deve poter essere eseguita (in tempo finito) con le risorse a disposizione

• finitezza : l’esecuzione dell’algoritmo deve • finitezza : l’esecuzione dell’algoritmo deve terminare in tempo finito per ogni insieme di dati in ingresso

2011/2012Introduzione alla programmazioneUnità 1

Pagina 19

Page 20: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Algoritmo: esempio

Problema: dato un nominativo, trovare il corrispondente numero telefonico su un elencotelefonico.telefonico.

Algoritmo: scandire sequenzialmente i nominativi presenti nell’elenco fino a che non si trova quello cercato, quindi restituire il numero di telefono associato al nominativo.

Esistono altri algoritmi per risolvere lo stesso problema?

2011/2012Introduzione alla programmazioneUnità 1

Pagina 20

Page 21: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Codifica

Una volta individuato l’algoritmo, questo va codificato nel linguaggio di programmazione prescelto.prescelto.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 21

Page 22: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

CompilazioneUn compilatore è un programma traduttore, impiegato per produrre codice oggetto (in linguaggio macchina) a partire da codice sorgente scritto in un dato linguaggio di da codice sorgente scritto in un dato linguaggio di programmazione di livello più alto.

Questo processo si chiama compilazione .

Una volta prodotto il codice oggetto (ovvero un fil e eseguibile) risulta estremamente difficoltoso risal ire al sorgente.sorgente.

Questa procedura viene chiamata reversing.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 22

Page 23: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Paradigmi di Programmazione (1/2)Esistono differenti paradigmi di programmazione che si distinguono per l’enfasi che pongono sui due aspetti fondamenta li:dati (oggetti) e operazioni.

I paradigmi di programmazione principali sono:

1. IMPERATIVO: enfasi sulle operazioni intese come azioni, comandi , istruzioni che cambiano lo stato dell’elaborazione; g li oggetti sono funzionali alla elaborazione

2. FUNZIONALE: enfasi sulle operazioni intese come funzioni che calcolano risultati; gli oggetti sono funzionali all a elaborazione

3. ORIENTATO AGLI OGGETTI : enfasi sugli oggetti che 3. ORIENTATO AGLI OGGETTI : enfasi sugli oggetti che complessivamente rappresentano il dominio di intere sse; leoperazioni sono funzionali alla rappresentazione

2011/2012Introduzione alla programmazioneUnità 1

Pagina 23

Page 24: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Paradigmi di Programmazione (2/2)

In genere, in un programma sono utilizzati più paradigmi di programmazione.paradigmi di programmazione.

Quindi i linguaggi di programmazione forniscono supporto (in misura diversa) per i vari paradigmi.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 24

Page 25: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Il linguaggio C++

Il C++ è un linguaggio di programmazionead alto livello , che supporta i paradigmiimperativo, funzionale e orientato agli oggetti .imperativo, funzionale e orientato agli oggetti .

Assembler C Lisp “puro”Lisp

Linguaggioimperativo puro

Linguaggiofunzionale puroC++

2011/2012Introduzione alla programmazioneUnità 1

Pagina 25

estende il Ccreando uno strumento di

programmazioneorientato ad oggetti

Page 26: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Mini storia del C• Il C nasce dall'idea di avere un linguaggio ad alto livello che permettesse di scrivere in modo efficiente un sistema operativo

• Ken Thompson nel 1969 si ispirò a due linguaggi e sistenti CPL e BCPL e creò il linguaggio "B", ancora troppo poco efficien te per scrivere un sistema operativo

• Un suo collaboratore, Dennis Ritchie, nel 1972, m igliorò il "B” tramite vari passaggi, arrivando ad una nuova versione: "C“, con il quale fu quasi interamente riscritto il sistema operativo UN IX per il PDP-11, con tempi inaspettatamente brevi

• Il successo ottenuto spinse Thompson, Ritchie e K ernighan ad • Il successo ottenuto spinse Thompson, Ritchie e K ernighan ad utilizzare il C per scrivere il sistema operativo di altre macchine

• Da quel momento C ed UNIX rimangono legati indiss olubilmente

• Il C subisce un lungo processo di standardizzazione che si concretizza nello standard ISO/IEC 9899-1990

2011/2012Introduzione alla programmazioneUnità 1

Pagina 26

Page 27: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Mini storia del C++• Bjarne Stroustrup iniziò a lavorare ad un nuovo lingu aggio di programmazione nel 1979. Egli decise di aggiungere al linguaggio C alcune delle caratteristiche di altri linguaggi. Fu scelto il C perché era un linguaggio per uso generico portabile e veloce. perché era un linguaggio per uso generico portabile e veloce. Inizialmente, le funzionalità di classe, classe deriva ta, controllo rigoroso dei tipi e argomento di default furono aggi unte al C.

• Nel 1983 il nome del linguaggio fu cambiato da "C c on classi" a C++ e furono aggiunte nuove funzionalità.

• Nel 1985 fu pubblicata la prima edizione di ”The C++ programming

2011/2012Introduzione alla programmazioneUnità 1

Pagina 27

• Nel 1985 fu pubblicata la prima edizione di ”The C++ programming Language”, che fornì un'importante guida di riferime nto del linguaggio, che non era ancora stato ufficialmente standardizzato.

• Un comitato che presentava membri della ANSI e della ISO ha standardizzato C++ nel 1998 (ISO/IEC 14882:1998).

Page 28: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Caratteristiche generali di C++

• estende il C creando uno strumento di programmazione orientato ad oggetti ;

• estremamente efficiente;

• molto usato in ambito scientifico e per la realizzazione di sistemi complessi ;

• dispone di librerie di programma ricche e ben sviluppate.sviluppate.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 28

Page 29: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Iniziamo a programmare

Cosa occorre:

�Carta e Penna

�Un Editor di Testo

�Un compilatore

Ambiente diSviluppoIntegrato

IDE�Un compilatore IDE(es. Eclipse, MS Visual Studio,

Dev C++, …)

2011/2012Introduzione alla programmazioneUnità 1

Pagina 29

Page 30: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Il primo programma C++

#include <iostream>

int main() {int main() {std::cout << "Il mio primo programma C++." << std:: endl;return 0;

}

Il programma e costituito da una serie di istruzioni o direttive per il compilatore.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 30

Page 31: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Istruzioni del programma

Le istruzioni hanno il seguente significato:

#include <iostream>

direttiva per includere la definizione di funzioni e variabili direttiva per includere la definizione di funzioni e variabili predefiniti nel linguaggio relativi all’input/outpu t.

int main() {...}

definizione della funzione main che racchiude il definizione della funzione main che racchiude il programma principale .

Ogni programma C++ deve contenere una e una sola fu nzione main .

2011/2012Introduzione alla programmazioneUnità 1

Pagina 31

Page 32: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Istruzioni del programma

std::cout << "Il mio primo programma C++." << std::endl;

istruzione di stampa su video della fraseistruzione di stampa su video della fraseIl mio primo programma C++.

std::cout è il flusso (o stream ) di output standard (std) usato per stampare su video

std::endl rappresenta il carattere di ritorno a capo nelloschermo.

<< è un operatore di inserimento dati in un flusso di output.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 32

Page 33: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Istruzioni del programma

return 0;

istruzione che termina l’esecuzione della istruzione che termina l’esecuzione della funzione main e restituisce il risultato 0.

Nota: il C++ è case -sensitive, cioè distingue tra caratteri minuscoli e caratteri maiuscoli.es. cout è diverso da Coutes. cout è diverso da Cout

2011/2012Introduzione alla programmazioneUnità 1

Pagina 33

Page 34: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Secondo Programma in C++#include <iostream>

int main() {std::cout << "Il mio secondo programma C++ ..." << std::endl;std::cout << "Il mio secondo programma C++ ..." << std::endl;std::cout << "... e non sara’ l’ultimo." << std::endl;return 0;

}

La sequenza di due istruzioni comporta l’esecuzione delle due istruzioni nell’ordine in cu i sono scritte.sono scritte.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 34

Page 35: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Scrivere, compilare ed eseguire un programma C++

1. preparazione del testo del programma

2. compilazione del programma

3. esecuzione del programma compilato

2011/2012Introduzione alla programmazioneUnità 1

Pagina 35

Page 36: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Preparazione del testo del programma

La preparazione del testo di un programma comporta l a scrittura di un file contenente il programma.

Per un programma C++ il nome del file deve essere:Per un programma C++ il nome del file deve essere:

nome.cpp

dove:• nome è il nome del file contenente il testo del programm a• cpp è l’estensione che indica che il file contiene un p rogramma C++.

Es. primo.cpp

Nota: La scrittura di un programma può essere effet tuata con qualsiasi programma che consenta la scrittura di un testo ( editor ).Es. Edit, NotePad, Notepad++, Emacs,...

2011/2012Introduzione alla programmazioneUnità 1

Pagina 36

Page 37: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Compilazione del Programma (1/2)La compilazione del programma serve a tradurre il pr ogramma in una sequenza di comandi direttamente eseguibili dal calc olatore.

Esistono diversi compilatori C++.

Uno dei più usati è g++, disponibile per diversi sistemi operativi

Per usarlo occorre eseguire il seguente comando:

g++ -o NomeEseguibile NomeFile.cpp

Esempio: per compilare il programma primo.cpp, si può usare il comandocomando

g++ -o primo primo.cpp

2011/2012Introduzione alla programmazioneUnità 1

Pagina 37

Page 38: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Compilazione del Programma (2/2)

La compilazione produce come risultato un file chiam ato NomeEseguibile.exe in Windows, oppure NomeEseguibile in Unix/Linux/Mac, che contiene i comandi direttamente eseguibili dal calcolatore.calcolatore.

Esempio:

>g++ -o primo primo.cpp>

Crea un file primo.exe in Windows

Nota: se il processo di compilazione è corretto, il compilatore non stampa alcuna informazione, altrimenti stampa dei me ssaggi di errore.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 38

Page 39: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Esecuzione del programma compilato

L’esecuzione di un programma si può effettuare solo dopo la compilazione , cioè quando si ha il file NomeEseguibile.exe(oppure NomeEseguibile)

L’esecuzione del programma avviene scrivendo il nome del file eseguibile al prompt di sistema.

Ad esempio, per eseguire il programma primo.c si può usare il comando

primo

Il risultato dell’esecuzione del programma è quindi la visualizzazione diIl risultato dell’esecuzione del programma è quindi la visualizzazione di

Il mio primo programma C++.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 39

Page 40: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Esempio di Compilazione ed Esecuzione tramite prompt

2011/2012Introduzione alla programmazioneUnità 1

Pagina 40

Page 41: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Il ciclo Edita -Compila -Verifica

SI

begin Scritturaprogramma

Compilazioneprogramma

Errori dicompilazione

?

Verificaprogramma

Errori diesecuzione

?

NOSI

?

end

NO

2011/2012Introduzione alla programmazioneUnità 1

Pagina 41

Page 42: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Errori

Il seguente programma contiene diversi errori.#include <iostream>int main () {int main () {

std::cout << "I miei primi errori in C++..." << std::endlstd::Cout << "...e non saranno gli ultm!!!" << std::endl;return 0;

}

Tipi di errori:• sintassi,• semantica,• semantica,• logica.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 42

Page 43: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Errori di Sintassi

errori dovuti alla violazione delle regole sintattiche del linguaggio.

Esempio:Esempio:std::cout << "I miei primi errori in C++..." << std::endl

manca il ’;’

Questi errori sono individuati dal compilatore .

>g++ -o errori errori.cpperrori.cpp: In function 'int main()':errori.cpp: In function 'int main()':errori.cpp:5: error: expected ';' before "std"

2011/2012Introduzione alla programmazioneUnità 1

Pagina 43

Page 44: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Errori Semantici

errori dovuti alla impossibilità di assegnare un si gnificato ad un’istruzione.

Esempio:Esempio:std::Cout << "...e non saranno gli ultm!!!" << std::endl;

errore di ortografia nella variabile cout

Questi errori a volte sono individuati dal compilat ore (errori di semantica statica), altre volte sono individuati a tempo di esecuzione (errori di semantica dinamica).

>g++ -o errori errori.cpperrori.cpp: In function 'int main()':errori.cpp:5: error: 'Cout' is not a member of 'std '

2011/2012Introduzione alla programmazioneUnità 1

Pagina 44

Page 45: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Errori Logicierrori relativi alle funzionalità realizzate dal progr amma (differenti da quelle desiderate).Esempio:Esempio:"...e non saranno gli ultm!!!" ,la stringa da stampare non è corretta.

Questi errori possono essere individuati solo anali zzando o eseguendo test di verifica del programma.

>g++ - o errori errori.cpp>g++ - o errori errori.cpp>erroriI miei primi errori in C++......e non saranno gli ultm!!!

2011/2012Introduzione alla programmazioneUnità 1

Pagina 45

Page 46: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Programma Corretto#include <iostream>

int main () {std::cout << "I miei primi errori in C++..." << std::endl;std::cout << "I miei primi errori in C++..." << std::endl;std::cout << "...e non saranno gli ultimi!!!" << std::endl;return 0;

}

2011/2012Introduzione alla programmazioneUnità 1

Pagina 46

Page 47: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Formato del ProgrammaLe parole in un programma C++ sono separate da spazi .

Es. int main

• Si possono lasciare un numero di spazi (e/o di line e • Si possono lasciare un numero di spazi (e/o di line e vuote) a piacere .

• Andare a capo equivale a separare due elementi del programma (come uno spazio).

L’indentazione non ha alcun effetto sull’esecuzione d el programma, essa è comunque molto importante perché programma, essa è comunque molto importante perché rende i programmi più leggibili.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 47

Page 48: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Indentazione

L’indentazione è l’inserimento di una certa quantità di spazio vuoto all’inizio di una riga di codice.

Ogni riga viene indentata di un certo numero di spa zi che dipende Ogni riga viene indentata di un certo numero di spa zi che dipende dalla sua posizione all’interno della struttura logi ca del programma

int main () {std::cout << "non indentato" << std::endl;return 0;}

int main () {int main () {std::cout << "indentato" << std::endl;return 0;

}

2011/2012Introduzione alla programmazioneUnità 1

Pagina 48

Page 49: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Commenti

E’ possibile annotare il testo del programma con dei commenti.Il C++ dispone di due tipi di commento:Il C++ dispone di due tipi di commento:• // denota l’inizio di un commento che si estende solo fino alla fine della riga• /* ... */ delimita un commento che può occupare più righe.

Nota: I commenti non hanno alcun effetto Nota: I commenti non hanno alcun effetto sull’esecuzione del programma, sono usati perrendere il programma più leggibile.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 49

Page 50: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Uso dei namespace

I namespace sono dei nomi che caratterizzano un insieme di funzioni e variabili del linguaggio.

Essi sono usati per evitare possibili confusioninei nomi usati nei programmi.

In C++ esiste un namespace standarddenominato std che contiene molte funzioni e denominato std che contiene molte funzioni e variabili standard del linguaggio.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 50

Page 51: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Uso dei namespace

Per accedere alle funzioni o alle variabili di un namespace si usa la notazione

namespace::variabile

Ad esempio, std::cout è il termine usato per accedere alla variabile cout appartenente al namespace std .

2011/2012Introduzione alla programmazioneUnità 1

Pagina 51

namespace std .

Page 52: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Uso dei namespace

Si puo omettere di specificare il namespace ad ogni occorrenza della variabile/funzione, sesi dichiara in precedenza l'appartenenza della si dichiara in precedenza l'appartenenza della variabile/funzione al namespace ,

using std::cout;

oppure si dichiara di voler usare tutto il namespace

2011/2012Introduzione alla programmazioneUnità 1

Pagina 52

namespace

using namespace std;

Page 53: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Programmi equivalenti che usano namespaceEsempio 1, equivalente al primo programma C++:

#include <iostream>#include <iostream>

using std::cout;using std::endl;

int main() {cout << "Il mio primo programma C++." << endl;return 0;

2011/2012Introduzione alla programmazioneUnità 1

Pagina 53

return 0;}

Page 54: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Programmi equivalenti che usano namespaceEsempio 2, equivalente al primo programma C++:

#include <iostream>#include <iostream>

using namespace std;

int main() {cout << "Il mio primo programma C++." << endl;return 0;

}

2011/2012Introduzione alla programmazioneUnità 1

Pagina 54

}

Page 55: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Input da tastiera

Per l'input da tastiera si usa il flusso (o stream) di input standard std::cin .

#include <iostream>

using std::cout;using std::cin;using std::endl;

int main() {cout << "Inserisci un numero intero" << endl;

2011/2012Introduzione alla programmazioneUnità 1

Pagina 55

cout << "Inserisci un numero intero" << endl;int x;cin >> x;cout << "Hai inserito " << x << endl;

}

Page 56: Introduzione alla programmazione - uniroma1.itDocenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico Daniele Bloisi bloisi@dis.uniroma1.it

Input da tastiera

In questo programma il flusso di input cin è usato per leggere da tastiera un valore e inserirlo in una variabile (cfr. Unità 2).in una variabile (cfr. Unità 2).

Il valore inserito viene poi stampato nell'ultima istruzione del programma.

2011/2012Introduzione alla programmazioneUnità 1

Pagina 56