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