Corso di Laurea in Informatica

Programmazione

M. A. Alberti
Università degli Studi di Milano
A.A. 2003/04

II Compitino- 10 dicembre 2003

I Compitino | Home | III Compitino

Esercizio 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13

Esercizio 1

Data la seguente dichiarazione con inizializzazione:
String[] settimana = 
		{"lunedì", "martedì", "mercoledì", "giovedì", "venerdì"};

  1. Dire qual'è l'indice della stringa mercoledì
  2. Scrivere un’istruzione o uno spezzone di codice per cercare l’occorrenza mercoledì nell’array settimana
  3. Scrivere un'espressione che riporti la stringa giovedì
  4. Scrivere un'espressione per selezionare il carattere 'e' in venerdì
  5. Scrivere un'espressione che riporti l'indice di un'occorrenza del carattere 'e' in venerdì
  6. Dire qual'è l'indice dell'ultimo elemento nell'array
  7. Scrivere un'espresione che ne riporti il contenuto
  8. Scrivere il valore di settimana.length

Risposte

Esercizio 2

Dire se le due espressioni booleane seguenti sono equivalenti:
a && (b || c)    		(!c || !b) && !a
costruendo la tabella di verità per verificarlo (i simboli v e f indicano vero e falso). Dire comunque in che relazione stanno le due espressioni date.

Soluzione

Esercizio 3

Definire una classe Parole che contenga una parola nel campo privato valore. Definirne un costruttore senza parametri per inizializzare il campo alla stringa nulla e un altro con un parametro di tipo String:
public class Parole {
	...
}
Dire quale concetto di Java consente la definizione dei due costruttori con lo stesso nome e cosa li contraddistingue.

Soluzione

Esercizio 4

Scrivete il metodo di classe contrai della classe Parole che accetta un parametro di tipo String e riporta un dato di tipo String che contiene solo i caratteri del parametro di indice pari (0 incluso), realizzato mediante un ciclo for.
Ad esempio contrai(“macchina”) produce la stringa “mchn”.

Soluzione

Esercizio 5

Data la classe Rettangolo definire il metodo statico trasformazione(Rettangolo) che riporta il il riferimento a un nuovo oggetto della classe Rettangolo che abbia ampiezza e altezza doppia rispetto ai dati del parametro e stessa origine.
Class Rettangolo {
   private int amp; 
   private int alt; 
   private Point origine;
   Rettangolo(int x, int y, int w, int h) {
      this.amp = w; this.alt= h;
      this.origine = new Point (x,y);
   } 
   static Rettangolo trasformazione(Rettangolo unRettangolo) {
      ...
   }

Soluzione

Esercizio 6

Assumendo le seguenti dichiarazioni
final int MAX = 2, LIMITE = 20;
int num1 = 8, num2 = 12, num3 = 21;
Scrivere l’output dei seguenti spezzoni di codice e valutare il valore delle variabili richieste ad ogni ciclo:
if (num2 < num1)   
	if (num3 < LIMITE)
		System.out.println ("qui");
else
	System.out.println ("quo");
System.out.println ("qua");
while (num1 <= LIMITE) {
	if (num3++ / num1 < MAX)
		System.out.println ("pippo");
	else System.out.println ("pluto");
	num1 *= 2;
}

num1:
num2:

while (num2 >= MAX) {   
	if (num2-- % 2 != 0) continue;   
	System.out.println (num2);
}

num1:
num2:
Risposta

Esercizio 7

Data la classe Fiore definita dal codice:
public class Fiore {
			Fiore (int i) { }
			Fiore (float x) {}
}
Dire se l’istruzione new Fiore() è corretta.
Commentare perché sì o no.

Soluzione

Esercizio 8

La classe Analisi usa un vettore di lunghezza MAX per contare le occorrenze di numeri casuali interi i generati durante una sessione (0 <= i < MAX). Scrivere un ciclo while in cui si effettua il conteggio (si esce dal ciclo al primo numero casuale che supera o è uguale all’estremo superiore MAX dell’intervallo). Si scriva inoltre un ciclo for per stampare il risultato del conteggio solo per i numeri casuali effettivamente generati.
public class Analisi {
	public static void main (String [] args) {  
		final int MAX = 5; 
      		int [] vettore = new int [MAX];
      		int i = 0;
      		while (		) {

				...
      		}
      		for (			)
				...
			
   	}
}
Ad esempio, l’array alla fine del ciclo while potrebbe risultare inizializzato a [1 2 3 0 4]. In questo caso la stampa dovrà essere come nella tabella seguente. Si completi la tabella trovando una sequenza di numeri casuali che potrebbero aver causato quell’output.
0	1
1	2
2	3
4	4
Risposta

Esercizio 9

Nella classe Stilo seguente, completare il costruttore Stilo(int, String) e il metodo boolean uguale(Stilo), che verifica che un’istanza della classe e un’altra passata come parametro abbiano i campi d’istanza uguali.
public class Stilo {
	private String tipo;
	private int pennino;
	private String inchiostro;
	private String colore;
	public Stilo(int pen, String tipo) {
		...
	}
	public boolean uguale(Stilo p) {
		...
	}
	public void caricaInchiostro(String c) {           
		this. inchiostro = c
	}
	public String getTipo() {
		return this.tipo;
	}
}

Soluzione

Esercizio 10

La classe seguente effettua un test della classe Stilo. Dire se il codice causa la stampa del numero 1 o del numero 2 o causa un errore:
public class TestStilo {
	public static void main(String[] a) {
		Stilo pelikan, parker;
		parker.caricaInchiostro(“rosso”);
		pelikan.caricaInchiostro(“blu”);
		if (parker.uguale(pelikan)) 
			System.out.println(“1”);
		else
			System.out.println(“2”);
	}
}
Risposta

Esercizio 11

Nel seguente spezzone di codice dire che cosa si sta definendo, osservando come viene usato ConColore nell’esercizio 12 seguente. Completare lo spezzone in modo da evitare errori di compilazione.
		ConColore {
	void setColore(String)

	String getColore()

}
Soluzione

Esercizio 12

Completare il codice della classe Stilo in modo da evitare errori di compilazione.
class Stilo implements ConColore {
	...
}
Soluzione

Esercizio 13

Il seguente spezzone di codice dà errore o stampa qualcosa e cosa? ConColore nell’esercizio 12 seguente. Completare lo spezzone in modo da evitare errori di compilazione.
ConColore[] deposito = new ConColore[3];
deposito[0] = new Stilo(0, “pelikan”);
deposito[1] = new Stilo(1, “parker”);
deposito[2] = new Stilo(2, “mont blanc”);
for (i=0; i < deposito.length; i++)
	stampa(deposito[i].getColore())
Se si volessero stampare i tipi delle penne archiviate nel deposito quale istruzione dovrei scrivere? (usare il metodo stampa())

Soluzione

Esercizio 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13


M.A. Alberti, 10 dicembre 2003