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

Appello del 31 Marzo 2003 - Compito B

Durata: 1 ora e 45 minuti


Parte I

  1. Scrivere un metodo statico contaFogliePari che, dato un albero binario i cui nodi contengono oggetti Integer, restituisce il numero di foglie che contengono valori pari.
  2. Scrivere un metodo statico verificaPositiviNegativi che, dato un array di double, restituisce false se ci sono lo stesso numero di elementi positivi e negativi, e true 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-3)+1;
    }
    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 ordinamento per selezione (selectionsort) usando come esempio il seguente array di interi:

9
2
7
4
5

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

Domanda 3

Illustrare la differenza tra variabili locali, parametri formali, e variabili di istanza (=componenti) in Java. In particolare, dire:

  1. in quali parti del programma sono dichiarate;
  2. in quali parti del programma sono visibili;
  3. qual è il loro tempo di vita durante l'esecuzione di un programma.