sabato 15 gennaio 2011

Corso Linguaggio C #4: Funzioni e Procedure

Benvenuti in questa quarta lezione del corso di Linguaggio C.



Gli argomenti di questa nuova lezione saranno due, ossia le funzioni e le procedure. La differenza tra una funzione e una procedura sta nel fatto che la funzione può ricevere più input ma restituisce un solo output mentre invece una procedura riceve può ricevere più input ma può restituire anche più output.

Iniziamo con le funzioni. Una funzione viene scritta in un altro blocco (non nel main) ma deve essere dichiarata all'inizio del nostro programma subito sotto le librerie e successivamente deve essere chiamata all'interno del main. Ecco un semplice esempio:

#include <stdio.h>
int somma_interi (int a, int b); //dichiarazione della funzione
void main ()
{
int a,b,somma;
printf("Inserisci due numeri interi: ");
scanf("%d%d",&a,&b);
somma=somma_interi(a,b); //chiamo la funzione e la associo alla variabile somma
printf("La somma dei due numeri e' di %d\n",somma);
getch();
}

int somma_interi (int a, int b) //scrivo la funzione
{
int res;
res=a+b;
return res; //l'output della funzione sarà la variabile res
}


Questa è la struttura di una funzione. Cosi si possono creare funzioni per qualsiasi tipo di operazione. Da notare che la funzione è di tipo int perchè restituisce un numero intero, se avesse restituito un numero con la virgola avremmo dovuto scrivere float e così via per gli altri casi.

Adesso invece passiamo alle procedure.
La procedura è simile alla funzione solo che restituisce più output. Ecco una semplice procedura:

#include <stdio.h>
void somma_interi (int a, int b, int c, int d, int *res1, int *res2); //dichiarazione della procedura
void main ()
{
int a,b,c,d,res1,res2;
printf("Inserisci quattro numeri interi: ");
scanf("%d%d%d%d",&a,&b,&c,&d);
somma_interi(a,b,c,d,&res1,&res2); //chiamo la procedura
printf("La somma dei due numeri e' di %d e %d\n",res1,res2);
getch();
}

void somma_interi (int a, int b, int c, int d, int *res1, int *res2) //scrivo la procedura
{
*res1=a+b;
*res2=c+d;
}


A differenza della funzione, una procedura è sempre di tipo void perchè non restituisce un determinato tipo di valore (gli output possono essere di tipi diversi). Le variabili di output devono essere inserite nella dichiarazione della procedura tramite puntatori e nella chiamata all'interno del main devono essere accompagnate dalla &. Nella procudura non esiste il return.

Questi sono solo due semplici esempi.

Se avete dubbi scrivete sul sito e riceverete subito una risposta.

0 commenti:

Posta un commento

Altri articoli interessanti