----------------------------

                           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
		      ----------------------------------
			
	
	

    Source: geocities.com/it/songbook2003

               ( geocities.com/it)