Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012"

Transcript

1 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012

2 Sommario Introduzione alla sintassi C++ Array a una dimensione Array a due dimensioni Array multidimensionali Funzioni standard della libreria <cmath> Funzioni definite dal programmatore Esercizi Parametri delle funzioni 19/04/2012 2

3 Array Un array è un insieme di variabili omogenee a cui è associato un unico nome. Un array è un insieme di variabili, caratterizzate dall appartenere tutte allo stesso tipo ( tipo dell array), che occupano locazioni consecutive di memoria. Ogni variabile di tale insieme è detta elemento dell array ed è identificata dalla posizione che occupa rispetto a tutta la struttura (indice dell array). Il numero degli elementi dell array è predefinito e invariabile, l indice può assumere i valori fra 0 e il numero degli elementi 1. 3

4 Array a una dimensione <tipo> <nome>[<dimensione>]; <tipo> = tipo di dati di ogni elemento dell'array (int, float...) <nome> = identificatore che diamo all'array <dimensione> = numero degli elementi che compongono l'array. Esempio: * Dichiarazione di un array composto da 4 interi * int vett[4]; 4

5 Array a una dimensione Come si vede la dichiarazione di un array è analoga a quella di una variabile, ad eccezione del fatto che il nome dell'array è seguito dal numero di elementi che lo compongono, racchiuso tra parentesi quadre. Per accedere a ciascuno di essi occorre fare riferimento al nome dell'array seguito da un indice tra parentesi quadre, che ne indica la posizione. Si noti che se l'array ha dimensione 4, ovvero contiene 4 elementi, gli indici sono 0,1,2,3. Infatti gli indici sono numeri interi non negativi, e vanno da 0 a n-1, dove n è il numero di elementi. 5

6 Array a una dimensione vett[0]=3; * Assegno al primo elemento il valore 3 * vett[1]=6; * Assegno al secondo elemento il valore 6 * vett[2]=7; * Assegno al terzo elemento il valore 2 * vett[3]=21; * Assegno al quarto elemento il valore 9 * Abbiamo definito un array di 4 elementi e gli abbiamo assegnato dei valori. Dato che questi 4 elementi sono variabili di tipo int, gli elementi che abbiamo inserito sono dei numeri interi. 6

7 Array a una dimensione Tutti gli elementi dell array hanno lo stesso nome C c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] c[9] c[10] c[11] L indice rappresenta la posizione che l elemento occupa nell array 7

8 #include <iostream> using namespace std; int main(){ Esempio {int vett[4]={10,20,30,40}; /* Array con tutti gli elementi già inizializzati */ int a; /* Con questo ciclo stampo l'array vett con tutti gli elementi già inizializzati */ for (a=0; a<4; a++) cout<<"\n"<< vett[a];; /* Con questo ciclo inizializziamo l'array vett con i valori 0,1,2,3 */ for (a=0; a<4; a++) vett[a]=a; /* Con questo ciclo stampo l'array vett*/ for (a=0; a<4; a++) cout<<"\n"<< vett[a];; return 0;} }

9 Output prodotto dal programma:

10 Esercizio 1 Scriver un programma che dopo aver letto da tastiera e memorizzato in un array n (valore costante) numeri calcola e stampa la loro media. versione1 : programma che utilizza for versione2 : programma che utilizza while versione3 : programma che utilizza do..while 19/04/

11 #include <iostream> using namespace std; int main() { const int n=3; int num[n]; int cont; float media=0.0; /* Con questo ciclo leggiamo gli n valori da tastiera*/ for (cont=0; cont<n; cont++) { cout<<"\ninserisci num["<<cont<<"] = "; cin>>num[cont];} /* Scrivo nell'array */ for (cont=0; cont<n; cont++) { cout<<"\n num["<<cont<<"] = "<< num[cont]; } /* Con questo ciclo calcolo la somma tra gli n numeri */ for (cont=0; cont<n; cont++) media=media+num[cont]; /* si poteva scrivere media += num[cont]*/ media /= (float) n; /* Ossia media=media/n, in forma abbreviata */ cout<<"\nla media tra i numeri introdotti e' "<<media; return 0; }

12 #include <iostream> using namespace std; int main() { const int n=3; int num[n]; int cont; float media=0.0; /* Con questo ciclo leggiamo gli n valori da tastiera*/ for (cont=0; cont<n; cont++) { cout<<"\ninserisci num["<<cont<<"] = "; cin>>num[cont];} /* Scrivo nell'array */ for (cont=0; cont<n; cont++) { cout<<"\n num["<<cont<<"] = "<< num[cont]; } /* Con questo ciclo calcolo la somma tra gli n numeri */ for (cont=0; cont<n; cont++) media=media+num[cont]; /* si poteva scrivere media += num[cont]*/ media /= (float) n; /* Ossia media=media/n, in forma abbreviata */ cout<<"\nla media tra i numeri introdotti e' "<<media; return 0; }

13 #include <iostream> using namespace std; int main() { const int n=3; int num[n]; int cont; float media=0.0; /* Con questo ciclo leggiamo gli n valori da tastiera*/ for (cont=0; cont<n; cont++) { cout<<"\ninserisci num["<<cont<<"] = "; cin>>num[cont];} /* Scrivo nell'array */ for (cont=0; cont<n; cont++) { cout<<"\n num["<<cont<<"] = "<< num[cont]; } Senza gli array avremmo dovuto definire n variabili distinte!!!! /* Con questo ciclo calcolo la somma tra gli n numeri */ for (cont=0; cont<n; cont++) media=media+num[cont]; /* si poteva scrivere media += num[cont]*/ media /= (float) n; /* Ossia media=media/n, in forma abbreviata */ cout<<"\nla media tra i numeri introdotti e' "<<media; return 0; }

14 Esercizio 2 Scriver un programma che dopo aver letto un intero positivo n da tastiera legge e memorizza gli n numeri inseriti da tastiera e stampa la loro media. versione1: programma che utilizza for versione2 : programma che utilizza while versione3 : programma che utilizza do..while 19/04/

15 #include <iostream> using namespace std; int main() { const int k=100; int n=0; do { cout<<"inserire il valore di n \n"; cin>>n; } while (n>k&&n<0); int num[n]; int cont; float media=0.0; /* Con questo ciclo leggiamo i 10 valori da tastiera*/ for (cont=0; cont<n; cont++) { cout<<"\ninserisci num["<<cont<<"] = "; cin>>num[cont];} /* Scrivo nell'array */ for (cont=0; cont<n; cont++) { cout<<"\n num["<<cont<<"] = "<< num[cont]; } /* Con questo ciclo calcolo la somma tra gli n numeri */ for (cont=0; cont<n; cont++) media=media+num[cont]; /* si poteva scrivere media += num[cont]*/ media /= (float) n; /* Ossia media=media/n, in forma abbreviata */ cout<<"\nla media tra i numeri introdotti e' "<<media; return 0; } 19/04/

16 #include <iostream> using namespace std; int main() { const int k=100; int n=0; do { cout<<"inserire il valore di n \n"; cin>>n; } while (n>k&&n<0); int num[n]; int cont; float media=0.0; /* Con questo ciclo leggiamo i 10 valori da tastiera*/ for (cont=0; cont<n; cont++) { cout<<"\ninserisci num["<<cont<<"] = "; cin>>num[cont];} /* Scrivo nell'array */ for (cont=0; cont<n; cont++) { cout<<"\n num["<<cont<<"] = "<< num[cont]; } /* Con questo ciclo calcolo la somma tra gli n numeri */ for (cont=0; cont<n; cont++) media=media+num[cont]; /* si poteva scrivere media += num[cont]*/ media Senza /= (float) gli n; /* array Ossia media=media/n, non sarebbe in forma stato abbreviata possibile */ definire n cout<<"\nla variabili media distinte!!!! tra i numeri introdotti e' "<<media; return 0; } 19/04/

17 Array a due dimensioni Un array a due dimensioni si definisce: <tipo> <nome>[dimensione1] [dimensione2]; e si può considerare come una matrice righe-colonne, o come un array di array monodimensionali. Un array bidimensionale è da intendersi come un array di array. Pertanto nel caso data la definizione: int a[3][4]; a è da intendersi come un array di 3 elementi, ciascuno dei quali è un array di 4 elementi di tipo int.

18 Array a due dimensioni Matrice: righe,colonne Riga 0 Riga 1 Riga 2 Colonna 0 Colonna 1 Colonna 2 Colonna 3 a[ 0 ][ 0 ] a[ 1 ][ 0 ] a[ 2 ][ 0 ] a[ 0 ][ 1 ] a[ 1 ][ 1 ] a[ 2 ][ 1 ] a[ 0 ][ 2 ] a[ 1 ][ 2 ] a[ 2 ][ 2 ] a[ 0 ][ 3 ] a[ 1 ][ 3 ] a[ 2 ][ 3 ] indice colonna nome Array indice riga In memoria gli elementi dell'array a[3][4] sono memorizzati per righe consecutive, ovvero nel seguente ordine: a[0][0], a[0][1], a[0][2], a[0][3],a[1][0], a[1][1], a[1][2],. 18

19 Array a due dimensioni Per inizializzare un array bidimensionale, bisogna innestare tanti gruppi di parentesi graffe quante sono le singole porzioni monodimensionali dell'array, ed elencare gli elementi nello stesso ordine in cui saranno memorizzati. Esempio int a[3][4] = { {8, -5,6,8}, {4, 0,-2,1}, {-2, 6,5,-3} }; 19

20 Array a due dimensioni Initializzazione int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } }; Inizializzazione int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } };

21 Esercizio 3 Scriver un programma che usa un array bidimensionale nxn (n=13) per creare la Tavola Pitagorica : versione1 : programma che utilizza for versione2 : programma che utilizza while versione3 : programma che utilizza do..while 19/04/

22 Esercizio 3 19/04/

23 #include <iostream> using namespace std; int main() {const int n=13; int i,j; /* indici per righe e colonne dell'array */ int tab[n][n]; /* Tabella di n*n elementi */ /* Con questi 2 cicli nidificati creiamo la Tavola Pitagorica, ossia diamo come valore a ogni elemento dell'array il prodotto del suo (indice di riga)*(indice di colonna)*/ /* saltiamo gli indici 0,che non interessano. */ for (i=1; i<n; i++) { for (j=1; j<n; j++) { tab[i][j]=i*j; } } /* stampiamo la tabellina */ for (i=1; i<n; i++) { for (j=1; j<n; j++) return 0; } { cout<<tab[i][j]<<" "; } cout<<"\n"; /* vado a capo ad ogni incremento di i */ }

24 #include <iostream> using namespace std; int main() {const int n=13; int i,j; /* indici per righe e colonne dell'array */ int tab[n][n]; /* Tabella di n*n elementi */ /* Con questi 2 cicli nidificati creiamo la Tavola Pitagorica, ossia diamo come valore a ogni elemento dell'array il prodotto del suo (indice di riga)*(indice di colonna)*/ /* saltiamo gli indici 0,che non interessano. */ for (i=1; i<n; i++) { for (j=1; j<n; j++) { tab[i][j]=i*j; } } /* stampiamo la tabellina */ for (i=1; i<n; i++) { for (j=1; j<n; j++) return 0; } { cout<<tab[i][j]<<" "; } cout<<"\n"; /* vado a capo ad ogni incremento di i */ }

25 Si noti che in questo modo la tabella non viene perfettamente allineata in quanto i numeri non richiedono sempre gli stessi caratteri. Per allineare la tabella, potremmo decidere di stampare sempre e solo 4 caratteri per ogni numero. Nel programma è necessario inludere e per la stampa usare l istruzione #include <iomanip>

26 #include <iostream> #include <iomanip> using namespace std; int main() {const int n=13; int i,j; /* indici per righe e colonne dell'array */ int tab[n][n]; /* Tabella di n*n elementi */ /* Con questi 2 cicli nidificati creiamo la Tavola Pitagorica, ossia diamo come valore a ogni elemento dell'array il prodotto del suo (indice di riga)*(indice di colonna)*/ /* saltiamo gli indici 0,che non interessano. */ for (i=1; i<n; i++) { for (j=1; j<n; j++) { tab[i][j]=i*j; } } /* stampiamo la tabellina */ for (i=1; i<n; i++) { for (j=1; j<n; j++) return 0; } { cout<<setw(4)<<tab[i][j]<<" "; } cout<<"\n"; /* vado a capo ad ogni incremento di i */ }

27 #include <iostream> #include <iomanip> using namespace std; int main() {const int n=13; int i,j; /* indici per righe e colonne dell'array */ int tab[n][n]; /* Tabella di n*n elementi */ /* Con questi 2 cicli nidificati creiamo la Tavola Pitagorica, ossia diamo come valore a ogni elemento dell'array il prodotto del suo (indice di riga)*(indice di colonna)*/ /* saltiamo gli indici 0,che non interessano. */ for (i=1; i<n; i++) { for (j=1; j<n; j++) { tab[i][j]=i*j; } } /* stampiamo la tabellina */ for (i=1; i<n; i++) { for (j=1; j<n; j++) return 0; } { cout<<setw(4)<<tab[i][j]<<" "; } cout<<"\n"; /* vado a capo ad ogni incremento di i */ }

28 Array multidimensionali ( a n dimensioni) In C++ possono essere definiti array multidimensionali ovvero a n dimensioni (dove n può assumere un valore qualsiasi ). Un array multidimensionale è da intendersi come un array di array. Pertanto nel caso di n=3 (array tridimensionale) data la definizione: int tabella[3][2][3]= {{{01, 02, 03}, {04, 05,06}}, {{11, 12,13},{14,15,16 }}, {{21, 22,23},{24,25,26 }}}; tabella è da intendersi come un array di 3 elementi (es. pagine), ciascuno dei quali è un array di 2 elementi (righe), ciascuno dei quali è un array di 3 elementi (colonne) di tipo int. Per inizializzare un array multidimensionale, bisogna innestare tanti gruppi di parentesi graffe quante sono le singole porzioni monodimensionali dell'array, ed elencare gli elementi nello stesso ordine in cui saranno memorizzati.

29 Esempio Array a tre dimensioni indice pagina indice riga indice colonna nome Array Colonna 0 Colonna 1 Colonna 2 Riga 0 Riga 1 a [0][0][0] a [0][1][0] a [0][0][1] a [0][1][1] a [0][0][2] a [0][1][2] pagina 1 Riga 0 Riga 1 Colonna 0 Colonna 1 Colonna 2 a [1][0][0] a [1][0][1] a [1][0][2] a [1][1][0] a [1][1][1] a [1][1][2] pagina 2 Riga 0 Riga 1 Colonna 0 Colonna 1 Colonna 2 a [1][0][0] a [1][0][1] a [1][0][2] a [1][1][0] a [1][1][1] a [1][1][2] int a[3][2][3]= {{{01, 02, 03}, {04, 05,06}}, {{11, 12,13},{14,15,16 }}, {{21, 22,23},{24,25,26 }}}; 29

30 Esempio Array a tre dimensioni indice pagina indice riga indice #include colonna <iostream> #include <iomanip> nome Array Colonna 0 Colonna 1 usingcolonna namespace 2 std; Riga 0 a [0][0][0] a [0][0][1] int main() a [0][0][2] Riga 1 a [0][1][0] a [0][1][1]{ a [0][1][2] const int n=3; pagina 1 int i,j,k; /* indici per righe e colonne dell'array */ Colonna 0 Colonna 1 int tabella[3][2][3]={{{01, Colonna 2 02, 03}, {04, 05,06}}, {{11, Riga 0 a [1][0][0] a [1][0][1] 12,13},{14,15,16 a [1][0][2]}}, {{21, 22,23},{24,25,26 }}}; Riga 1 a [1][1][0] a [1][1][1] a [1][1][2] int x=3,y=2,z=3, valore=0; for (i = 0; i < x; i++) pagina 2 {for (j = 0; j <y; j++) { Colonna 0 Colonna 1 Colonna 2 {for (k = 0; k < z; k++) Riga 0 a [1][0][0] a [1][0][1] a [1][0][2] {cout<<tabella[i][j][k]<<" ";} Riga 1 a [1][1][0] a [1][1][1] cout<<" a [1][1][2] \n"; } } cout<<" \n"; }; int a[3][2][3]= {{{01, 02, 03}, {04, 05,06}}, {{11, 12,13},{14,15,16 }}, {{21, 22,23},{24,25,26 }}}; return 0; } 30

31 Esempio Array a tre dimensioni indice pagina indice riga indice #include colonna <iostream> #include <iomanip> nome Array Colonna 0 Colonna 1 usingcolonna namespace 2 std; Riga 0 a [0][0][0] a [0][0][1] int main() a [0][0][2] Riga 1 a [0][1][0] a [0][1][1]{ a [0][1][2] const int n=3; pagina 1 int i,j,k; /* indici per righe e colonne dell'array */ Colonna 0 Colonna 1 int tabella[3][2][3]={{{01, Colonna 2 02, 03}, {04, 05,06}}, {{11, Riga 0 a [1][0][0] a [1][0][1] 12,13},{14,15,16 a [1][0][2]}}, {{21, 22,23},{24,25,26 }}}; Riga 1 a [1][1][0] a [1][1][1] a [1][1][2] int x=3,y=2,z=3, valore=0; for (i = 0; i < x; i++) pagina 2 {for (j = 0; j <y; j++) { Colonna 0 Colonna 1 Colonna 2 {for (k = 0; k < z; k++) Riga 0 a [1][0][0] a [1][0][1] a [1][0][2] {cout<<tabella[i][j][k]<<" ";} Riga 1 a [1][1][0] a [1][1][1] cout<<" a [1][1][2] \n"; } } cout<<" \n"; }; int a[3][2][3]= {{{01, 02, 03}, {04, 05,06}}, {{11, 12,13},{14,15,16 }}, {{21, 22,23},{24,25,26 }}}; return 0; } 31

32 Esercizio 1 Scrivere un programma che, dato un numero N (N>0) inserito da tastiera, memorizzi in un array monodimensionale i successivi N numeri dispari maggiori di N. Si stampi l array utilizzando per i valori 5 caratteri. Es. N= 3 Devo memorizzare e stampare /04/

33 Funzioni La funzione è l'unità elaborativa fondamentale dei programmi C++, infatti un programma C++ è un insieme di funzioni indipendenti e di uguale livello gerarchico (nel senso che non vi sono funzioni più importanti di altre o dotate di diritti di precedenza) eccetto la funzione main che deve obbligatoriamente esistere. L'esecuzione di un programma inizia con la prima istruzione della funzione main; questa può chiamare altre funzioni, che a loro volta ne possono chiamare altre ancora. L'unico limite è rappresentato dalla quantità di memoria disponibile. 19/04/

34 Funzioni In generale, è utile suddividere il programma in parti bene definite, e codificare ciascuna di esse mediante una opportuna funzione. Ciò è particolarmente utile soprattutto per quelle parti di programma che devono essere ripetute più volte su dati differenti. In questo modo quando occorre svolgere nuovamente quel dato compito basta richiamare la funzione. La ripetitività non è però l'unico criterio che conduce ad individuare porzioni di codice atte ad essere racchiuse in funzioni, infatti è importante tradurre in funzioni compiti logicamente indipendenti nel programma anche se nel corso dell'esecuzione queste vengono chiamate una volta sola. 34

35 Funzioni Ogni compilatore C++ viene fornito con un gran numero di funzioni già predisposte, che costituiscono la cosiddetta Run-Time Library. Affinché queste possano essere utilizzate nell'ambito del programma è necessario includere il file corrispondente. Per utilizzare le funzioni matematiche C++ predefinite occorre includere il file <cmath>. #include <cmath> Le Funzioni standard si aspettano come argomento un tipo double e restituiscono un double; (se gli passiamo un float o int viene fatto il casting automatico) sqrt(), pow(), abs(), ceil(), floor(),sin(), cos(), tan(), log(), sinh(), cosh(),... 35

36 Uso della libreria <cmath> #include <iostream> #include <cmath> using namespace std; int main() { double m, n; do { cout << "\nintroduci un numero (0 per finire): "; cin >> m ; n= sqrt(m); cout << "La radice quadrata di " << m << " e " << n; } while (m ); return 0; } 36

37 37

38 Uso della libreria <cmath> #include <iostream> #include <cmath> using namespace std; int main() { double m, n; do { cout << "\nintroduci due numeri (0 0 per finire): "; cin >> m >> n; if (m n) cout << "Risultato: " << m << " elevato a " << n << " e' " << pow(m,n) << endl; } while (m n); return 0; } 38

39 Uso della libreria <cmath> #include <iostream> #include <cmath> using namespace std; int main() { double m, n; do { cout << "\nintroduci due numeri (0 0 per finire): "; cin >> m >> n; if (m n) cout << "Risultato: " << m << " elevato a " << n << " e' " << pow(m,n) << endl; } while (m n); return 0; } 39

40 Funzioni Il C++ permette non solo di utilizzare le funzioni predefinite includendo le relative librerie ma anche di crearne nuove. 40

41 Formato di una funzione <TipoRitorno> <Ident.Funzione>(<Lista tipo e nome argomenti>) { <corpo della funzione>; } 41

42 Formato di una funzione <TipoRitorno> <Ident.Funzione>(<Lista tipo e nome argomenti>) { <corpo della funzione>; } Esempio int somma(int x,int y) /* Dichiarazione della funzione { return x+y; } x,y parametri formali*/ 42

43 Formato di una funzione <TipoRitorno> <Ident.Funzione>(<Lista tipo e nome argomenti>) { <corpo della funzione>; } Esempio int somma(int x,int y) /* Dichiarazione della funzione { return x+y; } x,y parametri formali*/ 43

44 int somma(int x,int y) /* Dichiarazione della funzione { return x+y; } x,y parametri formali*/ int somma(int x, y) { return x+y ; } ERRORE 44

45 int somma(int x,int y) /* Dichiarazione della funzione { return x+y; } x,y parametri formali*/ <Tipo Ritorno> indica il tipo di valore (int, float, ecc.) che la funzione restituisce attraverso l'istruzione return. Se la funzione non restituisce nessun valore deve essere dichiarata di tipo void. <Ident.Funzione> indica l'identificatore della funzione ovvero il nome che scegliamo per la funzione. <Lista Argomenti> La lista degli identificatori di variabili separati da virgola, detti parametri formali, preceduti dalla dichiarazione di tipo (int, float...) per indicare gli argomenti di ENTRATA della funzione, ovvero i dati che gli vengono passati alla chiamata. Se la funzione non richiede argomenti in input, questi possono essere omessi oppure dichiarare l input di tipo void. 45

46 int somma(int x,int y) /* Dichiarazione della funzione { return x+y ; } x,y parametri formali*/ <Tipo Ritorno> indica il tipo di valore (int, float, ecc.) che la funzione restituisce attraverso l'istruzione return. Se la funzione non restituisce nessun valore deve essere dichiarata di tipo void. <Ident.Funzione> indica l'identificatore della funzione ovvero il nome che scegliamo per la funzione. <Lista Argomenti> La lista degli identificatori di variabili separati da virgola, detti parametri formali, preceduti dalla dichiarazione di tipo (int, float...) per indicare gli argomenti di ENTRATA della funzione, ovvero i dati che gli vengono passati alla chiamata. Se la funzione non richiede argomenti in input, questi possono essere omessi oppure dichiarare l input di tipo void. 46

47 int somma(int x,int y) /* Dichiarazione della funzione { return x+y; } x,y parametri formali*/ <Tipo Ritorno> indica il tipo di valore (int, float, ecc.) che la funzione restituisce attraverso l'istruzione return. Se la funzione non restituisce nessun valore deve essere dichiarata di tipo void. <Ident.Funzione> indica l'identificatore della funzione ovvero il nome che scegliamo per la funzione. <Lista Argomenti> La lista degli identificatori di variabili separati da virgola, detti parametri formali, preceduti dalla dichiarazione di tipo (int, float...) per indicare gli argomenti di ENTRATA della funzione, ovvero i dati che gli vengono passati alla chiamata. Se la funzione non richiede argomenti in input, questi possono essere omessi oppure dichiarare l input di tipo void. 47

48 int somma(int x,int y) /* Dichiarazione della funzione { return x+y; } x,y parametri formali*/ <Tipo Ritorno> indica il tipo di valore (int, float, ecc.) che la funzione restituisce attraverso l'istruzione return. Se la funzione non restituisce nessun valore deve essere dichiarata di tipo void. <Ident.Funzione> indica l'identificatore della funzione ovvero il nome che scegliamo per la funzione. <Lista Argomenti> La lista degli identificatori di variabili separati da virgola, detti parametri formali, preceduti dalla dichiarazione di tipo (int, float...) per indicare gli argomenti di ENTRATA della funzione, ovvero i dati che gli vengono passati alla chiamata. Se la funzione non richiede argomenti in input, questi possono essere omessi oppure dichiarare l input di tipo void. 48

49 int somma(int x,int y) /* Dichiarazione della funzione { return x+y; } x,y parametri formali*/ <corpo della funzione> Il corpo di una funzione (parte di codice tra i delimitatori { } ) è una normale sequenza di dichiarazioni di variabili (LOCALI), di istruzioni, di chiamate a funzione che definiscono le operazioni che la funzione esegue quando viene invocata, l'unica cosa che esso non può contenere è un'altra definizione di funzione. Questo perché tutte le funzioni hanno pari livello gerarchico e quindi non possono essere nidificate, cioè definite l'una all'interno di un'altra. L'esecuzione della funzione termina quando si incontra l'ultima istruzione presente nel corpo oppure l'istruzione return: in entrambi i casi l'esecuzione ritorna alla funzione chiamante. All'interno di una funzione si possono mettere anche più return, ciò accade quando si ha la necessità di restituire valori diversi. 49

50 int somma(int x,int y) /* Dichiarazione della funzione { int s; s= x+y; return s; } x,y parametri formali*/ s variabile locale a somma 50

51 Chiamata di una funzione Perché una funzione possa essere chiamata è necessario, che essa sia definita prima della riga di codice che la richiama in alternativa, il compilatore deve conoscerne le regole di chiamata (parametri e valore restituito), in questo caso è necessario inserire prima della funzione main solo il prototipo della funzione stessa e dopo il main la funzione per esteso. Per prototipo di una funzione si indica la prima riga della definizione della funzione senza gli identificatori degli argomenti. 51

52 ESEMPIO #include <iostream> using namespace std; int somma(int x, int y) { return x+y;} int main() { int m, n; do { cout << "Introduci due interi (0 0 per finire): "; cin >> m >> n; cout << "La somma tra " << m << " e " << n << " e' " << somma(m,n) << endl; } while (m n); return 0; }

53 ESEMPIO #include <iostream> using namespace std; Per prototipo di una funzione si intende la int somma(int, int); prima riga della definizione della funzione senza gli identificatori degli argomenti int main() { int m, n; do { cout << "Introduci due interi (0 0 per finire): "; cin >> m >> n; cout << "La somma tra " << m << " e " << n << " e' " << somma(m,n) << endl; } while (m n); return 0; } int somma(int x, int y) { return x+y;}

54

55 #include <iostream> using namespace std; ESEMPIO int massimo(int x, int y) { if (x < y) return y; return x; } int main() { int m, n; do { cout << "Introduci due interi (0 0 per finire): "; cin >> m >> n; if (m n) cout << "Il massimo tra " << m << " e " << n << " e' " << massimo(m,n) << endl; } while (m n); return 0; }

56 #include <iostream> using namespace std; ESEMPIO int massimo(int x, int y) { if (x < y) return y; return x; } int main() { int m, n; do { cout << "Introduci due interi (0 0 per finire): "; cin >> m >> n; if (m n) cout << "Il massimo tra " << m << " e " << n << " e' " << massimo(m,n) << endl; } while (m n); return 0; }

57 #include <iostream> using namespace std; ESEMPIO //int massimo(int, int); int main() { int m, n; do { cout << "Introduci due interi (0 0 per finire): "; cin >> m >> n; if (m n) cout << "Il massimo tra " << m << " e " << n << " e' " << massimo(m,n) << endl; } while (m n); return 0; } int massimo(int x, int y) { if (x < y) return y; return x;

58 ESEMPIO

59 Parametri formali e attuali Le variabili dichiarate nella definizione della funzione (LISTA ARGOMENTI) si chiamano parametri formali, mentre le variabili utilizzate nel chiamante si chiamano parametri attuali. Ad esempio nel programma precedente le variabili m ed n si chiamano parametri formali, mentre le variabili a e b utilizzate nel main per chiamare la funzione massimo si chiamano parametri attuali.. 59

60 60

61 Parametri formali e attuali int somma(int x, int y) { int risultato; / * Definisco una variabile locale */ risultato=x+y; return risultato ; } All'interno di una funzione si possono definire anche delle variabili LOCALI, ossia utilizzabili solo all'interno della funzione. 61

62 Generalmente le funzioni C++ (analogamente alle funzioni matematiche ) richiedono dei parametri in ingresso e producono un risultato in uscita ma a volte, certe funzioni, possono non richiedere dati in ingresso e/o non restituire alcun valore in uscita, ad esempio: una funzione che richiede dati di ingresso ma non restituisce nessun valore in uscita (come parametro) potrebbe essere una funzione dedicata alla stampa su monitor di valori; una funzione che non richiede dati in ingresso e che non restituisce dati in uscita potrebbe essere una funzione che effettua operazioni particolari (es.pulizia dello schermo); una funzione che non richiede dati in ingresso e fornisce dati in uscita potrebbe essere una routine che genera numeri casuali. 62

63 Funzione che non ha parametri né in entrata né in uscita: void acapo(void) { cout<<"\n";/* se una funzione non restituisce alcun valore, si può omettere il return*/ } Funzione che ha solo un parametro in entrata: void stampanumero(int a) { cout<<a; /* se una funzione non restituisce alcun valore, si può omettere il return*/ } Funzione che ha solo un parametro in uscita : int legginumero(void) { int a; /* serve una variabile locale...*/ cin>>a; return(a); }

64 #include <iostream> using namespace std; int somma(int, int); void funz1 (void); int main() { int m, n; do { cout << "Introduci due interi (0 0 per finire): "; cin >> m >> n; if (m n) cout << "La somma tra " << m << " e " << n << " e' " << somma(m,n) << endl; } while (m n); funz1(); return 0; } int somma(int x, int y) { return x+y;} void funz1 (void) { string a="fine Programma"; cout<<a<<"\n"; cout<<"****"<<"\n"; }

65 #include <iostream> using namespace std; int somma(int, int); void funz1 (void); int main() { int m, n; do { cout << "Introduci due interi (0 0 per finire): "; cin >> m >> n; if (m n) cout << "La somma tra " << m << " e " << n << " e' " << somma(m,n) << endl; } while (m n); funz1(); return 0; } int somma(int x, int y) { return x+y;} void funz1 (void) { string a="fine Programma"; cout<<a<<"\n"; cout<<"****"<<"\n"; } La libreria standard del C++ contiene un file in cui è definito un tipo string con il quale l'elaborazione di stringhe risulta molto più agevole (rispetto agli array di caratteri).

66 Si noti il diverso uso tra - le funzioni che restituiscono un valore e - le funzioni di tipo void (che non restituiscono niente). Le prime si chiamano per calcolare un valore ( il valore da loro restituito), pertanto saranno presenti in espressioni, istruzioni di assegnamento o di stampa. Le seconde invece poiché non generano un valore in output corrispondono alla chiamata di sottoprogrammi (in altri linguaggi vengono chiamate procedure o subroutine). 66

67 La chiamata di una funzione che restituisce un valore di ritorno può essere inserita come operando in qualsiasi espressione o come argomento nella chiamata di un altra funzione. Se invece la funzione é di tipo void la chiamata deve assumere la forma di un istruzione a sé stante. 67

68 #include <iostream> #include <cmath> using namespace std; void stampa (int []); int main() { int vettore[4]={10,20,30,40}; cout << "\nstampa array: "; stampa(vettore); return 0; } void stampa (int vett[]){ int a; /* Con questo ciclo stampo l'array vett con tutti gli elementi già inizializzati */ for (int a=0; a<4; a++) cout<<"\n"<< vett[a]; } 68

69 69

70 Osservazioni Se la funzione non è dichiarata void è obbligatorio utilizzare return per uscire dalla funzione (anche quando ciò avvenga al termine del corpo), in quanto essa rappresenta l'unico strumento che consente di restituire un valore alla funzione chiamante. Detto valore, indicato tra parentesi tonde dopo return, può essere una costante, una variabile o, in generale, un'espressione (anche una chiamata a funzione). E' ovvio che il tipo del valore specificato deve essere il medesimo restituito dalla funzione. Se invece la funzione è dichiarata void ( quindi non restituisce alcun valore) l'uso dell'istruzione return è necessario solo se l'uscita deve avvenire (ad esempio in dipendenza del verificarsi di certe condizioni) prima della fine del corpo (tuttavia non è vietato che l'ultima istruzione della funzione sia proprio una return). In tal caso a destra della return non deve essere specificato alcun valore, bensì direttamente il punto e virgola. A differenza di altri linguaggi il C++ permette di definire solo funzioni, quindi non ha procedure o subroutine (per realizzare questo tipo di sottoprogrammi si usano le funzioni di tipo void ). 70

71 In C++ il passaggio di parametri alle funzioni può avvenire: per valore; per indirizzo (tramite puntatori); per riferimento. Passaggio di parametri Per il momento stiamo utilizzando solo il passaggio dei parametri per valore Il passaggio dei parametri per valore, permette alle funzioni di restituire un solo parametro di ritorno, di cui è obbligatorio specificare il tipo, e non permette di modificare i parametri attuali (quelli utilizzati durante la chiamata) in quanto le funzioni lavorano sui parametri formali che rappresentano una copia dei parametri attuali. 71

72 Esercizio Scriver un programma C++ che contiene una funzione apposita (non facente parte della libreria <cmath>) che, prendendo in input come parametri due numeri interi non negativi (a,b), calcoli e restituisca al programma chiamante a^b. 19/04/

uguale livello gerarchico non vi sono funzioni più importanti di altre main main

uguale livello gerarchico non vi sono funzioni più importanti di altre main main FUNZIONI in C/C++ Un programma C++ è un insieme di funzioni indipendenti e di uguale livello gerarchico (nel senso che non vi sono funzioni più importanti di altre o dotate, in qualche modo, di diritti

Dettagli

Gli Array. Dichiarazione di un array

Gli Array. Dichiarazione di un array Gli Array Un array rappresenta una variabile indicizzata (ovvero contenente un indice) che viene utilizzata per contenere più elementi dello stesso tipo. Ogni array ha un nome al quale viene associato

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Elementi di Informatica A. A. 2016/2017

Elementi di Informatica A. A. 2016/2017 Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 2

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Array. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Array. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Array Anno Accademico 2010/2011 Francesco Tortorella Gli array In alcuni casi, l informazione che bisogna elaborare consiste di un aggregazione di valori, piuttosto

Dettagli

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C Es typedef ; typedef char stringa[10]; dichiara che il tipo stringa è un array

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni

Dettagli

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Puntatori a funzioni 1 Funzioni che restituiscono puntatori Il valore di ritorno restituito da una funzione può essere di qualsiasi tipo, compreso il tipo puntatore.

Dettagli

Funzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x)

Funzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x) Funzioni di libreria Richiedono tutte #include x x a x fabs(x) sqrt(x) pow(x,a) x e ln(x) exp(x) log(x) log 10 ( x ) log10(x) sen(x) cos(x) tg(x) arcsen(x) arccos(x) arctg(x) senh(x) cosh(x) tgh(x)

Dettagli

Programmazione modulare

Programmazione modulare Programmiamo in.. Programmazione modulare Un programma complesso si suddivide in più sottoprogrammi o funzioni. Un programma suddiviso in piccoli pezzi, è più semplice da gestire da aggiornare da correggere

Dettagli

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili

Università degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili Anno Accademico Francesco Tortorella Il concetto di visibilità Un programma C++ può assumere una struttura complessa grazie

Dettagli

Problema. Vettori e matrici. Vettori. Vettori

Problema. Vettori e matrici. Vettori. Vettori e matrici Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Problema Si vuole un programma che chieda 10 numeri dalla tastiera e li visualizzi dall ultimo al primo Soluzione attuale (con le

Dettagli

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++ Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Il linguaggio C funzioni e puntatori

Il linguaggio C funzioni e puntatori Salvatore Cuomo Il linguaggio C funzioni e puntatori Lezione n. 8 Parole chiave: Linguaggio C, procedure, funzioni. Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio Email

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario Operatore? Tipo di dato: struct La ricorsione Funzioni ricorsive Esercizi proposti 26/04/2012 2 Operatore? L'operatore? può essere

Dettagli

Informatica! Appunti dal laboratorio 1!

Informatica! Appunti dal laboratorio 1! Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 1 Introduzione G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Introduzione >> Sommario Sommario Panoramica Alcuni Esempi

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C

Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C Ripasso R1 Dati strutturati Aggregazione di dati omogenei: gli array Spesso gli algoritmi lavorano su insiemi di dati omogenei. o l insieme dei valori reali che rappresentano le temperature medie delle

Dettagli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio

Dettagli

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE

INTRODUZIONE ALLA PROGRAMMAZIONE INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Array multidimensionali e stringhe

Array multidimensionali e stringhe Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi

Dettagli

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3) Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di

Dettagli

Parametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi

Parametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi Funzioni Introduzione Operatori & e * Passaggio by reference Passaggio di vettori Esercizio strcpy 2 Passaggio dei parametri Il linguaggio C prevede il passaggio di parametri by value Il chiamato non può

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

1 PANORAMICA SUL LINGUAGGIO C

1 PANORAMICA SUL LINGUAGGIO C 1 PANORAMICA SUL LINGUAGGIO C 1.1 Le origini del linguaggio C Il C fu inventato e implementato da Dennis Ritchie negli anni 70 su una macchina che impiegava il sistema operativo Unix. Il C è il risultato

Dettagli

Vettori e Matrici (array)

Vettori e Matrici (array) Vettori e Matrici (array) Introduction to Fortran 90 Massimiliano Guarrasi, CINECA m.guarrasi@cineca.it Ottobre 2014 Array - Introduzione Gli array sono serie di variabili dello stesso tipo, ciascuna accessibile

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Dettagli

Informatica! Appunti dal laboratorio 1!

Informatica! Appunti dal laboratorio 1! Informatica Appunti dal laboratorio 1 Sistema Operativo Windows Vista, Windows 7, Mac OS X, Linux, Debian, Red Hat, etc etc Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti

Dettagli

Definizione di classi. Walter Didimo

Definizione di classi. Walter Didimo Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

Dettagli

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa. 3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il

Dettagli

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Struttura dei programmi C

Struttura dei programmi C Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte

Dettagli

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde vers.0 in lavorazione Docente SAFFI FABIO Contenuti Struttura del file sorgente...2 Organizzazione della directory di lavoro...2 Esercizi sulle funzione

Dettagli

Multidimensionali. Array Multidimensionali. Tipi di array. Matrice: array bidimensionale. Array multidimensionale. Dichiarazione di una matrice

Multidimensionali. Array Multidimensionali. Tipi di array. Matrice: array bidimensionale. Array multidimensionale. Dichiarazione di una matrice Tipi di array Array Multidimensionali Antonella Santone Monodimensionali (vettore) Multidimensionali Array multidimensionale Un array multidimensionale è un array, i cui elementi sono a loro volta degli

Dettagli

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente. HOMEWORKS Questi esercizi saranno proposti di tanto in tanto e forniti sempre SENZA soluzioni. Come materiale complementare ai libri di testo e alle lezioni frontali e di esercitazione, si consiglia di

Dettagli

Rappresentazione binaria delle variabili (int e char)

Rappresentazione binaria delle variabili (int e char) Rappresentazione binaria delle variabili (int e char) int e char son i due tipi utilizzati dal linguaggio C per la rappresentazione di valori interi; ai valori delle variabili del primo tipo sono assegnati

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Capitolo 10 - Strutture

Capitolo 10 - Strutture 1 Capitolo 10 - Strutture Strutture In molte situazioni, una variabile non è sufficiente per descrivere un oggetto. Ad esempio, una posizione sul piano cartesiano è identificata da due coordinate, e la

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016

Dettagli

a.a Codice corso: 21012, 22010

a.a Codice corso: 21012, 22010 ESERCIZIO 1 Scrivere un sotto-programma in linguaggio C++ che ricevuta una matrice quadrata come parametro restituisca al chiamante un valore booleano indicante se la matrice è simmetrica oppure no. Scrivere

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

Cicli annidati ed Array multidimensionali

Cicli annidati ed Array multidimensionali Linguaggio C Cicli annidati ed Array multidimensionali Cicli Annidati In C abbiamo 3 tipi di cicli: while(exp) { do { while(exp); for(exp;exp;exp3) { Cicli annidati: un ciclo all interno del corpo di un

Dettagli

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904] Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale Informatica B [079904] Prof. P. Plebani Allievi Ingegneria Civile e Ambientale II prova in itinere (04 Febbraio 2009) Cognome

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Passaggio di parametri in C++ Il passaggio dei parametri tra funzione chiamante e funzione chiamata in C++ avviene secondo due modalità: Fondamenti di Informatica 16. Funzioni in C++ (parte 2) per valore

Dettagli

PROGETTAZIONE TOP-DOWN E BOTTOM-UP

PROGETTAZIONE TOP-DOWN E BOTTOM-UP PROGETTAZIONE TOP-DOWN E BOTTOM-UP Top-down e bottom-up sono strategie di elaborazione dell'informazione e di gestione delle conoscenze, riguardanti principalmente il software e, per estensione, altre

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Strutture Dati in C++ Le strutture dati sono entità che permettono di memorizzare dati in modo organizzato e funzionale a particolari esigenze Laboratorio di Informatica 4. Array e strutture in C++ Strutture

Dettagli

Introduzione al C++ (continua)

Introduzione al C++ (continua) Introduzione al C++ (continua) I puntatori Un puntatore è una variabile che contiene un indirizzo di memoria pi_greco 3.141592 pi_greco_ptr indirizzo di 3.141592 & DEREFERENZIAZIONE RIFERIMENTO * se x

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

LABORATORIO di INFORMATICA

LABORATORIO di INFORMATICA Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto FUNZIONI E PROCEDURE http://www.diee.unica.it/giacinto/lab

Dettagli

I Vettori (Array) Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

I Vettori (Array) Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni I Vettori (Array) Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Variabili I tipi di variabili che abbiamo usato finora hanno la caratteristica comune di non essere strutturate: ogni

Dettagli

Esercizio. Vogliamo scrivere delle funzioni che ci permettano di estrarre delle informazioni statistiche da un vettore (array) di dati:

Esercizio. Vogliamo scrivere delle funzioni che ci permettano di estrarre delle informazioni statistiche da un vettore (array) di dati: Esercizio Vogliamo scrivere delle funzioni che ci permettano di estrarre delle informazioni statistiche da un vettore (array) di dati: Media e deviazione standard Mediana Vogliamo poi provare l utilizzo

Dettagli

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere

Dettagli

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

Dettagli

Introduzione ai puntatori

Introduzione ai puntatori Introduzione ai puntatori Algoritmicamente November 19, 2009 http://algoritmicamente.wordpress.com/ 1 Concetti fondamentali Nei linguaggi quali C, C++, il concetto e l'uso dei puntatori è estremamente

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 3 Record G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Record >> Sommario Sommario Introduzione Dichiarazione di Record

Dettagli

Implementazione dell albero binario in linguaggio C++

Implementazione dell albero binario in linguaggio C++ Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 2 (a) Sintassi e Semantica versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina)

Dettagli

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

Associazione Variabile-Indirizzo

Associazione Variabile-Indirizzo I puntatori Associazione Variabile-Indirizzo Tutte le volte che in un programma si dichiarano delle variabili, l'esecutore associa alla variabile un indirizzo. Es. Dato il programma #include

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Istruzioni semplici e strutturate

Istruzioni semplici e strutturate Consorzio NETTUNO Corso di Fondamenti di Informatica I secondo giorno di stage Istruzioni semplici e strutturate Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II

Dettagli

Istituto Tecnico Industriale M. M. Milano Polistena. Classe III D a.s. 2015/2016 C++ Guida Base

Istituto Tecnico Industriale M. M. Milano Polistena. Classe III D a.s. 2015/2016 C++ Guida Base Istituto Tecnico Industriale M. M. Milano Polistena Classe III D a.s. 2015/2016 C++ Guida Base Prof. Rocco Ciurleo - ITIS M. M. Milano Polistena - 3 D a.s. 2015/2016 1 Le Origini Il Linguaggio C++ è il

Dettagli

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato. Scilab Corso di Informatica CdL: Chimica Introduzione a Scilab - Vettori Claudia d'amato claudia.damato@di.uniba.it Scilab Introduzione Ambiente matematico e di simulazione numerica sviluppato per la realizzazione

Dettagli

Introduzione. Le funzioni in C. Funzioni. Cosa succede

Introduzione. Le funzioni in C. Funzioni. Cosa succede Introduzione Le funzioni in C DD Cap.5 pp.131-160 KP Cap.5 pp. 175-199 La maggior parte dei programmi scritti per risolvere problemi sono (molto!) più lunghi di quelli visti fin ora. Il modo migliore per

Dettagli

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 JavaScript Core Language Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 Condizioni L utilizzo di operatori relazionali e logici consente di formulare delle condizioni

Dettagli

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

Dettagli

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente

Dettagli

Lezione 6. Visibilità degli identificatori e tempo di vita degli oggetti

Lezione 6. Visibilità degli identificatori e tempo di vita degli oggetti Lezione 6 Visibilità degli identificatori e tempo di vita degli oggetti Programmazione I Paolo Valente - 2009/2010 Ripasso dichiarazioni oggetti Finora abbiamo scritto le dichiarazioni di variabili e costanti

Dettagli

Strutture di iterazione

Strutture di iterazione Strutture di iterazione 1. Leggi i programmi qui sotto e disegna le tabelle di traccia nelle situazioni seguenti: a. Nel primo e nel secondo programma viene inserito da tastiera il valore 2; b. Nel primo

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

Modularizzazione del software

Modularizzazione del software Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica

Dettagli