Professional Documents
Culture Documents
Pertanto si definiscano:
1) Una classe Progetto che permette di costruire un progetto dandogli un nome (non
necessariamente univoco) e un codice univoco generato automaticamente e restituito
dal metodo
int codice();
2) Una classe Record che implementa l'interfaccia Comparable e memorizza
a1
a2
an-1
an
Si ricorda che un voto pu riferirsi a una lista elettorale, oppure essere considerato nullo o
ancora scheda bianca.
Pertanto si definiscano:
1) una classe ListaElettorale che rappresenta una lista elettorale. La classe deve
disporre di un costruttore che consente di attribuire un nome (di tipo String) alla
lista, oltre che un elenco (del tipo Java List) di nominativi di candidati. La classe
implementa linterfaccia Comparable (il confronto si basa solo sul nome) e dispone
anche di un metodo che consente la stampa, ricorrendo al metodo println, della lista
elettorale (solo il nome, in caratteri maiuscoli).
2) Una classe Voto che dispone di due costruttori:
a. Voto(ListaElettorale s) crea un voto per una lista elettorale s; se s
null allora il voto nullo;
b. Voto() crea un voto corrispondente a una scheda bianca;
e di tre metodi:
c. boolean nullo() stabilisce se il voto nullo;
d. boolean bianca() stabilisce se il voto una scheda bianca;
e. ListaElettorale voto() restituisce una istanza di ListaElettorale
nel caso di voto non nullo o di scheda non bianca, mentre restituisce null
altrimenti.
3) Una classe Elezione che implementa tutte le operazioni del dato astratto elezione.
Essa permette quindi di memorizzare:
Programmazione II
Corso di Laurea in Informatica e Tecnologie per la Produzione del Software
Anno Accademico 2014/2015
Docente: Donato Malerba
Prova di laboratorio: ore 15:30 17:30
Si vuole realizzare un semplice sistema software per lanalisi del carrello della spesa
al supermercato. A tale scopo un carrello della spesa viene descritto mediante un
vettore binario che riporta la presenza (1) o lassenza (0) di un articolo fra quelli in
vendita al supermercato. I diversi carrelli, nel complesso, saranno pertanto
rappresentati da una matrice binaria, dove le
colonne rappresenteranno gli articoli, mentre le
righe rappresenteranno i carrelli della spesa che
passano dalla cassa. Un valore 1 (0)
allintersezione di riga i e colonna j indica che il
carrello i-esimo contiene (non contiene) l'articolo j.
Come si pu osservare la matrice sparsa, perch
ha quasi tutti gli elementi uguali a 0.
Pertanto si vuole definire il dato astratto Matrice Sparsa tenuto conto delle seguenti
specifiche sintattiche:
creaMatrice(intero, intero, valore) matrice
Pertanto si definiscano:
1) Una classe DoubleLinkedList<S> che implementi la seguente interfaccia:
public interface AddOnlyList<S> extends Iterable<S>{
public void add(S e);
public String toString();
}
La classe permette di creare una lista di elementi, eventualmente ripetuti, di tipo
S, accodandoli uno per volta, e di scorrere la lista di elementi mediante un
iteratore. Si usi una rappresentazione collegata.
2) Una classe Volume che permette di creare un volume prendendo in input i dati
sul titolo e casa editrice (di tipo String), anno di pubblicazione (di tipo int) e
lista degli autori (di tipo AddOnlyList<String>), e dispone di un metodo per
stabilire se due volumi sono uguali.
3) Una classe Record che memorizza il riferimento a un volume e un flag
booleano che indica se il volume prestato o meno.
4) Una classe ArrayDict<K,V> che implementa linterfaccia
public interface Dictionary<K,V> extends Iterable<K> {
public void insert(K key, V value );
public void delete(K key);
public V search(K key);
}
2 copie
quindi ricerca e presta una copia del volume di Lewis & Chase e quella di
Bertossi, e infine stampa tutte le informazioni relative ai volumi della biblioteca
(autori, titolo, anno di pubblicazione, casa editrice, posizione, disponibilit).
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 7), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
operations:
creaCircList()circlist
addCircList(circlist, item) circlist
delCircList(circlist) circlist
value(circlist) item
isEmpty(circlist) boolean
ruotaAvanti(circlist) circlist
ruotaIndietro(circlist) circlist
numItem(circlist) integer
sud
sud-ovest
/* ruota in avanti */
/* ruota indietro */
/* restituisce la direz.*/
Definire una classe Navigazione che registra la direzione seguita da una nave
durante la navigazione. La registrazione avviene a intervalli regolari ed
memorizzata in una LinkedList<Record> dove ogni Record contiene la
direzione di navigazione e l'istante in cui la navigazione stata rilevata. La direzione
registrata ottenuta dalla bussola a bordo.
Dotare la classe Navigazione di un metodo naviga(int N) che genera in
modo casuale N punti di rilevazione a intervalli regolari e che a ogni rilevazione
decide, con uguale probabilit (pari a 1/3), se far ruotare la nave di 45 oppure no.
Dotare la stessa classe del metodo toString() che restituisce una stringa
corrispondente alla traiettoria seguita.
Testare il metodo naviga nel main di Navigazione, in modo da far navigare una
nave per trenta punti di rilevazione e stamparli.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppato, il file eseguibile
(prova.jar), e un file output.txt contenente loutput del programma.
Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
Quindi definire una classe Skype che destinata a contenere i pacchetti di una
singola comunicazione skype. Essa parzialmente definita come segue:
public class Skype implements Comparable {
private IndexedList<Pacchetto> comunicazione =
new IndexedList<Pacchetto>();
...
}
I metodi di cui dotata la classe Skype sono i seguenti:
addPacchetto(Pacchetto) void
complete() boolean
toString() String
aggiunge
un
pacchetto
alla
comunicazione skype posizionandolo
nella posizione corretta
verifica se una comunicazione
completa, cio sono stati aggiunti tutti i
pacchetti che la compongono
restituisce la composizione dei dati di
tutti i pacchetti della comunicazione,
anche non completo, scandendo la lista
con indice che varia da 0 fino allultimo
valore valido.
Pertanto si definiscano:
1) Una classe VectorList<S> che implementi la seguente interfaccia:
public interface AddOnlyList<S> extends Iterable<S>{
public void add(S e);
public String toString();
}
La classe permette di creare, una lista di elementi, eventualmente ripetuti, di tipo
S, accodandoli uno per volta, e di scorrere la lista di elementi mediante un
iteratore. Si usi un array per realizzare tale classe.
2) Una classe Articolo che permette di memorizzare i dati associati a un articolo:
gli autori (di tipo AddOnlyList<String>) e il volume (di tipo int);
3) Una classe LinkedDict<K,V> che implementa linterfaccia
public interface Dictionary<K,V> extends Iterable<K> {
public void insert(K key, V value );
public void delete(K key);
public V search(K key);
}
ricorrendo ad una rappresentazione collegata. Si suggerisce di utilizzare il metodo
equals per stabilire se due chiavi sono uguali oppure no.
4) Una classe Rivista che realizza il dato astratto rivista. Essa definita come
segue:
public class Rivista {
protected Dictionary<String,Articolo> articoli;
protected Dictionary<Integer,Boolean> volumi;
//metodi ...
}
che memorizza
- in articoli i titoli degli articoli (di tipo String) con i dati associati,
- in volumi i numeri dei volumi e l'informazione se questi siano stati pubblicati
o meno.
5) Una classe Test con metodo main che crea una rivista memorizzando i seguenti
articoli:
Autori:
Titolo:
Volume:
Autori:
Titolo:
Volume:
Autori:
Titolo:
Volume:
Autori:
Titolo:
Volume:
Donato Malerba
A relational perspective on spatial data mining
1
Clay Woolam, Latifur Khan
Multi-label large margin hierarchical perceptron
1
Vassilios S. Verykios, Alexandros Karakasidis, Vassilios K. Mitrogiannis
Privacy preserving record linkage approaches
2
Massimiliano Caramia, Stefano Giordani
On the selection of k efficient paths by clustering techniques
3
#occorrenze
1
1
2
2
f j 1 f j 1
N
2
N 2
wj
dove wj una parola presente o in B' o in B" o in entrambi, f'j (f"j) leventuale
numero di occorrenze di wj nel bag B' (B"), e N' (N") il numero di occorrenze
totale nel bag B' (B").
4) Implementare una classe Test che crea le bag-of-words dei seguenti tre testi:
A: Questo un sistema innovativo per la scoperta automatica di plagi
B: Questo sistema innovativo permette la scoperta automatica di plagi
C: Questo sistema non fa proprio nulla di interessante
elenca le parole di ogni bag-of-words con le relative occorrenze, calcola e stampa
le similarit fra A e B, B e C, A e C.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 4), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
runnable
stopped
runnable
stopped
RUNNABLE
STOP
Definire una classe Test che mantiene tre code di processi, tutte istanze di
CodaLL<Process>: la priorit degli Item di ognuna delle tre code definita
in base alla priorit associata alle istanze di Process. Dotare la classe di un
metodo main che genera 15 istanze di processo, le stampa e le memorizza nella
coda degli UNRUNNABLE scegliendo la priorit di ognuno in modo casuale.
Quindi inizia a svuotare la coda degli UNRUNNABLE cambiando lo stato di
processo e mettendo i processi estratti nella coda dei RUNNABLE. Infine svuota
la coda questa coda cambiando casualmente di stato e di priorit i processi
runnable e riempiendo le code UNRUNNABLE o STOP. Stampare i processi man
mano che si inseriscono in queste tre code.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 4), il file
eseguibile (prova.jar) e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
linterfaccia
Pertanto si definiscano:
1) Una classe VectorList<S> che implementi la seguente interfaccia:
public interface AddOnlyList<S> extends Iterable<S>{
public void add(S e);
public String toString();
}
La classe permette di creare, una lista di elementi, eventualmente ripetuti, di tipo
S, accodandoli uno per volta, e di scorrere la lista di elementi mediante un
iteratore. Si usi un array per realizzare tale classe.
2) Una classe Volume che permette di creare un volume prendendo in input i dati
sul titolo e casa editrice (di tipo String), anno di pubblicazione (di tipo int) e
lista degli autori (di tipo AddOnlyList<String>), e dispone di un metodo per
stabilire se due volumi sono uguali.
3) Una classe Record che memorizza il riferimento a un volume e un flag
booleano che indica se il volume prestato o meno.
4) Una classe LinkedDict<K,V> che implementa linterfaccia
public interface Dictionary<K,V> extends Iterable<K> {
public void insert(K key, V value );
public void delete(K key);
public V search(K key);
}
1 copia
2 copie
1 copia
quindi ricerca e presta una copia del volume di Deitel & Deitel e quella di
Bertossi, e infine stampa tutte le informazioni relative ai volumi della biblioteca
(autori, titolo, anno di pubblicazione, casa editrice, posizione, disponibilit).
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 7), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
String nome: che definisce il nome della frazione di tempo (per esempio, I,
II, III, IV, ecc. )
3) Implementare una classe OrologioDaPolso che si compone di due istanze di
orologio:
Orologio<Ora> ore;
Orologio<Minuto> minuti;
e permette di costruire un orologio dove le ore sono espresse in numeri arabi. Il
costruttore stampa tutte le frazioni associate sia a ore che a minuti. La classe
OrologioDaPolso dispone di un metodo stopAt(Ora o, Minuto m)
che invocando ripetutamente il metodo rotateF sia su ore che su minuti,
simuli lo scorrimento del tempo fermando le lancette dellorologio allora indicata
e stampando lorario nel formato ore:minuti.
Estendere a OrologioDaPolso il metodo equals previsto per
Orologio, in modo da verificare che due orologi da polso siano uguali (stesse
frazioni e stesso orario).
4) Implementare una classe Test che istanzia due volte OrologioDaPolso,
invoca il metodo start() su una delle due istanze, blocca un orologio alle 3:59
e stabilisce se i due orologi sono uguali o meno. Quindi fa ripartire lorologio
bloccato e completa la giornata, al termine della quale verifica che i due orologi
siano uguali.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 4), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando:
java jar prova.jar
f j + 1 f j + 1
+
N
2
N + 2
wj
dove wj una parola presente o in b' o in b" o in entrambe, f'j (f"j) leventuale
numero di occorrenze di wj nel bag b' (b"), e N' (N") il numero di occorrenze
totale nel bag b' (b").
4) Implementare una classe Test che crea tre bag-of-word per i seguenti testi:
a: Those who cannot remember the past are condemned to repeat it
b: Those who misquote Santayana are condemned to paraphrase him
c: Sanity is a madness put to good uses
elenca le parole distinte di ogni testo con le relative occorrenze, calcola e stampa
le similarit fra le coppie di testi (a, b), (b, c) e (a, c).
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 4), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
generato in modo pseudo casuale nellintervallo [-5, 35]. sufficiente una precisione di
una sola cifra decimale. Se il metodo poll() restituisce il valore costante statico
pubblico NO_VALUE definito in Sensore e non compreso in [-5, 35], allora vuol
dire che il sensore non ha risposto al polling.
Si definisca inoltre una classe ReteSensori che:
1) piazza n sensori della rete
2) interroga periodicamente tutti i sensori piazzati per t istanti di tempo successivi,
e aggiorna ad ogni istante di tempo sia la struttura dati snapshot che la
struttura dati rete, stampandone il contenuto.
boolean isEmpty();
Posizione firstList();
boolean endList(Posizione<T> p);
Posizione succ(Posizione<T> p);
Posizione pred(Posizione<T> p);
void insert(T e, Posizione<T> p);
T read(Posizione<T> p);
}
e Posizione<T> una interfaccia cos definita:
public interface Posizione<T> {}
Si definiscano due classi LinkedList<T> e Pointer<T> che implementano
rispettivamente Lista<T> e Posizione<T> ricorrendo a una rappresentazione
collegata.
Implementare la classe Test dotata di un metodo public static void
main(), che genera una rete con 6 sensori e che effettua il polling dei sensori per 10
istanti di tempo consecutivi. Assicurarsi che di tanto in tanto qualche sensore non
trasmetta un valore, cio restituisca un NO_VALUE.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto, il file eseguibile (prova.jar), e un file
output.txt contenente loutput del programma. Assicurarsi che prova.jar sia
eseguibile lanciando il comando
java jar prova.jar
descritto
#occorrenze
2
2
1
1
f j + 1 f j + 1
+
N
2
N + 2
wj
dove wj una parola presente o in B' o in B" o in entrambi, f'j (f"j) leventuale
numero di occorrenze di wj nel bag B' (B"), e N' (N") il numero di occorrenze
totale nel bag B' (B").
4) Implementare una classe Test che crea le bag-of-words dei seguenti tre testi:
A: La scienza vale pi delle perle e nessuna cosa preziosa la uguaglia
B: Le perle di scienza popolare sono tante, ma la pi preziosa quella di sopra
C: Non ci sono molti termini comuni con le altre frasi
elenca le parole di ogni bag-of-words con le relative occorrenze, calcola e stampa
le similarit fra A e B, B e C, A e C.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 4), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
Si ricorda che un voto pu riferirsi a una lista elettorale, oppure essere considerato
nullo o ancora scheda bianca.
Pertanto si definiscano:
1) una classe ListaElettorale che rappresenta una lista elettorale. La classe
deve disporre di un costruttore che consente di attribuire un nome (di tipo
String) alla lista, oltre che un elenco (del tipo Java List) di nominativi di
candidati. La classe implementa linterfaccia Comparable (il confronto si basa
solo sul nome) e dispone anche di un metodo che consente la stampa, ricorrendo
al metodo println, della lista elettorale (solo il nome, in caratteri maiuscoli).
2) Una classe Voto che dispone di due costruttori:
a. Voto(ListaElettorale s) crea un voto per una lista elettorale s; se
s null allora il voto nullo;
b. Voto() crea un voto corrispondente a una scheda bianca;
e di tre metodi:
c. boolean nullo() stabilisce se il voto nullo;
d. boolean sbianca() stabilisce se il voto una scheda bianca;
e. ListaElettorale
voto()
restituisce
una
istanza
di
ListaElettorale nel caso di voto non nullo o di scheda non bianca,
mentre restituisce null altrimenti.
3) Una classe Elezione che implementa tutte le operazioni del dato astratto
elezione. Essa permette quindi di memorizzare:
a. Il numero degli aventi diritti al voto;
b. Il numero di schede nulle e di schede bianche;
c. Le liste elettorali con il numero dei voti attribuiti.
Per il punto c. la classe Elezione dispone di un attributo:
protected Dictionary<Integer> listeElettorali
dove Dictionary cos definita:
public interface Dictionary<S> extends Iterable<S>{
public void insert(S e, Comparable k);
public void delete(Comparable k);
public S search(Comparable k);
}
Lattributo listeElettorali memorizza le liste elettorali associandole a un
intero che rappresenta il numero di voti attribuiti alla lista.
4) Una classe LinkedDict<S> che implementa linterfaccia Dictionary<S>
ricorrendo una struttura collegata (anche semplice, con solo puntatore in avanti).
5) Una classe che implementa literatore su un LinkedDict<S>.
6) Una classe Test con metodo main che crea una elezione con almeno le
seguenti quattro liste elettorali:
W lItalia,
In medio stat virtus
Ecumenismo a sinistra,
Metamorfosi,
e 50 aventi diritto al voto. Quindi genera in modo casuale, stampa e scrutina 30
voti attribuendoli alle varie liste elettorali, se validi. Infine stampa il numero delle
schede nulle, delle schede bianche e lelenco delle liste elettorali ordinate in
ordine crescente in base al numero di voti attribuiti.
Per lelenco dei nomi dei candidati o per lelenco ordinato delle liste elettorali si pu
utilizzare qualunque classe che implementa linterfaccia Java List.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 3), il file
eseguibile (prova.jar) e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
Pertanto si definiscano:
1) una classe Autore che permette di creare un autore specificandone cognome, nome e
affiliazione (tutti di tipo String), e dispone di un metodo:
public String toString(); //converte un autore in stringa
2) una classe Autori che implementa Iterable<Autore> e consente di creare un
insieme di istanze di Autore mediante i seguenti metodi;
public Autori();//costruisce un insieme vuoto
public void add(Autore a); //aggiunge un autore distinto
3) una classe Collaborazione che conserva i riferimenti ai due autori (distinti) che
collaborano, il titolo (di tipo String) dellarticolo comune e lanno di pubblicazione (di
tipo integer, non superiore allanno della data di sistema), e dispone di un metodo:
public String toString(); //converte una collab. in stringa
4) una classe Collaborazioni che implementa Iterable<Collaborazione> e ha
due attributi:
private Autore[] nodi = new Autore[0];
private Collaborazione[] archi = new Collaborazione[0];
che permettono di memorizzare i dati di una collaborazione. La classe implementa le
operazioni indicate nelle specifiche sintattiche.
5) una classe Test con metodo main che crea due collaborazioni, quella specifica di
ricercatori in Algoritmi e Strutture Dati e quella pi generale di ricercatori in Informatica,
stampa le collaborazioni e verifica che la prima sia inclusa nella seconda. I nomi degli
autori, i titoli degli articoli, e gli anni di pubblicazione sono scelti dallo studente, che deve
comunque assicurare la presenza di almeno quattro pubblicazioni per ognuna delle due
collaborazioni.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 5), il file eseguibile
(prova.jar), e un file output.txt contenente loutput del programma.
Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
Si definisca il voto come un tipo enumerativo che assume valori si, no,
nulla, bianca.
Ci premesso:
1) implementare una classe ArrayOrdinato per linterfaccia Dictionary
ed eventuali classi per la gestione di eccezioni e per literatore;
2) le classi Quesito e Referendum.
3) Scrivere una classe Test con metodo main che crea un referendum con i
seguenti quattro quesiti referendari:
abrogazione delle prove di esame,
abrogazione della frequenza obbligatoria,
abrogazione delle tasse universitarie,
abrogazione del diritto allo studio,
per 20 votanti. Quindi genera N voti diversi per ognuno dei quesiti, con N
generato casualmente e compreso fra 7 e 13, e li scrutina. Infine stampa, per
tutti i quesiti referendari, gli N voti scrutinati, il numero complessivo dei voti
scrutinati (N) e se stato raggiunto il quorum (usando il metodo quorum).
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 3), il file
eseguibile (prova.jar) e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
operations:
creaCircList()circlist
addCircList(circlist, item) circlist
delCircList(circlist) circlist
value(circlist) item
isEmpty(circlist) boolean
numItem(circlist) integer
setDir (circlist, direzione) circlist
ruota (circlist) circlist
operations:
creaCircList()circlist
addCircList(circlist, item) circlist
delCircList(circlist) circlist
value(circlist) item
isEmpty(circlist) boolean
ruotaAvanti(circlist) circlist
numItem(circlist) integer
beta
gamma
delta
epsilon
zeta
eta
theta,
epsilon
zeta
eta
theta
alfa
beta.
Definire una classe Processo in cui per ogni processo si conserva lidentificatore
(id) del processo (un numero naturale) e la durata del processo (espresso in numero
di millisecondi). Si suppone di conoscere a priori la durata del processo. Il numero
del processo generato automaticamente ed progressivo.
Definire uno schedulatore di processi (classe Scheduler) che ha i seguenti metodi:
1) un costruttore che crea una lista circolare vuota di processi.
2) Un metodo void addProcess() che aggiunge un nuovo processo in coda
alla lista circolare di processi, assegnando ad esso una durata in millisecondi
compresa fra 50 e 800.
3) Un metodo void executeProcess() che esegue per una fetta di tempo
TIME_SLICE il primo processo nella lista circolare di processi, riduce il
494)
248)
550)
643)
operations:
creaCircList()circlist
addCircList(circlist, item) circlist
delCircList(circlist) circlist
value(circlist) item
isEmpty(circlist) boolean
ruotaAvanti(circlist) circlist
numItem(circlist) integer
beta
gamma
delta
epsilon
zeta
eta
theta,
epsilon
zeta
eta
theta
alfa
beta.
Definire una classe Processo in cui per ogni processo si conserva lidentificatore
(id) del processo (un numero naturale) e la durata del processo (espresso in numero
di millisecondi). Si suppone di conoscere a priori la durata del processo.
Definire uno schedulatore di processi (classe Scheduler) che ha i seguenti metodi:
1) un costruttore che crea una lista circolare vuota di processi.
2) Un metodo void addProcess() che aggiunge un nuovo processo alla lista
circolare di processi, assegnando ad esso un id progressivo e una durata in
millisecondi compresa fra 50 e 800.
3) Un metodo main che itera 9 volte come segue:
a. genera un nuovo processo, avente durata definita in modo casuale, e lo
aggiunge alla lista dei processi mediante il metodo addProcess();
EspressionePolacca(String espressione)
che presa in input una stringa che rappresenta una espressione in notazione
polacca, come:
123 245 + 127 2 * 1 /
Si vuole un programma che trovi una via duscita a partire da una qualunque
posizione di partenza nel labirinto, supponendo che gli spostamenti leciti sono sopra,
a destra, sotto e a sinistra della posizione corrente. Si osservi che:
se la posizione di partenza una cella occupata, allora si pu immediatamente
concludere che non c soluzione;
se la posizione di partenza una cella libera lungo il bordo della matrice, allora
si pu subito concludere che c una soluzione (si gi a un punto di uscita);
in tutti gli altri casi occorrer esplorare il labirinto alla ricerca di un punto
duscita. La ricerca potrebbe concludersi con un insuccesso.
Per lesplorazione si utilizzer una struttura dati lineare con gestione LIFO (pila),
dove verr memorizzato il percorso che si sta progressivamente esplorando. Ogni
qualvolta si raggiunge un vicolo cieco, si provveder a estrarre dalla pila lultima
posizione inserita per sostituirla con una alternativa. Ad esempio, con riferimento al
labirinto mostrato sopra, se il percorso costruito dopo due passi :
Passo
0 (iniziale)
1
2
Posizione
(1,2)
(1,3)
(1,4)
{1,
{1,
{1,
{1,
{1,
1,
0,
0,
0,
1,
1,
0,
1,
1,
1,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
0},
1},
1},
1},
1}};
RUNNABLE
STOP
Definire una classe Test che mantiene tre code di processi, tutte istanze di
CodaLL<Process>: la priorit degli Item di ognuna delle tre code definita
in base alla priorit associata alle istanze di Process. Dotare la classe di un
metodo main che genera 15 istanze di processo, le stampa e le memorizza nella
coda degli UNRUNNABLE scegliendo la priorit di ognuno in modo casuale.
Quindi inizia a svuotare la coda degli UNRUNNABLE cambiando lo stato di
processo e mettendo i processi estratti nella coda dei RUNNABLE. Infine svuota
la coda questa coda cambiando casualmente di stato e di priorit i processi
runnable e riempiendo le code UNRUNNABLE o STOP. Stampare i processi man
mano che si inseriscono in queste tre code.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 4), il file
eseguibile (prova.jar) e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
Si chiede pertanto di definire una classe Layout con i seguenti attributi protetti:
ListaIndicizzata<Block> blocchi;
per memorizzare i blocchi, indicizzandoli in base al loro id;
LinkedList<Relation> above;
per memorizzare le coppie di blocchi in relazione above;
LinkedList<Relation> left;
per memorizzare le coppie di blocchi in relazione left;
I metodi pubblici di Layout sono quelli riportati nella specifica sintattica. Si precisa
che addAbove verifica che il primo blocco sia effettivamente al sopra il secondo,
cio che lordinata dellangolo in basso a destra del primo blocco sia maggiore
dellordinata dellangolo in alto a sinistra del secondo blocco. Analoghi controlli di
consistenza sono anche effettuati da addLeft. La lista restituita da neighbour
una istanza di una qualche classe che implementa linterfaccia java.util.List.
Linterfaccia ListaIndicizzata<T> la seguente:
public interface ListaIndicizzata<T> {
public boolean isEmpty(int i);
public void addElement(T e, int i);
public T getElement(int i);
public int numberElements();
Iterator<T> iterator();
}
dove il metodo iterator() restituisce un oggetto di una classe che implementa
java.util.Iterable<T> e permette di scandire la lista nellordine di indice.
La classe Relation definita come segue:
class Relation {
int b1;
int b2;
}
dove b1 e b2 sono gli identificatori di una coppia di blocchi in relazione.
Linterfaccia
ListaIndicizzata<T>
implementata
dalla
classe
ListaArray<T> mediante un array di oggetti. Questa classe dispone di un main
che testa i servizi implementati, inserendo delle stringhe in posizioni generate
casualmente e poi stampandole.
Scrivere una classe Test con metodo main che costruisce un semplice layout
composto da almeno sei blocchi, con almeno due relazioni above e due relazioni left.
Stampare, per ogni blocco del layout, le liste dei blocchi adiacenti.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppato, il file eseguibile
(prova.jar), e un file output.txt contenente loutput del programma.
Assicurarsi che prova.jar sia eseguibile lanciando il comando:
java jar prova.jar
Object dato;
Elemento successivo;
Elemento precedente;
2) Creare diverse classi per rappresentare diversi animali (Cane, Gatto, Leone,
Scorpione e Tucano). Le classi sono dotate di costruttore standard e non
hanno attributi.
3) Definire una classe Istogramma che dispone di un attributo privato
HashMap<Class,Integer> istogramma;
e dei seguenti metodi pubblici:
Un costruttore che prende in input un parametro serie di tipo Serie e
calcola un istogramma rappresentante la frequenza dei diversi tipi di oggetti
contenuti in serie (ad esempio, Cane: 2, Gatto: 2, Tucano: 1).
Un metodo print che consente di stampare su linee separate, un certo
numero di asterischi proporzionato alla frequenza, seguito dal nome della
classe a cui fa riferimento la frequenza.
** Cane
** Gatto
* Tucano
4) Scrivere una classe Test con metodo main che riempie una serie di 30 istanze di
diversi tipi di animali scelti fra le cinque classi summenzionate, in modo tale che
la distribuzione delle istanze sia stabilita in modo casuale, e quindi crea un
istogramma su quella serie e lo stampa.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 4), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando:
java jar prova.jar
Nucleotidi
Ognuna delle due classi ha un costruttore pubblico che prende in input una stringa
e crea una istanza di quel polimero.
10) Scrivere una classe Test con metodo main che crea e stampa una istanza di
DNA e una di proteina.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 10), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
a1
a2
an-1
an
Date data
String sqOspitante;
String sqOspitata;
int retiOspitante;
int retiOspitata;
3) Implementare la classe GestionePartite per la gestione delle partite. La classe
dotata di un metodo inizializza che inizializza, riempiendola, la lista delle
partite, invocando il metodo insert di WOListLinked. La classe dotata di un
metodo stampa che stampa lelenco delle partite memorizzate ordinato per data.
4) Dotare la classe GestionePartite anche del metodo:
int partiteVinteOspitante(String sqOspitante, Date d)
che prende in input il nome di una squadra ospitante e restituisce il numero di
partite vinte entro la data specificata.
5) Dotare la classe GestionePartite di un main che invochi i metodi
inizializza
e
stampa,
effettui
diverse
invocazioni
di
partiteVinteOspitante e stampi il risultato.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 5), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar
String sede.
Implementare due classi derivate, InfoFornitore e InfoCliente, che
contengono le informazioni specifiche di fornitore (tipologia) e di cliente (anno).
3) Implementare la classe GestioneDitte per la gestione dei clienti e dei fornitori.
La classe dotata di un metodo inizializza che inizializza, riempiendola, la
tabella unica di clienti e fornitori, invocando il metodo insert e passando di volta
in volta istanze di InfoFornitore o di InfoCliente.
4) Dotare la classe GestioneDitte anche del metodo:
tipoDitta ricerca(String ragionesociale)
che prende in input una ragione sociale e restituisce un valore enumerativo di tipo
tipoDitta che assume valori {UNDEFINED, CLIENTE, FORNITORE}. Il
valore restituito sar CLIENTE se la ragione sociale si riferisce a un cliente, e sar
FORNITORE se la ragione sociale si riferisce a un fornitore. Se la ragione sociale
non dovesse essere n di un fornitore n di un cliente, restituisce UNDEFINED.
5) Dotare la classe GestioneDitte di un main che invochi il metodo
inizializza, effettui diverse invocazioni di ricerca, almeno una per ogni
possibile valore di risposta, stampi il risultato della ricerca (il valore enumerativo) e
cancelli lelemento se il risultato non UNDEFINED.
Al termine della prova lasciare sulla cartella Documenti un file:
<postazione>_<cognome>_<matricola>.zip
contenente i file sorgente (.java) del progetto sviluppati ai punti 1) - 5), il file
eseguibile (prova.jar), e un file output.txt contenente loutput del
programma. Assicurarsi che prova.jar sia eseguibile lanciando il comando
java jar prova.jar