Corso di C con Linux

Esempio ed esercizi

 

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 all’allocazione di un’area di memoria di dimensione opportuna per contenere un valore intero.
L’istruzione 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 dall’attuale valore di a (cioè 625), dopodiché va a capo.
Quindi il programma termina indicando il successo dell’esecuzione.
La figura successiva mostra la struttura della funzione quadrato.

Nell’esempio 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 all’esterno, 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 all’interno 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 l’istruzione:

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 l’altezza.
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