Sei sulla pagina 1di 27

Michele

Introduzione
 Spesso quando si realizza un programma ci si rende
conto che alcune sequenze di istruzioni o operazioni
vengono eseguite più volte.
 Possono essere ripetute istruzioni identiche o con
qualche piccola variazione come per esempio nei valori
costanti che vengono utilizzati al loro interno.
 La ridondanza di queste sequenze di codice
appesantisce e rende poco leggibile il nostro
programma, inoltre favorisce il propagarsi degli errori
e la loro difficile correzione.
Caso 1
 Dato il seguente listato :
 Possiamo individuare i blocchi che si ripetono:
 Immaginiamo di realizzare una black box delle
istruzioni contenute all’interno delle aree evidenziate
individuando lo scopo del pezzo di codice, eventuali
parametri su cui lavora e il risultato in uscita.
 Per iniziare diamo un nome alla black box che
permetta di ricordare il suo contenuto. Questo pezzo
di codice legge un numero compreso fra 0 e 10 e quindi
potremmo chiamarla “acquisici”.
 La scatola non ha bisogno di ricevere nessun valore su
cui lavorare mentre produce un uscita un risultato che
è un numero intero.
 Posso rappresentare la black box così:

int
acquisisci
 Idealmente è come se la black box contenesse il codice
che prima abbiamo messo nel rettangolo rosso:

int
 Il nostro codice sostituendo la parte di codice con la
chiamata alla black box diventerebbe:

 Decisamente più corto e più leggibile.


 Proviamo a fare la stessa cosa con questo programma:
 Anche qui notiamo che ci sono porzioni di codice che
si ripetono anche se con una piccola differenza:

In questo caso
gli estremi
cambiano in
ogni porzione
di codice anche
se le istruzioni
rimangono
uguali.
 Usando delle variabili correttamente valorizzate invece
delle costanti il codice diventa così:
Dove ritroviamo gli
stessi blocchi.
L’unica differenza è
il valore che
assumono le
variabili min e max.
 Possiamo pensare che la black box che contiene questo
codice riceva in ingresso i valori da dare a min e max
che possono così cambiare all’occorrenza:

int
int
int acquisisci2
 Il nostro codice diventa quindi così:

 Fra parentesi troviamo i valori di min e max in ingresso


alla black box e su cui la black box dovrà lavorare.
 Facciamo la stessa cosa con questo codice:
 La prima parte è uguale a quella di prima con min=1 e
max=10:

int
int
int acquisisci2
 Analizzando la seconda parte ci accorgiamo che il
codice non fa altro che calcolare la potenza di un
numero dati base ed esponente:

int
int
int potenza
 Il codice si trasforma così:
Funzioni
 In C queste black box sono le funzioni, cioè porzioni di
codice che lavorando su dati di ingresso producono un
risultato in uscita. Le funzioni possono essere
richiamate più volte nel nostro programma ogni volta
con valori diversi in ingresso.
 I valori in ingresso ad una funzione si chiamano
parametri.
 Generalmente la funzione ha un tipo che indica il tipo
di valore che la funzione restituisce dopo
l’elaborazione dei dati.
 Il tipo di una funzione può essere un qualsiasi tipo del
C, sia predefinito che creato da noi. Una funzione che
non ha nessun tipo è dichiarata void e quindi non
produrrà un valore di uscita (almeno non nel modo
classico)
Prototipo
 Prima di poter essere usata una funzione deve essere
dichiarata.
 La dichiarazione della funzione si fa sopra il main e si
chiama prototipo.
 Il prototipo descrive il tipo della funzione, il suo nome
e il tipo e numeri dei parametri in ingresso alla
funzione.
 In sostanza è la trascrizione della black box
Prototipo
int
int
int acquisisci2

 int acquisisci2(int,int);
int
int
int potenza

 int potenza(int,int);
Definizione
 La definizione della funzione si fa dopo il main e
prevede la scrittura vera e propria del codice della
funzione.
 E’ costituita dall’intestazione che non è altro che il
prototipo della funzione in cui però esplicitiamo i
nomi dei parametri in ingresso (oltre al tipo che è già
presente nel prototipo) e da una corpo della funzione
che contiene tutto il codice della funzione, comprese le
dichiarazioni di eventuali variabili utili alla funzione.
Definizione
 L’ultima istruzione che deve essere eseguita è
l’istruzione di return con cui la funzione restituisce il
valore che ha elaborato.
 Se una funzione è di tipo void il return non è
necessario.
Esempi
int
acquisisci

Prototipo

Chiamata o attivazione della funzione

Corpo della
funzione
int
int
int acquisisci2

int
int
int potenza
 Continua …

Potrebbero piacerti anche