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

Appello del 31 Marzo 2003 - Compito D

Durata: 1 ora e 45 minuti


Parte I

  1. scrivere un metodo statico massimoNegativo che prende come parametro un array di double, e ritorna il valore negativo massimo (assumere che ci sia almeno un negativo nell'array).
  2. scrivere un metodo statico verificaAlbero che prende come parametro un albero binario i cui nodi contengono oggetti Integer, e restituisce true se il valore di ogni nodo è uguale al numero dei suoi figli, 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 1;
    else return mistero(x-2)+2;
  }

  public static void main(String[] args) {
      System.out.println(mistero(6));
      System.out.println(mistero(7));
  }
}
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 per fusione usando come esempio il seguente array di interi:

2
4
7
9
1
6
5
3

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

Spiegare la differenza fra metodi statici e metodi non statici in Java.