Soluzione esame b del 13 giugno 2012

5

Click here to load reader

Transcript of Soluzione esame b del 13 giugno 2012

Page 1: Soluzione esame b del 13 giugno 2012

1

Abilità Informatiche

Ingegneria Chimica

Università di Roma “La Sapienza”

Prof. Stelitano Antonino

13 Giugno 2012

compito B

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 considerino i tipi di dato scalari primitivi nel linguaggio C:

A L’overloading degli operatori permette di denotare operatori diversi con lo stesso simbolo.

B E’ possibile applicare l’operatore % (modulo, o resto) a una variabile float e una variabile int.

C Nel linguaggio C il vettore e’ un tipo scalare primitivo.

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

operandi assumono uno stesso tipo.

Domanda 2

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 è 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.

Page 2: Soluzione esame b del 13 giugno 2012

2

Domanda 3

Linguaggi di programmazione.

A Le istruzioni in linguaggio PASCAL sono espresse mediante una sequenza di bit.

B Un programma di alto livello deve essere necessariamente tradotto per poter essere eseguito.

C Un compilatore per un linguaggio è indipendente dall’architettura HW/SW del computer utilizzato.

D Il compilatore serve solo per rilevare gli errori sintattici in un programma.

Domanda 4

Si consideri l’architettura di un Personal Computer.

A Il bus può essere utilizzato per il trasferimento di dati e istruzioni tra memoria e CPU.

B Nella fase di fetch viene eseguita l’istruzione indirizzata dal Program Counter.

C Il registro Flag (o PSW) contiene informazioni riguardanti l’ultima operazione eseguita dalla

cash

D Ad ogni ciclo il registro IR contiene l’istruzione da eseguire nel ciclo successivo

Domanda 5

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 Il ciclo al punto 4 stampa i seguenti valori (in linee separate): 2,1,3,3,4,5,5,7,6.

B Al punto 1 la variabile V non `e visibile.

C Al punto 3 la variabile i ha valore 0.

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

Page 3: Soluzione esame b del 13 giugno 2012

3

Domanda 6

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

main()

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

int i, x, y=0, z;

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

switch(V[i]%3-1) /*istruzione 2*/

{case 0: V[i]--;

case 1: x=V[i]; break;

case 2: z=0; break;

default: y=--x;

}

z=V[0]+V[2] - y; /* istruzione 3*/

}

A Il blocco di istruzioni corrispondente al case 1: viene eseguito 5 volte.

B L’esecuzione del ciclo for provoca 3 iterazioni.

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

D Immediatamente dopo l’istruzione 3, la variabile x ha il valore 7.

Domanda 7

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

main()

{int A; float B; char C, ch;

A=8; B=-2; C=’C’; ch=’D’;

A=( A%(int)B ?++A: ch-C); /* istruzione 1 */

B=A++/B; /* istruzione 2 */

ch=C+=1; ch-=C;/* istruzione 3 */

}

A Immediatamente dopo l’esecuzione dell’istruzione 1, la variabile A ha il valore corrispondente al

carattere ASCII ’F’.

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

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

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

Domanda 8

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.

Page 4: Soluzione esame b del 13 giugno 2012

4

Domanda 9

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.

Domanda 10

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={’M’,’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("Miao!\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 ”Miao”.

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

Page 5: Soluzione esame b del 13 giugno 2012

5

Domanda 11

Si scriva in MATLAB un codice che fornisca la seguente matrice: la prima riga sia composta dai

numeri da 1 a 10, la seconda riga composta dai numeri da 11 a 20 e la e la terza dai numeri da 21 a

30. Modificare la seconda riga in modo da annullarne gli elementi.

Uno dei possibili modi di creare la matrice è: