ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________ 1.Associare tramite una freccia i vari simboli di diagramma di flusso alle relative operazioni: (Nota Bene: In alcuni casi un simbolo può essere assegnato a più di una operazione ed unoperazione può essere associata a più di un simbolo) A)Selezione B)Assegnamento C)Inizio Diagramma D)Dati in Input E)Operazione Generica F)Ricorsione (Cicli) G)Fine Diagramma H)Dati in Output 2.Rispondere con una V se ritenete laffermazione vera o con una F se la ritenete falsa : ___La condizione del test di una selezione deve avere 2 scelte disgiunte, che coprono tutte le risposte possibili. ___I tipi fondamentali con cui si può rappresentare un numero intero sono 5. ___Il tipo int serve per rappresentare numeri interi che vanno da a ___Listruzione per effettuare una stampa a video è System.println(Messaggio); ___Le costanti si dichiarano come le variabili con la sola differenza che devono essere precedute dalla parola chiave final. ___La sintassi del costrutto FOR è strutturata così: for(inizializzazione; condizione) { istruzioni; } ___Listruzione FOR può essere equivalente ad un istruzione WHILE purché questultima contenga nel suo blocco di istruzioni lincremento del contatore utilizzato nella sua condizione. ___Nellistruzione SWITCH.. CASE è possibile inserire nel CASE degli intervalli di valori da confrontare con il valore assunto dalla variabile di SWITCH. ___Se si supera la capacità di un array, questo è in grado di espandersi automaticamente senza che il sistema restituisca errore. Pag. 1 di 6
Pag. 2 di 6 Inizio somma = 0, i = 1; i < 10 somma = somma + i i++ Fine somma verofalso 3.Dato il seguente diagramma di flusso segnare con una croce il risultato di output corretto : (Nota Bene: Non è detto che tra le soluzioni proposte ci sia per forza quella corretta…) A)somma = 55___ B)somma = 10___ C)somma = 45___ D)somma = 65___ E)somma = 11___ F)somma = 1___ G)somma = 36___ 4.Scrivere nel box sottostante la traduzione in codice Java del diagramma a blocchi della domanda precedente: public static void main(String[] args) { }
Pag. 3 di 6 5.Quali delle seguenti affermazioni sui costrutti WHILE e DO..WHILE sono vere? (Segnare con una croce tutte le affermazioni che ritenete corrette) ___Il costrutto WHILE esegue le istruzioni più velocemente di quello DO..WHILE. ___Il costrutto WHILE e DO..WHILE sono equivalenti. ___Il costrutto DO..WHILE esegue almeno una volta il suo blocco di istruzioni. ___Il costrutto WHILE esegue il suo blocco di istruzioni finché la sua condizione è vera. ___Allinterno di un ciclo WHILE non è possibile utilizzare listruzione CONTINUE. ___Allinterno di un ciclo DO..WHILE non è possibile utilizzare listruzione BREAK. 6.Dato il seguente frammento di codice JAVA relativo alle istruzioni necessarie per poter utilizzare un array, quali delle seguenti affermazioni sono vere? (Segnare con una croce tutte le affermazioni che ritenete corrette) int x[ ]; x = new int[7]; x[0] = 15; x[1] = 8; x[2] = 123; x[3] = 91; x[4] = 51; x[5] = 9; x[6] = 33; ___Era possibile utilizzare lo stesso array utilizzando la sola istruzione: int x[] = {15,8,123,91,51,9,33} ___Listruzione x.length(); restituisce il valore 6; ___Per cambiare il valore del secondo elemento da 8 a 18 si utilizza listruzione x[1]:=18; ___Se eseguo listruzione int y = x[2+3]; assegno a y il valore 9. ___Se eseguo listruzione int y = x[7%3] + x [9:2] ; assegno a y il valore 59. ___Se eseguo listruzione int y = x[9/2]; assegno a y il valore 8. 7.Scrivere nel box sottostante la differenza tra listruzione BREAK e listruzione CONTINUE, in particolare spiegare qual è listruzione che si esegue dopo aver eseguito tali istruzioni.
Pag. 4 di 6 8.Dovendo memorizzare in una variabile i seguenti valori, indicare il tipo più adatto da assegnare a tale variabile al fine di contenere tale valore: Valore: 100Tipo della variabile:__________ Valore: PippoTipo della variabile:__________ Valore: 452,31Tipo della variabile:__________ Valore: bTipo della variabile:__________ Valore: falseTipo della variabile:__________ Valore: 10e 300 Tipo della variabile:__________ Valore: 30000,00Tipo della variabile:__________ Valore: 452,31Tipo della variabile:__________ 9.Quali delle seguenti affermazioni sui paradigmi di programmazione sono vere? (Segnare con una croce tutte le affermazioni che ritenete corrette) ___I paradigmi di programmazione si dividono in dichiarativo e procedurale. ___Il paradigma di programmazione procedurale contiene, tra le altre, la programmazione funzionale e la programmazione ad oggetti. ___La programmazione logica fa parte della programmazione procedurale. ___La programmazione imperativa fa parte della programmazione procedurale. ___Java è un linguaggio solamente orientato agli oggetti. ___Java è fondamentalmente un linguaggio ad oggetti, ma può essere utilizzato per fare anche programmazione imperativa. 10.Inserire la parola corretta negli spazi lasciati vuoti: A)Il modificatore daccesso ______________ permette laccesso alla classe a chiunque. B)Le ____________ _____________ sono replicate ogni volta che istanzio un oggetto. C)Quando istanzio un nuovo oggetto viene chiamato il metodo ___________________ della classe di appartenenza delloggetto. D)Linsieme delle strutture dati definiscono lo ________________ di un oggetto in uno specifico istante temporale. E)Il ________________ del costruttore deve coincidere con quello della classe. F)Il modificatore daccesso ________________ non può essere usato per il costruttore. G)Le variabili statiche si riconoscono da quelle distanza perché sono precedute dalla parola chiave ______________. H)E necessario definire almeno un ______________________ per ogni classe. I)Il _________________ del costruttore non deve essere specificato.
11.Scrivere nel box sottostante qual è la sintassi con cui è dichiarato un metodo, spiegando brevemente le varie componenti. Pag. 5 di 6 12.Quali delle seguenti affermazioni sulla programmazione orientata agli oggetti sono vere? (Segnare con una croce tutte le affermazioni che ritenete corrette) ___I linguaggi di program. ad oggetti di solito offrono strumenti che implementano i meccanismi dellIncapsulamento, dellEreditarietà e del Late Binding. ___Per definire una classe X che eredita da una classe Y, nella sua implementazione verrà utilizzata la sintassi class X extends Y { … } ___Per istanziare un oggetto si utilizza la sintassi: nome_oggetto = new nome_classe ( parametri, dipende dal costruttore); ___La parola chiave this viene utilizzata per fare riferimento ad un membro della classe progenitrice. Grazie a this è possibile quindi invocare la versione originale di un metodo di cui è stato fatto overriding, che altrimenti risulterebbe inaccessibile a causa del meccanismo del Late Binding. ___Il meccanismo del Late Binding se non trova il metodo richiamato nella classe delloggetto stesso, risale la gerarchia delle classi alla ricerca di un metodo che abbia lo stesso nome e lo stesso numero e tipo di parametri di quello richiamato. ___Una variabile di un certo tipo X, può contenere oggetti di tipo X oppure oggetti appartenenti a sottoclassi di X.
Pag. 6 di 6 13.Inserire la parola corretta negli spazi lasciati vuoti: A)Quando si effettua l________________________ di un metodo, significa che la classe fornisce una propria implementazione del metodo che differisce, a livello di istruzioni, dal metodo della classe progenitrice. B)Quando invece si effettua l______________________ di un metodo, significa che si implementa un metodo che ha lo stesso nome di un metodo della classe progenitrice, ma con un numero o/e tipo di parametri diversi. C)In caso di overloading il ________ ______________ non è sufficiente da solo a a distinguere i metodi. D)Se si utilizza la parola chiave _________ prima del tipo restituito da un metodo, significa che di quel metodo non è possibile effettuare loverriding. 14.Date le classi sottostanti, mostrare nel box sottostante un esempio di overriding ed uno di overloading: class Persona { public String nome; public String cognome; public Persona (String Nome, String Cognome) { nome = Nome; cognome = Cognome; } public Stampa( ) { System.out.println(Nome + + Cognome); } class Studente extends Persona { int voto1; int voto2; public Studente (String Nome, String Cognome, int Voto1, int Voto 2) { super(Nome,Cognome); this.voto1=Voto1; this.voto2=Voto2; } public float Calcola_Media (int voto1, int voto2) { float media = (voto1 + voto2)/2; result (media); }