Per riassumere quanto detto finora, ecco un
buon esempio, che chiameremo quadrato.c, col quale potersi
confrontare e verificare quanto appreso sinora:
/* File header */
#include <stdio.h>
#include <stdlib.h>
/* Dichiarazione delle funzioni definite dal programmatore */
int quadrato(int valore); /*
* La funzione quadrato prende un valore
intero
* e ne restituisce il quadrato.
*/
int main(void)
{
int a;
a = quadrato(25);
printf("Valore del quadrato di 25: %d\n", a);
return EXIT_SUCCESS;
}
/* Implementazione della
funzione quadrato */
int quadrato(int valore)
{
int quad;
quad = valore * valore;
return quad;
}
Il funzionamento del programma è schematizzato in figura.
Quando il programma viene avviato viene innanzitutto
eseguita la funzione main() che dichiara la variabile a
di tipo intero: questa istruzione istruisce il compilatore riguardo
allallocazione di unarea di memoria di dimensione opportuna
per contenere un valore intero.
Listruzione successiva assegna ad a il valore di output
della funzione quadrato cui viene dato in input il valore
25.
Dopo che la funzione quadrato è stata eseguita il suo valore
di output è posto nella locazione di memoria di a.
In seguito la funzione di libreria printf stampa a video
la stringa Valore del quadrato di 25: , seguita dallattuale
valore di a (cioè 625), dopodiché va a capo.
Quindi il programma termina indicando il successo dellesecuzione.
La figura successiva mostra la struttura della funzione quadrato.
Nellesempio possiamo notare la dichiarazione
della funzione quadrato di tipo intero, che ha come parametro
una variabile intera e restituisce un valore intero, rappresentato
dal quadrato dell'input stesso.
Bisogna ricordare che le funzioni vengono viste in C come scatole
nere (black box), cioè tutto il loro contenuto è invisibile
allesterno, perciò tutte le variabili dichiarate al loro interno
non hanno visibilità all'esterno.
Nel nostro caso se si usasse la variabile quad all'esterno
della funzione quadrato si verificherebbe un errore, a meno
che tale variabile non venga dichiarata nuovamente allinterno
della funzione main.
Durante l'esecuzione, come è visibile dallo schema, alla variabile
a viene assegnato il valore della funzione quadrato
e poi tale valore è stampato con listruzione:
printf("Valore del
quadrato di 25: %d", a);
che significa: "stampa la stringa Valore del quadrato di 25:
e aggiungi ad essa il valore di tipo intero della variabile a."
Il simbolo %d sta appunto ad indicare il valore di tipo intero della
variabile a in formato decimale.
Per questo l'output a video del programma è:
Valore del quadrato di 25:
625
Adesso eccovi alcuni esercizi che siete già in grado di svolgere
e nei quali vi potete cimentare in attesa della prossima lezione.
Modificare l'esempio primo.c in modo che l'output sia:
Ciao,
quando
vai via?
usando prima un'unica chiamata a printf e poi tre diverse
chiamate a printf.
Riprendere l'esempio di funzione area_triangolo, modificandola
in modo da accettare in ingresso due parametri di tipo intero: uno
per la base e uno per laltezza.
Stampare nella funzione principale l'area del triangolo, avendo
assegnato i valori base=10 e altezza=25.
Modificare nell'esempio quadrato.c il corpo della funzione
principale (main), affinché alla funzione quadrato
sia passata una variabile anziché il valore 25.
Tale variabile deve essere precedentemente dichiarata e inizializzata
a piacere.
Indicare riga per riga gli errori presenti nel seguente
programma:
#include "stdio.h"
*/ Li troverai gli errori? */
int func2(int valore1, int valore2);
Main()
{
int b;
a=func(b);
b=4;b=b+a;
a=func2(a,b);
return EXIT_SUCCESS;
}
void func(int value)
{
int c;
c=value*4;
return 4;
}
int func2(int valore1, int valore2)
{
int c;
c= valore1+valore2;
}
/* Hai trovato gli errori? /*
Torna all'indice Generale del corso di Corso di C con Linux di Software Planet