40
Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

Embed Size (px)

Citation preview

Page 1: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

Introduzione al linguaggio C++

Prof. Giuseppe Di Capua

Page 2: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

Il linguaggio C ++:

STRUTTURA DI UN PROGRAMMA

Un programma in C++ è formato da una sezione di librerie, da una parte di Dichiarazioni Globali, da una parte denominata main ( programma principale) e da una seria di funzioni.

Si può così schematizzare:1. ogni funzione è un insieme di dichiarazioni e di istruzioni racchiuse tra due parentesi graffe;2. la funzione main è sempre presente in un programma e gestisce le chiamate alle altre funzioni;3. ogni variabile deve essere dichiarata prima dell'utilizzo.

Page 3: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

Il linguaggio C ++:

STRUTTURA DI UN PROGRAMMA

La struttura generale di un programma C++ è :

LibrerieDichiarazioni Globalimain(argomenti){dichiarazioni locali Funzione1()}Funzione1 (argomenti){dichiarazioni locali istruzioni}

Page 4: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

2. SINTASSI

2.1 Alcune regole

1. Tutte le istruzioni, fatte alcune eccezioni che si vedranno in seguito, terminano con il ; (punto e virgola)

2.    Le variabili hanno nomi con caratteri maiuscoli o minuscoli (N.B.: Il C++ è CASE SENSITIVE ovvero c’è differenza tra carattere maiuscolo e minuscolo nei nomi delle variabili. La variabile Alfa è differente da alfa);

3. Il nome di una variabile non può essere composto da più parole (in tal caso si utilizza il carattere speciale “_” chiamato underscore, per unire le parole);

4. Il primo carattere può essere o una lettera o “_”.

Esempio di nomi di variabili corretti:

Numero_giorni Datanascita

Esempio di nomi di variabili NON corretti:

3Numero Data di nascita

Page 5: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

2. SINTASSI

2.2 Identificatori

Gli identificatori particolari sono caratteri o parole particolari usate nel linguaggio. Esse sono:1.Le variabili2.Parole del vocabario del linguaggio (main, if, else, while, for, …)      3.    I commenti (sequenze di caratteri racchiuse tra i simboli /* e */ se su più righe o dopo // se su singola riga).

Ad esempio /* Questo è un commento di più righe */

//questo è un commento singola riga

Page 6: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

2. SINTASSI

2.2 Variabili

Tutti gli identificatori variabili devono essere dichiarati prima di essere invocati.

La dichiarazione avviene indicando:• il tipo di dato (cioè la quantità di memoria necessaria per la memorizzazione e le operazioni consentite);  • il nome attraverso cui utilizzarlo;• l’inizializzazione (optionale).

Esempio:

dichiarazioni semplici: int i, j ;char c; float pigraco ;double x; 

dichiarazioni con inizializzazioneint i = 0;char c = ‘b’ ; double x = 5.789;

Page 7: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

Le variabili

2. SINTASSI

Le variabili rappresentano un’area di memoria. Ogni variabile viene identificata da un nome

Si possono distinguere vari tipi di variabili in base alla posizione che occupano nel corpo del programma, ai valori che possono assumere e alle operazioni che supportano:

1.      variabili locali o automatiche (dichiarate all’interno di un blocco o funzione, sono creata al momento della chiamata e distrutte al termine dell’esecuzione);2.      variabili globali (dichiarate all’esterno di tutte le funzioni, sono visibili su tutto il codice);

Page 8: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

I tipi di dato

2. SINTASSI

I tipi di dato presenti in C sono di due specie: 1.      tipi semplici (char, int, float, double, void);2.      tipi strutturati (strutture, vettori,union).

int: si indica il tipo intero in complemento a due che, a seconda della versione C++ utilizzata, può essere a 16 o a 32 bit;

char : è il carattere, rappresentato in genere in ascii. le costamti di tipo char possono essere dichiarate anche in base alla rappresentazione ottale premettendo al valore il carattere "backslash". Ad esempio '\7' rappresenta il bell mentre '\0' il null;

double : è un numero rappresentato in virgola mobile; una costante di tipo double è un numero dove compare il carattere <punto> , come ad esempio 12.3; tutte le costanti dove compare il punto, o scritte in notazione scientifica ( 1e3 ) sono di tipo double; in genere il compilatore utilizza più spazio per le variabili di tipo double rispetto alle variabili di tipo float , per cui la precisione di calcolo risulta superiore.

Page 9: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

3. OPERAZIONI

Il C++ ha molti operatori e poche parole chiavi.

Oltre alle parentesi tonde, che il C++ considera come operatoti, i restanti operatori possono essere divisi nelle categorie principali che sono:

1.      operatori aritmetici;2.      operatori relazionali e logici;3.      operatori di assegnamento;4.      operatori di incremento e decremento; 

Page 10: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

3.1 Operazioni aritmetiche binarie

3. OPERAZIONI

Gli operatori aritmetici binari sono:

+ addizione

- sottrazione

* moltiplicazione

/ divisione

% resto della divisione tra interi

Una espressione è una sequenza di costanti,variabili, operatori e chiamate di funzioni che in genere determina un risultato.

Esempio:

3; a + b; 3 * x; 2 * (a+b);

Page 11: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

3.2 Operatori relazionali e logici

3. OPERAZIONI

Gli operatori relazionali sono utilizzati nelle espressioni e forniscono come risultato un int di valore 0 per falso e 1 per vero.

Essi sono: operatori relazionali operatori logici< minore ! negazione > maggiore && and<= minore uguale || or >= maggiore uguale = = uguale != diverso

L'unico operatore unario è la negazione (!); tutti gli altri sono binari. Esempi. 9 > 7 ha valore VERO o 14+3 < 1+3 ha valore FALSO o 03*2 == 5+1 ha valore VERO o 1

Page 12: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

3. OPERAZIONI

3.3 Assegnazione

Con l'assegnazione si assegna ad una variabile un valore (costante, contenuto di variabile o il risultato di un'espressione). L’assegnazione richiede il punto e virgola

i = 0; vuole dire porre 0 in ialfa = alfa + 1; significa incrementare di 1 il valore contenuto in alfa

Sono possibili assegnazioni multiple come la seguente :

a=b=c=d=3;

In questo caso le variabili ‘a’, ‘b’, ‘c’ e ‘d’ sono inizializzate tutte con 3. La valutazione delle operazioni da svolgere avviene da destra a sinistra. La prima operazione è l'assegnazione d=3 che produce come risultato 3; tale risultato viene assegnato alla variabile c, producendo nuovamente come risultato 3, che viene assegnato alla variabile b, e così via.

Page 13: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

3. OPERAZIONI

Sono, inoltre, possibili notazioni abbreviate:

alfa += 1; equivale a alfa = alfa + 1;var *= i ; equivale a var = var * i ;

N.B.: Il C effettua una conversione implicita sul tipo degli operandi :se una variabile è di tipo intero e l’espressione produce come risultato un valore reale, viene troncata e portata al reale.

Esempio:

int num, oper2=10;float oper1; oper1= 3/2;num = oper1* oper2;Num=+=1;

3.3 Assegnazione

Page 14: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

3. OPERAZIONI

3.4 Operazioni di incremento e di decremento

Gli operatori di incremento e decremento “++” e “ --" sono operatori unari che vengono utilizzati per incrementare o decrementare di 1 un’espressione.

Essi possono essere applicati sia prima che dopo la variabile da modificare, con effetto diverso. Esempio: ++a; equivale a a = a + 1;--a; equivale a a = a - 1;a++; equivale a x= a++; x = a; a = a + 1; a--; equivale a x= a--; x = a; a = a - 1;

In situazioni semplici scrivere “a++” o “++a” è indifferente. Le cose cambiano quando il risultato di tale operazione è utilizzato all'interno di un'altra espressione. Esempio: 

int a, b=0, c=0; a = b++ + c++; /* avremo a = 0 b = 1 c = 1 */a = ++b + ++c; /* avremo a = 2 b = 1 c = 1 */

Page 15: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

5. OPERAZIONI DI INGRESSO/USCITA

Il C++ prevede numerose funzioni per gestire l’input/output da tastiera, su video, su file, etc. Le funzioni più comunemente usate, per l’input/output, sono “cin” e “cout” appartenenti alla libreria standard di I\O e richiamata attraverso la direttiva #include <iostream.h> .

Page 16: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

5. OPERAZIONI DI INGRESSO/USCITA

5.2 L’Input

La funzione per l’input è “cin”, essa legge i dati digitati da tastiera e li memorizza nella variabile indicata

La sintassi di cin è la seguente: cin<<nomevariabile;

Esempio: int a, b, c;double x;  char val; cin<< a; /*viene letto un numero e memorizzato nella variabile a*/cin<< b<<c; /*vengono letti due numeri e memorizzati nelle variabili b e c*/

cin<< val; /*viene letto un carattere e memorizzato nella variabile val*/

Page 17: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

5. OPERAZIONI DI INGRESSO/USCITA

5.1 L’Output

La sintassi della funzione usata per l’output, “cout”, è:

cout<< variabile o stringa;

Esempio:

cout<<“Salve”; //stampa a video la parola Salve

cout<<a; //stampa a video il contenuto della variabile a

cout<<“il valore di b = “<<b; /*stampa a video la frase il valore di

b = e a seguire il contenuto della variabile b*/

cout<<c<<endl; // stampa il contenuto della variabile c e poi va a capo

Page 18: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

Si è già introdotta l’operazione di assegnazione, di seguito vengono elencate e poi spiegate atre istruzioni possibili in C++:

1.      istruzione composta;2.      istruzione vuota;3.      istruzione condizionale;4.      i cicli;

Page 19: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

Tutte le istruzioni terminano con il carattere punto e virgola “ ;” .

L'istruzione composta è una sequenza di istruzioni racchiusa tra due parentesi graffe.

4.1 Istruzione composta

Esempio:

{    a = 1;    b = 2;    {       c = 3;       d = 4;    } }

L'istruzione vuota è rappresentata da un singolo “;”.

La si utilizza quando la sintassi richiede un'istruzione ma non è richiesta alcuna azione (specie nel ciclo for).

4.2 Istruzione vuota

Page 20: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

4.3 Istruzione condizionale SELEZIONE a una via

1.      L’istruzione condizionale “if “ ha la forma :

   if ( espressione ){   

istruzione1;istruzione2;

}istruzione3;

dove l’espressione di condizione tra parentesi permette, se è vera (ovvero contiene un valore diverso da 0), di eseguire le istruzioni tra parentesi graffe, altrimenti si eseguono le istruzioni subito dopo l’if (istruzione3).

Se le istruzioni da eseguire nel caso di condizione VERA fosse stata solo una non erano necessarie le parentesi graffe.

Page 21: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

4.3 Istruzione condizionale SELEZIONE BINARIA

2.    L’istruzione condizionale “if – else” ha la forma:

if ( espressione ) {

istruzione1;istruzione2;

}else{  

istruzione3; }

dove l’espressione di condizione tra parentesi permette, se è vera (ovvero contiene un valore diverso da 0), di eseguire le istruzioni 1 e 2, altrimenti si esegue l’istruzione3.

Se le istruzioni da eseguire nel caso di condizione VERA o FALSA sono solo una non sono necessarie le parentesi graffe.

Page 22: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

4.3 Istruzione condizionale NIDIFICATA

2.    L’istruzione condizionale “if – else” NIDIFICATA ha la forma:

if ( condizione1) {

if (condizione2)istruzione1;

elseistruzione2;

}else{  

if (condizione3)istruzione3;

elseistruzione4;

}

Le istruzioni condizionali possono essere annidate una nell’altra, o possono essere scritte una dietro l’altra. ma questo potrebbe potere a situazioni di ambiguità.

Page 23: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

4.3 Istruzione condizionale a CASCATA

2.    L’istruzione condizionale “if ” A CASCATA ha la forma:

if ( condizione1) {

istruzione1; }

if ( condizione2) {

istruzione2; }

if ( condizione3) {

istruzione3; }

Le istruzioni condizionali possono essere annidate una nell’altra, o possono essere scritte una dietro l’altra. ma questo potrebbe potere a situazioni di ambiguità.

Page 24: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

Un’altra istruzione utilizzata per rendere più eleganti e strutturati i programmi, è quella introdotta dalla parola chiave switch , per la selezione multipla. Con tale istruzione è possibile testare un’espressione, che può avere diversi valori di tipo intero o carattere, e per ogni caso individuare una serie di azioni da effettuare.

4.3 Istruzione condizionale SELEZIONE MULTIPLA

3.    l’istruzione condizionale “switch” ha la forma:    switch ( espressione ) { case costante_1 : istruzione_1;break;case costante_2 : istruzione_2 ;break;case ...  : ...... break;case costante_n : istruzione_n; break;default : istruzioni ; break;}

Page 25: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

4.3 Istruzione condizionale

Esempi:

1. Assegnare a min il valore minore tra a e b. if ( a< = b )

min = a; else

min = b;

2. Determinare il maggiore tra tre numeri.    if (a > b )

max = a;    else

max = b;    if( max < c )

max=c;

\*min = a < b ? a : b ; *\

Page 26: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

4.3 Istruzione condizionale

Esempi:

3. Dati due numeri max e min ordinarli. if( max < min ) {

tmp = max; max = min;min = tmp ;

}

Page 27: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

Ci sono tre istruzioni di ciclo: 1.      istruzione while (controllo in testa);2.      istruzione do- while (controllo in coda);3.      istruzione for (ciclo enumerativo).

4.4 Istruzioni di ciclo

1. L’istruzione while permette di ripetere un blocco per tutto il tempo che la condizione, posta tra parentesi, risulta vera.

Esempio:int i = 0;

while ( i < 20)

{

cout<<“Il valore di i è :”<<i<<endl;

i= i+1;

}

\*stampa i numeri da 0…19*\

Page 28: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

4.4 Istruzioni di ciclo

2. L’istruzione do-while valuta l’espressione di condizione solo dopo avere eseguito il corpo del ciclo.

int i = 0; do{   cout<< “Il valore di i è “<<i<<endl; i= i+1;   } while( i < 20 );

\*stampa i numeri da 0…19*\

Esempio:

N.B.: CONTRARIAMENTE ALLA TEORIA SI CICLA PER VERO E SI ESCE DAL CICLO PER FALSO!

Page 29: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

4.4 Istruzioni di ciclo do-while

int b,h,a;char risp; do{    cout<< “Inserisci base e altezza rettangolo”; cin>>b;

cin>>h;a=b*h;

cout<<“il valore dell’area è “<< a<<endl;cout<<“altro calcolo? (S o N) “;cin>>risp;

 } while( risp ==‘s’);

\*Riesegue il programma finchè l’utente non risponde N alla domanda*\

Esempio:

N.B.: CONTRARIAMENTE ALLA TEORIA SI CICLA PER VERO E SI ESCE DAL CICLO PER FALSO!

Page 30: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

1. L’istruzione for permette di ripeter un blocco per un numero di volte specificato.

4.4 Istruzioni di ciclo

Essa ha la forma :

for (valore di inizializzazione;condizione;valore di incremento ) {   istruzione; }

Questo ciclo è equivalente al seguente:

valore di inizializzazione; while (condizione ) {     istruzioni;     valore di incremento; }

Page 31: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

4. ISTRUZIONI

4.4 Istruzioni di ciclo

Esempi:

 for (i=0; i<20; i++) cout<<“Il valore di i è “<<i;

Se il corpo del FOR ha più di una istruzione allora richiede le parentesi graffe

In un ciclo for tutte e tre le espressioni possono anche essere l'istruzione vuota:

for( ; ; ) cout<<“questa riga viene ripetuta indefinitamente”;

Page 32: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

6. ESEMPI DI SEMPLICI PROGRAMMI

Problema 1: Calcolare l'area di un rettangolo. 

  output: area.

Input: base,altezza.

limiti: (base>0) && (altezza>0)

pseudo codice:

Inizio

leggi (base, altezza)

se ( (base > 0) && (altezza > 0) allora

area = base*altezza

scrivi (area)

altrimenti

scrivi (“Errore nei dati”)

fine 

Page 33: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

#include <iostream.h>

main()

{

int base, altezza, area;

cout<<“Inserisci base e altezza”;

cin>>b>>h;

if (base > 0) && (altezza > 0)

{

area = base * altezza;

cout<<“Area = “<<area<<endl;

}

else

cout<<“ERRORE nei dati”;

system(“pause”);

}

La codifica in C++ dell’algoritmo :

Page 34: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

 obiettivo: calcolare l'area dei due quadrati.output: area_inscritta, area_circoscritta.Input: raggio.limiti: (raggio>0).

Pseudo codice Inizioleggi (raggio)se(raggio>0)

area_circoscritta = 4 * raggio * raggioarea_inscritta = 2 * raggio * raggio

scrivi (area_circoscritta)scrivi (area_inscritta)

altrimentiscrivi ("errore“)

fine

Problema 2: Calcolare l'area del quadrato inscritto e circoscritto in una circonferenza.

Page 35: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

 #include <iostream.h> main(){

int raggio, area_inscritta, area circoscritta;cout<<“inserisci raggio “;cin>>raggio;if (raggio>0){

area_circoscritta = 4*raggio*raggio;area_inscritta = 2*raggio*raggio; cout<<area_circoscritta<<“ “<<area_inscritta<<endl;

}else

cout<<“ERRORE";system(“pause”);

}

La codifica in C++ dell’algoritmo :

Page 36: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

output: numero di pari, numero di dispari;

input: nessuno ;

algoritmo: Inizioc=0mentre c<=100 esegui

scrivi (c)c=c+2

finemetreFine

Problema 3: Stampare i numeri pari da 0 a 100.

Page 37: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

La codifica in C++ dell’algoritmo :

#include <iostream.h> main() {

int c;while(c<=100) {

cout<< c<<endl;c+=2;

} system(“pause”);

}

Page 38: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

output: numero di pari, numero di dispari;

input: Il numero N e gli N numeri

algoritmo:

leggi il numero n dei numeri;ripeti n vote

leggi il prossimo numero;se è pari, aggiorna il numero dei pari;altrimenti aggiorna il numero dei dispari;

stampa il risultato.  

Problema 3: Contare tra N numeri quanti sono i numeri pari e quanti sono I dispari

Page 39: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

PseudocodificaInizioleggi(N)c=1;mentre c<=N esegui

leggi (numero)se(numero MODULO 2==0) allora

pari = pari+1altrimenti

dispari = dispari +1finesec=c+1

FinementreScrivi(pari)Scrivi(dispari)Fine  

Problema 3: Contare tra N numeri quanti sono i numeri pari e quanti sono I dispari

Page 40: Introduzione al linguaggio C++ Prof. Giuseppe Di Capua

La codifica in C ++dell’algoritmo :

#include <iostream.h> main() {

int n,i, numero, pari=0, dispari=0;cout<<"Inserisci numero dei valori da esaminare: "; cin>>n; for (i=1; i<=n; i++) {

cout<<"Inserisci un valore “;cin>>numero; if ( numero % 2 == 0)

pari++; else

dispari++; } cout<<"Pari = “<< pari<<endl;cout<<“Dispari = “<< dispari<<endl;system(“pause”);

}