Soluzioni abilità informatiche 16 maggio 2012

4
Abilità Informatiche Ingegneria Chimica Università di Roma “La Sapienza” Esercitazione del 16 Maggio 2012 Nome: Cognome: Matricola: 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 Domanda 1 Si consideri l’architettura di un Personal Computer. A Il clock comunica l’ora corrente ai dispositivi che la richiedono. B Durante un ciclo di esecuzione il registro PC contiene l’indirizzo dell’istruzione da eseguire nel ciclo successivo. C La memoria cache di primo livello non è volatile. D L’accesso ai registri della CPU è più lento rispetto all’accesso alla cache di primo livello. Domanda 2 Linguaggi di programmazione: A Un programma espresso in linguaggio macchina è una sequenza di bit B Un programma scritto in linguaggio assembler non necessita di traduzione. C Il debugger serve per trovare pi`u facilmente errori sintattici nei programmi. D Un programma che viene compilato Domanda 3 Si consideri il seguente programma C: #include <stdio.h> main() { int A=2; float B=A--; char C=A; if (--B) if(--A) C=’B’; else C=’A’; else C=A; /* punto 1 */ B=(A+=3, A--); /*istruzione 1*/ /* punto 2 */ { float num; num=(C>’B’? B--: B/A); /* punto 3*/ } /*punto 4*/ } A Al punto 3 la variabile num ha valore 8.8. B Al punto 4 la variabile num e‘ visibile. C L’istruzione 1 effettua 2 assegnamenti. D Al punto 1 la variabile A ha valore 0.

description

 

Transcript of Soluzioni abilità informatiche 16 maggio 2012

Page 1: Soluzioni abilità informatiche 16 maggio 2012

Abilità Informatiche

Ingegneria Chimica

Università di Roma “La Sapienza”

Esercitazione del 16 Maggio 2012

Nome: Cognome: Matricola: 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

Domanda 1

Si consideri l’architettura di un Personal Computer.

A Il clock comunica l’ora corrente ai dispositivi che la richiedono.

B Durante un ciclo di esecuzione il registro PC contiene l’indirizzo dell’istruzione da eseguire nel

ciclo successivo.

C La memoria cache di primo livello non è volatile.

D L’accesso ai registri della CPU è più lento rispetto all’accesso alla cache di primo livello.

Domanda 2

Linguaggi di programmazione:

A Un programma espresso in linguaggio macchina è una sequenza di bit

B Un programma scritto in linguaggio assembler non necessita di traduzione.

C Il debugger serve per trovare pi`u facilmente errori sintattici nei programmi.

D Un programma che viene compilato

Domanda 3

Si consideri il seguente programma C: #include <stdio.h>

main()

{ int A=2;

float B=A--;

char C=A;

if (--B)

if(--A)

C=’B’;

else

C=’A’;

else C=A;

/* punto 1 */

B=(A+=3, A--); /*istruzione 1*/

/* punto 2 */

{ float num;

num=(C>’B’? B--: B/A);

/* punto 3*/

}

/*punto 4*/

}

A Al punto 3 la variabile num ha valore 8.8.

B Al punto 4 la variabile num e‘ visibile.

C L’istruzione 1 effettua 2 assegnamenti.

D Al punto 1 la variabile A ha valore 0.

Page 2: Soluzioni abilità informatiche 16 maggio 2012

Domanda 4

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 3, la variabile w ha valore ’0’.

B nell’istruzione1 non è necessario dichiarare la variabile x. C Il programma può essere eseguito correttamente.

D Immediatamente dopo l’esecuzione dell’istruzione1, la variabile x ha il valore corrispondente

al codice ASCII del carattere ’A’.

Domanda 5

Si consideri il seguente programma C: #include <stdio.h>

main()

{int x[4]={0, 3, 4, 8};

int j, A, B=0, C;

for(j=3; j>=0; j--) /*istruzione 1*/

switch(x[j]%3-1) /*istruzione 2*/

{case 0: x[j]--;

case 1: A=x[j]; break;

case 2: C=0; break;

default: B=--A;

}

C=x[0]+x[2] - B; /* istruzione 3*/

}

A Immediatamente dopo l’istruzione 3, la variabile C ha il valore 3.

B Al termine dell’esecuzione, il valore di due elementi di V risultano modificati rispetto ai loro

valori iniziali.

C Al termine dell’esecuzione, il valore di V[3] e‘ uguale a 7.

D Immediatamente dopo l’istruzione 3, la variabile A ha il valore 1.

Page 3: Soluzioni abilità informatiche 16 maggio 2012

Domanda 6

Si consideri il seguente programma C: #include <stdio.h>

#define N 8

main()

{typedef float f[N];

typedef char c[N];

f A={0,0.5,1,1.5,2.0,2.5,3.0,3.5};

c B={’C’,’i’,’a’,’o’,0,1,2,3};

int i;

A[N-1]=0;

for (i=1; i<N; i+=i)

A[i]=B[N-i]/i;

/* punto 1 */

if (A[--i]?1:A[0])

printf("Ciao!\n");

else

{i=A[0];

for (;i<5;) printf("%c", B[i++]);

}

/* punto 2*/

}

A Il programma contiene un errore di sintassi.

B Al punto 2: A[i-1] ha valore 4.0.

C Il programma stampa ”Ciao”.

D Al punto 2: il valore di A[2] e’ 2.0.

Domanda 7

Si considerino i vettori nel linguaggio C:

A Gli elementi di un vettore sono tutti dello stesso tipo.

B Un vettore di caratteri può essere considerato una stringa se non contiene il carattere ’0’.

C Nella definizione di un vettore, la dimensione può essere espressa mediante il nome di una

variabile.

D L’indice di un elemento può essere una variabile di tipo float.

Domanda 8

Si considerino i tipi di dato scalari primitivi nel linguaggio C:

A La sottrazione tra un float e un char produce un errore in compilazione.

B Nel linguaggio C il vettore è un tipo scalare primitivo.

C L’applicazione della regola di conversione implicita produce una espressione in cui tutti gli

operandi assumono uno stesso tipo.

D Il criterio di equivalenza strutturale può consentire l’assegnamento del valore di una variabile di

tipo non primitivo a una variabile di tipo scalare primitivo.

Page 4: Soluzioni abilità informatiche 16 maggio 2012

Domanda 9

Si consideri il seguente programma C: #include <stdio.h>

#define N 9

int f(int *a, int b) {

if( *a < *(a+b) ) /* punto 1 */

return b;

else

return *a=f( a, b+1 )+b;

}

main() {

int i, V[N]={0,1,2,3,4,5,6,7,8};

for ( i=N-1; i>=0; i-=2 )

V[i]=(i+5)/2;

/*punto 2 */

printf("%d\n\n", f(V,0));

/* punto 3 */

for (i=0; i<N; i++) /* punto 4*/

printf("%d\n", V[i]);

}

A L’istruzione prima del punto 2 (V[i]=(i+5)/2) viene eseguita 4 volte.

B La funzione f `e tail-ricorsiva.

C L’istruzione prima del punto 1 (if( *a<*(a+b) )) viene eseguita 3 volte.

D L’istruzione al punto 3 stampa il valore 6.

Domanda 10

Si considerino le funzioni nel linguaggio C:

A Un file sorgente C, per essere compilato correttamente, deve contenere tutte le definizioni di

tutte le funzioni che utilizza.

B Una funzione non può restituire un tipo struct.

C Le istanze di funzioni utilizzano dei record di attivazione che vengono deallocati ogni volta che

vengono generate ricorsivamente altre istanze della stessa funzione.

D I parametri formali di una istanza di una funzione vengono inizializzati al valore dei parametri

effettivi (attuali) all’atto della chiamata.