Soluzione esonero del 4 aprile 2012

4
Abilità Informatiche Ingegneria Chimica Università di Roma “La Sapienza” Esonero del 4 Aprile 2012 Le risposte corrette valgono 1 punto, quelle errate -0,25 punti, quelle non date 0 punti Nota: Tra le proposte per ciascuna domanda una sola è esatta Nome: Cognome: MatricolaDomanda 1 Si consideri l’architettura di un Personal Computer: A Il clock è un circuito che emette una serie di impulsi con una frequenza costante. B Durante un ciclo di esecuzione il registro PC contiene l’indirizzo dell’istruzione da eseguire nel ciclo corrente. C L’accesso ai registri della CPU è più lento rispetto all’accesso alla cache di primo livello. D L’IR contiene il programma correntemente in esecuzione. Domanda 2 Si consideri il seguente programma C: #include <stdio.h> main() {int x; float y; char z, w; x=4; y=-2; z=’B’; w=’C’; x=( x%(int)y ?++x: w-z); /* istruzione 1 */ y=x++/y; /* istruzione 2 */ w=z+=1; w-=z; /* istruzione 3 */ } A Immediatamente dopo l’esecuzione dell’ istruzione 2, la variabile x ha il valore 4. B Immediatamente dopo l’esecuzione dell’ istruzione 3, le variabili z e w hanno lo stesso valore. C Immediatamente dopo l’esecuzione dell’ istruzione 3, la variabile z ha valore ’C’. D Immediatamente dopo l’esecuzione dell’ istruzione 3, la variabile w ha valore ’0’.

description

 

Transcript of Soluzione esonero del 4 aprile 2012

Page 1: Soluzione esonero del 4 aprile 2012

Abilità Informatiche

Ingegneria Chimica

Università di Roma “La Sapienza”

Esonero del 4 Aprile 2012

Le risposte corrette valgono 1 punto, quelle errate -0,25 punti, quelle non date 0 punti

Nota: Tra le proposte per ciascuna domanda una sola è esatta

Nome: Cognome:

Matricola:

Domanda 1 Si consideri l’architettura di un Personal Computer:

A Il clock è un circuito che emette una serie di impulsi con una frequenza costante.

B Durante un ciclo di esecuzione il registro PC contiene l’indirizzo dell’istruzione da eseguire nel ciclo corrente. C L’accesso ai registri della CPU è più lento rispetto all’accesso alla cache di primo livello.

D L’IR contiene il programma correntemente in esecuzione.

Domanda 2 Si consideri il seguente programma C:

#include <stdio.h>

main()

{int x; float y; char z, w;

x=4; y=-2; z=’B’; w=’C’;

x=( x%(int)y ?++x: w-z); /* istruzione 1 */

y=x++/y; /* istruzione 2 */

w=z+=1; w-=z; /* istruzione 3 */

}

A Immediatamente dopo l’esecuzione dell’istruzione 2, la variabile x ha il valore 4.

B Immediatamente dopo l’esecuzione dell’istruzione 3, le variabili z e w hanno lo stesso valore.

C Immediatamente dopo l’esecuzione dell’istruzione 3, la variabile z ha valore ’C’.

D Immediatamente dopo l’esecuzione dell’istruzione 3, la variabile w ha valore ’0’.

Page 2: Soluzione esonero del 4 aprile 2012

Domanda 3

Dato il seguente frammento di programma:

int a=1, b=7;

if ((--a > 0) || b++)

printf("%d %d", a, b);

else printf("%d %d", a+1, b+2);

Il frammento di programma:

A stampa 1 e 9

B stampa 12 e 15

C stampa 0 e 8

D stampa 1 e 12

Domanda 4

Nei linguaggi di programmazione quale affermazione è vera?

A L’esecuzione di un programma interpretato è tipicamente più veloce dell’esecuzione dello stesso programma compilato. B Un programma scritto in linguaggio assembler necessita di un traduttore.

C Un programma compilato e linkato è sicuramente privo di errori.

D Le istruzioni in linguaggio assembler sono espresse mediante una sequenza di bit.

Domanda 5

Indicare cosa viene stampato a video:

int func (int , int, int);

int main (void){

printf("Risultato=%d\n",func(7,4,8)); return 0;

}

int func (int a, int b, int c) {

int indice, ris=-1;

for (indice=a+b; indice>=c; indice-=a-1) ris+=indice*(-1);

return ris; }

A: Risultato= -54

B: Risultato= 1

C: Risultato=-12 D: L’esecuzione del programma genera un ciclo infinito

Page 3: Soluzione esonero del 4 aprile 2012

Domanda 6

Cosa dà in Output il seguente codice?

void computa (int*, int, int );

int main() {

int vettore[100]={6,12,23,1,4,2};

computa(vettore, 2, vettore[4]);

printf("elemento=%d \n \n", vettore[4]);

return 0; }

void computa (int *vett, int size, int fattore){

int i=2, j=0;

do {

vett[j++]=i*fattore*i;

i++;

}while (i<= size); }

Indicare cosa viene stampato a video quando eseguito: A: • elemento=5

B: • elemento=23

C: • elemento=4

D: • Il frammento di programma è errato

Domanda 7

Considerata la seguente procedura, indicare l’output

int main(void){ int a[5][3];

int *p, *q;

int i,j,m=8;

for(i=0; i<15; i++) a[0][i] = --m;

for(i=0; i < 3; i++){

for(j=1; j < 5;j++) printf("%5d",a[i][j]);

printf("\n");

}

8 2 4 7

3 6 2 2

-2 -1 -2 -3

6 5 4 3

3 2 1 0

0 -1 -2 -3

3 5 5

3 2 1

5 -1 6

-3 -4 -5 -6 -7 -8

2 6 1

4 3 2 1 0 3

-2 -3 -4

-5 -6 -7

Page 4: Soluzione esonero del 4 aprile 2012

Domanda 8

Indicare l’OUTPUT del seguente codice:

void f(int *l);

int main (void){

int x[5]={14, 7, -4, 6, 1}; f(x);

printf("%d",x[3]);

return 0;

}

void f(int *a) { a[1]=++a[4];

a[2]=a[19]*(-3);

}

A : • 5

B : • 1 C : • 6

D : • 23

Domanda 9

int main() { char *g;

char vett[10][20];

g = vett[2]; *g='2';

printf("%d %c\n", g== &vett[2][0], vett[2][0]-'0'+'F');

}

A: • il frammento di programma è sintatticamente scorretto

B: • il frammento di programma è corretto e stampa 1 B

C: • il frammento di programma è corretto e stampa 1 H D: • il frammento di programma è corretto e stampa 0 C

Domanda 10

Indicare l’output del seguente frammento di programma:

int main (void){

int vet[10],a, *p;

p=vet; for (a=0; a < 10; a++)

vet[a]=a;

printf("%d\n\n", *(4+p)+13);

}

A: • il frammento di programma è sintatticamente scorretto

B: • il frammento di programma è corretto e stampa 17 C: • il frammento di programma è corretto e stampa 11

D: • il frammento di programma è corretto e stampa il quinto elemento del vettore