• Non ci sono risultati.

Corso di laurea in Informatica AA 2007/08 Programmazione, M.A. Alberti Prova scritta – appello 6 giugno 2008 Cognome Nome Matricola

N/A
N/A
Protected

Academic year: 2021

Condividi "Corso di laurea in Informatica AA 2007/08 Programmazione, M.A. Alberti Prova scritta – appello 6 giugno 2008 Cognome Nome Matricola"

Copied!
4
0
0

Testo completo

(1)

1

Corso di laurea in Informatica AA 2007/08 Programmazione, M.A. Alberti Prova scritta – appello 6 giugno 2008

Cognome Nome

Matricola

1

Data la gerarchia di classi contenuta nel file Squadra.java:

class Squadra{

int atleti;

Squadra (int i){

atleti = i;

System.out.println (“Squadra di: ” + i + ” atleti”) }

}

class Cannottaggio extends Squadra { int timoniere;

Cannottaggio (int atl, int tim) { super(atl);

timoniere = tim;

} }

Completare il codice in modo che non ci siano errori durante la compilazione del file Cannottaggio.java e in modo che il costruttore della classe Cannottaggio possa essere usato per inizializzare un oggetto che rappresenta equipaggi della disciplina sportiva del canottaggio in diverse configurazioni: 2 con o 8 con o 4 doppio. Si ricorda che l’equipaggio 2 con significa che sull’imbarcazione sono disposti due vogatori, ciascuno con un remo e un timoniere.

Nell’equipaggio 8 con invece i rematori sono 8 con un timoniere. Infine, nell’equipaggio 4 doppio i rematori sono 4 con due remi ciascuno e non ci sono timonieri.

Si considerino e si completino le istruzioni seguenti per istanziare equipaggi diversi:

Canottaggio due_con = new Cannottaggio ( 2, 1 );

Canottaggio quattro_doppio = new Cannottaggio ( 4, 0 );

Producono output? Eventualmente indicare:

Squadra di 2 atleti

Squadra di 4 atleti Dire se e’ corretto scrivere

Squadra canoa = due_con; SI

Squadra pallavolo = new Squadra (6); SI

Si disegni lo stato dello heap e dello stack dopo le istruzioni di inizializzazione degli oggetti:

(2)

AA 2007/08 Programmazione, Prof. M.A. Alberti Appello 6 giugno 2008

2

stack heap

2

Assumendo le dichiarazioni iniziali seguenti:

final int MAX = 10;

int num = 5;

Stabilire qual’è l’effetto dell’esecuzione dei cicli:

do {

num = num + 1;

if (num*2 > MAX+num)

System.out.println (num);

} while (num <= MAX);

while (num < MAX) { if (num%2 == 0);

System.out.println (num);

num++;

}

11 5

6 7 8 9

3

Assumendo la dichiarazione:

Random rand = new Random ();

Indicare il range dei valori delle seguenti dichiarazioni:

rand.nextInt() % 10;

[-9, 9]

(int) (Math.random () * 15);

[0, 14]

Inoltre scrivere un’istruzione per produrre valori paseudo-casuali nell’intervallo:

0 – 10 usando l’oggetto rand

Math.abs(rand.nextInt ()%11)

5 – 25 usando il metodo random() della classe Math

(int)(Math.random()*21) + 5

due_con quattro_doppio

canoa pallavolo

Squadra atleti= 2 Cannottaggio timoniere= 1

Squadra atleti= 4 Cannottaggio timoniere= 0

Squadra atleti = 6

(3)

AA 2007/08 Programmazione, Prof. M.A. Alberti Appello 6 giugno 2008

3 4

Scrivere l’espressione booleana che controlla che la variabile numero dichiarata di tipo int appartenga all’intervallo [-5, 5] oppure sia uguale a 99.

(num >= -5 && num <= 5) || num == 99

5

Scrivere il metodo pari() che riporta un valore booleano per indicare se il parametro d’ingresso di tipo intero è pari. Si indichi con precisione il prototipo del metodo.

public boolean pari (int n) {

if (n % 2 == 0) return true;

else return false;

}

6

Scrivere un metodo init() che inizializzi un array con MAX numeri casuali nell’intervallo [0, 20] e lo riporti all’ambiente chiamante. Inoltre, durante l’inizializzazione per ciascun valore generato, venga stampato il messaggio maggiore, uguale o minore di un valore di controllo archiviato nella variabile CONTROLLO.

public static int [] init () { import java.util.Random;

Random rand = new Random ();

int[] vett = new int[MAX];

int num;

for (int i = 0; i <MAX; i++) {

num = Math.abs(rand.nextInt () % 21);

vett[i] = num;

if (num > CONTROLLO)

System.out.println (num + " maggiore " + CONTROLLO);

else if (num == CONTROLLO)

System.out.println (num + " uguale " + CONTROLLO);

else System.out.println (num + " minore " + CONTROLLO);

}

return vett;

}

7

Nella classe Sequenze il metodo main chiede il numero dei termini di una particolare sequenza di numeri interi che vengono generati dal metodo di classe funzione. Il metodo in questione, che deve essere implementato in modo ricorsivo, produce la sequenza di interi di lunghezza specificata nel parametro. La legge con cui si generano i numeri deve essere dedotta analizzando con attenzione i primi 10 numeri qui riportati:

0 1 3 7 15 31 63 127 255 511

(4)

AA 2007/08 Programmazione, Prof. M.A. Alberti Appello 6 giugno 2008

4 public class Sequenze {

public static void main(String[] args) {

out.print ("Numero termini da calcolare (intero non negativo): ");

int termini = in.readInt();

while (termini < 0) {

out.print("Intero non negativo? Ripetere inserimento: ");

termini = in.readInt();

}

for (int i=0; i<termini; i++) out.print (funzione(i)+"\t");

}

static int funzione (int n) {

if (n == 0) return 0;

else return 2 * funzione (n-1) + 1;

}

}

8

Considerate la classe A:

class A {

public int numero;

private String tipo;

A(int n, String t) { numero = n;

tipo = t;

} }

a. E’ possibile la dichiarazione A a; ?

SI

b. E’ corretta l’istruzione a = new A(“cinque”, “base”); ?

NO

c. Possiamo accedere al campo a.numero ?

SI

d. Dopo l’istanziazione dell’oggetto a = new A(25, “standard”);

a.numero contiene il dato

25

a.getTipo() fornisce il dato

“standard”

ammesso che sia definito il metodo

public String getTipo() {

return tipo;

}

e. Scrivete il prototipo del metodo metodo coerente con l’istruzione int num = a.metodo(35);

public int metodo(int par)

Riferimenti

Documenti correlati

Questi metodi dovranno eseguire le stesse azioni sia per gli oggetti di classe BarcaVela sia per gli oggetti di classe Barca, sempre e comunque?. SI NO Come si chiama in Java

Occorre definire una struttura dati per memorizzare i numeri già estratti; ad esempio un array le cui posizioni corrispondono ai numeri estraibili e il valore

Definite quindi la classe Tombola, che contiene il campo estratti ed il metodo estrai_prossimo(), che userà la classe Random del pacchetto java.util, tiene aggiornato

Un rullo, costituito da un cilindro pieno omogeneo di massa m = 1.0 kg e raggio R = 10 cm, sale lungo un piano inclinato (angolo θ = π/6 rispetto all’orizzontale) scabro

Una piccola cassa di massa M risale lungo un piano inclinato che forma un angolo θ=π/4 rispetto all’orizzontale sotto l’azione di una forza F diretta orizzontalmente, come

Il campo considerato, visto che il solenoide è “molto lungo”, si può ritenere uniforme e diretto assialmente (il campo esterno al solenoide è nullo). Notate che questo

1. Un pendolo, costituito da una lunga fune inestensibile di massa trascurabile e lunghezza L = 2.0 m a cui è attaccata una piccola sfera, di massa M = 0.20 kg, può oscillare su

1. Un pendolo, costituito da una lunga fune inestensibile di massa trascurabile e lunghezza L = 2.0 m a cui è attaccata una piccola sfera, di massa M = 0.20 kg, può oscillare su