Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2006/07
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 1 Fatto: un programma C e' composto da un insieme di variabili e funzioni Domanda: da dove parte l'esecuzione?
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 2 il seguente codice: double a=5.0; void proc() { printf("%f",a); } void main() { double a=10.0f; proc(); } A) cosa scriverebbe se il C usasse lo scoping statico? B) cosa scriverebbe se il C usasse lo scoping dinamico? C) cosa scrive davvero? (essendo il C come e')
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 3 Questo programma compila senza errori? in caso positivo, dire cosa scrive in caso negativo, dire perchè e come si può rimediare int main() { int x; void procedura() { x = x + 1; } x = 100; funzione(); printf("%d\n",x); }
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 4 void incrm_se_postv (int x) { if (x>0) x = x + 1; } int main(){ int temp = 5; incrm_se_postv( temp ); printf("%d\n",temp); } Questo programma compila senza errori? in caso negativo, dire perchè e come rimediare in caso positivo, dire cosa scrive
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 8 Quanto vale l'intero x dopo ciascuno di questi assegnamenti? x = 0x10; x = 0x ; A) B)
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 12 Fornire un esempio qualunque di literal (valore costante) per ciascuno di questi tipi: char A) unsigned int B) double E) float D) F) almeno per il tipo A, fornire un secondo esempio di literal, in una forma diversa.
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 19 Scrivere un pezzo di programma che usi il costrutto for e che scriva sullo schermo gli N numeri naturali da 1 a N –includere le definizioni delle eventuali variabili utilizzate –Help: la sintassi del for è: for ( ; ; ) ;
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 20 Scrivere uno pezzo di programma che usi un solo costrutto while e che calcoli –la somma dei primi N numeri (da 1 a N) e –la somma dei quadrati dei primi N numeri Le due somme devono essere memorizzate nelle due variabili sum e sumquadr –Help: sintassi del while: while ( ) ;
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 21 Quanti accessi alla memoria in lettura, e quanti in scrittura, saranno necessari per eseguire i seguenti assegnamenti ? (assumere che gli identificatori rappresentino variabili del tipo corretto) x = 10; x = y; *p = *q; *p = x; *p = 11; A) B)B) C)C) D)D) E)E) *p = x + y; F)F) *(*z) = 6; G)G)
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda A 02 1C A3 D0 Data il seguente stato della memoria e tabella degli identificatori : 0x612A0230 0x612A022C 0x612A0228 0x612A0224 0x612A0220 0x612A021C 0x612A0218 0x612A0214 indirizzo valore ide.tipo locazione I int xx pp int* 612A A022C quanto valgono le seguenti espressioni? xx A) &xx B) pp C)C) *pp D)D) (*pp)+1 E)E) (*pp+1) F)F) pp[1] G)G) xx+1 H)H) tabella degli identificatori
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 25 al posto dei puntini scrivere un breve programma che costruisca un file di testo dal nome "testo.txt" contenente solo la scritta "ciao" –help: servono tre istruzioni: apertura, scrittura e... int main(){ FILE* file;... }
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 26 Scrivere cosa produce il precompilatore a partire dal seguente programma: #define TEST x+y int p(int x, int y) { if (TEST < 10) x = TEST; } return TEST; }
M a r c o T a r i n i ‧ L a b o r a t o r i o d i L i n g u a g g i ‧ / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a Domanda 28 Cosa scrive il seguente programma? (utilizzare un quadretto per carattere) #include int main() { int x=17; printf("uno: %d\n",x); printf("due: %04d\n",x); printf("tre: %x\n",x); printf("qua: %d%d\n",x,x); }