• Non ci sono risultati.

Si consideri il seguente frammento di codice in Java: String[] a = b

N/A
N/A
Protected

Academic year: 2021

Condividi "Si consideri il seguente frammento di codice in Java: String[] a = b"

Copied!
2
0
0

Testo completo

(1)

Modulo di Laboratorio di Programmazione I (CdL Informatica) &

Corso di Laboratorio di Programmazione (CdL Matematica) a.a. 2007-2008

Recupero - 25 Luglio 2008

NOME COGNOME MATRICOLA

CORSO DI LAUREA

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

Si ricorda di riconsegnare il testo del compito insieme al proprio elaborato scritto.

Nota Bene: 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, k = 0;

boolean p = false;

for (i=0; i<a.length; i++) { j = 0;

p = false;

while (j<a[i].length()-1 && !p) {

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

} j++;

}

if (p) { k++;

} }

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

1) b = {"bbaaaa","tttrt","ggg","qqsqsq"};

2) b = {"a","ffffff"}.

Esercizio 2. Scrivere un metodo statico iterativo che, dato un array monodimensionale a di stringhe, restituisce un array bidimensionale b di stringhe tale che la riga b[i] `e un array contenente tutti i prefissi della stringa a[i] in ordine crescente. Ad esempio, dato l’array a = {"abc","hello","oops"}, il metodo restituisce l’array b = {{"a","ab","abc"},{"h","he",

"hel","hell","hello"},{"o","oo","oop","oops"}}.

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

(2)

Esercizio 4. Un soggiorno vacanza pu`o essere caratterizzato da nome del luogo, tipo di sistemazione (es. hotel), durata (espressa in numero di giorni) e prezzo per persona al giorno.

Scrivere una classe Soggiorno con un opportuno costruttore ed i metodi che restituiscono i valori delle variabili istanza. Definire inoltre un metodo che modifica la durata del soggiorno, un metodo che calcola il costo totale di un soggiorno ed un metodo che restituisce una stringa che descrive un soggiorno.

Esercizio 5. Un soggiorno con trasporto `e un soggiorno vacanza caratterizzato anche dal mezzo di trasporto per raggiungere il luogo di vacanza (es. nave) e dal prezzo del trasporto per persona. Scrivere una classe SoggiornoConTrasporto con un opportuno costruttore ed i metodi che restituiscono i valori delle variabili istanza. Inoltre, definire un metodo che modifica il mezzo di trasporto ed il prezzo per persona, ed un metodo che restituisce una stringa che descrive un soggiorno con trasporto.

Esercizio 6. Un catalogo vacanze pu`o essere caratterizzato da nome del tour operator, anno di stampa ed elenco dei soggiorni presenti nel catalogo. Scrivere una classe Catalogo, il cui costruttore imposta il numero massimo di soggiorni che possono essere inseriti in un catalogo. Oltre ai metodi che restituiscono i valori delle variabili istanza, definire:

- un metodo che aggiunge un soggiorno nell’elenco dei soggiorni di un catalogo;

- un metodo che, data una stringa s che denota un luogo, restituisce l’elenco dei soggiorni nel luogo s presenti in un catalogo;

- un metodo che, dati un luogo s ed un mezzo di trasporto t, restituisce l’elenco dei soggiorni nel luogo s raggiungibili con il mezzo t presenti in un catalogo.

Esercizio 7. Siano date le seguenti classi:

class A {

private boolean v;

public A (boolean v) { this.v = v;

}

public boolean leggiB() { return this.v;

}

public String m (A a) { if (this.v || a.v)

return "vero";

else

return "falso";

} }

class B extends A { private String s;

public B (boolean v, String s) { super(v);

this.s = s;

}

public String leggiS() { return this.s;

}

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

} }

Dato il seguente frammento di codice:

A a = new A (true);

B b = new B (false,"messaggio");

String x = a.m(a);

String y = b.m(a);

a = b;

String z = a.m(b);

determinare qual `e il valore delle variabili x, y e z.

Riferimenti

Documenti correlati

Usando le classi del precedente esercizio, scrivere una semplice classe Agenzia Assicurativa, dove ciascun oggetto della classe `e caratterizzato dal nome dell’agenzia e da un elenco

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

Inoltre, definire un (unico) metodo per cambiare il nome della scuola, la classe e la sezione frequentata, ed un metodo che restituisce una stringa che descrive un alunno.

- un metodo che, data una stringa s che denota il nome di una casa editrice, restituisce l’elenco dei quotidiani venduti da un’edicola che sono pubblicati da s.

Scrivere un metodo statico iterativo che, dato un array bidimensionale a di stringhe, restituisce un array monodimensionale b di stringhe tale che b[i] `e la stringa

- un metodo che, data una stringa s che denota un titolo, restituisce true se un libro con titolo s compare nell’elenco dei libri di uno scolaro;. - un metodo che, data una stringa

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

Scrivere un metodo che, dati un array bidimensionale di stringhe a ed un intero k &gt; 0, restituisce true se in ogni riga a[i] di a esistono almeno k coppie di stringhe adiacenti