/* modulo1.c
* Linguaggi e Traduttori
* Prof. Ing. Stefano Salvi
* Lezione 2b
*
* Esercizio 1;
* Scrivere un programma composto da due moduli: modulo1.c e modulo2.c. Si
* scriva anche l'header file modulo2.h relativo al modulo due.
* Il modulo 1 conterrà:
* una variabile globale intera di nome 'variabile' inizializzata ad 1
* La funzione 'funzione' nella quale è dichiarata la variabile intera
* locale 'variabile', inizializzata al valore 2.
* Questa funzione stamperà il suo nome ed il valore della variabile
* 'variabile'
* La funzione 'main' che richiamerà la funzione 'funzione' e la funzione
* 'esterna', che verrà definita in 'modulo2', della quale otterrà il
* prototipo dal file 'modulo2.h'
* Nel modulo2 invece troveremo:
* la variabile statica intera 'variabile' inizializzata a 10
* La funzione statica 'funzione' che contiene un ciclo che
* usa la variabile 'variabile' come indice, facendolo giungere a 20.
* All'interno del ciclo avremo un 'if' che, se 'variabile' supera 15,
* esegue il blocco che definisce una nuova 'variabile' inizializzata
* a 100 e la stampa; dopo l'if verra' di nuovo stampata 'variabile'.
* La funzione 'esterna' che richiamerà 'funzione'
* Si potrà anche provare a definire nel file header 'modulo2.h' la variabile
* intera 'doppia' e vedere che cosa succede.
*/
#include <stdio.h>
/* Carica le dichiarazioni relative a 'modulo2' */
#include "modulo2.h"
/* Variabile Globale */
int variabile = 1;
/* Funzione globale */
void funzione ()
{
/* Variablie locale - stesso nome e tipo della globale */
int variabile = 2;
printf ("In 'funzione' la variabile vale %d\n",variabile);
}
/* Funzione principale */
int main ()
{
printf ("All'inizio variabile (globale) vale %d\n",variabile);
funzione (); // Richiama la funzione definita piu' sopra
printf ("Adesso variabile (globale) vale %d\n",variabile);
esterna (); // Riciama la funzione definita in 'modulo 2'
printf ("Adesso variabile (globale) vale %d\n",variabile);
return 0;
}