programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007...
Transcript of programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007...
Introduzione alla programmazione in C++
Marzo, 2007
Fondamenti di InformaticaRoberto BASILI
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
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
Fond. Informatica 2006-7
Lo sviluppo di un programma (in C++)
La programmazione modulare
Fond. Informatica 2006-7
La Programmazione
Analisi e decomposizione
2r
b
h
½πr2
4r2
½(b+2r)h
+
+
=
½πr2 + 4r2 + ½(b+2r)h
Fond. Informatica 2006-7
La Programmazione
Analisi e decomposizione
2r
b
h
½πr2 + 4r2 + ½(b+2r)h
Divide et impera!!
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
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
Fond. Informatica 2006-7
Programmazione in C++
Gli elementi lessicali del linguaggio C++ comprendono– tokens o parole (stringhe di
caratteri)
– spaziature (caratteri, tabulazioni)
– commenti
Fond. Informatica 2006-7
Elementi Lessicali - Tokens
Identificatori
Parole chiave (o riservate)
Espressioni letterali
Operatori
Separatori
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
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
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
Fond. Informatica 2006-7
Operatori e Separatori
Sono caratteri speciali o loro sequenze che denotano operazioni
Operatori: – + - * /
– >>, <<, ||, &&
Separatori: – , ; : ( ) { }
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]) {
}
Fond. Informatica 2006-7
Istruzioni
Dichiarazioni– variabili, costanti, (tipi dato, funzioni, …)
Espressioni
Istruzioni strutturate (ad es. if-then-else)
Fond. Informatica 2006-7
Un esempio: un Cerchio
Vedi dispense Programmi in C++ n.1– File: (Cerchio.pdf)
– Programma
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
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
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’)
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
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;
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: “%”
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
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++
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)
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
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
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
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)
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
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
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
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
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