----------------------------
The C programming's book
Lessons #07
----------------------------
LE FUNZIONI
-----------
La settima lezione... uff che fatica (speriamo almeno di diventare
famoso =). Bene, cos'è una funzione? E' una parte di codice che
viene dichiarata prima del main e che contiene dei comandi. Questo
strumento viene utilizzato per non ripetere parti di codice anche
abbastanza lunghe snellizzando decisamente il sorgente e impiegando
meno tempo sia in fase di scrittura che in fase di debug. Prima di
continuare è necessario fare una precisazione che non ho fatto fino
ad ora: Al termine della scrittura di un programma è bene utilizzare
un return 0 oppure un return EXIT_SUCCESS in modo che il compilatore
sappia che è terminata la scrittura del programma. Si fa in questo
modo:
#include
int main() {
printf("\nHello world\n");
return 0;
}
Proprio con questo metro si differenziano le funzioni in due cate-
gorie: funzioni con valore di ritorno e funzioni senza valore di
ritorno.Ma è il momento di partire col codice d'esempio: eccovi una
funzione senza valore di ritorno:
#include
#include
void viva_la_mamma() {
printf("\nQuesto è un esempio i funzione\n");
printf("\nW la MAMMA\n");
}
int main() {
viva_la_mamma();
return 0;
}
Quindi vediamo che per dichiarare una funzione senza valore di ritor-
no la sintassi è semplicissima:
void nomefunzione() { comando1; comando2; }
La funzione viene poi richiamata ed eseguita dal main() con la riga:
nomefunzione();
Potete anche mettere alla fine della procedura "return 0".Per ottenere
funzioni con valore di ritorno bisogna definire all' inizio della
funzione che tipo di valore ritornerà alla fine della procedura:
#include
#include
int addizione()
{
int num1,num2,risultato;
printf("\nIntroduci il primo numero: ");
scanf("%d",&num1);
printf("\nIntroduci il secondo numero: ");
scanf("%d",&num2);
risultato = num1 + num2;
printf("\n%d + %d = %d \n\n",num1,num2,risultato);
return somma;
}
int main()
{
printf("\nProgramma per sommare due numeri\n);
addizione();
return 0;
}
Possiamo vedere che all'inizio della funzione non abbiamo più la
sintassi void ma abbiamo messo int perché il valore di ritorno della
funzione è un tipo di dato intero.Se avessimo dichiarato la funzione
con un altro tipo di dato avremmo avuto un errore di compilazione.
Nelle funzioni possiamo richiamare altre funzioni.Inoltre le variabili
dichiarate sono visibili solo durante l'esecuzione della funzione.
Questo vuol dire che (nell'esempio precedente) se evessimo fatto una
cosa del genere: risultato = num1 - num2 all'interno della funzione
main ci sarebbe stato un errore in fase di compilazione.
Parliamo ancora di funzioni ma adesso aggiungiamo un tocco di stile
(perchè la classe non è acqua, è birra) ovvero vediamo cos'è e come
si crea una funzione con dei parametri ovvero una funzione che può
dialogare con il main, interagire con esso passandogli dati struct
o quant'altro. Una funzione con parametri si dichiara più o meno
come una normale funzione ma... va beh ecco la sintassi:
type nomefunzione(type parametro1, type parametro2) {
comandi;
return nomefunzione;
}
Eccovene un esempio:
#include
#include
int somma(int a, int b){
int risultato;
risultato= a+b;
return risultato;
}
int moltiplicazione(int f, int g){
int risultato;
risultato=f*g;
printf("Il risultato della moltiplicazione
delle variabili passate è: ", risultato);
return risultato;
}
int main(){
int ris_finale;
int x,y;
x=5;
y=10;
somma(x,y);
moltiplicazione(x,y);
printf("Il risultato dell'addizione delle due
operazioni è: ", ris_finale=somma(x,y)+moltiplicazione(x,y));
return 0;
}
Sta volta sembra un po' più complicato del solito vero? Ma no! E'
solo un impresisone adesso spieghiamo tutto! Dunque abbiamo dichia-
rato due funzioni com parametri e valore di ritorno. A questo punto
la funzione somma viene chiamata e gli vengono passati i parametri.
I tipi di dati che rappresentano i vari parametri VANNO DICHIARATI.
Più che dare altre spiegazioni vi dico di fare un po' di prove e
di guardare attentamente il codice sopra.. è meglio di 1000 parole
datemi retta. Questa è una delle parti più interessanti e creative
quindi non vi lamentate, se vi siete annoiati proprio del tutto o
ste cose le sapevate già o è meglio che lasciate perdere il C e vi
dedicate all'hockey subaqueo (di cui l'italia ha anche una squadra
nazionale!o_o). Giuro che non so di cosa parlare nella prossima lex
Mah, forse dei cicli... si vedrà. Ciao ragazzi ci vediamo!
----------------------------------
robcasanovi virgilio it
----------------------------------
               (
geocities.com/it)