Soluzione esame b del 13 giugno 2012
Upcoming SlideShare
Loading in...5
×
 

Soluzione esame b del 13 giugno 2012

on

  • 527 views

 

Statistics

Views

Total Views
527
Views on SlideShare
527
Embed Views
0

Actions

Likes
0
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Soluzione esame b del 13 giugno 2012 Soluzione esame b del 13 giugno 2012 Document Transcript

  • Abilità Informatiche Ingegneria Chimica Università di Roma “La Sapienza” Prof. Stelitano Antonino 13 Giugno 2012 compito BNome: Cognome: Matricola:Le risposte corrette valgono 1 punto, quelle errate -0,25 punti, quelle non date 0 puntiNota: Tra le proposte per ciascuna domanda una sola è esattaDomanda 1Si 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 2Si consideri il seguente programma C:#include <stdio.h>#define N 9int f(int *a, int b) {if( *a < *(a+b) ) /* punto 1 */return b;elsereturn *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("%dnn", f(V,0));/* punto 3 */for (i=0; i<N; i++) /* punto 4*/printf("%dn", 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. 1
  • Domanda 3Linguaggi 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 4Si 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 cashD Ad ogni ciclo il registro IR contiene l’istruzione da eseguire nel ciclo successivoDomanda 5Si consideri il seguente programma C:#include <stdio.h>#define N 9int f(int *a, int b) {if( *a < *(a+b) ) /* punto 1 */return b;elsereturn *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("%dnn", f(V,0));/* punto 3 */for (i=0; i<N; i++) /* punto 4*/printf("%dn", 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. 2
  • Domanda 6Si 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 7Si 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 8Si 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. 3
  • Domanda 9Si 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 10Si consideri il seguente programma C:#include <stdio.h>#define N 8main(){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. 4
  • Domanda 11Si scriva in MATLAB un codice che fornisca la seguente matrice: la prima riga sia composta dainumeri da 1 a 10, la seconda riga composta dai numeri da 11 a 20 e la e la terza dai numeri da 21 a30. Modificare la seconda riga in modo da annullarne gli elementi.Uno dei possibili modi di creare la matrice è: 5