• Non ci sono risultati.

La soluzione per l’Eserci- zio 3 non deve contenere alcuna istruzione di ciclo (for, while, etc

N/A
N/A
Protected

Academic year: 2021

Condividi "La soluzione per l’Eserci- zio 3 non deve contenere alcuna istruzione di ciclo (for, while, etc"

Copied!
2
0
0

Testo completo

(1)

Modulo di Laboratorio di Programmazione I (CdL Informatica) a.a. 2008-2009

Prova Totale - 16 Febbraio 2009

NOME COGNOME MATRICOLA

CORSO DI LAUREA

Scrivere in stampatello Nome, Cognome e Matricola su ogni foglio consegnato.

Nota Bene: Il testo del compito deve essere riconsegnato insieme al proprio elaborato scritto. Le soluzioni degli esercizi non devono contenere alcun metodo main n´e alcuna istruzione di stampa n´e istruzioni switch, break, continue, etc. La soluzione per l’Eserci- zio 3 non deve contenere alcuna istruzione di ciclo (for, while, etc.). La non osservanza di tali requisiti comporter`a l’annullamento della prova scritta dello studente.

Esercizio 1. Si consideri il seguente frammento di codice in Java:

String[] a = b;

int i = 0, j = 0; boolean p = true;

for (i=0; i<a.length; i++) { j = a[i].length()-1; p = true;

while (j >= 0 && p) {

if (c == a[i].charAt(j)) { p = !p;

} j--;

} }

Determinare il valore finale delle variabili i, j e p nei seguenti casi:

1) b = {"mela","kiwi","banana","pera"} e c = ’a’;

2) b = {"mucca","scimmia","leone"} e c = ’m’.

Esercizio 2. Scrivere un metodo statico iterativo che, dati due array monodimensionali a e b di interi, restituisce un array monodimensionale c di interi dato dall’unione alternata di a e b, ovvero gli elementi di c sono gli elementi di a e di b alternati (a partire da a). Nel caso in cui a e b abbiano lunghezze diverse, la parte finale di c `e data dalla parte finale dell’array pi´u lungo tra a e b. Ad esempio, dati a = {3,-1,5,4,-9,14} e b = {7,2,-5}, il metodo restituisce l’array c = {3,7,-1,2,5,-5,4,-9,14}.

Esercizio 3. Scrivere una versione ricorsiva del metodo definito per risolvere l’Esercizio 2.

Esercizio 4. Un libro pu`o essere caratterizzato da titolo, autore/i, casa editrice, anno di pubblicazione e numero dell’edizione. Scrivere una classe Libro con un opportuno costrut- tore ed i metodi che restituiscono i valori delle variabili istanza. Inoltre, definire un metodo per modificare l’anno di pubblicazione ed il numero dell’edizione, un metodo equals che restituisce true se due libri sono uguali (altrimenti restituisce false) ed un metodo che resti- tuisce una stringa che descrive un libro.

(2)

Esercizio 5. Un libro di biblioteca `e un libro caratterizzato anche dal nome della biblioteca a cui appartiene, la possibilit`a o meno di prenderlo in prestito ed il numero massimo di giorni di prestito. Scrivere una classe LibroBiblioteca con un opportuno costruttore ed i metodi che restituiscono i valori delle variabili istanza. Inoltre, definire un metodo per modificare lo status di prestito di un libro di biblioteca, un metodo per cambiare il numero massimo di giorni di prestito ed un metodo che restituisce una stringa che descrive un libro di biblioteca.

Esercizio 6. Un utente di biblioteca pu`o essere caratterizzato tramite il nome, il cognome, un codice personale, il nome della biblioteca in cui `e registrato e l’elenco dei libri di biblioteca che ha in prestito da tale biblioteca. Scrivere una classe UtenteBiblioteca, il cui costruttore imposta il numero massimo di libri di biblioteca che un utente pu`o avere in prestito. Oltre ai metodi che restituiscono i valori delle variabili istanza, definire i seguenti metodi:

- un metodo che, dato un libro di biblioteca b, aggiunge b nell’elenco dei libri che un utente ha in prestito, a condizione che il nome della biblioteca dove `e registrato l’utente coincida con quello che compare in b;

- un metodo che, data una stringa a, restituisce l’elenco dei libri che un utente ha in prestito il cui autore `e a;

- un metodo che restituisce una stringa che descrive un utente di biblioteca.

Esercizio 7. Siano date le seguenti classi:

class A {

private String s;

public A (String s1) { this.s = s1;

}

public String leggiS() { return this.s;

}

public String m (A a) {

if (this.s.length() != a.s.length()) return this.s + a.s;

else

return a.s + this.s;

} }

class B extends A { private String t;

public B (String s1, String t1) { super(s1);

this.t = t1;

}

public String leggiT() { return this.t;

}

public String m (A a) { return super.m(a) + this.t;

} }

Dati gli oggetti seguenti:

A a1 = new A ("hello");

A a2 = new B ("ciao!","salve");

B b1 = new B ("bye","addio");

determinare qual `e il valore restituito dalle seguenti chiamate di metodo:

1) b1.m(a2); 2) a2.m(a1); 3) a1.m(b1).

Riferimenti

Documenti correlati

La presentazione della tesi di un laureando davanti ad una commissione di laurea pu`o essere descritta tramite il nome e la matricola del laureando, il titolo della tesi, il nome

La sessione di una conferenza pu`o essere caratterizzata dal nome della con- ferenza, dal numero di sessione, dal nome del coordinatore della sessione e dall’elenco delle

La banca dati di un’agenzia assicurativa per auto `e caratterizzata da un insieme di polizze di assicurazioni per

Scrivere una nuova classe Corso, dove ciascun corso `e caratterizzato da nome del corso, nome del docente titolare del corso, numero di crediti associati al corso, settore

Le variabili istanza sono il veicolo assicurato, identificato dalla targa (ad esempio, “CA 075 DS”), ed il valore assicurato RC.. Una polizza auto incendio e furto si differenzia da

Una societ`a sportiva pu`o essere caratterizzata tramite il nome, l’indirizzo, il nome del responsabile e l’elenco degli atleti tesserati. Scrivere una classe SocSportiva, il

Inoltre, definire un metodo per modificare il numero di giorni per il cambio, un metodo che restituisce il prezzo scontato di un articolo in saldo ed un metodo che restituisce

Inoltre, definire un metodo per modificare il prezzo, un metodo equals che verifica se due articoli sono uguali ed un metodo che restituisce una stringa che descrive un articolo