• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Soluzioni abilità informatiche 16 maggio 2012
 

Soluzioni abilità informatiche 16 maggio 2012

on

  • 626 views

 

Statistics

Views

Total Views
626
Views on SlideShare
626
Embed Views
0

Actions

Likes
0
Downloads
14
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

    Soluzioni abilità informatiche 16 maggio 2012 Soluzioni abilità informatiche 16 maggio 2012 Document Transcript

    • Abilità Informatiche Ingegneria Chimica Università di Roma “La Sapienza” Esercitazione del 16 Maggio 2012Nome: 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 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 2Linguaggi di programmazione:A Un programma espresso in linguaggio macchina è una sequenza di bitB 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 compilatoDomanda 3Si consideri il seguente programma C:#include <stdio.h>main(){ int A=2;float B=A--;char C=A;if (--B)if(--A)C=’B’;elseC=’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.
    • Domanda 4Si 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 5Si 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.
    • Domanda 6Si 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={’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 7Si 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 8Si 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 9Si 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 `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 10Si 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.