Sei sulla pagina 1di 12

Laboratorio di Programmazione 1

Docente: dr. Damiano Macedonio Lezione 12 16/01/2014

Le Funzioni

Le funzioni permettono di isolare un certo numero di istruzioni e di riutilizzarle in varie parti del codice.
Es.

di funzioni: main, printf, scanf, ecc... int main(void) { printf(Hello world!\n); return 0; }

Il nome main riservato in C e indica da dove iniziare lesecuzione del programma. Ogni programma C deve avere una funzione main, che pu contenere linvocazione di altre funzioni.

Le Funzioni: !ichiarazione

La dichiarazione di una funzione descrive il prototipo della funzione:


Chi la pu chiamare. Il tipo del valore che restituisce. Il nome della funzione. Il tipo di ogni argomento che riceve. "on necessario speci#care il nome degli argomenti $presente solo nella de#nizione%

La dichiarazione di una funzione deve sempre precedere il primo utilizzo della funzione.
int sum(int, int);
3

Le Funzioni: !e#nizione

La de#nizione di una funzione composta da & parti:


La

dichiarazione del prototipo della funzione .

Chi la pu chiamare. Il tipo del valore che restituisce. Il nome della funzione. Il nome e il tipo di ogni argomento che riceve.
Il

corpo della funzione racchiuso tra parentesi gra'e.

Il nome di ciascun argomento detto nome del parametro formale e pu essere utilizzato per far riferimento allargomento allinterno del corpo della funzione.
int sum(int a, int b) { return a + ; }

Le Funzioni: parola chiave void


La parola chiave void pu essere utilizzata per indicare che:

la funzione non ha valore di ritorno $se posto allinizio della dichiarazione%, oppure la funzione non ha argomenti $se posto tra le parentesi tonde%.
5

Le Funzioni: Esempio
!include "stdio#$% void print&essa'e(void) { printf(Hello world!\n); } int main(void) { int i; for (i ( 0; i" ); i++) printMessage(); return 0; }

Funzioni: Invocazione di (ltre Funzioni


(llinterno di una funzione C possi)ile invocare altre funzioni. *er poter utilizzare correttamente una funzione g allinterno di unaltra funzione f necessario che:
g

sia definita prima di f, oppure g sia dichiarata prima di f


+olitamente tale dichiarazione fatta allinizio del programma. In ,uesto modo il compilatore pu veri#care che la funzione sia usata correttamente.

Funzioni: Invocazione di (ltre Funzioni $sol. -%


int abs(int *) { if (* " 0) * ( +*; return *; } int main (void) { int n; printf(,nserisci un numero intero\n); scanf(-i, .n); /rintf(-i e0 il valore assoluto di -i, abs(n), n );

Funzioni: Invocazione di (ltre Funzioni $sol. &%


int abs(int);
!ichiarazione

int main(void) { int n; ### /rintf (-i e0 il valore assoluto di -i, abs(n), n); } int abs(int *) { if (* " 0) * ( +*; return *; }

!e#nizione

Funzioni: istruzione

return

.na funzione pu contenere pi/ istruzioni return.


int a s(int *) { if(* " 0) return x; else return x; }

Ogni volta che viene eseguita listruzione return, il controllo restituito alla funzione chiamante.
0utte

le istruzioni che si trovano dopo il return sono ignorate.

Listruzione return pu essere usata anche in una funzione che non restituisce un valore.
Forma

10

pi/ semplice: return;

Le Funzioni: 1aria)ili Locali

Le varia)ili de#nite allinterno di una funzione sono dette variabili locali automatiche.
(utomatiche

perch2 sono create automaticamente ad ogni invocazione della funzione. Locali perch2 il loro valore locale alla funzione, cio visi)ile ed utilizza)ile solo allinterno della funzione nella ,uale la varia)ile stata de#nita. int sum(int a, int ) { int s; s ( a + ; s una varia)ile locale alla funzione sum return s; }

11

Le Funzioni: 1aria)ili Locali


!include "stdio#$% int a s(int *) { ,f (* " 0) * ( +*; }

Le modi#che apportate ad * allinterno della funzione a s non hanno alcun e'etto sui valori delle varia)ili a, e c. 3uando una di ,ueste varia)ili passata alla funzione a s, il suo valore automaticamente copiato nella varia)ile *, che locale alla funzione a s#

int main(void) { int a ( ), ( +1, c ( 0; /rintf(-i e0 il valore assoluto di -i, a s(a), a); /rintf(-i e0 il valore assoluto di -i, a s( ), ); /rintf(-i e0 il valore assoluto di -i, a s(c), c); return 0; }
12

Potrebbero piacerti anche