/* modulo2.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', cioe' questo */ #include "modulo2.h" /* Variabile statica del modulo, non si confonde con la 'variabile' definita in modulo1 */ static int variabile = 10; /* Funzione statica del modulo, non si confonde con la funzione definita in 'modulo1' */ static void funzione () { /* Ciclo da 10 (valore impostato per la statica) a 20 - esegie solo al promo richiamo; * la seconda volta, variabile vale gia' 20, quindi non entra nemmeno nel for */ for (;variabile < 20; variabile ++) { if (variabile > 15) { // Per gli ultimi cinque cicli /* variabile locale AL BLOCCO */ int variabile = 100; /* Stampa il valore della locale */ printf ("Variabile piu' interna %d\n",variabile); } /* Stampa il valore della statica */ printf ("Variabile %d in questo ciclo\n",variabile); } } void esterna () { /* Richiama 'funzione' statica, non globale */ funzione (); }