programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007...

35
Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI

Transcript of programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007...

Page 1: programmazione in C++ Introduzione alla · Introduzione alla programmazione in C++ Marzo, 2007 Fondamenti di Informatica Roberto BASILI

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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