FONDAMENTI DI INFORMATICA

Anno Accademico 2003/04

Corsi di Laurea in
Ingegneria Idraulica Marittima e Trasporti, sede di Civitavecchia
Ingegneria della Sicurezza e Protezione, sede di Civitavecchia

Esempi di domande di esame


Domanda 1

Considerare il seguente frammento di programma Java:

int x = -5;
if (x>0) if (x>10) System.out.println("uno");
   else if (x>-6) System.out.println("due");
   else System.out.println("tre");

Cosa stampa il programma?

(A) uno

(B) due

(C) tre

(D) il programma non stampa nulla


Domanda 2

Considerare il seguenti due cicli:

for (int i=0; i<10; i++)       // CICLO 1
    System.out.println(10-i);

int i=10;
while(i>1) {                   // CICLO 2
    System.out.println(i);
    i--;
}

Una sola delle seguenti affermazioni è vera. Quale?

(A) i due cicli stampano gli stessi numeri nello stesso ordine

(B) i due cicli stampano gli stessi numeri nello stesso ordine, ma il secondo stampa un numero in meno

(C) i due cicli stampano gli stessi numeri, ma in ordine diverso

(D) il secondo ciclo non termina mai


Domanda 3

Il seguente programma formato da due classi contiene un errore:

 1  class Intero {
 2     private int x;
 3     public Intero(int x) { this.x = x; }
 4  }
 5  class ProvaIntero {
 6      public static void main(String[] x) {
 7          Intero q = new Intero(19);
 8          incrementa(q);
 9      }
10      private static void incrementa(Intero q){
11          q.x++;
12      }
13  }

Su quale linea viene segnalato l'errore dal compilatore?

(A) linea 8, poichè il metodo incrementa invocato è dichiarato dopo il metodo main

(B) linea 2, poichè non è possibile definire la variabile x in questo punto

(C) linea 11, poichè non è possibile accedere alla variabile di istanza x

(D) linea 7, poichè non è possibile invocare il costruttore in quel modo


Domanda 4

Considerare il seguente programma formato da due classi:

 1  class Persona {
 2      private String nome, cognome;
 3      public Persona(String nome, String cognome) { this.nome = nome; this.cognome = cognome; }
 4      public String toString() { return nome+" "+cognome; }
 5  }
 6  class Prova {
 7      public static void main(String[] args) {
 8          Persona p = new Persona("Mario", "Rossi");
 9          Object x = p;
10          String s = x.toString();
11          System.out.prinln(s);
12      }
13  }

Cosa succede quando viene eseguito il programma mediante il comando java Prova?

(A) il programma si blocca con un errore sulla linea 9 poichè non è possible effettuare l'assegnazione

(B) il programma stampa "Mario Rossi"

(C) il programma si blocca con un errore sulla linea 10 poichè non è possibile invocare toString su x

(D) il programma stampa l'indirizzo in memoria dell'oggetto riferito dalla variabile x


Domanda 5

Considerare il seguente programma:

 1  public class Programma {
 2      public static void main(String[] args) {
 3          int x = 10;
 4          double y = 10;
 5          metodo( x + y );
 6      }
 7      private static void metodo(int a) {
 8          System.out.println("valore intero: "+a);
 9      }
10      private static void metodo(double a) {
11          System.out.println("valore frazionario: "+a);
12      }
13  }

Una sola delle seguenti affermazioni è vera. Quale?

(A) il programma stampa "valore intero: 20"

(B) il programma stampa "valore frazionario: 20.0"

(C) il compilatore segnala un errore alla linea 5

(D) il programma si blocca con un errore alla linea 5


Domanda 6

Quale delle seguenti affermazioni relative al tipo boolean del linguaggio di programmazione JAVA �vera

(A) le espressioni di tipo boolean si possono usare per specificare una condizione

(B) le espressioni di tipo boolean si possono usare nel ciclo while ma non nel ciclo for

(C) le espressioni di tipo boolean sono utili solo quando si devono scrivere istruzioni if annidate

(D) le espressioni di tipo boolean sono sempre vere o sempre false


Domanda 7

Considerare la seguente classe:

1  public class Mistero {
2      private int x;
3      public Mistero() { this.x = 10; }
4      public static void aggiungi(int k) {
5          this.x += k;
6      }
7  }

Una sola delle seguenti affermazioni è vera. Quale?

(A) il compilatore segnala un errore alla linea 3 poichè il costruttore è definito male

(B) il programma stampa 10

(C) il compilatore segnala un errore alla linea 5 poichè si accede in modo errato alla variabile x

(D) il metodo 'aggiungi' somma k alla variabile di istanza x dell'oggetto su cui il metodo è invocato


Domanda 8

Qual �la differenza tra intestazione e segnatura di un metodo?

(A) l'intestazione prevede anche la specifica del tipo del risultato mentre la segnatura contiene solo la specifica dei parametri del metodo

(B) non c'�nessuna differenza

(C) se un metodo �static l'intestazione prende il nome di segnatura

(D) la segnatura è lo schema realizzativo di un metodo e non ha nulla a che vedere con l'intestazione


Domanda 9

Se un metodo A invoca un metodo B, come può B modificare il contenuto una variabile creata da A?

(A) la variabile può essere contenuta in un oggetto creato da A il cui riferimento è passato come parametro al metodo B

(B) non è possibile

(C) basta passare come parametro attuale al metodo B la variabile di A che si intende modificare

(D) basta dichiarare la variabile static in A


Domanda 10

Quale delle seguenti affermazioni relative alle istruzioni di ciclo while e di ciclo for �vera?

(A) ciclo while e ciclo for consentono di esprimere cicli indefiniti 

(B) non c'�nessuna differenza tra le due istruzioni di ciclo while e di ciclo for  

(C) il ciclo while consente di esprimere cicli indefiniti mentre il ciclo for consente di esprimere solo cicli definiti

(D) esistono elaborazioni che possono essere realizzate con un ciclo for, ma non con un ciclo while


Domanda 11

Quale delle seguenti affermazioni relative agli array del linguaggio di programmazione JAVA �vera?

(A) gli array consentono di memorizzare collezioni di dati omogenei (dello stesso tipo)

(B) gli array sono un tipo di dato primitivo

(C) gli array consentono di memorizzare collezioni di dati eterogenei (di tipo diverso)

(D) gli array possono essere sempre ridimensionati ove serva più spazio per memorizzare i dati


Domanda 12

Considerare il seguente programma:

 1  public class Programma {
 2      public static void main(String[] args) {
 3          int x = 10;
 4          decrementa(x);
 5          System.out.println(x);
 6      }
 7      private static void decrementa(int x) {
 8          x = x - 1;
 9      }
10  }

Una sola delle seguenti affermazioni è vera. Quale?

(A) il programma stampa 10

(B) il programma stampa 9

(C) il compilatore segnala un errore alla linea 4 poichè l'invocazione del metodo decrementa è errata

(D) il programma si blocca a tempo di esecuzione con un errore alla linea 4 poichè non è possibile invocare il metodo decrementa


Domanda 13

Quando viene creata una variabile di istanza?

(A) al momento della creazione dell'oggetto nel quale �definita

(B) al momento della dichiarazione di classe in cui �contenuta

(C) durante l'esecuzione del blocco in cui �dichiarata 

(D) quando le viene assegnato un valore


Domanda 14

L'overloading di un costruttore indica:

(A) la dichiarazione di diversi metodi costruttore, ciascuno con una segnatura diversa

(B) la dichiarazione di un costruttore che richiama il metodo super

(C) la dichiarazione un metodo costruttore senza parametri

(D) la dichiarazione di un metodo gi�definito in una superclasse


Domanda 15

Quale delle seguenti affermazioni relative all'istruzione return è vera?

(A) L'istruzione return serve solo nei metodi statici

(B) L'istruzione return serve solo nei metodi che non hanno void come tipo del risultato restituito

(C) L'istruzione return si puo' usare in qualsiasi metodo per controllare il flusso di esecuzione

(D) L'istruzione return può essere omessa in qualsiasi metodo


Domanda 16

Considerare il seguente frammento di programma Java:

int x = 1;
while (x>0) x++;

Quale delle seguenti affermazioni è vera?

(A) il ciclo while non termina

(B) il ciclo while termina dopo 2.147.483.646 iterazioni

(C) il ciclo while non inizia

(D) il ciclo while non viene compilato


Domanda 17

Tenendo conto delle regole di precedenza tra operatori booleani in Java, quale delle seguenti espressioni è equivalente a !x && y || z?

(A) ((!x) && y) || z

(B) (!x) && (y || z)

(C) !(x && y) || z

(D) !(x && (y || z))


Domanda 18

Considerare la seguente classe java.

public class mistero {
    public static void main(String[] args) {
        String a, b, c;
        a = new String("Ciao")
        b = new String("Ciao")
        c = b;
        if (a==c) System.out.print("1"); 
        else      System.out.print("2");
        if (a.equals(c)) System.out.print("3"); 
        else             System.out.print("4");
    }
}

Che cosa stampa il programma quando viene eseguito?

(A) 13

(B) 23

(C) 14

(D) 24


Domanda 19

Quale delle seguenti affermazioni relative al costruttore di una classe è vera?

(A) Si può fare overloading sul costruttore, ma solo variando il numero di parametri

(B) Si può fare overriding sul costruttore

(C) Si può fare overloading, ma non overriding sul costruttore

(D) Si può fare overriding, ma non overloading sul costruttore


Domanda 20

Quale delle seguenti affermazioni relative all'operazione di cast è vera?

(A) L'operazione di cast è necessaria tra oggetti appartenenti a classi diverse

(B) L'operazione di cast è consigliata tra oggetti appartenenti a classi diverse

(C) L'operazione di cast è necessaria tra variabili di tipi primitivi diversi

(D) L'operazione di cast può portare a perdita di precisione