Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà...

39
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 con risposte

Transcript of Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà...

Page 1: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

Laboratorio di Linguaggi

P R I M O C O M P I T I N O

Marco Tarini

Università dell’Insubria

Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese

Corso di Laurea in Informatica

Anno Accademico 2004/05

con risposte

Page 2: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Nella maggior parte delle architetture, quanti bytes occupano in memoria le variabili di tipo:

char A)

unsigned int B)

short int C)

double E)

float D)

Domanda 1 (1.5 punti)

Page 3: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Nella maggior parte delle architetture, quanti bytes occupano in memoria le variabili di tipo:

1 A)

4 B)

2 C)

8 E)

4 D)

Domanda 1 (1.5 punti)

Page 4: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 2 (2 punti)

A) Scrivere una funzione " meta_di " che, dato un numero intero, restituisce la sua metà.

B) In questo codice, usarla al posto dei puntiniper dimezzare la variabile x

(sugg: usare un assegnamento: x = ... )int main(){ int x=100; ... }

Page 5: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 2 (2 punti)

A) -

B) -

int main(){ int x=100; x = meta_di(x);}

int meta_di(int x){ return x / 2;}

(e' una "divisione intera")

Page 6: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 3 (2 punti)

A) Scrivere una procedura " dimezza " che, data un variabile intera, la dimezza.

B) In questo codice, usarla al posto dei puntiniper dimezzare la variabile x

int main(){ int x=100; ... }

Page 7: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 3 (2 punti)

A) -

B) -

int main(){ int x=100; dimezza(&x);}

int dimezza(int *x){ *x = *x / 2; }

(e' una "divisione intera")

Page 8: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 4 (1 punto)

Riscrivere i seguente comandi trovando una maniera più concisa diesprimere il literal a destra di ' = '

double x = 0.0000000000000001;

(sono 15 zeri dopo la virgola)

double y = 0.000000000000333;

(sono 12 zeri dopo la virgola)

Page 9: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 4 (1 punto)

Riscrivere i seguente comandi trovando una maniera più concisa diesprimere il literal a destra di ' = '

double x = 1e-16;

double y = 0.333e-12;

Page 10: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 5 (1.5 punti)

Nel seguente array:

se la locazione di memoria di base dell'array e' la locazione 12.000, quale sarà la locazione di:

double x[50];

x[2] x[12] A) B)

Page 11: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 5 (1.5 punti)

Nel seguente array:

se la locazione di memoria di base dell'array e' la locazione 12.000, quale sarà la locazione di:

double x[50];

x[2] x[12] A) B)

12.000+sizeof(double)x2 = 12.016

12.000+sizeof(double)x12 = 12.096

Page 12: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 6 (2.5 punti)

A) Scrivere la definizione di un nuovo tipo record (struct) che si chiama Nave per ogni "nave" si vorrà memorizzare:

• il nome di varo (che e' lungo al max 19 lettere)• il peso in tonnellate (non necessariamente intero)• il numero massimo di persone trasportabili

B) Quale sarà l'offset dell'ultimo campo? cioè la distanza della sua locazione di memoria

dalla locazione di memoria dell'inizio del record

Page 13: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 6 (2.5 punti)

A) Scrivere la definizione di un nuovo tipo record (struct) che si chiama Nave

B) Quale sarà l'offset dell'ultimo campo?

typedef struct { char nomeVaro[20]; float peso; int maxPersone; } Nave

sizeof(char)x20 + sizeof(float) = 24

(uno spazio in piu' per il terminatore

di stringa '\0')

oppure double

Page 14: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 7 (1 punto)

Dopo la seguente inizializzazione

di che tipo sono e quanto valgono le seguenti espressioni?

char s[]="pippo";

s[0] s[2] s[5]

Page 15: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 7 (1 punto)

Dopo la seguente inizializzazione

di che tipo sono e quanto valgono le seguenti espressioni?

char s[]="pippo";

'p' 'p' 0

char char char

oppure '\0'

Page 16: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 8 (1 punto)

Dato il seguente array

scrivere due assegnamenti per azzerare rispettivamente il primo e l'ultimo elemento

float x[50];

Page 17: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 8 (1 punto)

Dato il seguente array

scrivere due assegnamenti per azzerare rispettivamente il primo e l'ultimo elemento

float x[50];

x[0]=0f; x[49]=0f;

Page 18: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 9 (1 punto)

Scrivere la dichiarazione(con inizializzazione)di un array "pippo"di tre numeri che contiene, nell'ordine, i numeri 10, 20 e 40

Page 19: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 9 (1 punto)

int pippo[]={10,20,40};

int pippo[3]={10,20,40};

oppure:

Page 20: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 10 (2 punti)

al posto dei puntini, scrivere tre righe in cui:1.si definisce la variabile "x" come puntatore

ad intero2. la si alloca dinamicamente

(servendosi anche del costrutto sizeof )

3.si assegna il valore 10 alla variabile puntata

int main(){ ...}

Page 21: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 10 (2 punti)

al posto dei puntini, scrivere tre righe in cui:

int main(){ int* x; x = (int*)malloc(sizeof(int)); *x=10; ... free(x);}

opzionale perche' non espicitamente richiesto dal testo

Page 22: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 11 (3 punti)

00 00 00 0200 00 00 09

00 00 00 05

00 00 00 0500 00 00 08

61 2A 02 1C

00 00 00 07

12 33 A3 D0

Data il seguente stato della memoria e tabella degli identificatori :

0x612A02300x612A022C0x612A02280x612A02240x612A02200x612A021C0x612A02180x612A0214

indirizzo valore

ide. tipo locazione

I

intxx

pp int*

612A0224

612A022C

quanto valgono le seguenti espressioni?

xxA)

&xxB)

ppC)

*ppD) *(pp+1)F)

pp[1]E)

tabella degli identificatori

Page 23: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 11 (3 punti)

00 00 00 0200 00 00 09

00 00 00 05

00 00 00 0500 00 00 08

61 2A 02 1C

00 00 00 07

12 33 A3 D0

Data il seguente stato della memoria e tabella degli identificatori :

0x612A02300x612A022C0x612A02280x612A02240x612A02200x612A021C0x612A02180x612A0214

indirizzo valore

ide. tipo locazione

I

intxx

pp int*

612A0224

612A022C

quanto valgono le seguenti espressioni?

xxA)

&xxB)

ppC)

*ppD) *(pp+1)F)

pp[1]E)

tabella degli identificatori

&xx

pp

xx*pppp[1] e*(pp+1)

Page 24: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 12 (2.5 punti)

La dichiarazione:costruisce un array di dimensione FISSA

A) Scrivere due righe di codice che, invece,definiscono e allocano un array s di float di dimensione x,dove x è una variabile di tipo intero– sugg: usare i puntatori

B) Come si accede al quinto elemento?– se nei due casi è diverso,

specificare le due sintassi

float s[100];

Page 25: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 12 (2.5 punti)

La dichiarazione:costruisce un array di dimensione FISSA.

A) -

B) NON FA DIFFERENZA. In entrambi i casi:

float s[100];

float* s;s = (float*)calloc(x,sizeof(float));

s[4] oppure *(s+4)

Page 26: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 13 (1 punto)

Dopo le seguenti dichiarazioni:

scrivere una espressioneche non usi l'identificatore arre che sia equivalente all'espressione:

float arr[100];float *p = arr;

arr[2]

Page 27: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 13 (1 punto)

Dopo le seguenti dichiarazioni:

scrivere una espressioneche non usi l'identificatore arre che sia equivalente all'espressione:

float arr[100];float *p = arr;

*(p+2) oppure p[2]

Page 28: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 14 (2.5 punti)

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 = x;

*p = 11;A)

B)

C)

D)

*p = x + y;E)

*(*z) = 6;F)

Page 29: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 14 (2.5 punti)

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 = x;

*p = 11;A)

B)

C)

D)

*p = x + y;E)

*(*z) = 6;F)

w

rw rrw

rw rrrw

rrw

Page 30: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 15 (2 punti)

Riempire i puntini nella seguente def di funzione,

che prende in input un parametro di tipo "Pippo",

nel caso che:A) il parametro NON debba essere cambiato dalla

funzione,e occupi poca memoria

B) il parametro NON debba essere cambiato dalla funzione,ma occupi molta memoria

C) il parametro debba essere cambiato dalla funzione

int funz( ... )

Page 31: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 15 (2 punti)

Riempire i puntini nella seguente def di funzione,

che prende in input un parametro di tipo "Pippo",

nel caso che:A) il parametro NON debba essere cambiato dalla

funzione,e occupi poca memoria

B) il parametro NON debba essere cambiato dalla funzione,ma occupi molta memoria

C) il parametro debba essere cambiato dalla funzione

int funz( ... )

int funz( Pippo p )

int funz( const Pippo *p )

int funz(Pippo *p )

Page 32: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 16 (1 punto)

Se x e' di tipo double, di che tipo sono le espressioni:

x + 10.0

(int) x

&x

A)

B)

C)

Page 33: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 16 (1 punto)

Se x e' di tipo double, di che tipo sono le espressioni:

x + 10.0

(int) x

&x

A)

B)

C)

double

int

double*

Page 34: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 17 (0.5 punti)

Scrivere cosa produce il precompilatorea partire dal seguente programma:

#define TEST x+y

int p(int x, int y){ return TEST * 2;}

Page 35: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 17 (0.5 punti)

Scrivere cosa produce il precompilatorea partire dal seguente programma:

#define TEST x+y

int p(int x, int y){ return TEST * 2;}

int p(int x, int y){ return x+y * 2;}

Page 36: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

file "prova.c"

file "settings.h"

Domanda 18 (1 punto)

Scrivere cosa produce il precompilatorea partire dal file "prova.c":

#include "settings.h" void B(){ #if DEBUG if (x < 0) printf("x"); #endif printf(".");}

#define DEBUG 0

int _debug;

Page 37: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 18 (0.5 punti)

Scrivere cosa produce il precompilatorea partire dal file "prova.c":

file "prova.c"

file "settings.h" #include "settings.h"

void B(){ #if DEBUG if (x < 0) printf("x"); #endif printf(".");}

#define DEBUG 0

int _debug;int _debug; void B(){ printf(".");}

Page 38: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 19 (1 punto)

Cosa scrive il seguente programma?

#include <stdio.h> int main(){ int x=17; printf("uno: %d\n",x); printf("due: %04d\n",x); printf("tre: %x\n",x);}

Page 39: Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.

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 ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Domanda 19 (1 punto)

Cosa scrive il seguente programma?

#include <stdio.h> int main(){ int x=17; printf("uno: %d\n",x); printf("due: %04d\n",x); printf("tre: %x\n",x);}

uno: 17due: 0017tre: 11