• Non ci sono risultati.

int i = 0, j = 0, k = a.length

N/A
N/A
Protected

Academic year: 2021

Condividi "int i = 0, j = 0, k = a.length"

Copied!
2
0
0

Testo completo

(1)

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

Prova Totale - 15 Febbraio 2010

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:

int[][] a = b;

int i = 0, j = 0, k = a.length; boolean p = true;

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

while (j<a[i].length-1 && p) { if (a[i][j] + a[i][j+1] == 0)

p = false;

j++;

}

if (!p) { k--;

p = true;

} }

Determinare il valore finale delle variabili i, j, k e p per i seguenti valori di b:

1) b = {{4,-4},{-3},{7,1,-1,5}};

2) b = {{3,-7,7,1},{-2,5,0,0,11}}.

Esercizio 2. Scrivere un metodo statico iterativo che, dato un array monodimensionale a di stringhe, restituisce un array bidimensionale b di caratteri tale che b[i] `e un array contenente i caratteri della stringa a[i] (letti da sinistra a destra). Se a[i] `e la stringa vuota, l’array b[i] `e vuoto. Esempio: dato a = {"abc","fg","lnpop"}, il metodo restituisce l’array b = {{’a’,’b’,’c’},{’f’,’g’},{’l’,’n’,’p’,’o’,’p’}}. N.B. Si richiede che gli unici metodi della classe String usati nella soluzione dell’Es.2 e dell’Es.3 siano length e charAt.

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

Esercizio 4. Un articolo di abbigliamento pu`o essere caratterizzato da nome, taglia, nazione in cui `e stato fatto, prezzo e numero di capi disponibili. Scrivere una classe ArticoloA con un opportuno costruttore ed i metodi che restituiscono i valori delle variabili istanza. Inoltre,

(2)

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 di abbigliamento.

Esercizio 5. Un articolo di abbigliamento in saldo `e un articolo di abbigliamento caratteriz- zato anche dalla percentuale di sconto e dal numero di giorni a disposizione per un eventuale cambio. Scrivere una classe ArticoloInSaldo con un opportuno costruttore ed i metodi che restituiscono i valori delle variabili istanza. 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 una stringa che descrive un articolo in saldo.

Esercizio 6. Un negozio di abbigliamento pu`o essere caratterizzato tramite nome, indirizzo, nome del proprietario e l’elenco degli articoli di abbigliamento trattati. Scrivere una classe NegozioA, il cui costruttore imposta il numero massimo di articoli trattati da un negozio.

Oltre ai metodi che restituiscono i valori delle variabili istanza, definire i seguenti metodi:

- un metodo che, dato un articolo di abbigliamento a, aggiunge a nell’elenco degli articoli di un negozio;

- un metodo che, dato un intero p, restituisce l’elenco degli articoli in saldo aventi una percentuale di sconto maggiore o uguale a p;

- un metodo che, data una stringa s, restituisce l’elenco di tutti gli articoli Made in s.

Esercizio 7. Siano date le seguenti classi:

class C {

private String sx;

public C (String t) { this.sx = t;

}

public String leggiSX() { return this.sx;

}

public int m (C c) {

if (this.sx.equals(c.sx)) return 2*this.sx.length();

else return

this.sx.length()+c.sx.length();

} }

class D extends C { private String dx;

public D (String t, String s) { super(t);

this.dx = s;

}

public String leggiDX() { return this.dx;

}

public int m (C c) { if (this.dx.length() >

c.leggiSX().length())

return super.m(c)+this.dx.length();

else

return super.m(c)-this.dx.length();

} } Dato il seguente frammento di codice:

D d1 = new D ("alfa","beta");

C d2 = new C ("ALFA");

int n = d2.m(d1);

d2 = new D ("BETA","gamma");

int v = d1.m(d2);

int p = d2.m(d1);

determinare qual `e il valore delle variabili n, v e p.

Riferimenti

Documenti correlati

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

Scrivere un metodo che, date due stringhe s1 ed s2 ed un intero k (k&gt;0), restituisce true se nella stringa s1 esistono almeno k sottostringhe uguali ad s2, altrimenti il

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

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

Inoltre, definire un metodo per modificare il nome della via, un metodo per modificare lo status di via pedonale o meno, un metodo che restituisce una stringa che descrive una

Inoltre, definire un metodo per modificare il nome del docente titolare di un corso, un metodo equals che restituisce true se due corsi sono uguali (altrimenti restituisce false) ed