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")