frames    noframes

Test introduttivo al corso di FI-ODL

 

 "Per gli studenti di fondamenti di informatica II "

Questo test introduttivo serve  per  valutare il livello base della preparazione dei partecipanti al corso.

Non ci si aspetta che tutti rispondano esattamente a tutte le domande ...

alla fine del corso un altro test verifichera' se la preparazione ha avuto i miglioramenti attesi, cioe' se il corso e' stato utile. 

I dati risultanti dal test  non verranno divulgati, se non in forma aggregata. 

Vi invitiamo alla compilazione e   Buon lavoro.

________________________________________________

Compilate il questionario  in tutte le sue parti ed inviate subito.

Cognome :      

Nome :                

Num. di matricola :                 

E-mail  :           

Corso :           


Leggete attentamente le domande del test e date la/le vostra/e risposta/e .


1) Per quanto tempo la memoria RAM di un personal computer conserva le informazioni?


Finchè  lo hard disk funziona in modo corretto ossia non vi sono settori danneggiati

Fintanto che il computer è alimentato

Fintanto che la scheda madre del computer  è alimentata con una batteria tampone
 

2) Che cosa e' la ALU ?

  Il processore del computer

  L' unita' legale aritmetica di un computer

  L' unita' aritmetico-logica

  L' unita' che si occupa della conversione da analogico a digitale 


3)  Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde ?

  38256

  45258

  33366

 41456

4) Il seguente pseudocodice, supponendo n>0: 

int a, b,n, somma=0;   leggi a,b,n ;  if(a!=b) allora       

somma=(somma+1) * n *(n+1)/2);   write(somma);     

quale problema risolve ?

 stampa  il valore [n*(n+1)/2 +1] * [n*(n+1)/2] soltanto se a e' diverso da b.
 stampa la somma dei numeri naturali  da 1 fino ad n soltanto se a e' diverso da b.
non funziona in quanto nella dichiarazione alla variabile somma abbiamo assegnato il valore zero.


5) La rappresentazione degli interi relativi  X , nell' intervallo  

[-(b^n )/2, (b^n)/2  ) , tramite il residuo modulo b^n di X, e' detta:


Rappresentazione in base b degli interi

Rappresentazione Ascii dei numeri in base b

Rappresentazione in complemento alla base b

Rappresentazione in modulo di un un intero in base b


6) Quali linguaggi di programmazione conosce ?

Pascal

C

C++

Java

Perl

Javascript

Nessuno

Inserite eventuali altri linguaggi di vostra conoscenza

 

7) Quale problema risolve il seguente algoritmo , se r e' un numero intero maggiore di 1 ?

1) leggi r;   2) cont <--- 1;   3) cont = r * cont; 4) somma= 1;

5) se (cont <= r)

 { somma <--- somma + cont;  cont <---  cont * 2; }

6) stampa somma;

Stampa della somma di tutti i numeri da 1 fino ad r+1

Stampa del valore r+1

Stampa,  del valore 2r + 1

Stampa,  del valore  2r


8) Quale/i fra le  opzioni sono corrette nel linguaggio C, avendo la seguente dichiarazione di struttura (selezionare tutte le opzioni di interesse):

struct ind { char nome[30]; char indir[40]; char citta[20];} ind_info; 

struct ind { char nome[30]; char indir[40]; char citta[20];} indirizzario;

struct ind *pun;

printf("%s\n",pun->nome);

ind_info.indir[29]='c';     

 

9) Quali fra i sotto-elencati sono dei sistemi operativi e che conosce :
  Microsoft internet explorer

  UNIX

  DOS

  NETSCAPE COMMUNICATOR

  WINDOWS 98 

  FRONT PAGE 2000

  LINUX


10) La seguente funzione C :  

long int F(int k) {if(k==0) return 1; else return k*F(k-1); }   cosa utilizza  e  per calcolare che cosa ?

usa la ricorsione  per calcolare la somma dei numeri interi da 1 fino a k.
usa la ricerca binaria e  calcola la somma dei numeri interi da 1 fino a k.

usa la ricorsione  per calcolare il fattoriale di k.

usa la ricorsione  per calcolare il fattoriale di k, ma la funzione e' non corretta.

 

11) Come puo' essere usata una stringa in un programma in linguaggio C ?

Soltanto attraverso un array di caratteri mono-dimensionale

 Attraverso una matrice il cui tipo e' char

Attraverso un vettore di caratteri e con un puntatore a carattere

Attraverso un vettore di caratteri avente dimensione pari alla lunghezza della stringa.

12) Eseguite ognuna delle seguenti attivita':

a) Scrivete l'intestazione di una funzione chiamata  scambia  che  riceva  come parametri due puntatori ai numeri in virgola mobile n ed m e che non restituisca alcun valore.

b) Scrivete il prototipo per la funzione della parte a)

c) Scrivete l' intestazione di una funzione chiamata  evaluate  che ricevendo un intero n ed un puntatore alla funzione  poly (funzione intera con un argomento intero), restituisca un intero ottenuto calcolando la funzione  poly  su n.

d) Scrivete il prototipo per la funzione della parte c)

    

 

13) Avendo la seguente definizione:

struct tab1
{
char nome[38];
char codice[5];
char telefon[20];
char fax[20];
char cap[6];
char citta[20];
char indiriz[45];
char note[51];
} CL1[100];

cosa rappresenta tale dichiarazione, se e' corretta ?

      

 14) Tenendo in considerazione la domanda 13) il seguente codice: int t=3; for(t=0;t<=99;t++) strcpy(CL1[t].nome,"nessuno"); cosa fa ?

  

 

15) Determinate quali fra le seguenti affermazioni sono vere e quali sono false: (facoltativamente potete scrivere la motivazione della risposta)

a) Se il puntatore di posizione di un file sequenziale fa riferimento ad un byte diverso dall'inizio di un file, quest'ultimo dovra' essere chiuso e riaperto per leggere nuovamente da quel punto (inizio file).

   motivazione :

b) La funzione fseek, puo' ricercare solo dall'inizio di un file.

   motivazione :

c) La funzione fprintf, puo' scrivere sullo standard di output.

   motivazione :

d) Per trovare un certo record in un file ad accesso casuale, non e' necessario scorrere tutti gli altri record.

   motivazione :

e) I record dei file ad accesso casuale non hanno una lunghezza uniforme.

   motivazione :

 

16) Nel programma seguente cosa fa la funzione nome_funz?

#include<stdio.h>
#include<stdlib.h>
 struct tab1
    { char carattere;
       struct tab1 *next;

    } info;

int main()
{
void nome_funz(char *);
char car;
char stringa[35];
printf("\ninserite una stringa\n");
gets(stringa); 
nome_funz(stringa);
 scanf("\n%c",&car);
return 0;
}

void nome_funz( char *strin )
{struct tab1 *iniz;
char car;
 if(*strin!=NULL)
 {
  iniz=malloc(sizeof(struct tab1));
  iniz->carattere=*strin;
  iniz=iniz->next;
  nome_funz(strin+1);
 }
iniz=NULL;
}

costruisce  ricorsivamente  una pila, aggiungendo ogni nuovo carattere di strin all'inizio

cancella l'ultimo carattere di strin in una lista semplice

costruisce   ricorsivamente una lista doppia, aggiungendovi ogni nuovo carattere di strin alla fine

costruisce   ricorsivamente una lista semplice, i cui nodi contengono i caratteri di strin

17) Avendo la  definizione

struct tab1
{ char nome1[38];
char codice[5];
char telefon[20];
char fax[20];
char cap[6];
char citta[20];
char indiriz[45];
char note[51];

struct tab1 *next;

struct tab1 *precedente;

} lista_doppia;

E' possibile creare una lista doppia ordinata? 

18) Come e' definito un albero binario di ricerca ?

 

19) Avendo definito, una struct albero, con il seguente prototipo  di funzione: 

struct albero *fun_alb( struct albero *radice, struct albero *r, char info); e' possibile costruire un albero binario di ricerca usando la funzione fun_alb ?

Si ma fun_alb deve restituire un void

No 

Si

Si ma non ordinato

20) Nella macchina virtuale del C nel modello a tempo di esecuzione, abbiamo le seguenti aree di memoria

a) area del codice

b) area dati globali

c) area heap

d) area stack 

elencate quali sono le funzioni che svolgono queste aree di memoria?

 

21) Un vettore elementare di nome vector, di 10 caratteri, come si puo' dichiarare nel linguaggio C?

 

22) la seguente dichiarazione int k[8]; cosa rappresenta?

 

23) (11001.1001) corrisponde a in base 10.

 

24) B1E7 esadecimale corrisponde a in base 2.

 

25) Cosa succede ai parametri attuali , di una funzione, dopo la cessata attivazione: nel passaggio per valore ed in quello per  indirizzo?

 

 26) Perche' nel passaggio di un array ad una funzione, quest'ultimo viene sempre passato per indirizzo nel linguaggio C?

 

 27) E' lecita la seguente definizione di struttura: struct{int giorno; int mese; int anno;}data;

NO non ci vuole il punto e virgola alla fine di data

SI

NO, manca il nome della struttura

SI, poiche' tutti i membri sono dello stesso tipo

 

28) Cosa fa la funzione malloc, il cui prototipo e': 

void *malloc(size_t dim);

 

29) Il numero di nodi di un albero binario completo, avente profondita' h e' pari a : supponendo, che la radice abbia profondita' zero.

 

30) Si assuma di rappresentare numeri in complemento a due. Se la rappresentazione di un numero mediante quattro bit e' 1101, la sua rappresentazione mediante sei bit e':

001101

011101

101101

111101

 

 

 

                 
 
   Controlli la correttezza dei dati ed invii il modulo

   N.B.  Il modulo va  inviato una sola volta