Compito di esame (prova)

Tecniche di programmazione

Parte I

Esercizio A (9 punti)
scrivere un metodo ricorsivo static boolean consecutivi(LinkedList l) che riceve una LinkedList e verifica se la lista contiene due oggetti consecutivi uguali

Esercizio B (9 punti)
scrivere un metodo static int quanti(Albero a) che riceve come parametro un albero che contiene interi, e ritorna il numero di nodi interni che hanno valore pari

Parte II

Esercizio A (4 punti)
Uno studente ha scritto il seguente metodo ricorsivo per la verifica di presenza di interi pari in un array. Spiegare perchè questo studente è stato bocciato.
static boolean consecutivi(int v[], int start) {
  if(v.length==0)
    return false;

  if(v[0]%2==0)
    return true;

  consecutivi(v, start+1);
}

Esercizio B (4 punti)
Dire quante operazioni di scambio vengono effettuate dall'algoritmo di bubblesort nel caso migliore e peggiore e nel caso specifico dell'array qui sotto:
4 9 3 2 1

Esercizio C (4 punti)
Rispondere a una sola delle seguenti tre domande:

  1. spiegare in che modo si catturano le eccezioni

  2. illustrare la semantica del blocco
    synchronized("abcd") {
      istruzione1;
      istruzione2;
    }
    
  3. data l'interfaccia
    interface Prova {
      void metodo() {
      }
    }
    
    quali delle seguenti istruzioni sono corrette e quali sono sbagliate?
    1: Prova x;
    2: x=new Prova();
    3: x.metodo();