Fondamenti di Informatica Riassunto Utilizzo di PUNTATORI Utilizzo
- Slides: 14
Fondamenti di Informatica ØRiassunto ØUtilizzo di PUNTATORI ØUtilizzo di MALLOC ØArray multidimensionali 2/21/2021 1
Esercitazione 4 Ø Cosa vedremo oggi? Ø Ø 2/21/2021 Funzioni Passaggio di parametri Funzioni ricorsive Puntatori come valore di ritorno da funzione 2
Funzioni Ø Ø 2/21/2021 Cos’è una funzione? Le funzioni permettono di scomporre problemi complessi in moduli più semplici, sfruttabili anche singolarmente per la risoluzione di problemi diversi 3
Funzioni Ø Come si definisce una funzione? tipo_ritornato nome_funzione(tipo_param nome_param, tipo_param 1 nome_param 1) 2/21/2021 4
Funzioni Ø Ø 2/21/2021 Come si usa una funzione? Esempio: costruiamo un programma C che gestisca le 4 operazioni aritmetiche utilizzando le funzioni 5
Funzioni Ø Ø Vediamo il codice all’interno dell’ambiente Dev C In particolare notiamo Ø Come viene scritta la funzione float somma(int a_somma, int b_somma){ float c_somma; c_somma=a_somma+b_somma; return c_somma; } Parametri della funzione Valore di ritorno 2/21/2021 6
Funzioni Ø Come viene chiamata la funzione risultato=somma(primo_operando, secondo_operando); Ø Attenzione alla funzione “errore_divisione” int errore_divisione(void){ printf("Non si puo' dividere per 0!!!n"); return 1; } 2/21/2021 7
Funzioni Ricorsive: Fibonacci Ø E se una funzioen richiama se stessa? Ø Ø Attuo un processo di ricorsione Vediamo un esempio matematico… La successione di Fibonacci 2/21/2021 8
Funzioni Ricorsive: Fibonacci Definizione: F(m) = 0 con m<=0 F(1) = 1 F(2) = 1 F(n) = F(n-1) + F(n-2) con n>0 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? ? ? 2/21/2021 9
Funzioni Ricorsive: Fibonacci #include <stdio. h> void main(void) { int risultato; int numero; printf("Inserisci un numero interon"); scanf("%d", &numero); risultato=fibonacci(numero); /*chiamo la funzione passando un valore e prendo il valore restituito*/ printf("nella posizione %d della sequenza di fibonacci c'e' %dn", numero, risultato); system("pause"); } int fibonacci(int n) { int ris; /*dichiaro un intero che rappresenta il risultato*/ if (n<=0){ return 0; } if ((n==1)||(n==2)){ return 1; } ris=fibonacci(n-1) + fibonacci(n-2); /*metto in ris la somma dei valori ritornati dalla funzione stessa per n-1 e n-2*/ return ris; /*ritorno ris alla funzione chiamante*/ } 2/21/2021 10
Funzioni 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? ? ? ¡ 2/21/2021 11
Funzioni ricerca in un vettore Prendiamo l’esempio 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 dell’array desiderata ¡ 2/21/2021 12
Funzioni ricerca in un vettore char* cerca_in_vettore(char *puntatore, int ingresso){ puntatore=puntatore+ingresso; /*sposto il puntatore */ return puntatore; /*ritorno il puntatore*/ } Il tipo di ritorno è un puntatore a char 2/21/2021 Il primo parametro della funzione è un puntatore a char 13
Funzioni ricerca in un vettore #include<stdio. h> 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*/ *ptr=vettore[0]; /*faccio puntare ptr all'indirizzo di inizio del vettore*/ /*oppure*/ /* ptr=&vettore[0]; */ do{ printf("Inserisci un valore compreso tra 1 e 21n"); scanf("%d", &input); /*catturo da tastiera la posizione da cercare*/ ptr=cerca_in_vettore(&vettore[0], 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("n. Vuoi cercare un'altra lettera? 0=SI - 1=NOn"); scanf("%d", &risposta); /*risposta per iterazione*/ }while(risposta==0); system("pause"); } 2/21/2021 14
- Fondamenti di informatica 2
- Fondamenti di informatica 2
- Gianni danese
- La storia dell'informatica riassunto
- I fondamenti dell'ict
- Naturalismo francese e verismo italiano
- Fondamenti di misure
- Controllo ad anello aperto
- Genotipo
- Gli angoli retti
- Fondamenti di automatica benvenuti
- Fondamenti di astronomia
- Fondamenti di chimica organica smith usato
- Teleonomica pedagogia
- Fondamenti di sociologia giddens