Fondamenti di Informatica, Ingegneria Gestionale, A.A. 2002-2003
Appello del 14 Aprile 2003 - Compito A
Durata: 1 ora e 45 minuti


Parte I
  1. Scrivere un metodo statico verificaCrescente che, data una LinkedList (o una Lista) di Integer, restituisce true se gli elementi sono ordinati in modo crescente, e false altrimenti.
  2. Scrivere un metodo statico sommaValoriNodiInterni che, dato un albero binario i cui nodi contengono oggetti Integer, restituisce la somma dei valori contenuti nei nodi interni (si ricorda che i nodi interni sono quelli che hanno almeno un figlio).

Parte II
Domanda 1

Dire cosa stampa il seguente programma, motivando le risposte (N.B. risposte non motivate saranno considerate nulle).
Suggerimento: si tengano presenti le differenze tra variabili locali, parametri formali e variabili di istanza (anche dette componenti).

class Mistero {
    public int x;
    public Mistero(int y){
        this.x = y;
    }
}
public class ProvaMistero {
    public static void mistero(int a, Mistero b){
        a = a - 5;
        b.x = b.x - 5;
    }
    public static void main(String[] args){
        int x = 10;
        Mistero m = new Mistero(10);
        mistero(x,m);
        System.out.println(x);
        System.out.println(m.x);
    }
}

Domanda 2

Dire quanti scambi di valori sono effettuati dall'algoritmo a bolle (bubblesort) per ordinare il seguente array di interi:

7
1
9
3
6

Motivare la risposta (N.B. Risposte non motivate saranno considerate nulle).

Domanda 3

Discutere l'invocazione dei metodi in Java, usando degli esempi se necessario. In particolare, dire cosa succede quando si passano dei parametri a dei metodi.