Un blocco di funzione è composto da uno o più blocchi di
istruzioni e da istruzioni combinate in modo da svolgere un compito
specifico.
Durante lo sviluppo dei programmi, istruzioni e blocchi di istruzioni
vengono usati dalle funzioni per creare un singolo modulo, che si
occupa di risolvere un singolo aspetto di un problema.
Esaminiamo la seguente funzione:
1: int area_triangolo(void)
2: {
3: int base, area, altezza;
4: base = 10;
5: altezza = 5;
6: area = (base * altezza) / 2;
7: return area;
8: }
Ogni funzione ha una dichiarazione fatta in questo modo:
tipo_valore_restituito nome_funzione(tipo_parametri
parametri);
La nostra funzione area_triangolo restituisce un valore di
tipo int, ovvero un numero intero rappresentante l'area di
un triangolo avente base 10.
Esaminiamo ora la linea 3, nella quale troviamo il modo per definire
una variabile:
tipo_variabile nome_variabile;
Abbiamo già visto questa sintassi nellesempio della lezione
precedente per la dichiarazione della variabile a.
Se le variabili, come in questo caso, sono dello stesso tipo, allora
basta utilizzare una notazione ridotta del tipo:
tipo_variabile nome_variabile1,
nome_variabile2, nome_variabile3, ...;
Più avanti nel capitolo vedremo il significato dei tipi delle variabili.
Per comprendere il significato dellistruzione return
e del parametro void occorre sapere che una funzione
in un linguaggio di programmazione ha un significato abbastanza
simile alla matematica:
f: A->B
Funzione da A in B
Una funzione riceve da altre funzioni un insieme A di valori e restituisce
un insieme B di valori.
Nel caso in cui A sia vuoto (come nel nostro esempio) si specifica
void nei parametri della funzione:
int area_triangolo(void)
^^^^
Se è B ad essere vuoto, si specifica void prima della definizione
della funzione e si omette l'istruzione return, ad es.:
void nome_funzione(void)
{
int base;
base = 0;
}
Nel caso in cui le nostre funzioni debbano restituire un valore,
occorre dichiarare il tipo del valore che essa restituisce, come
abbiamo fatto nella linea 1 della funzione:
int area_triangolo(void);
In questo caso occorre usare l'istruzione return prima di
chiudere il blocco funzione per restituire il valore elaborato dalla
nostra funzione.
A questo punto passiamo a scrivere un primo semplice programma,
che chiameremo primo.c:
/* Primo programma in C
*/
#include <stdio.h>
int main(void) {
printf("Ciao Mondo!\n");
return 0;
}
La prima cosa che notiamo sono i simboli /* e */.
Il primo ha significa Apri un commento e il secondo
Chiudi il commento.
Vediamone un ulteriore esempio:
/*
Questo è un commento insensato:
secondo voi, chi è più bella:
Laetitia Casta, Cindy Crawford o Claudia Schiffer?
*/
Il compilatore ignora tutto ciò che trova tra /* e */.
Queste coppie di caratteri sono chiamate delimitatori di commento.
I commenti sono molto utili sia durante la stesura del codice, per
ricordarci cosa fa il programma, sia nella fase di debug, per cui
occorre molta cura nella loro scrittura, perché possono essere un
valido aiuto per la comprensione e la scoperta dei bug.
Una cosa importante da notare è che ogni commento aperto con /*
deve essere chiuso con */, infatti in ANSI C non è lecito scrivere
commenti annidati di questo tipo:
/*
Il programma analizza
/* le derivate ennesime */
*/
Torna all'indice Generale del corso di Corso di C con Linux di Software Planet