La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012

Presentazioni simili


Presentazione sul tema: "1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012"— Transcript della presentazione:

1 1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012 http://agile.diee.unica.it Ing. Giuseppe Destefanis Diee, secondo piano Tel. 070-6755774 mail: giuseppe.destefanis@diee.unica.it

2 2 Array Gli array contengono un numero finito di dati tutti dello stesso tipo. Gli elementi dell'array sono individuati da un indice. a a[0] a[1]a[2]a[3]a[4]a[5]a[6]

3 3 Array (2) Per dichiarare un vettore si deve specificare il tipo e il numero dei suoi elementi: int v[10]; //un vettore di interi di 10 elementi Dichiarazione di un tipo array e definizione di un array sono contestuali.

4 4 Inizializzazione di un array #include int main() { int vett[10]; //dichiarazione for(int i=0; i<10; i++) vett[i]=i; for(int i=0; i<10; i++) { printf("vett[%d]=%d \n",i,vett[i]); }

5 5 Inizializzazione di un array (2) #include int main() { int vett[]={1,2,3,4,5}; for(int i=0; i<5; i++) { printf("vett[%d]=%d \n",i,vett[i]); }

6 6 Trovare il massimo elemento in un array #include int main() { int vett[10]; for(int i=0; i<10; i++) scanf("%d",&vett[i]); int max=vett[0]; for(int i=1; i<10; i++) if(vett[i]>max) max=vett[i]; printf("Il massimo è %d \n",max); }

7 7 Array multidimensionali int matrix[m][n]; //matrice con m righe e n colonne 1 … n 1...m1...m

8 8 Array multidimensionali #include int main() { int matrix[2][2]; //dichiarazione della matrice for(int righe=0; righe<2; righe++) for(int colonne=0; colonne<2; colonne++) { matrix[righe][colonne]=righe+colonne; } for(int righe=0; righe<2; righe++) { for(int colonne=0; colonne<2; colonne++) printf("%d\t",matrix[righe][colonne]); printf("\n"); }

9 9 //Tavola Pitagorica #include int main() { int matrix[10][10]; for(int righe=0; righe<10; righe++) for(int colonne=0; colonne<10; colonne++) { matrix[righe][colonne]=(righe+1)*(colonne+1); } for(int righe=0; righe<10; righe++) { for(int colonne=0; colonne<10; colonne++) printf("%d\t",matrix[righe][colonne]); printf("\n"); }

10 10 Le funzioni in matematica Nell'analisi matematica una funzione f da X in Y consiste in una legge che associa ad ogni elemento x in X uno e un solo elemento y di Y: f(x)=y x è l'argomento della funzione, o variabile indipendente, e y è il valore della variabile dipendente.

11 11 Le funzioni Quando si realizza un programma, capita spesso che una sequenza di operazioni debba essere ripetuta più volte. Esempio: calcolare il fattoriale di due numeri inseriti dall'utente.

12 12 Prima soluzione #include int main() { int num, fatt; fatt=1; scanf("%d",&num); for(int i=1; i<=num; i++){ fatt*=i; } printf("Il fattoriale vale: %d\n",fatt); fatt=1; //riscrivo la sequenza di istruzioni scanf("%d",&num); for(int i=1; i<=num; i++){ fatt*=i; } printf("Il fattoriale vale: %d\n",fatt); }

13 13 Seconda soluzione #include int fattoriale(int numero) //funzione fattoriale { int fatt=1; for(int i=1; i<=numero; i++){ fatt*=i; } return fatt; } int main() { int num, fatt; scanf("%d",&num); fatt=fattoriale(num); printf("Il fattoriale vale: %d\n",fatt); }

14 14 Le funzioni Per utilizzare una funzione è necessario che prima venga dichiarata e definita. Nella dichiarazione vi sono le informazioni sul tipo di dati utilizzati e sul risultato (valore restituito dalla funzione). Nella definizione vengono specificati i dati sui quali la funzione opera e le azioni per ottenere il risultato. La definizione di una funzione è anche una dichiarazione.

15 15 Dichiarazione di funzioni [tipo della funzione] nome (tipo parametro1,tipo parametro2,...); int fattoriale(int numero); tipo della funzione nome tipo del parametro nome del parametro Tra le parentesi tonde si specifica il nome, il numero e il tipo dei parametri formali.

16 16 Definizione di funzioni... int fattoriale(int numero) { int fatt=1; for(int i=1; i<=numero; i++){ fatt*=i; } return fatt; }...

17 17 Dichiarazione #include int main() { int num, fatt; scanf("%d",&num); fatt=fattoriale(num); //ATTENZIONE! Funzione non dichiarata! printf("Il fattoriale vale: %d\n",fatt); } int fattoriale(int numero) { if(numero==0) return 1; int fatt=1; for(int i=1; i<=numero; i++){ fatt*=i; } return fatt; }

18 18 Dichiarazione #include int fattoriale(int); //dichiarazione (deve precedere la chiamata) int main() { int num, fatt; scanf("%d",&num); fatt=fattoriale(num); // ok! printf("Il fattoriale vale: %d\n",fatt); } int fattoriale(int numero) { if(numero==0) return 1; int fatt=1; for(int i=1; i<=numero; i++){ fatt*=i; } return fatt; }

19 19 Istruzione return L'istruzione return:  fa terminare l'esecuzione della funzione;  restituisce il risultato della funzione. Il corpo della funzione può contenere più di una volta l'istruzione return.

20 20 Istruzione return (2)... int fattoriale(int numero) { if(numero==0) return 1; int fatt=1; for(int i=1; i<=numero; i++){ fatt*=i; } return fatt; }...

21 21 Argomenti di una funzione... int fattoriale(int numero) { if(numero==0) return 1; int fatt=1; for(int i=1; i<=numero; i++){ fatt*=i; } return fatt; }... argomento formale

22 22 Argomenti di una funzione #include int fattoriale(int numero) //funzione fattoriale { int fatt=1; for(int i=1; i<=numero; i++){ fatt*=i; } return fatt; } int main() { int num, fatt; scanf("%d",&num); fatt=fattoriale(num); printf("Il fattoriale vale: %d\n",fatt); } argomento attuale

23 23 Argomenti di una funzione All'atto della chiamata di una funzione vengono eseguite le seguenti azioni: 1.Si valuta l'espressione che forma il parametro attuale; 2.Il controllo del flusso viene trasferito alla funzione; 3.Viene creata una variabile locale alla funzione e gli viene assegnato nome e tipo dell'argomento formale; 4.La variabile argomento formale viene inizializzata con il valore dell'argomento attuale; 5.Viene eseguita la funzione sino al primo return; 6.Viene valutata l'espressione dopo il return; tutte le variabili locali e i parametri formali vengono distrutti e il valore ottenuto viene sostituito alla variabile del main.

24 24 Corrispondenza tra parametri All'atto della chiamata di una funzione la corrispondenza tra parametri (formali e attuali) viene valutata nel seguente modo: 1.per numero (numero di parametri formali = numero di parametri attuali); 2.per tipo (altrimenti regole di conversione); 3.ordine;

25 25 Funzioni void... void fattoriale(int numero) { if(numero==0) printf(“Il fattoriale è 1\n”); int fatt=1; for(int i=1; i<=numero; i++){ fatt*=i; } printf(“Il fattoriale è%d\n”, fatt); }...

26 26 Visibilità (scope delle variabili) La visibilità, o scope, di una variabile è la parte di programma nel quale la variabile può essere usata. Scopo delle regole di visibilità:  Consentire a più parti del programma di riferirsi ad una stessa variabile (il nome della variabile è visibile a tutte le parti interessate);  Impedire ad una o più parti del programma di riferirsi ad una variabile (il nome della variabile non è visibile a queste parti del programma)

27 27 Blocco Un blocco è una sequenza di istruzioni racchiuse tra parentesi graffe: { … istruzioni … } Un identificatore dichiarato in un blocco è visibile dal punto in cui viene dichiarato sino alla fine del blocco. (Il corpo di una funzione è un blocco)

28 28 Classi di memorizzazione La classe di memorizzazione di una variabile è una proprietà riguardante il suo tempo di vita (cioè il tempo in cui la variabile rimane in memoria durante l'esecuzione). Classe di memorizzazione:  Statica  Automatica

29 29 Variabile statica  Le variabili statiche vengono create a partire dal punto in cui vengono definite, e vengono distrutte alla fine del programma.  Se non inizializzate dal programmatore vengono per default inizializzate a zero.

30 30 Esempio #include int main() { static int num; printf("%d\n",num); //0 { printf("%d\n",num); //0 int num=3; printf("%d\n",num); //3 //prima di uscire dal blocco si distrugge la variabile num del blocco //mentre non viene distrutta la variabile static num esterna al blocco } printf("%d\n",num); //0 }

31 31 Variabile automatica  Le variabili automatiche vengono create a partire dal punto in cui vengono definite e vengono distrutte quando termina l'esecuzione del blocco al quale appartengono.  Ciascuna chiamata di funzione comporta l'esecuzione del blocco che ne costituisce il corpo e per ogni chiamata si ha la creazione delle variabili automatiche coinvolte.

32 32 Posso rendere statica una variabile all'interno di un blocco?

33 33 #include int main() { int num=0; printf("%d\n",num); //0 { static int b=3; printf("%d\n",b); //3 } printf("%d",b); //errore b non è visibile a questo livello //l'area di memoria nella quale è memorizzato il valore //di b è ancora presente }

34 34 Visibilità Una variabile dichiarata nel corpo di una funzione è locale alla funzione. int fattoriale(int numero) { int fatt=1; //fatt è locale alla funzione for(int i=1; i<=numero; i++){ fatt*=i; } return fatt; }

35 35 Esempio #include void f() { int a=5; printf("%d\n",a); } int main() { printf("%d\n",a); //ATTENZIONE! a non è dichiarata int num=0; printf("%d\n",num); //0 { printf("%d\n",num); //0 int num=3; printf("%d\n",num); //3 } printf("%d\n",num); //0 f(); //5 }

36 36 Funzioni ricorsive #include int fatt(int num) { return (num<2)?1:num*fatt(num-1); } int main() { int num=0; printf("Inserire un numero: \n"); scanf("%d",&num); int fattoriale=fatt(num); printf("Il fattoriale vale %d\n",fattoriale); }


Scaricare ppt "1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012"

Presentazioni simili


Annunci Google