Title: Fondamenti di Informatica
 1Fondamenti di Informatica
- Riassunto 
- Utilizzo di PUNTATORI 
- Utilizzo di MALLOC 
- Array multidimensionali
2Esercitazione 4
- Cosa vedremo oggi? 
- Funzioni 
- Passaggio di parametri 
- Funzioni ricorsive 
- Puntatori come valore di ritorno da funzione
3Funzioni
- Cosè una funzione? 
- Le funzioni permettono di scomporre problemi 
 complessi in moduli più semplici, sfruttabili
 anche singolarmente per la risoluzione di
 problemi diversi
4Funzioni
- Come si definisce una funzione?
tipo_ritornato nome_funzione(tipo_param 
nome_param, tipo_param1 nome_param1) 
 5Funzioni
- Come si usa una funzione? 
- Esempiocostruiamo un programma C che gestisca 
 le 4 operazioni aritmetiche utilizzando le
 funzioni
6Funzioni
- Vediamo il codice allinterno dellambiente Dev C 
- In particolare notiamo 
- Come viene scritta la funzione
float somma(int a_somma, int b_somma) float 
c_somma c_sommaa_sommab_somma 
 return c_somma 
Parametri della funzione
Valore di ritorno 
 7Funzioni
- Come viene chiamata la funzione 
- Attenzione alla funzione errore_divisione
risultatosomma(primo_operando,secondo_operando)
int errore_divisione(void) printf("Non si 
puo' dividere per 0!!!\n") return 1  
 8Funzioni Ricorsive Fibonacci
- E se una funzioen richiama se stessa? 
- Attuo un processo di ricorsione 
- Vediamo un esempio matematico
La successione di Fibonacci 
 9Funzioni Ricorsive Fibonacci
Definizione F(m)  0 con mlt0 F(1)  1F(2)  
1F(n)  F(n-1)  F(n-2) con ngt0 Per chiarezza i 
primi 8 numeri della serie di Fibonacci sono 1 
1 2 3 5 8 13 21 Come si realizza una 
funzione in grado di svolgere tale conteggio??? 
 10Funzioni Ricorsive Fibonacci
- include ltstdio.hgt 
- void main(void) 
-  
-  int risultato 
-  int numero 
-  printf("Inserisci un numero intero\n") 
-  scanf("d",numero) 
-  risultatofibonacci(numero) /chiamo la 
 funzione passando un valore e prendo il valore
 restituito/
-  printf("nella posizione d della sequenza di 
 fibonacci c'e' d\n",numero,risultato)
-  system("pause") 
-  
- int fibonacci(int n) 
-  
-  int ris /dichiaro un intero che 
 rappresenta il risultato/
-  if (nlt0) 
-  return 0 
-   
11Funzioni
- Adesso sappiamo definire una funzione con dei 
 parametri in ingresso ed un valore in uscita,
 inoltre sappiamo invocarla anche in modo
 ricorsivo
- e se la mia funzione utilizzasse dei puntatori???
12Funzioni ricerca in un vettore
- Prendiamo lesempio già visto della ricerca di un 
 elemento in un vettore
- Scriviamo una funzione che prende in ingresso un 
 puntatore a char e un intero e restituisce il
 puntatore alla posizione dellarray desiderata
13Funzioni ricerca in un vettore
char cerca_in_vettore(char puntatore, int 
ingresso) puntatorepuntatoreingresso  
 /sposto il puntatore / return puntatore 
 /ritorno il puntatore/ 
Il tipo di ritorno è un puntatore a char
Il primo parametro della funzione è un puntatore 
a char 
 14Funzioni ricerca in un vettore
includeltstdio.hgt void main(void) char 
vettore" abcdefghilmnopqrstuvz"  
/dichiaro e inizializzo un vettore !!!ATTENZIONE 
ALLO SPAZIO INIZIALE!!!/ char ptr 
/dichiaro un puntatore a intero/ int 
input /dichiaro la mia variabile di 
input/ int risposta /dichiaro una 
variabile condizione di uscita dal do while/ 
 ptrvettore0 /faccio puntare ptr 
all'indirizzo di inizio del vettore/ 
/oppure/ / ptrvettore0 / 
do printf("Inserisci un valore compreso 
tra 1 e 21\n") scanf("d",input) 
/catturo da tastiera la posizione da cercare/ 
 ptrcerca_in_vettore(vettore0,input) 
/passo alla funzione l'indirizzo di inizio 
vettore e l'inetro catturato e ritono il valore 
del puntatore/ printf("c", ptr) 
/visualizzo il risultato/ 
printf("\nVuoi cercare un'altra lettera? 0SI - 
1NO\n")  scanf("d",risposta)/risposta per 
iterazione/ while(risposta0) 
system("pause")