• Non ci sono risultati.

Si consideri il seguente frammento di codice in Java: String

N/A
N/A
Protected

Academic year: 2021

Condividi "Si consideri il seguente frammento di codice in Java: String"

Copied!
2
0
0

Testo completo

(1)

Modulo di Laboratorio di Programmazione I (CdL Informatica) &

Corso di Laboratorio di Programmazione (disattivato - CdL Matematica) a.a. 2010-2011

Prova Totale - 7 Febbraio 2011

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 = false; String s = "";

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

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

if (a[i][j].length() != a[i][j+1].length()) j++;

else

p = true;

} if (p)

if (s.length() < a[i][j].length()) s = a[i][j];

}

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

1) b = {{"aaa","cc","k6"},{"y","dqf"},{"xzv","z","bgf","tri"}};

2) b = {{"kp","",""},{"bst7","a1pw","urt"}}.

Esercizio 2. Scrivere un metodo statico iterativo che, dato un array bidimensionale a di stringhe, restituisce un array bidimensionale b di stringhe tale che ogni riga b[i] con- tiene le stringhe ottenute concatenando ogni stringa di a[i] con la successiva. Esempio: se a= {{"aa","cde","run","kdef"},{"stk","beta"},{"rho","p","alfa"}}, il metodo re- stituisce l’array b = {{"aacde","cderun","runkdef"},{"stkbeta"},{"rhop","palfa"}}.

Nota: si assuma che ogni riga a[i] di a contenga almeno due stringhe.

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

Esercizio 4. Un farmaco pu`o essere caratterizzato da nome, principio attivo, categoria, nome del produttore, necessit`a della ricetta medica o meno, mese ed anno di scadenza.

(2)

Scrivere una classe Farmaco con un opportuno costruttore ed i metodi che restituiscono i va- lori delle variabili istanza. Inoltre, definire un metodo per modificare il nome del produttore, un metodo che, dati due farmaci, controlla se appartengono alla stessa categoria e hanno lo stesso principio attivo, ed un metodo che restituisce una stringa che descrive un farmaco.

Esercizio 5. Un farmaco da banco `e un farmaco per il quale non `e necessaria la ricetta medica ed `e caratterizzato anche dal prezzo (interamente a carico del paziente) e dalla percentuale massima di sconto che pu`o essere applicata. Scrivere una classe FarmacoDaBanco con un opportuno costruttore ed i metodi che restituiscono i valori delle variabili istanza.

Inoltre, definire un metodo per modificare il prezzo ed un metodo che restituisce una stringa che descrive un farmaco da banco.

Esercizio 6. Una farmacia pu`o essere caratterizzata tramite nome, nome del proprietario, indirizzo e l’elenco dei farmaci in vendita. Scrivere una classe Farmacia, il cui costruttore imposta il numero massimo di farmaci trattati da una farmacia. Oltre ai metodi che resti- tuiscono i valori delle variabili istanza, definire i seguenti metodi:

- un metodo che, dato un farmaco f , aggiunge f nell’elenco dei farmaci di una farmacia;

- un metodo che, dato un farmaco f , controlla se f `e in vendita presso una farmacia;

- un metodo che, dato un intero n, restituisce l’elenco dei farmaci di una farmacia che scadono nell’anno n;

- un metodo che, data una stringa s, restituisce l’elenco di tutti i farmaci da banco in vendita presso una farmacia che sono prodotti dal produttore s.

Esercizio 7. Siano date le seguenti classi:

class A {

private String lab;

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

}

public String getLab() { return this.lab;

}

public String m (A a) { if (this.lab.charAt(0) ==

a.lab.charAt(0))

return this.lab + a.lab;

else

return a.lab + this.lab;

} }

class B extends A { private char c;

public B (String s, char c) { super(s);

this.c = c;

}

public int getC() { return this.c;

}

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

} }

Dato il seguente frammento di codice:

A x = new B ("parziale",’2’);

A y = new A ("prova scritta");

B z = new B ("totale",’1’);

String s1 = x.m(z), s2 = y.m(x);

y = z;

String s3 = z.m(y);

determinare il valore delle variabili s1, s2 ed s3.

Riferimenti

Documenti correlati

Scrivere un metodo che, dati un array di interi a (contenente almeno due elementi), un intero v ed un intero k (k&gt;0), restituisce true se in a esistono almeno k coppie di interi,

Le due classi, oltre ad ereditare i metodi della classe Contenitore di animali, hanno metodi che restituiscono l’habitat (classe Gabbia) ed il tipo di acqua e il flusso

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

- 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 che modifica il mezzo di trasporto ed il prezzo per persona, ed un metodo che restituisce una stringa che descrive un soggiorno con trasporto.

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