programmazione in c++ introduzione alla · introduzione alla programmazione in c++ marzo, 2007...
TRANSCRIPT
![Page 1: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/1.jpg)
Introduzione alla programmazione in C++
Marzo, 2007
Fondamenti di InformaticaRoberto BASILI
![Page 2: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/2.jpg)
Fond. Informatica 2006-7
La Programmazione
Programmare significa:
– Determinare la natura del problema (analisi)
– Definire una decomposizione in sottoproblemi
– Determinare le utili strutture dei dati
– Definire le procedure risolutive (algoritmi)
– Codificare in un linguaggio di programmazione
![Page 3: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/3.jpg)
Fond. Informatica 2006-7
Lo sviluppo di un programma (in C++)
Scrittura, – output: testo
Compilazione, – output: librerie del programma o
errori detti di compilazione
Linking (o collegamento)– output: programma eseguibile
Esecuzione
![Page 4: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/4.jpg)
Fond. Informatica 2006-7
Lo sviluppo di un programma (in C++)
La programmazione modulare
![Page 5: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/5.jpg)
Fond. Informatica 2006-7
La Programmazione
Analisi e decomposizione
2r
b
h
½πr2
4r2
½(b+2r)h
+
+
=
½πr2 + 4r2 + ½(b+2r)h
![Page 6: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/6.jpg)
Fond. Informatica 2006-7
La Programmazione
Analisi e decomposizione
2r
b
h
½πr2 + 4r2 + ½(b+2r)h
Divide et impera!!
![Page 7: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/7.jpg)
Fond. Informatica 2006-7
La Programmazione
Analisi e decomposizione– Tutti i linguaggi di programmazione ad
alto livello possiedono costrutti in grado di descrivere la soluzione di sottoproblemi e di garantire la ri-composizione delle soluzioni generali
– Le procedure (e funzioni) sono le procedure risolutive dei sottoproblemi
– Chiamare una procedura significa attivarne la esecuzione su un certo dato
![Page 8: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/8.jpg)
Fond. Informatica 2006-7
La Programmazione
Analisi e decomposizione– Es. Area(BlobBlob) = ½ ACerchio(11)+
AQuadr(22)+ATrap(33)=
= ½ Acerchio(r)+Aquadr(2r)+ATrap(b,2r,h)
2r
b
h
22
33
11
BlobBlob
Acerchio(r)= πr2Aquadr(l) = l2
ATrap(b,B,h) =((b+B)*h)/2
dove
![Page 9: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/9.jpg)
Fond. Informatica 2006-7
Programmazione in C++
Gli elementi lessicali del linguaggio C++ comprendono– tokens o parole (stringhe di
caratteri)
– spaziature (caratteri, tabulazioni)
– commenti
![Page 10: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/10.jpg)
Fond. Informatica 2006-7
Elementi Lessicali - Tokens
Identificatori
Parole chiave (o riservate)
Espressioni letterali
Operatori
Separatori
![Page 11: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/11.jpg)
Fond. Informatica 2006-7
Identificatori
Identificano gli oggetti del programma: dati o operazioni
‘_’ e’ una lettera valida
i caratteri maiuscoli e minuscoli (ad es. a ed A) sono diversi
Es. A, a, cont, max, min, sqrt
![Page 12: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/12.jpg)
Fond. Informatica 2006-7
Parole chiave
Sono identificatori speciali che svolgendo un ruolo specifico per il linguaggio di programmazione non possono essere liberamente usati dal programmatore.
Ad es. while, for, register, protected, public
vd. elenco Appendice B, pag. 715
![Page 13: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/13.jpg)
Fond. Informatica 2006-7
Espressioni letterali
Sono usate per rappresentare (cioe’ dare un nome) a valori costanti per il programma
‘a’ rappresenta il carattere a e lo distinguedall’identificatore a;
Oss: ‘\n’ ‘\t’ rappresentano il carattere di fine riga (non ritorno carrello) e tabulazione rispettivamente
234.0e2 e’ il numero reale 23400
“Hello World!” “Bye!\n” sono stringhe
![Page 14: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/14.jpg)
Fond. Informatica 2006-7
Operatori e Separatori
Sono caratteri speciali o loro sequenze che denotano operazioni
Operatori: – + - * /
– >>, <<, ||, &&
Separatori: – , ; : ( ) { }
![Page 15: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/15.jpg)
Fond. Informatica 2006-7
Struttura di un semplice programma in C++
Programma:– [blocco_dich ]
int main( [argomenti]) blocco_istruzioni
blocco_istruzioni:– { lista_istruzioni }
main([argomenti]) {
}
![Page 16: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/16.jpg)
Fond. Informatica 2006-7
Istruzioni
Dichiarazioni– variabili, costanti, (tipi dato, funzioni, …)
Espressioni
Istruzioni strutturate (ad es. if-then-else)
![Page 17: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/17.jpg)
Fond. Informatica 2006-7
Un esempio: un Cerchio
Vedi dispense Programmi in C++ n.1– File: (Cerchio.pdf)
– Programma
![Page 18: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/18.jpg)
Fond. Informatica 2006-7
Istruzioni di Input/Output elementari
Input:– cin >> identificatore
inserisce il valore inserito dalla tastiera in identificatore
– cout << espressione
stampa a schermo il valore corrente di espressione
![Page 19: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/19.jpg)
Fond. Informatica 2006-7
Oggetti, variabili e tipi
Gli oggetti corrispondono a aree di memoria e contengono valori
Il nome consente di riferirsi all’oggetto (per recuperare il suo valore/lettura o modificarne il suo contenuto/scrittura)
Poiche’ dobbiamo dedicare aree di memoria agli oggetti dobbiamo conoscerne le caratteristiche => gli oggetti hanno un tipo
nome valore
![Page 20: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/20.jpg)
Fond. Informatica 2006-7
Tipi di dati
Un insieme di valori legali per quel tipo (ad es. 13 per un intero, ‘a’ per un carattere)
Un insieme di operazioni legali su tali valori (ad esempio la divisione per gli interi)
Variabili e costanti hanno un loro tipo: le prime vengono sempre dichiarate, le seconde ricevono il tipo dalla loro dichiarazione/assegnazione o dalla loro espressione letterale (ad es. ‘\n’)
![Page 21: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/21.jpg)
Fond. Informatica 2006-7
Tipi di dato elementari
Numeri interi: int, short, unsigned, long
Numeri Reali: float, double
Caratteri: char
Tipo logico boolean: bool
enumerati: enum
![Page 22: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/22.jpg)
Fond. Informatica 2006-7
Tipi di dato elementari -Dichiarazione
<Type> <var name > [=<legal_value>];
Es:int a; unsigned b = 1;
long b;
float x, y; double x = y = 1.2;
char lettera; char lettera = ‘d’;
bool trovato;
bool trabocco = true;
![Page 23: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/23.jpg)
Fond. Informatica 2006-7
Espressioni Numeriche
<Var_name> = <Espressione>;
Es. Vedi programma: Tipi.cpp
Vd. Sezione 1.2- Dispensa di Programmazione
– Operazioni aritmetiche e conversioni ditipo
– l’operatore modulo: “%”
![Page 24: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/24.jpg)
Fond. Informatica 2006-7
Espressioni booleane
Vd. Dispensa di Programmazione
– Conversioni di tipo esplicite: il casting
– il tipo bool e le operazioni relazionali
Dichiarazioni
Operatori relazionali
![Page 25: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/25.jpg)
Fond. Informatica 2006-7
Assegnamento
Vd. Dispensa di Programmazione
– Espressioni concatenate
– Espressioni composte
A=5; A=A+23; coincide con A+=23;
A=A⊕B; coincide con A⊕=B
– Operatori di incremento e decremento, A++
![Page 26: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/26.jpg)
Fond. Informatica 2006-7
Alcune funzioni di libreria
La libreria math (vedi dispense Programmi C++)– Costanti predefinite
e, log2(e), log10(e), π, …
– funzioni trigonometriche, logaritmiche
– funzioni di arrotondamento:troncamento: ceil(double)
arrotondamento: floor(double)
![Page 27: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/27.jpg)
Fond. Informatica 2006-7
Sommario
Il progetto del software e’ un processostrutturato che culmina con la fase di codifica in un linguaggio di programmazione
La programmazione quindi si concentra sulla progettazione di – Sottoproblemi
– Dati
– Algoritmi (che risolvono i sottoproblemi individuali)
… e non SOLO sulla codifica
![Page 28: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/28.jpg)
Fond. Informatica 2006-7
Sommario (2)
Un linguaggio di programmazione prevede – elementi lessicali (il suo vocabolario, le parole
riservate, operatori e separatori)
– La sua grammatica, cioe’ le regole di buona formazione sintattica
La semantica delle espressioni del linguaggio e’ data dalle procedure che vengono generate dal compilatore
Gli errori sintattici sono riconoscibili dalcompilatore
![Page 29: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/29.jpg)
Fond. Informatica 2006-7
Sommario (3)
Gli errori semantici del programma sono dovuti ad errori di programmazione:– Errori accidentali (ad es. Il tentativo di dividere
per 0 dovuto a configuazioni dei dati non previste dal programmatore)
– Errori sistematici (logica del programma errata, loops)
Essi non possono essere riconosciuti nella fase di compilazione ma SOLO durante la fase di esecuzione
![Page 30: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/30.jpg)
Fond. Informatica 2006-7
Sommario (4)
I tipi di dato definiscono– la rappresentazione delle informazioni interna
al calcolatore (quindi i loro valori legali)
– Le operazioni legali sui tali informazioni
I tipi numerici introducono approssimazioniche li rendono diversi dalle corrispondenti astrazioni matematiche
Istruzioni C++: dichiarazioni, assegnamenti, espressioni (ad es. incremento)
![Page 31: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/31.jpg)
Fond. Informatica 2006-7
Sommario (5)
Abbiamo introdotto:– La struttura di un programma in C++
– La nozione di header file (ad es. “#include <iostream>”)
– Le dichiarazioni delle variabili
– Le istruzioni di Ingresso/Uscita
– La compilazione/esecuzione di un programma
– La libreria matematica
![Page 32: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/32.jpg)
Fond. Informatica 2006-7
Sommario (6)
Sono stati forniti (almeno) 4 esempidi programmi– Circonferenza ed Area di un Cerchio
– Programma Tipi.cpp
– Dichiarazioni ed uso di espressioni logiche
– Loop infinito
![Page 33: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/33.jpg)
Fond. Informatica 2006-7
Esercizi
Riscrivere il programma per il calcolo del cerchio e della circonferenza
Scambio tra due valori (reali) forniti in ingresso
Somma tra tre valori forniti in ingresso
Stampare il valore reale qualsiasi fornitoin ingresso con 3 cifre decimali dopo la virgola
![Page 34: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/34.jpg)
Fond. Informatica 2006-7
Esercizi (2)
Determinare la soluzione di una equazione di primo grado
Determinare le radici di una equazione di secondo grado
Determinare il massimo tra due numeri forniti in ingresso
Determinare il massimo tra tre numeri forniti in ingresso
Determinare il massimo tra N numeri forniti in ingresso
![Page 35: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI](https://reader030.vdocuments.mx/reader030/viewer/2022020216/5c663f7b09d3f252168c128f/html5/thumbnails/35.jpg)
Fond. Informatica 2006-7
Esercizi (3)
Data l’equazione di una retta in forma implicita determinarne la intersezione con l’asse delle x
Data l’equazione di due rette in forma implicita detrminare se esse sono:– Parallele
– Secanti o
– Coincidenti