1 1.1 Domande di teoria – Compito B Domanda A Il risultato della compilazione di un programma Java è un file eseguibile? Giustificare la risposta. 1.2 Domanda B Quali sono le componenti che gestiscono la comunicazione del sistema operativo con le periferiche? 1 2 Verifica comprensione Java – Compito B 1. Dato il seguente frammento di codice: int n=1, m=2; double x=4, y=5; boolean t = true; Quale dei seguenti assegnamenti è valido? ◦ m = y + n * x ◦ nessuno di quelli proposti ◦ x = n / m * y ◦ n = 3.1 + m ◦ t = n % m 2. Qual’è il valore della seguente espressione: 5 + 44 ∗ (3/12) − 2 ∗ (3 + 2) ◦ -5 ◦ non compila ◦ 6 ◦ nessuno di quelli proposti 3. Si consideri il seguente frammento di codice: int x = 8,y = 2; int tmp=x; y--; while (???) { x = x*tmp; y = y-1; } System.out.println(x); Quale condizione deve essere inserita al posto di ??? perché venga stampata su output l’elevamento di x alla potenza di y? ◦ x >= 0 ◦ y>0 ◦ x<y ◦ x>0 ◦ y >= 0 2 4. Dopo l’esecuzione del frammento di codice int[] x = {2,1,4,2,4,0}; int i = 0; while (i < x.length){ x[i] = x[x[i]]-1; i++; } qual e’ il contenuto dell’array x? ◦ 432167 ◦ 303232 ◦ 327641 ◦ 216530 5. Dato il seguente programma public class A { public static int metodo1(int attributo1, int attributo2) { attributo1=attributo2-1; return 3; } public static int metodo2(int attributo1, int attributo2) { if (attributo1>attributo2) return attributo1; else return attributo2; } public static void main(String args[]) { int attributo1 = 6; int attributo2 = 5; int x = A.metodo1(attributo1,attributo2); int y = A.metodo2(attributo1,attributo2); System.out.println(x+y); } } che cosa viene stampato a video? ◦ 9 ◦ 36 ◦ 34 ◦ non compila 3 6. Dato il seguente programma public class A { public static void metodo1(int[] b) { ??? } public static void metodo2(int[] a) { int temp; temp = a[0]; a[0] = a[2]; a[2] = temp; } public static void main(String args[]) { int[] a = {8, 7, 6}; A.metodo1(a); A.metodo2(a); System.out.println(a[0]+" " + a[1] + " " + a[2]); } } che istruzione va sostituita al posto di ??? per ottenere come output “6 7 13”? ◦ b[0] = b[1] + b[2]; ◦ b[1] = b[2] + b[0]; ◦ non c’è modo di ottenere l’output indicato ◦ a[0] = a[1] + a[2]; 4 3 Esercizio programmazione Java – Compito B Si realizzi un programma che, dato un array di interi: • calcoli la media dei numeri contenuti nell’array; • individui i numeri maggiori della media, li inserisca in un opportuno array e lo visualizzi. Le due operazioni sopraindicate devono essere realizzate tramite opportuni metodi, ed è inoltre richiesta la realizzazione di un diagramma di flusso di almeno uno di tali metodi. 5