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

Appello del 31 Marzo 2003 - Compito C

Durata: 1 ora e 45 minuti


Parte I

  1. scrivere un metodo statico pariMenoDispari che, data una LinkedList (o una Lista, o un HashSet) i cui elementi sono Integer, restituisce il numero di oggetti di valore numerico pari meno il numero di oggetti di valore numerico dispari.
  2. scrivere un metodo statico contaNodiConDueFigli che prende come parametro un albero binario e restituisce il numero di nodi dell'albero che hanno esattamente due figli.

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 0;
    else return mistero(x-3)+3;
  }

  public static void main(String[] args) {
      System.out.println(mistero(9));
      System.out.println(mistero(8));
  }
}
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 ricerca binaria usando come esempio il seguente array di interi e supponendo di dover cercare il valore 9:

2
4
7
9
10
12
15
23

Dare il costo dell'algoritmo 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

Discutere il passaggio dei parametri ai metodi in Java. In particolare dire:
  1. a cosa serve
  2. quando avviene
  3. la differenza tra parametri formali e parametri attuali