Sei sulla pagina 1di 2

PROGRAMMAZIONE C – Le Funzioni

Le Funzioni sono utilizzate nella programmazione per suddividere il codice in porzioni più piccole di facile
gestione. Per definire una funzione occorre specificare:

 il datatype del return,


 il nome della funzione
 una serie di argomenti racchiusi fra parentesi tonde

int somma (int addendo1, int addendo2)


argomenti della funzione
datatype del return nome della funzione

1. int somma (int addendo1, int addendo2) {


2. int risultato;
3. risultato = addendo1 + addendo2;
4. return risultato;
5. }

Analizziamo il codice di esempio riportato qui sopra.

Datatype del return


Al rigo 4 viene restituito dalla funzione il valore ‘risultato’ che ha lo stesso datatype definito per la
funzione al rigo 1, ossia intero.

Infatti al rigo 2 la variabile ‘risultato’ è stata definita come intero.

Nome della funzione


Alla funzione è stato attribuito al rigo 1 il nome ‘somma’ che descrive lo scopo del codice contenuto.

Argomenti della Funzione


Come visibile al rigo 2 gli argomenti passati in INPUT alla funzione sono due, ‘addendo1’ ed ‘addendo2’, dei
quali è NECESSARIO specificare il datatype nella definizione della funzione.

Analisi del codice


Al rigo 2 viene definita una variabile locale chiamata ‘risultato’.

Al rigo 3 l’istruzione effettua la somma dei due argomenti ed inserisce il valore nella variabile ‘risultato’.

Al rigo 4 la funzione ha finito il suo scopo e viene restituito in OUTPUT il valore contenuto nella variabile
‘risultato’.

Il codice completo del programma è riportato nella pagina seguente.

Corso di INFORMATICA Prof. Donato GRECO © 2020 Pag. 1 di 2


1. #include <stdio.h>
2. /* Calcola la SOMMA di due addendi
3. int somma (int addendo1, int addendo2); // definisco la funzione SOMMA
4. // la funzione sarà utilizzata in seguito
5. void main() {
6. int num1, num2, result; // definisco le variabili LOCALI
7. printf("Inserire il primo addendo: ");
8. scanf("%d",&num1); // inserimento del primo addendo
9. printf("Inserire il secondo addendo: ");
10. scanf("%d",&num2); // inserimento del secondo addendo
11. result = somma(num1,num2); // effettuo una chiamata a funzione (CALL)
12. printf("\nIl risultato della somma di %d e %d e\': %d", num1, num2, result);
13. }
14.
15. int somma (int addendo1, int addendo2) {
16. int risultato; // definisco la variabile LOCALE
17. risultato = addendo1 + addendo2; // effettuo la somma degli addendi
18. return risultato; // restituisco il valore di risultato
19. }

Le Funzioni però possono restituire UN solo valore. Pertanto se fosse necessario avere come OUTPUT della
funzione più di un valore, occorre utilizzare un escamotage: i PUNTATORI.

1. #include <stdio.h> Puntatore


2. /* Calcola la SOMMA e la DIFFERENZA fra due numeri
3. int somma_e_diff (int numero1, int numero2, int *differenza); //definisco la funzione
4. // la funzione sara' utilizzata in seguito
5. int main() {
6. int num1, num2, result, diff; // definisco le variabili LOCALI
7. printf("Inserire il primo addendo: ");
8. scanf("%d",&num1);
9. printf("Inserire il secondo addendo: ");
10. scanf("%d",&num2); indirizzo della variabile ‘diff’
11. result = somma_e_diff(num1,num2,&diff);
12. printf("\nIl risultato della somma di %d e %d e\': %d\n", num1, num2, result);
13. printf("Il risultato della differenza fra %d e %d e\' : %d", num1, num2, diff);
14. return 0;
15. }
16.
17. int somma_e_diff (int numero1, int numero2, int *differenza) {
18. int risultato;
19. risultato = numero1 + numero2;
20. *differenza = numero1 - numero2; variabili LOCALI
21. return risultato;
22. }

Analisi del codice


In questo caso nella chiamata al rigo 11 la chiamata della funzione coinvolge come parametri due variabili
intere e l’indirizzo della variabile intera ‘diff’.

Al rigo 3 la definizione della funzione DEVE tenere conto dei parametri in INPUT, che ora sono due variabili
intere ed un puntatore ad intero.

Il codice della funzione va dal rigo 17 al rigo 22. Come si vede al rigo 20 viene calcolata la differenza delle
variabili intere di INPUT ed il risultato viene posto nella variabile che ha l’indirizzo di memoria passato sempre
in INPUT alla funzione.

Tramite questo trucchetto la funzione restituisce due valori: il risultato della SOMMA tramite il return, e la
differenza tramite il puntatore.

Corso di INFORMATICA Prof. Donato GRECO © 2020 Pag. 2 di 2