I SOTTOPROGRAMMI IN C
Il linguaggio C ha la possibilità di dichiarare ed usare
sottoprogrammi sia di tipo procedura che di tipo funzione, anche se a livello di
terminologia essi sono chiamati sempre funzioni, e le procedure sono
semplicemente delle funzioni che ritornano un valore di un tipo speciale,
void,
che ha un unico valore.
Inoltre il C ha solo parametri valore, e pertanto gli altri generi di
parametri devono
essere ottenuti in modo indiretto utilizzando i puntatori.
La forma di una dichiarazione di funzione in C è:
TYPE IDENTIFIER ( PARAMETERS )
BLOCK
- TYPE
- il tipo dei valori ritornati dalla funzione, non può essere un
array.
Si usa void
per le procedure (che sono infatti delle funzioni che non ritornano niente).
- IDENTIFIER
- il nome della funzione
- PARAMETERS
- le dichiarazoni dei parametri formali.
Si usa void
quando la funzione non ha alcun parametro.
I parametri, che sono tutti di tipo valore e sono passati per copia,
si dichiarano semplicemente
premettendo il tipo al nome del parametro e si separano con virgole.
- BLOCK
- è il corpo della funzione (un blocco), e quindi può
contenere dichiarazioni di variabili locali, cioè utilizzate solo
all'interno della funzione.
Se il sottoprogramma è una vera funzione, il C fornisce lo statement
return(EXPR);
per terminare il calcolo e ritornare il valore della funzione, che è
giusto il valore di EXPR.
La forma di un programma C con dichiarazioni di funzioni è
semplicemente una lista di dichiarazioni di funzioni e un main, come
prima.
Notare che il main è semplicemente una procedura di nome main
senza parametri, scritta usando la sintassi di una versione più
vecchia del C.
ESEMPI
- funzione che calcola il fattoriale
-
#include <stdio.h>
int Fatt(int n)
{
if(n < 0)
printf("Il numero non puo\' essere negativo\n");
else if(n == 0)
return(1);
else{
int f;
f = 1;
while(n >= 1){
f = f * n;
n = n-1;
};
return(f);
};
}
main(){
int n, f;
printf("dare il numero\n");
scanf("%d",&n);
f = Fatt(n);
printf("Il fattoriale di %d e\' %d \n",n, f);
}
- procedura per stampare una matrice
-
#include <stdio.h>
#define DIM 100
void Stampa_Mat(int m[DIM][DIM])
/*stampa m sullo standard output riga per riga*/
{
int i,j;
for(i=0; i < DIM; i=i+1){
for(j=0; j < DIM; j=j+1)
printf("%7d ",m[i][j]);
printf("\n");
}
}
main(){
int a[DIM][DIM], i, j, s;
printf("dare la matrice su una unica riga\n");
for(i=0; i < DIM; i=i+1)
for(j=0; j < DIM; j=j+1){
scanf("%d",&s); a[i][j]=s;};
Stampa_Mat(a);
}}
ESERCIZI
-
Dire che cosa fanno i seguenti programmi
......