Facoltà di Ingegneria
Corso di Laurea in Ingegneria Gestionale
Fondamenti di Informatica
A.A. 2002-2003

Appello del 31 Marzo 2003 - Compito A

Durata: 1 ora e 45 minuti


Parte I

  1. Scrivere un metodo statico contaOccorrenzeFoglie che, dato un intero x e un albero binario i cui nodi contengono oggetti Integer, restituisce il numero di foglie che contengono il valore x.
  2. Scrivere un metodo statico verificaPariDispari che, data una LinkedList di Integer, restituisce true se ci sono lo stesso numero di elementi pari e dispari, e false altrimenti.

Parte II

Domanda 1

Dire cosa succede quando viene eseguito il seguente programma:

public class Mistero {
    public static int mistero(int x){
        if (x==0) return x;
        else return mistero(x-2)+1;
    }
    public static void main(String[] args){
        System.out.println(mistero(4));
        System.out.println(mistero(5));
    }
}

Dire per quali valori di x il metodo mistero termina e cosa calcola. Motivare le risposte (N.B. risposte non motivate saranno considerate nulle).

Domanda 2

Illustrare l'algoritmo di ordinamento a bolle (bubblesort) usando come esempio il seguente array di interi:

9
2
7
4
5

Dare il costo in funzione del numero di elementi n dell'array nel caso peggiore usando la notazione asintotica. Motivare informalmente le risposte (N.B. risposte non motivate saranno considerate nulle).

Domanda 3

Rispondere a una sola delle due domande seguenti, a scelta:

  1. discutere il meccanismo delle eccezioni in Java, usando degli esempi se necessario. In particolare, dire:
  2. Scrivere un applet con un solo pulsante OK, che esegue l'istruzione System.out.println("Premuto") ogni volta che il pulsante viene premuto.