Corso di Laurea in Informatica

Programmazione

M. A. Alberti
Università degli Studi di Milano
A.A. 2005/06

Prova scritta - V appello 15 settembre 2006

Home

Esercizio 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

Esercizio 1

Date le classi:
public class SuperCls { 
   private int n; 
   protected static int x;  
   SuperCls (int i) {    
      n = i;    
      x = i+2; 
   }  

   public int metodoA (int i) { 
      return i;  
   }  

   public void metodoB (int i) { 
      System.out.println (i;
   }  

   public void metodoC (int i) {     
      System.out.println (i*2);    
      x = i;  
   } 
 
   public static void metodD (){  
   … 
   }
}

public class SottoCls extends SuperCls {   
   public int n;  
   private int x;  

   SottoCls (int i) {     
      n = i;    
      x = i*2;  
   }  

   public int metodoA (int i, int y){ 
      return i*y;  
   }  

   public int metodoB (int i) { 
      return (i+100);
   } 
 
   public void metodoC (int i) {     
      System.out.println (i);  
   }  

   public void metodD (int i) {  
   }
}
Dire se ci sono errori che impediscono la compilazione in SuperCls, eventualmente corregerli.
Dire se le definizioni dei membri sottoindicati della classe SottoCls costituiscono sovraccaricamento, sovrascrittura o errore:
metodoA
metodoB
metodoC
metodoD
Dire se e’ corretta la definizione del costruttore:
SottoCls (int i)
Corretti gli eventuali errori, specificandoli, dopo aver eseguito SuperCls p = new SuperCls (3); e SottoCls f = new SottoCls (5); dire quali saranno i valori di ritorno o l'output di:
p.n;
p.x;
f.n;
f.metodoA (f.n, x);
p.x (attenzione!!)
p.metodoC (p.n);
f.metodoC (f.n);
p.x (attenzione!!)
f.metodA (f.n, x);
Dire se sia corretta l'istruzione int z = p.metodoB(15);

Dire se sia corretta l'istruzione int z = f.metodoB(15);

Spiegare la differenza.

Risposte

Esercizio 2

Scrivere l'output dell'esecuzione dei cicli:

  1. for (int i = 0; i < 100; i++) 
    {  
      if (i == 35) break;
      if (i % 5 != 0) continue;
      System.out.println (i);
    }
    

  2. int i = 0;
    while (true)
    {
      i++;  
      int j = i * 4;  
      if (j == 40) break;  
      if (i % 10 == 0) continue;  
      System.out.println (i);
    }
    

Risposte

Esercizio 3

Assumendo la dichiarazione:
Random rand = new Random ();
Indicare il range dei valori delle seguenti dichiarazioni:
rand.nextInt() % 12;
(int) (Math.random () * 5); 
Inoltre scrivere un'istruzione per produrre valori paseudo-casuali nell'intervallo:
  1. [-12, 12], usando l'oggetto rand e
  2. [5, 25], usando il metodo random () della classe Math.

Risposte

Esercizio 4

Scrivere un metodo ricorsivo che calcoli la funzione di Fibonacci.
int fibonacci (int n) {
   ...
}
La sequenza di Fibonacci è la seguente, in cui ogni elemento è costituito dalla somma dei due che lo precedono e i primi due elementi sono dati (0 e 1):
0 1 1 2 3 5 8 13 21 34 …
Il metodo deve quindi riportare il valore corrispondente nella sequenza, ad esempio:
fibonacci(0) deve riportare 0
fibonacci(3) deve riportare 2

Risposta

Esercizio 5

Scrivere un metodo che implementi la funzione mcd (il massimo comun denominatore) tra due numeri naturali (interi e positivi) passati come parametri di input:
static long mcd (long m, long n) {
   ...
}

Soluzione

Esercizio 6

Completare l’esercizio precedente scrivendo un driver che esegua un ciclo di un numero CICLO di volte che generi due numeri casuali, interi e positivi, compresi nell'intervallo [1, 100], e richiamando la funzione mcd calcoli e stampi il massimo comune denominatore tra i due numeri.

Risposta

Esercizio 7

Dire cosa computa il sequente programma:
public class Test {
   public static void main (String[] arg) {
      for (int i=0; i<100; i++)
         if (funzione(i)) System.out.println (i);
   }

   static boolean funzione (int n) {
      if (n < 2) return false;
      if (n == 2) return true;
      if (n%2 == 0) return false;
      for (int i = 3; i < Math.sqrt(n); i += 2)
         if (n%i == 0) return false;
      return true;
   }
}

Risposta

Esercizio 8

Scrivere l'output del programma precedente.

Risposta

Esercizio 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8


M.A. Alberti, 10 settembre 2002