LABORATORIO DI INFORMATICA: PROGRAMMAZIONE Problema

LABORATORIO DI INFORMATICA: PROGRAMMAZIONE
DOMANDE PER LA SECONDA PROVA IN LABORATORIO
Problema 1. È il software (ovvero le istruzioni che ordinano al calcolatore di eseguire azioni e di
prendere decisioni) che controlla i calcolatori (spesso indicati come hardware).
(1) Falso
(2) Vero
Problema 2. I calcolatori elaborano i dati sotto il controllo di insiemi di istruzioni detti programmatori.
(1) Falso
(2) Vero
Problema 3. Il linguaggio Java è stato sviluppato dalla AppleComputer.
(1) Falso
(2) Vero
Problema 4. Le classi sono entità statiche (definite prima dell’esecuzione), gli oggetti sono entità
dinamiche (che esistono solo durante l’esecuzione).
(1) Falso
(2) Vero
Problema 5. La dichiarazione di variabili di tipo classe ha una sintassi simile a quella usata nelle
dichiarazioni di variabili di un tipo di dato primitivo ed una semantica simile alla dichiarazione di
una variabile di tipo array.
(1) Vero
(2) Falso
Problema 6. Una variabile di tipo classe non contiene un oggetto di quella classe ma l’indirizzo
(riferimento) dell’area di memoria dove l’oggetto è memorizzato.
(1) Vero
(2) Falso
Problema 7. L’operatore new alloca la memoria per le variabili di istanza e restituisce un riferimento all’oggetto creato (che viene assegnato ad una variabile di tipo appropriato).
(1) Vero
(2) Falso
Problema 8. La dichiarazione di una variabile di tipo classe non crea alcun oggetto: il riferimento
corrispondente sarà null fino a quando l’oggetto non sarà creato.
(1) Falso
(2) Vero
Problema 9. Una funzione è un metodo che può restituire più di un valore.
(1) Vero
(2) Falso
1
Problema 10. I programmatori scrivono istruzioni in diversi linguaggi di programmazione, alcuni
direttamente comprensibili dal calcolatore ed altri che richiedono dei passi intermedi di traduzione.
Questi linguaggi si suddividono in linguaggi macchina, linguaggi assembler e linguaggi ad alto
livello.
(1) Falso
(2) Vero
Problema 11. Ogni calcolatore può comprendere direttamente solo il proprio linguaggio macchina.
(1) Falso
(2) Vero
Problema 12. I linguaggi macchina sono indipendenti dal calcolatore (ovvero, uno specifico
linguaggio macchina può essere utilizzato solo su un tipo di calcolatore).
(1) Falso
(2) Vero
Problema 13. Se p1 e p2 sono variabili di oggetto, la loro uguaglianza può essere verificata con
un test del tipo p1==p2.
(1) Falso
(2) Vero
Problema 14. Per controllare se due oggetti p1 e p2 hanno lo stesso valore si può usare il metodo
equals(), predefinito per tutte le classi. Per esempio, si può invocae p1.equals(p2).
(1) Vero
(2) Falso
Problema 15. Ad un oggetto String non si possono concatenare oggetti di altra natura.
(1) Falso
(2) Vero
Problema 16. Creare un array di oggetti di lunghezza N con new significa creare N riferimenti
(tutti null); i singoli oggetti dovranno essere creati esplicitamente con new.
(1) Vero
(2) Falso
Problema 17. L’operatore condizionale (exprBool)?expr1:expr2 è l’unico operatore di Java a
3 argomenti.
(1) Vero
(2) Falso
Problema 18. L’operatore && permette di non valutare l’espressione di destra se quella di sinistra
è falsa, mentre || permette di non valutare l’espressione di destra se quella di sinistra è vera.
(1) Falso
(2) Vero
Problema 19. I programmi Java normalmente passano attraverso quattro fasi: scrittura, compilazione, interpretazione ed esecuzione.
(1) Falso
(2) Vero
2
Problema 20. Poiché Java non è sensibile alle maiuscole, gli identificatori count e Count sono
identici.
(1) Falso
(2) Vero
Problema 21. Se si vuole dichiarare un numero reale in Java (ovvero, un numero con un punto
decimale), bisogna utilizzare il tipo float.
(1) Falso
(2) Vero
Problema 22. Il modo più semplice per leggere dati in Java consiste nell’utilizzare System.in.input,
che è analogo ad utilizzare System.out.println per l’output.
(1) Falso
(2) Vero
Problema 23. Ogni qualvolta un valore viene messo in una locazione di memoria, questo valore sostituisce il valore precedentemente contenuto nella locazione ed il valore precedente viene
distrutto.
(1) Falso
(2) Vero
Problema 24. Una volta che un programma ha ottenuto i valori per number1 e number2, l’istruzione seguente somma questi valori e memorizza la somma nella variabile sum:
sum = number1 + number2;
(1) Falso
(2) Vero
Problema 25. La divisione intera 7/4 ritorna il valore 1.75.
(1) Falso
(2) Vero
Problema 26. Java fornisce l’operatore di modulo %, che ritorna il quoziente della divisione intera.
(1) Falso
(2) Vero
Problema 27. Tutti gli operatori in Java hanno associatività da sinistra verso destra.
(1) Falso
(2) Vero
Problema 28. Non inizializzare una variabile definita in un metodo prima che la variabile sia usata
causa un errore di compilazione.
(1) Falso
(2) Vero
Problema 29. Si considerino i seguenti due frammenti di codice:
if (x>0)&&(x<10)
System.out.println( "x compreso tra 0 e 10" );
e
3
if (x>0&&x<10)
System.out.println( "x compreso tra 0 e 10" );
Quale delle seguenti affermazioni è vera?
(1) I due frammenti producono lo stesso output
(2) Il primo frammento non verrà compilato
(3) Il secondo frammento non verrà compilato
(4) Entrambi i frammenti non verranno compilati
Problema 30. L’ordine in cui un programma esegue le istruzioni è detto precedenza.
(1) Falso
(2) Vero
Problema 31. Gli oggetti hanno un comportamento come la dimensione, la forma, il colore ed il
peso.
(1) Falso
(2) Vero
Problema 32. Un file .java può contenere un qualunque numero di classi public.
(1) Falso
(2) Vero
Problema 33. Il tipo di dato primitivo float serve a memorizzare numeri in virgola mobile a
precisione singola.
(1) Falso
(2) Vero
Problema 34. Un vantaggio importante delle variabili di istanza è che i loro identificatori possono
essere usati nella definizione della classe (ovvero, in tutti i metodi della classe).
(1) Falso
(2) Vero
Problema 35. Variabili definite nel corpo di un metodo sono note come variabili globali.
(1) Falso
(2) Vero
Problema 36. Alle variabili locali viene sempre assegnato un valore di default mentre a quelle di
istanza non viene assegnato.
(1) Falso
(2) Vero
Problema 37. Solo i metodi public di una classe possono utilizzare le variabili di istanza nella
definizione della classe.
(1) Falso
(2) Vero
Problema 38. Normalmente, le istruzioni di un programma sono eseguite una dopo l’altra, nell’ordine in cui sono state scritte. Ciò è detta esecuzione sequenziale.
(1) Falso
(2) Vero
Problema 39. Ci sono diverse istruzioni Java che consentono ai programmatori di specificare che
l’esecuzione deve saltare ad una determinata istruzione: in questo caso, si parla di precedenza.
4
(1) Falso
(2) Vero
Problema 40. Una funzione si dice polimorfa se è capace di operare su oggetti di tipo diverso
specializzando il suo comportamento in base al tipo dell’oggetto su cui opera.
(1) Vero
(2) Falso
Problema 41. Tutti i programmi possono essere scritti utilizzando tre sole strutture di controllo,
ovvero la struttura sequenziale, la struttura di selezione e la struttura di ripetizione.
(1) Falso
(2) Vero
Problema 42. La struttura switch è detta una struttura di selezione multipla perché seleziona tra
molte diverse azioni.
(1) Falso
(2) Vero
Problema 43. Non inizializzare una variabile prima che la variabile sia utilizzata genera un errore
di compilazione.
(1) Falso
(2) Vero
Problema 44. Non è possibile modificare il valore della lunghezza di un array (da cui dipende la
quantità di memoria allocata).
(1) Falso sempre
(2) Vero
(3) Falso perché dinamicamente è possibile decrementare tale valore
Problema 45. Il blocco di istruzioni all’interno di una struttura if consiste di un’espressione il cui
valore di ritorno può essere true oppure false.
(1) Falso
(2) Vero
Problema 46. La struttura di selezione if-else permette al programmatore di specificare che una
diversa azione deve essere eseguita quando la condizione è vera da quando la condizione è falsa.
(1) Falso
(2) Vero
Problema 47. L’operatore condizionale è l’unico operatore ternario di Java: esso riceve due
operandi.
(1) Falso
(2) Vero
Problema 48. Inserire un punto e virgola dopo la condizione causa un errore logico nel caso di
una struttura if ed un errore sintattico nel caso di una struttura if-else (se la parte if ha un corpo
non vuoto).
(1) Falso
(2) Vero
Problema 49. Un blocco non può contenere dichiarazioni di variabili.
(1) Falso
5
(2) Vero
Problema 50. Quale dei seguenti non è un letterale Java (ovvero, non è un valore costante)?
(1) 36
(2) -29.5
(3) ’A’
(4) a
Problema 51. Java permette che l’inizializzazione di una variabile sia incorporata nella dichiarazione.
(1) Falso
(2) Vero
Problema 52. Java fornisce sia l’operatore unario di incremento (++) che l’operatore unario di
decremento (--). Se una variabile c deve essere incrementata di 1, l’operatore di incremento ++
può essere utilizzato al posto dell’espressioni c = c + 1 o c += 1.
(1) Falso
(2) Vero
Problema 53. L’operatore += somma il valore dell’espressione alla destra dell’operatore al valore della variabile alla sinistra dell’operatore e memorizza il risultato nella variabile alla destra
dell’operatore.
(1) Falso
(2) Vero
Problema 54. Post-incrementando (post-decrementando) una variabile, il valore attuale della variabile viene usato nell’espressione in cui appare e, successivamente, il valore della variabile viene
incrementato (decrementato) di 1.
(1) Falso
(2) Vero
Problema 55. Scrivere ++(x+1) è un corretto esempio di pre-incremento.
(1) Falso
(2) Vero
Problema 56. Le caratteristiche di portabilità di Java permettono ai programmatori di scrivere
programmi una sola volta, senza conoscere su quale piattaforma il programma verrà eseguito.
(1) Falso
(2) Vero
Problema 57. La precedenza di ++ è minore di quella di <=.
(1) Falso
(2) Vero
Problema 58. Talvolta, un algoritmo contiene decisioni nelle quali una variabile oppure un’espressione viene separatamente confrontata con ciascuno dei valori integrali (ovvero, valori del
tipo byte, short, int, long e char) che essa può assumere, e diverse azioni vengono eseguite.
Java fornisce la struttura case di selezione multipla per gestire questo tipo di decisioni.
(1) Falso
(2) Vero
6
Problema 59. I casi non esplicitamente verificati in un’istruzione switch senza un caso default
sono ignorati.
(1) Falso
(2) Vero
Problema 60. La struttura switch consiste di una serie di etichette case e di un caso obbligatorio
default.
(1) Falso
(2) Vero
Problema 61. Se si elencano, una di seguito all’altra, le etichette di casi diversi (ad esempio, case
1: case 2: senza istruzioni in mezzo) allora lo stesso insieme di azioni verrà eseguito per ciascuno
dei casi.
(1) Falso
(2) Vero
Problema 62. Java fornisce operatori logici che possono essere usati per formare condizioni più
complesse. Gli operatori logici sono &&, &, ||, |, ^ e !.
(1) Falso
(2) Vero
Problema 63. L’operatore && ha la stessa precedenza dell’operatore ||.
(1) Falso
(2) Vero
Problema 64. Java fornisce l’operatore ! per consentire al programmatore di invertire il significato
di una condizione.
(1) Falso
(2) Vero
Problema 65. A differenza degli operatori logici &&, &, ||, | e ^ che combinano due condizioni (operatori binari), l’operatore di negazione logica ha una sola condizione come operando
(operatore unario).
(1) Falso
(2) Vero
Problema 66. Java compila in byte code.
(1) Falso
(2) Vero
Problema 67. Gli algoritmi possono essere descritti solo mediante un linguaggio di programmazione.
(1) Falso
(2) Vero
Problema 68. La differenza tra i tipi int e long è la seguente:
(1) long può contenere sia numeri interi che reali
(2) long può contenere numeri interi più grandi di int
(3) long può contenere numeri interi più piccoli di int
(4) long può contenere solo numeri in virgola mobile
7
Problema 69. Un valore di tipo float può sempre essere assegnato ad una variabile di tipo short
(senza conversione esplicita).
(1) Falso
(2) Vero
Problema 70. L’istruzione System.out.println( "\""+"\"" ); stampa quattro doppi apici.
(1) Falso
(2) Vero
Problema 71. La seguente è una valida espressione Booleana in Java: (1 < count < 10).
(1) Falso
(2) Vero
Problema 72. Il valore dell’espressione di controllo di una struttura switch può essere di uno
qualunque dei tipi di dato primitivi.
(1) Falso
(2) Vero
Problema 73. Gli operatori di confronto (come < e !=) hanno una precedenza maggiore degli
operatori && e ||.
(1) Falso
(2) Vero
Problema 74. Quale delle seguenti è una caratteristica di un file?
(1) Un file ha un nome
(2) Un file è memorizzato nella memoria ausiliaria
(3) I contenuti di un file sono memorizzati usando bit e byte
(4) Tutte le risposte precedenti sono vere
Problema 75. Quale dei seguenti non è un programma?
(1) Un sistema operativo come Windows XP
(2) Un compilatore Java
(3) Un browser come Netscape
(4) Tutti i precedenti sono programmi
Problema 76. Un programma Java viene eseguito da:
(1) un compilatore
(2) un editor
(3) un interprete
(4) nessuno dei precedenti
Problema 77. Nella pratica, quale dei seguenti metodi viene generalmente utilizzato per descrivere
un algoritmo?
(1) Java o qualche altro linguaggio di programmazione di alto livello
(2) Italiano o qualche altro linguaggio naturale
(3) Una combinazione di Java ed italiano (pseudo-codice)
(4) Linguaggio macchina
Problema 78. Il simbolo = in un programma Java si legge come:
(1) è uguale a
(2) poni uguale a
8
(3) è lo stesso che
(4) Ha lo stesso significato del simbolo ==
Problema 79. Un algoritmo è
(1) un insieme di regole precise che conducono ad una soluzione
(2) sempre scritto in pseudo-codice
(3) l’inverso del logaritmo
Problema 80. Lo pseudo-codice è
(1) il codice che viene dato in input ad un compilatore
(2) il codice prodotto da un compilatore
(3) un misto di italiano e Java
(4) codice che non opera correttamente in quanto contiene errori
Problema 81. In Java le variabili sum e Sum
(1) sono le stesse
(2) sono differenti
(3) possono essere le stesse oppure differenti a seconda di quale calcolatore si usa
(4) non sono permesse come nomi di variabili
Problema 82. Il byte code è
(1) il programma tradotto dal compilatore Java
(2) un programma contenente un errore
(3) l’input del compilatore Java
(4) un modo di codificare tutti i simboli della tastiera
Problema 83. La locazione di una variabile Java fa riferimento
(1) ad un posto in memoria
(2) ad un numero di riga in un programma
(3) ad un nome di file
Problema 84. totalEggs; è un esempio di
(1) una corretta dichiarazione di variabile
(2) una dichiarazione di variabile in cui manca il tipo
(3) una punteggiatura errata in una dichiarazione di variabile
Problema 85. Le dichiarazioni di variabili devono apparire
(1) solo all’inizio di un programma
(2) ovunque prima che la variabile sia utilizzata
(3) ovunque
Problema 86. Due tipi di dato primitivi di Java sono double e int.
(1) Falso
(2) Vero
Problema 87. Si consideri il seguente frammento di codice:
int a = 5;
int b =100;
a=b;
Quali sono i valori di a e b?
(1) a è 5 e b è 100
9
(2) a è 100 e b è 5
(3) a è 5 e b è 5
(4) a è 100 e b è 100
Problema 88. Quale delle seguenti istruzioni di assegnazione non è legale, assumendo che a e b
sono dichiarate come int?
(1) a = b+10;
(2) a = a+10;
(3) a = a+b;
(4) a+10 = b;
Problema 89. Si consideri il seguente frammento di codice:
double d = 26.99;
int i;
int n;
i = (int) d;
n = (int)(-d);
(1) Il valore di i è 26 ed il valore di n è -26
(2) Il valore di i è 27 ed il valore di n è -27
(3) Il valore di i è 26 ed il valore di n è -27
(4) Il valore di i è 27 ed il valore di n è -26
Problema 90. I numeri reali sono rappresentati solo in modo approssimato dai calcolatori.
(1) Falso
(2) Vero
Problema 91. Quale delle seguenti istruzioni assegna un valore di tipo int alla variabile n?
(1) int i = n;
(2) int n = Input.getInt( "n?" );
(3) System.out.println( n );
(4) Tutte le precedenti
Problema 92. Quale dei seguenti rappresenta lo stesso valore di 2.3456e-2?
(1) 0.23456
(2) 23.456
(3) 0.023456
(4) 234.56
Problema 93. Si consideri il seguente frammento di codice:
int i = 10;
char c = ’c’;
long l = 99;
double d = 1.1;
Quale delle seguenti istruzioni di assegnazione è legale?
(1) c = i;
(2) d = i;
(3) i = l;
(4) i = d;
Problema 94. I valori 3 and 3.0
10
(1) sono dello stesso tipo
(2) sono di tipo diverso
(3) non hanno tipo
Problema 95. Si consideri il frammento di codice:
double d = 9.9;
int i = 2;
i = (int) d;
Quale delle seguenti affermazioni è vera?
(1) Il tipo della variabile d è cambiato
(2) Il valore della variabile d è cambiato
(3) Il tipo della variabile i è cambiato
(4) Il valore della variabile i è cambiato
Problema 96. Si consideri il seguente frammento di codice:
char c = ’2’;
int i = (int)c;
Quale delle seguenti affermazioni è corretta?
(1) La conversione del tipo char nel tipo int non è legale
(2) Il valore di i è 2
(3) Il valore di i è un intero, ma non è 2
(4) Nessuna delle precedenti
Problema 97. Il tipo del valore ritornato da un’espressione aritmetica dipende da
(1) il tipo della variabile a cui il valore dell’espressione viene assegnato
(2) il tipo della prima variabile nell’espressione
(3) la combinazione dei tipi utilizzati nell’espressione
Problema 98. Si consideri il seguente frammento di codice:
int w = 7/5;
int x = (-7)/5;
int y = 7%5;
int z = (-7)%5;
System.out.println( w+","+x+","+y+","+z );
Quali sono i valori stampati?
(1) 1,1,1,1
(2) 1,1,2,2
(3) 1,-1,2,-2
(4) 1,-1,2,2
Problema 99. Assumendo che a, b e c siano valori di tipo int, l’espressione a+b*c ritorna lo
stesso valore dell’espressione a+(b*c).
(1) Falso
(2) Vero
Problema 100. L’istruzione count--; è equivalente a
(1) count = count -1;
(2) count = -1;
(3) count -= 1;
11
(4) La prima e la terza risposta
Problema 101. Il simbolo + indica
(1) l’addizione
(2) l’addizione se entrambi gli operandi sono numeri
Problema 102. Quale delle seguenti affermazioni è vera?
(1) L’insieme dei caratteri del codice Unicode è un sottoinsieme dell’insieme dei caratteri del
codice ASCII
(2) L’insieme dei caratteri del codice Unicode è un soprainsieme dell’insieme dei caratteri del
codice ASCII
(3) L’insieme dei caratteri del codice Unicode è un altro nome per l’insieme dei caratteri del
codice ASCII
(4) Nessuna delle precedenti
Problema 103. L’espressione 5/2 ritorna il valore
(1)
(2)
(3)
(4)
2.0
2
2.5
3.0
Problema 104. L’espressione 11%9 ritorna il valore
(1)
(2)
(3)
(4)
1
1.0
2
2.0
Problema 105. Una conversione di tipo è
(1)
(2)
(3)
(4)
una dichiarazione di una variabile
un cambio del tipo di una variabile
un cambio del tipo di un valore
un cambio del valore di una variabile
Problema 106. Si consideri il seguente frammento di codice:
int x;
x = Input.getInt( "Inserisci x" );
if (x>=0)
System.out.println( x );
Quale delle seguenti affermazioni è vera?
(1)
(2)
(3)
(4)
Il frammento di codice non verrà compilato perché non vi è un else
Se il valore inserito di x è positivo, non viene prodotto alcun output
Se il valore inserito di x è negativo, non viene prodotto alcun output
Se il valore inserito di x è zero, non viene prodotto alcun output
Problema 107. Si consideri il seguente frammento di codice:
int x;
x = Input.getInt( "Inserire x" );
if (x>=0)
System.out.println( "The input is" );
12
System.out.println( x );
Quale delle seguenti affermazioni è vera?
(1) Il valore di x verrà stampato comunque
(2) Il valore di x verrà stampato solo se l’input è positivo
(3) Il valore di x verrà stampato solo se l’input è positivo oppure zero
(4) Il valore di x verrà stampato solo se l’input è negativo
Problema 108. Quale delle seguenti non è un’espresssione Booleana valida?
(1) 0 > x > -5
(2) x > -5
(3) (0 > x) && (x > -5)
(4) (0 > x) && (-5 < x)
Problema 109. Quali delle seguenti espressioni Booleane ritornano lo stesso risultato di x<y?
(1) y>=x
(2) y>x
(3) !(x>=y)
(4) La seconda e la terza espressione
Problema 110. Si consideri il seguente frammento di codice:
int x;
x = Input.getInt( "Inserisci x" );
if (x>=0)
System.out.println( "Input positivo:" );
System.out.println( x );
else
System.out.println( "Input negativo:" );
System.out.println( x );
Quale delle seguenti affermazioni è vera?
(1) Il frammento di codice non verrà compilato
(2) Se il valore inserito per x è positivo, solo il messaggio Input positivo: sarà mostrato
(3) Se il valore inserito per x è positivo, il messaggio Input positivo: sarà mostrato, seguito dal
valore di x, mostrato una volta
(4) Se il valore inserito per x è positivo, il messaggio Input positivo: sarà mostrato, seguito dal
valore di x, mostrato due volte
Problema 111. Si consideri il seguente frammento di codice:
int x;
x = Input.getInt( "Inserire x" );
if (x>=0)
{
System.out.println( "Input positivo:" );
System.out.println(x);
} else
System.out.println( "Input negativo:" );
System.out.println( x );
Quale delle seguenti affermazioni è vera?
(1) Il frammeno di codice non verrà compilato
13
(2) Se il valore inserito per x è positivo, solo il messaggio Input positivo: verrà mostrato
(3) Se il valore inserito per x è positivo, il messaggio Input positivo: verrà mostrato, seguito
dal valore di x, mostrato una volta
(4) Se il valore inserito per x è positivo, il messaggio Input positivo: verrà mostrato, seguito
dal valore di x, mostrato due volte
Problema 112. Quali dei seguenti operatori possono essere usati per formare espressioni Booleane
più grandi a partire da espressioni Booleane più piccole?
(1) &&
(2) ||
(3) <=
(4) Il primo ed il secondo
Problema 113. Si considerino i due seguenti frammenti di codice:
if (a>100)
{
System.out.println( "a grande" );
}
else if (a>0)
{
System.out.println( "a positivo" );
}
else
{
System.out.println( "a negativo oppure zero" );
}
e
if (a>100)
{
System.out.println( "a grande" );
}
if (a>0)
{
System.out.println( "a positivo" );
}
else
{
System.out.println( "a negativo oppure zero" );
}
Quale delle seguenti affermazioni è vera?
(1) Entrambi i frammenti producono lo stesso output
(2) Entrambi i frammenti producono lo stesso output se a è maggiore di 100
(3) Entrambi i frammenti producono lo stesso output se a è maggiore di 0
(4) Il secondo frammento produce due linee di output se a è maggiore di 100
14
Problema 114. L’espressione di controllo di un’istruzione switch può ritornare un valore di quale
dei seguenti tipi?
(1) float
(2) char
(3) Nessuno dei precedenti tipi
(4) Entrambi i precedenti tipi
Problema 107. Si consideri il seguente frammento di codice:
int x;
x = Input.getInt( "Inserire x" );
if (x>=0)
System.out.println( "The input is" );
System.out.println( x );
Quale delle seguenti affermazioni è vera?
(1) Il valore di x verrà stampato comunque
(2) Il valore di x verrà stampato solo se l’input è positivo
(3) Il valore di x verrà stampato solo se l’input è positivo oppure zero
(4) Il valore di x verrà stampato solo se l’input è negativo
Problema 116. Si consideri il seguente frammento di codice:
int x;
x = Input.getInt( );
switch (x)
{
case 0: System.out.print( "zero" );
case 1: System.out.println( "uno" );
case 2: System.out.println( "due" );
default: System.out.println( "x maggiore di due" );
}
Quale delle seguenti affermazioni è vera?
(1) Quando il valore di x è 1 solo "uno" sarà mostrato
(2) Quando il valore di x è 1 solo "uno" e "due" saranno mostrati
(3) Quando il valore di x è 1 sia "uno" che "due" che "zero" saranno mostrati
(4) Nessuna delle precedenti
Problema 117. Il tipo boolean
(1) è un tipo primitivo
(2) è un tipo classe
(3) è lo stesso che il tipo int
(4) non è proprio un tipo
Problema 118. In Java, il valore false è
(1) una costante di tipo boolean
(2) l’intero 0
(3) entrambi i precedenti
(4) nessuno dei precedenti
Problema 119. Quali delle seguenti istruzioni di ripetizione eseguono sempre almeno una volta il
loro corpo?
15
(1) Istruzione while
(2) Istruzione do-while
(3) Istruzione for
(4) Tutte le precedenti
Problema 120. Si consideri il seguente frammento di codice:
int x = 0;
while (x<10)
x++;
System.out.println( x );
Quale delle seguenti affermazioni è vera?
(1) 10 diversi valori di x sono stampati
(2) 9 diversi valori di x sono stampati
(3) Un valore di x viene stampato
(4) Il frammento di codice genera un ciclo infinito
Problema 121. Si consideri il seguente frammento di codice:
int total = 0;
int next;
do
next = Input.getInt( "Inserire un numero maggiore di 0" );
total = total + next;
while (next>0)
Quale delle seguenti affermazioni è vera?
(1) total sarà uguale alla somma di tutti i numeri positivi inseriti prima che 0 oppure un
numero negativo sia inserito
(2) Il frammento di codice non viene compilato perché mancano le parentesi graffe del corpo
del ciclo
(3) Il frammento di codice non viene compilato perché manca il punto e virgola alla fine
dell’istruzione do-while
(4) Sia la seconda che la terza affermazione
Problema 122. Quale delle seguenti può essere usata come espressione di controllo di un’istruzione while oppure di un’istruzione do-while?
(1) (1)
(2) (x > (y + 1))
(3) (x + y)
(4) Tutte le precedenti
Problema 123. Si consideri il seguente frammento di codice:
int a = 9;
while (a!=0)
{
a = a - 2;
System.out.println( a );
}
Quale delle seguenti affermazioni è vera?
(1) Il ciclo stampa i numeri dispari da 9 ad 1 e poi si ferma
16
(2) Il ciclo stampa i numeri dispari da 7 ad 1 e poi si ferma
(3) Il ciclo stampa i numeri pari da 8 a 0 e poi si ferma
(4) Il ciclo è infinito
Problema 124. Si consideri il seguente frammento di codice:
int x;
int y = 99;
for (x = 10; x < y; x = x + 10)
{
System.out.println( x+", "+y );
}
Quale delle seguenti istruzioni produrrà lo stesso output?
(1)
int x;
int y = 99;
while (x<y)
{
int x;
System.out.println( x+", "+y );
x = x + 10;
}
(2)
int x = 10;
int y = 99;
do
{
x = x + 10;
System.out.println(x + ", "+ y);
} while (x<y);
(3)
int x = 10;
int y = 99;
while (x<y)
{
System.out.println( x+", "+y );
x = x + 10;
}
(4) Nessuna delle precedenti
Problema 125. La principale differenza tra un ciclo while ed un ciclo do-while è che
(1) un ciclo while viene sempre eseguito almeno una volta, mentre un ciclo do-while può
essere eseguito zero volte
(2) un ciclo do-while viene sempre eseguito almeno una volta, mentre un ciclo while può
essere eseguito zero volte
(3) sono due nomi diversi per la stessa cosa e non vi è alcuna differenza
(4) un ciclo while non può avere le parentesi graffe intorno al suo corpo, mentre un ciclo
do-while può avere le parentesi graffe intorno al suo corpo
17
Problema 126. È possibile che il corpo di un ciclo while venga eseguito zero volte.
(1) Falso
(2) Vero
Problema 127. Una struttura di ripetizione consente al programmatore di specificare che un’azione
sia ripetuta fintanto che una certa condizione rimane vera.
(1) Falso
(2) Vero
Problema 128. Se la condizione di una struttura while è inizialmente vera, le istruzioni del corpo
non verranno mai eseguite.
(1) Falso
(2) Vero
Problema 129. La ripetizione controllata da un contatore utilizza una costante, detta contatore,
per controllare il numero di volte che un insieme di istruzioni verrà eseguito.
(1) Falso
(2) Vero
Problema 130. La ripetizione controllata da un contatore richiede il nome di una variabile di
controllo (detta contatore), il valore iniziale del contatore, l’incremento (o decremento) con il
quale il contatore è modificato ad ogni iterazione del ciclo, e la condizione che verifica il valore
finale del contatore (ovvero, se il ciclo deve proseguire).
(1) Falso
(2) Vero
Problema 131. Poiché i numeri in virgola mobile possono essere approssimati, il controllo di
un ciclo che faccia uso di variabili di tipo reale può causare valore imprecisi e, quindi, verifiche
inaccurate di terminazione.
(1) Falso
(2) Vero
Problema 132. La struttura di ripetizione for consente di gestire tutti i dettagli di una ripetizione
controllata da un contatore.
(1) Falso
(2) Vero
Problema 133. Supponiamo che un programma cicli 10 volte facendo uso della condizione di
continuazione counter<=10. Se il programmatore ha erroneamente scritto counter<10, il ciclo
sarebbe eseguito solo nove volte. Questo è un frequente errore sintattico.
(1) Falso
(2) Vero
Problema 134. Quando una struttura for inizia la sua esecuzione, è certo che il suo corpo sarà
eseguito almeno una volta.
(1) Falso
(2) Vero
Problema 135. Non è possibile modificare il valore di una variabile di controllo nel corpo di una
struttura for.
(1) Falso
18
(2) Vero
Problema 136. Esiste una corrispondenza ben precisa fra nomi delle classi e nomi di file: in
un file sorgente ci può essere un’unica classe ‘public’, che deve avere lo stesso nome del file
(case-sensitive!).
(1) Vero
(2) Falso
Problema 137. La seguente struttura for (di cui solo l’intestazione è mostrata) modifica la variabile di controllo da 100 ad 1 con un decremento di 1:
for (int i = 100; i<=1; i--)
(1) Falso
(2) Vero
Problema 138. Nella struttura while, la condizione di continuazione del ciclo viene verificata
all’inizio del ciclo prima che il corpo del ciclo sia eseguito.
(1) Falso
(2) Vero
Problema 139. Quando un ciclo do-while termina, l’esecuzione continua con l’istruzione successiva alla riga do.
(1) Falso
(2) Vero
Problema 140. Una eccezione non catturata si propaga verso l’esterno, di blocco in blocco: se
raggiunge il main, provoca la terminazione immediata del programma.
(1) Falso
(2) Vero
Problema 141. Si indichi quale delle seguenti affermazioni non corrisponde ad un comportamento
che può essere assunto da un metodo che invoca un altro metodo che solleva un’eccezione:
(1) può catturare l’eccezione e gestirla;
(2) può lasciare passare l’eccezione senza dichiararla nella sua clausola throws;
(3) può catturare l’eccezione e trasformarla in una nuova di un tipo incluso nella sua clausola
throws;
(4) può dichiarare l’eccezione nella sua clausola throws e lasciarla quindi passare.
Problema 142. Se in una istruzione try-catch è presente la clausola finally, il suo blocco
di istruzioni viene comunque eseguito (indipendentemente dal fatto che un’eccezione sia stata
generata/catturata o meno).
(1) Falso
(2) Vero
Problema 143. Supponendo che il metodo getName() ritorni un valore di tipo String, quale
delle seguenti istruzioni è legale?
(1)
(2)
(3)
(4)
int string = getName();
int string = getName;
String s = getName();
char c = getName();
19
Problema 144. Supponendo che il metodo getNumber() ritorni un valore di tipo int, quale delle
seguenti istruzioni non è legale?
(1) int num = getNumber();
(2) double dbl = getNumber();
(3) long lng = getNumber();
(4) String s = getNumber();
Problema 145. Supponendo di aver dichiarato il metodo void doAction(), quale delle seguenti
istruzioni è legale?
(1) int num = doAction();
(2) double dbl = doAction();
(3) doAction();
(4) doAction;
Problema 146. In un metodo void, quali delle seguenti affermazioni è vera?
(1) Deve contenere un’istruzione return
(2) Può contenere un’istruzione return
(3) Può contenere una o più istruzioni return
(4) La seconda e la terza affermazione
Problema 147. Una variabile utilizzata in un metodo può essere
(1) una variabile globale
(2) una variabile locale al metodo
(3) una variabile d’istanza
(4) la seconda e la terza affermazione
Problema 148. Consideriamo un metodo definito come segue:
int myMethod()
{
int x = 10;
{
int y = x*x;
}
return y;
}
Quale delle seguenti affermazioni è vera?
(1) Il metodo ritorna il valore 100
(2) Il metodo ritorna il valore 0
(3) Il compilatore darà un messaggio di errore
(4) Il metodo ritorna un valore non definito
Problema 149. Consideriamo il seguente frammento di codice:
int sum = 0;
for (int n = 1; n<=2; n++);
sum = sum+n;
System.out.println( sum );
Quale delle seguenti affermazioni è vera?
(1) Viene mostrato il valore 3
20
(2) Viene mostrato il valore 0
(3) Viene mostrato il valore 2
(4) Il codice genera un errore di compilazione
Problema 150. Quale dei seguenti non è un argomento valido per un parametro formale di tipo
double?
(1)
(2)
(3)
(4)
50
-3.56
2.5*3.56
Nessuno dei valori precedenti non è valido
Problema 151. Quale delle seguenti affermazioni non è vera?
(1)
(2)
(3)
(4)
Un metodo può avere zero o più parametri
L’intestazione di un metodo deve specificare il tipo di ogni parametro
Solo i metodi che ritornano un valore possono avere parametri
I parametri di un metodo sono locali a quel metodo
Problema 152. Consideriamo il seguente frammento di codice:
void myMethod( char letter )
{
letter = ’A’;
}
char ch = ’B’;
myMethod( ch );
System.out.println( ch );
Quando viene eseguito, l’output è
(1) B
(2) A
(3) Nessuno, perché il codice genera un errore di compilazione
Problema 153. Consideriamo il seguente frammento di codice:
boolean b = true;
boolean myMethod( boolean localBoolean )
{
localBoolean = !localBoolean;
return (localBoolean==b);
}
b = myMethod( b );
System.out.println( b );
Quando viene eseguito, l’output è
(1) true
(2) false
Problema 154. Quando si invoca un metodo, che ha un parametro formale exParam, è legale che
l’argomento corrispondente si chiami exParam?
(1) Si, purché abbiano lo stesso tipo
(2) No e verrebbe generato un errore di compilazione
(3) No e verrebbe generato un errore durante l’esecuzione
21
Problema 155. Consideriamo il metodo
double absDoubleValue( double x )
{
if (x>=0)
return x;
else
return -x;
}
Quale delle seguenti potrebbe essere una pre-condizione accettabile per questa procedura?
(1) Il valore di x deve essere positivo
(2) Il valore di x deve essere negativo
(3) Il valore di x è un qualunque valore di tipo double
(4) Il valore di x deve essere diverso da zero
Problema 156. Consideriamo il metodo
double absDoubleValue( double x )
{
if (x>=0)
return x;
else
return -x;
}
Quale delle delle seguenti potrebbe essere una post-condizione accettabile per questa procedura?
(1) Se l’argomento è positivo, allora il valore di ritorno è positivo
(2) Se l’argomento è zero, allora il valore di ritorno è positivo
(3) Se l’argomento è negativo, allora il valore di ritorno è positivo
(4) Il valore di ritorno è sempre il valore assoluto dell’argomento
Problema 157. Se un metodo ha variabili locali, può un altro metodo accedere alle variabili locali
del primo metodo?
(1) Si
(2) No
Problema 158. Un metodo con il nome setValue probabilmente
(1) ha un tipo di ritorno ed un parametro
(2) ha un tipo di ritorno e nessun parametro
(3) ha un parametro e nessun tipo di ritorno (ovvero, è di tipo void con uno o più parametri)
(4) non ha un tipo di ritorno né un parametro (ovvero, è di tipo void con nessun parametro)
Problema 159. La convenzione usata per i nomi di metodi in questo corso è
(1) il nome del metodo deve cominciare con una lettera maiuscola
(2) il nome del metodo deve cominciare con una lettera minuscola
(3) il nome del metodo deve contenere il simbolo _
(4) nessuna delle precedenti
Problema 160. Quale dei seguenti tipi di argomento può essere modificato dall’invocazione di un
metodo?
(1) Una variabile di tipo double
22
(2) Un valore di tipo double
(3) Non è possibile modificare un argomento di tipo primitivo con un’invocazione di metodo
Problema 161. I metodi non di tipo void devono contenere una o più istruzioni return.
(1) Falso
(2) Vero
Problema 162. I nomi dei parametri formali sono locali ad un metodo a meno che il nome
dell’argomento non sia lo stesso che il nome del parametro formale.
(1) Falso
(2) Vero
Problema 163. La programmazione orientata agli oggetti incapsula dati e metodi in classi: i dati
ed i metodi di una classe sono fortemente collegati tra di loro.
(1) Falso
(2) Vero
Problema 164. Come l’istanza di un tipo di dato primitivo (come int) è detta variabile, cosı̀
l’istanza di un tipo classe è detta oggetto.
(1) Falso
(2) Vero
Problema 165. Tutti gli oggetti Java sono passati per valore.
(1) Falso
(2) Vero
Problema 166. La definizione di una classe con modificatore public deve essere memorizzata in
un file che ha esattamente lo stesso nome della classe e come estensione .class.
(1) Falso
(2) Vero
Problema 167. Quando viene creata la definizione di una classe, si usano sempre pezzi della
definizione di una classe esistente.
(1) Falso
(2) Vero
Problema 168. Ogni classe Java è una sottoclasse di Object e, quindi, eredita i metodi definiti
nella classe Object.
(1) Falso
(2) Vero
Problema 169. Le parole chiave public e private sono nomi di variabili d’istanza.
(1) Falso
(2) Vero
Problema 170. Quando un oggetto viene creato, generalmente le sue variabili d’istanza sono
incapsulate nell’oggetto e possono essere utilizzate solo attraverso metodi della classe dell’oggetto
(normalmente attraverso i metodi privati della classe).
(1) Falso
(2) Vero
Problema 171. Normalmente si hanno diversi costruttori per un classe: ciò può essere ottenuto
attraverso la sovrascrittura dei metodi.
23
(1) Falso
(2) Vero
Problema 172. Per scrivere il miglior programma possibile, il programmatore deve conoscere
perfettamente i dettagli interni di ogni classe che il programma utilizza.
(1) Falso
(2) Vero
Problema 173. Spesso, le classi possono essere derivate da altre classi che forniscono operazioni
che le nuove classi possono utilizzare, oppure includono come campi oggetti di altre classi: tale
riutilizzo del software può migliorare enormemente la produttività di un programmatore.
(1) Falso
(2) Vero
Problema 174. I modificatori public e private sono utilizzati per controllare l’accesso alle
variabili ed ai metodi d’istanza di una classe.
(1) Falso
(2) Vero
Problema 175. I membri privati di una classe cosı̀ come la definizione dei metodi pubblici (ovvero
l’implemementazione della classe) non sono accessibili a chi utilizza la classe.
(1) Falso
(2) Vero
Problema 176. Fornire un metodo set ed uno get per dei dati privati è equivalente a rendere quei
dati pubblici.
(1) Falso
(2) Vero
Problema 177. Quando un oggetto viene creato, le sua variabili d’istanza devono essere esplicitamente inizializzate da un metodo costruttore.
(1) Falso
(2) Vero
Problema 178. Le variabili d’istanza possono essere inizializzate implicitamente al loro valore di
default (0 per tipi numerici, false per variabili Booleane e null per tipi classe), possono essere
inizializzate in un costruttore oppure possono essere impostate successivamente alla creazione
dell’oggetto.
(1) Falso
(2) Vero
Problema 179. Se il programmatore non fornisce un costruttore senza argomenti, Java ne crea
automaticamente uno per la classe.
(1) Falso
(2) Vero
Problema 180. Se dei costruttori sono forniti per una classe, ma nessuno di essi è un costruttore
senza argomenti, e viene effettuato un tentativo di invocare un costruttore senza argomenti per
inizializzare un oggetto della classe, viene generato un errore di compilazione.
(1) Falso
(2) Vero
24
Problema 181. I metodi di una classe possono essere sovraccaricati, ovvero diversi metodi di una
classe possono avere esattamente lo stesso nome.
(1) Falso
(2) Vero
Problema 182. Variabili d’istanza pubbliche possono essere manipolate solo dai metodi della
classe.
(1) Falso
(2) Vero
Problema 183. I metodi set sono anche detti metodi mutatori (in quanto tipicamente cambiano
un valore).
(1) Falso
(2) Vero
Problema 184. Accedere a dati privati attraverso metodi set e get non solo protegge le varibili d’istanza dal ricevere valori non corretti, ma anche isola gli utilizzatori della classe dalla
rappresentazione delle variabili: quindi, se la rappresentazione cambia (tipicamente, per motivi di
miglioramento delle prestazioni), solo l’implementazione dei metodi di accesso deve essere modificata e gli utilizzatori non devono effettuare alcun cambiamento fintanto che l’interfaccia fornita
dai metodi rimane la stessa.
(1) Falso
(2) Vero
Problema 185. Il riutilizzo del software garantisce una qualità del codice molto superiore a quella
che normalmente potremmo ottenere da soli.
(1) Falso
(2) Vero
Problema 186. Alcune varibili d’istanza devono poter essere modificate ed altre no: il programmatore può utilizzare la parola chiave constant per specificare che una variabile non è modificabile
e che ogni tentativo di modificarla produce un errore.
(1) Falso
(2) Vero
Problema 187. È sempre preferibile generare errori in fase di compilazione (se possibile), piuttosto che permettere che gli errori si trasmettano alla fase di esecuzione.
(1) Falso
(2) Vero
Problema 188. Una variabile final non può essere modificata da un’assegnazione dopo che è
stata inizializzata: una tale variabile deve essere inizializzata nella sua dichiarazione.
(1) Falso
(2) Vero
Problema 189. In un metodo che abbia un parametro formale con lo stesso nome di uno dei
suoi campi, bisogna usare la parola chiave this per accedere al campo (altrimenti, faremmo
incorrettamente riferimento al parametro formale del metodo).
(1) Falso
(2) Vero
25
Problema 190. Ogni oggetto di una classe ha la propria copia di tutte le variabili d’istanza della
classe.
(1) Falso
(2) Vero
Problema 191. Una variabile di classe statica rappresenta informazione specifica di un oggetto ed
ogni oggetto di una classe ha la propria copia dei dati statici.
(1) Falso
(2) Vero
Problema 192. I membri statici di una classe sono disponibili solo dopo che il primo oggetto della
classe viene istanziato.
(1) Falso
(2) Vero
Problema 193. Ogni variabile statica di una classe ed ogni metodo statico di una classe esiste e
può essere utilizzato anche se nessun oggetto di quella classe è stato istanziato.
(1) Falso
(2) Vero
Problema 194. L’ereditarietà è una forma di riutilizzo del software nella quale nuove classi
sono create a partire da classi esistenti ereditando le loro proprietà ed i loro comportamenti ed
arricchendo questi ultimi con funzionalità che la nuova classe richiede.
(1) Falso
(2) Vero
Problema 195. In Java, una classe è derivata da una o più superclassi.
(1) Falso
(2) Vero
Problema 196. Il vantaggio dell’ereditarietà consiste nella possibilità di definire nella sottoclasse
aggiunte o modifiche delle funzionalità ereditate dalla superclasse.
(1) Falso
(2) Vero
Problema 197. Ogni oggetto di una superclasse può essere pensato come un oggetto delle sottoclassi di quella superclasse.
(1) Falso
(2) Vero
Problema 198. L’insieme degli oggetti rappresentati da una sottoclasse è normalmente più grande
dell’insieme degli oggetti rappresentato da una qualunque superclasse di quella sottoclasse.
(1) Falso
(2) Vero
Problema 199. I costruttori di una superclasse sono ereditati dalle sottoclassi di quella superclasse.
(1) Falso
(2) Vero
Problema 200. Un oggetto di una sottoclasse può essere trattato come un oggetto della sua
superclasse.
(1) Falso
26
(2) Vero
Problema 201. Una conversione esplicita può sempre convertire un riferimento ad una superclasse
in un riferimento ad una sottoclasse.
(1) Falso
(2) Vero
Problema 202. Se non vi è nessuna invocazione esplicita al costruttore della superclasse, Java
automaticamente tenta di invocare il costruttore di default della superclasse.
(1) Falso
(2) Vero
Problema 203. Per invocare esplicitamente il costruttore di default della superclasse bisogna
utilizzare l’istruzione super( );
(1) Falso
(2) Vero
Problema 204. Sebbene un oggetto di una sottoclasse sia un oggetto della superclasse, il tipo della
sottoclasse è diverso dal tipo della superclasse.
(1) Falso
(2) Vero
Problema 205. Assegnare un oggetto di una sottoclasse ad un riferimento della superclasse e,
quindi, tentare di accedere a membri della sola sottoclasse con il riferimento alla superclasse,
genera un errore di compilazione.
(1) Falso
(2) Vero
Problema 206. Quando usiamo l’ereditarietà per creare una nuova classe da una classe esistente,
la nuova classe eredita solo i comportamenti della classe esistente: successivamente, aggiungiamo
campi per adattare la classe alle nostre necessità.
(1) Falso
(2) Vero
Problema 207. Quale delle seguenti affermazioni è vera?
(1) Una classe derivata può avere più metodi pubblici della classe base
(2) Una classe derivata può avere meno metodi pubblici della classe base
(3) Una classe derivata ha sempre lo stesso numero di metodi pubblici d’istanza della classe
base
(4) La prima e la seconda affermazione
Problema 208. Supponiamo che le seguenti classi sono state definite:
class A
class B extends A
class C extends B
Un’oggetto dichiarato come C o = new C(); è di tipo
(1) solo C
(2) solo C e B
(3) solo C, B ed A
(4) C, B, A ed Object
27
Problema 209. Consideriamo le seguenti due classi:
public class Base
{
public void print( int num )
{
System.out.println( num );
}
}
public class Derived extends Base
{
public void print( String s )
{
System.out.println( s );
}
}
Quale delle seguenti affermazioni è vera?
(1) Il metodo print della classe Base viene sovrascritto nella classe Derived
(2) Il metodo print della classe Base viene sovraccaricato nella classe Derived
(3) Un oggetto della classe Derived può essere l’oggetto su cui invocare entrambi i metodi
print
(4) La seconda e la terza affermazione
Problema 210. Consideriamo le seguenti due classi:
public class Base
{
public void print( String str )
{
System.out.println( str );
}
}
public class Derived extends Base
{
public void print( String s )
{
System.out.println( s );
}
}
Quale delle seguenti affermazioni è vera?
(1) Il metodo print della classe Base viene sovrascritto nella classe Derived
(2) Il metodo print della classe Base viene sovraccaricato nella classe Derived
(3) Un oggetto della classe Derived può essere l’oggetto su cui invocare entrambi i metodi
print
(4) Il codice non viene compilato perchè i nomi del parametro formale sono diversi
Problema 211. Consideriamo le seguenti classi:
public class Base
{
28
private int num = 10;
public void print()
{
System.out.println( num );
}
public void setNum( int j )
{
num = j;
}
}
public class Derived extends Base
{
public void setNum( int j )
{
num = j+10;
}
public static void main( String[] args )
{
Derived d = new Derived();
d.setNum( 20 );
d.print();
}
}
Quale delle seguenti affermazioni è vera?
(1)
(2)
(3)
(4)
Il programma stampa 30
Il programma stampa 20
Il programma stampa 10
Il programma non viene compilato
Problema 212. Consideriamo le seguenti classi:
public class Base
{
private int num = 10;
public void print()
{
System.out.println( num );
}
public void setNum( int j )
{
num = j;
}
}
public class Derived extends Base
{
public void setNum( int j )
{
29
super.setNum( j+10 );
}
public static void main( String[] args )
{
Derived d = new Derived();
d.setNum( 20 );
d.print();
}
}
Quale delle seguenti affermazioni è vera?
(1)
(2)
(3)
(4)
Il programma stampa 30
Il programma stampa 20
Il programma stampa 10
Il programma non viene compilato
Problema 213. Consideriamo le seguenti classi:
public class Base
{
private int num = 10;
public void print()
{
System.out.println( getNum() );
}
public void setNum( int j )
{
num = j;
}
private int getNum( )
{
return num;
}
}
public class Derived extends Base
{
public static void main( String[] args )
{
Derived d = new Derived();
d.setNum( 20 );
d.print();
}
}
Quale delle seguenti affermazioni è vera?
(1)
(2)
(3)
(4)
Il programma stampa 0
Il programma stampa 20
Il programma non viene compilato
Il programma viene compilato ma genera un errore in fase di esecuzione
30
Problema 214. Consideriamo le seguenti classi:
public class Base
{
private int num = 10;
public void print()
{
System.out.println( getNum() );
}
public void setNum( int j )
{
num = j;
}
private int getNum( )
{
return num;
}
}
public class Derived extends Base
{
public void print()
{
System.out.println( "Base num: "+super.getNum() );
}
public static void main( String[] args )
{
Derived d = new Derived();
d.setNum( 20 );
d.print();
}
}
Quale delle seguenti affermazioni è vera?
(1) Il programma stampa 0
(2) Il programma stampa 20
(3) Il programma stampa 10
(4) Il programma non viene compilato
Problema 215. Una classe derivata
(1) ha tutte le variabili d’istanza definite nella classe base
(2) ha tutte le variabili d’istanza pubbliche definite nella classe base
(3) non ha nessuna delle variabili d’istanza definite nella classe base
Problema 216. Supponiamo che una classe D sia derivata da una classe B e supponiamo che
number sia una variabile d’istanza privata della classe base B. Allora
(1) number è una variabile d’istanza privata della classe derivata D
(2) number è una variabile d’istanza pubblica della classe derivata D
(3) number è sempre una variabile d’istanza statica della classe derivata D
(4) Nessuna delle affermazioni precedenti è vera
31
Problema 217. Supponiamo che una classe D sia derivata da una classe B e supponiamo che
doStuff sia un metodo pubblico della classe base B. Allora
(1) doStuff è un metodo privato della classe derivata D
(2) doStuff è un metodo pubblico della classe derivata D
(3) doStuff è sempre un metodo statico della classe derivata D
(4) doStuff non è un metodo della classe derivata D
Problema 218. Supponiamo che una classe D sia derivata da una classe B e supponiamo che
doHushStuff sia un metodo privato della classe base B. Allora
(1) doHushStuff è un metodo privato della classe derivata D
(2) doHushStuff è un metodo pubblico della classe derivata D
(3) doHushStuff è sempre un metodo statico della classe derivata D
(4) doHushStuff non può essere invocato nelle definizioni dei metodi della classe derivata D
Problema 219. Supponiamo che una classe D sia derivata da una classe B e supponiamo che
anObject sia un oggetto della classe derivata D. Allora
(1) anObject è anche di tipo B
(2) anObject è anche di tipo Object
(3) La prima e la seconda affermazione sono vere
(4) Nessuna delle precedenti affermazioni è vera
Problema 220. I metodi privati fanno parte
(1) dell’interfaccia di una classe
(2) dell’implementazione di una classe
(3) dell’interfaccia e dell’implementazione di una classe
(4) I metodi non possono essere privati
Problema 221. Perché una classe sia un programma, il metodo principale deve avere la seguente
intestazione
(1) public static int main( String[] args )
(2) public void main( String[] args )
(3) public static void main( String args )
(4) nessuna delle precedenti
Problema 222. Quale delle seguenti affermazioni è falsa riguardo al metodo main?
(1) Un metodo main può essere incluso in ciascuna classe per semplificare il test
(2) Ogni classe deve avere un metodo main
(3) Il metodo main è usato per avviare un programma
(4) Il metodo main è un metodo di classe (ovvero, statico)
Problema 223. Quale delle seguenti affermazioni è vera?
(1) Ogni classe può avere metodi statici
(2) Solo una classe definita dall’utente può avere metodi statici
(3) Solo una classe senza variabili d’istanza può avere metodi statici
(4) Una classe non può avere allo stesso tempo metodi statici e metodi d’istanza
Problema 224. Un metodo statico può in tutte le circostanze essere invocato facendo precedere il
nome del metodo
(1) dal nome della classe che contiene il metodo
(2) dal nome di un oggetto della classe che contiene il metodo
32
(3) da this
(4) La prima e la seconda affermazione sono corrette
Problema 225. Dopo che una classe è stata scritta, compilata e testata, abbiamo bisogno di testarla
nuovamente se
(1) un metodo viene aggiunto alla classe
(2) il corpo di un metodo esistente viene modificato
(3) un’altra classe che invoca il metodo viene modificata
(4) La prima e la seconda affermazione sono corrette
Problema 226. Supponiamo che una classe abbia due metodi sovraccarichi con le seguenti intestazioni:
public int myMethod( int x )
public int myMethod( double x )
Supponiamo che la classe abbia due variabili d’istanza l di tipo long ed f di tipo float e che le
seguenti invocazioni siano eseguite da un metodo della stessa classe:
myMethod( l )
myMethod( f )
Quale delle seguenti affermazioni è vera?
(1) Il primo metodo viene invocato due volte
(2) Il secondo metodo viene invocato due volte
(3) Il primo metodo viene invocato con argomento l ed il secondo con argomento f
(4) Il codice non viene compilato in quanto i tipi non sono compatibili
Problema 227. Quanti costruttori devono necessariamente essere definiti quando si scrive una
classe?
(1) 0
(2) 1
(3) Almeno 1
(4) Uno per ogni variabile d’istanza
Problema 228. Supponiamo che una classe MyExample abbia solo i seguenti costruttori:
public MyExample( int a )
public MyExample( float f,char c )
Quale delle seguenti affermazioni è falsa?
(1) MyExample myEx = new MyExample(); è una dichiarazione corretta di un oggetto
(2) MyExample myEx = new MyExample( 7 ); è una dichiarazione corretta di un oggetto
(3) MyExample myEx = new MyExample( 3.1,’A’ ); è una dichiarazione corretta di un
oggetto
(4) MyExample myEx = new MyExample( 7,’a’ ); è una dichiarazione corretta di un oggetto
Problema 229. La compilazione produce tanti file .class quante sono le classi all’interno dell’unità di compilazione.
(1) Falso
(2) Vero
Problema 230. Ogni classe deve esplicitamente dichiarare il package di cui fa parte tramite
l’istruzione corrispondente.
33
(1) Falso
(2) Vero
Problema 231. Esiste una corrispondenza biunivoca fra nome di un package e posizione nel file
system delle classi del package.
(1) Falso
(2) Vero
Problema 232. Le classi del package piluc.gj.poligoni si trovano all’interno della directory
piluc/gj/poligoni.
(1) Falso
(2) Vero sempre
(3) Generalmente vero, ma il nome della directory dipende dal sistema operativo
Problema 233. L’esecuzione di una classe che appartiene ad certo package può essere richiesta
posizionandosi direttamente nella directory che contiene il file .class corrispondente.
(1) Falso
(2) Vero
Problema 234. Java usa early binding: il tipo formale del riferimento prevale sul tipo effettivo
dell’oggetto corrente.
(1) Vero
(2) Falso
Problema 235. La firma di un metodo comprende nome del metodo, numero e tipo dei suoi
parametri e tipo del valore di ritorno.
(1) Vero
(2) Falso
Problema 236. La libreria java.lang va importata esplicitamente.
(1) Falso
(2) Vero
Problema 237. Per la distruzione di oggetti, Java mette a disposizione operatori ad-hoc.
(1) Vero
(2) Falso
34