Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Complementi di Informatica
Esercizio 1
Scrivere un programma Java contenente:
• Una classe Squadra, che realizza una lista di giocatori, che contiene un metodo per
inserire un giocatore con un certo cognome e un certo numero di maglia nella lista in modo
tale che la lista risulti sempre ordinata in base al numero di maglia (dal più piccolo al più
grande), un metodo per cancellare un giocatore con un certo cognome dalla lista e un
metodo per stampare tutti i giocatori che fanno parte della lista.
• Una classe Esercizio contenente il metodo main che istanzia una squadra, inserisce
nella squadra un numero a piacere di giocatori, ne elimina alcuni e successivamente stampa
a video i giocatori che compongono la squadra usando l'apposito metodo della classe
Squadra.
Soluzione
/*-----------------------------------------
*
* Giocatore
*
*/
class Giocatore {
Giocatore successivo;
String cognome;
int numero;
void stampa() {
System.out.println(cognome + " " + numero);
}
}
/***************************************
**
** Squadra
**
***************************************/
class Squadra {
Giocatore primo;
/*------------------------------
*
* Costruttore
*
*/
/*------------------------------------
*
* Inserzione
*
* La lista deve rimanere ordinata
*
*/
trovato = true;
} else {
precedente = corrente;
corrente = corrente.successivo;
}
}
if (precedente == null) {
primo = g;
} else {
precedente.successivo = g;
}
}
/*------------------------------------------------------------
*
* Cancellare un elemento
*
*/
if (primo != null) {
if (primo.cognome.equals(cognome)) {
primo = primo.successivo;
} else {
Giocatore g = primo;
boolean trovato = false;
if (g.successivo.cognome.equals(cognome)) {
trovato = true;
}
g = g.successivo;
if (trovato) {
g.successivo = g.successivo.successivo;
}
}
}
}
Esercizio 2
Scrivere le seguenti classi Java:
• Una classe Treno, che realizza una lista di vagoni, caratterizzata da:
o un riferimento al primo vagone del treno (o locomotiva, supponendo che la locomotiva
sia in tutto e per tutto uguale a un qualsiasi altro vagone, ad eccezione del fatto che essa
è l'unico vagone che non è preceduto da altri vagoni);
o un costruttore che permette di assegnare un valore di tipo Vagone alla locomotiva;
o un metodo inserisci, che riceve in ingresso un numero intero cap e inserisce un
nuovo vagone di capienza cap in fondo al treno (nel caso in cui il treno sia vuoto,
questo nuovo vagone deve diventare la locomotiva, in tutti gli altri casi deve diventare
l'ultimo vagone del treno).
Correzione
/*-----------------------------------------
*
* Vagone
*
*/
class Vagone {
Vagone successivo;
int cap;
class Treno {
Vagone locomotiva;
/*------------------------------
*
* Costruttore
*
*/
Treno (Vagone l) {
locomotiva = l;
}
/*--------------------------------------------
*
* Inserzione un elemento in coda
*
*/
if (locomotiva == null) {
} else {
Vagone v = primo;
v = v.successivo;
• una classe Automobile caratterizzata da una marca (rappresentabile tramite una stringa),
un colore (rappresentabile tramite una stringa), un numero di targa (rappresentabile tramite
un numero intero), un riferimento all'automobile successiva in una coda di automobili e un
metodo per stampare marca, colore e numero di targa.
• una classe Coda che realizza una coda di automobili, contenente un metodo per inserire
un'automobile in fondo alla coda, uno per estrarre un'automobile dalla testa della coda (nota:
quest'ultimo metodo deve anche cancellare l'automobile estratta) e uno per stampare marca,
colore e targa di tutte le automobili in coda nell'ordine in cui vi sono state inserite.
Svolgimento
/*-----------------------------------------
*
* Automobile
*
*/
class Automobile {
Automobile successivo;
String marca;
String colore;
int targa;
void stampa() {
System.out.println(marca + " " + colore + " " + targa);
}
}
/***************************************
**
** Coda
**
***************************************/
class Coda {
Automobile primo;
/*------------------------------
*
* Costruttore
*
*/
Coda (Automobile p) {
primo = p;
}
/*--------------------------------------------
*
* Inserzione un elemento in coda
*
*/
if (primo == null) {
} else {
Automobile a = primo;
a = a.successivo;
}
a.successivo = new Automobile(null, marca, colore, targa);
}
}
/*--------------------------------------------
*
* Estrazione dalla testa
*
*/
void estrai () {
if (primo != null) {
primo = primo.successivo;
}
}
/*--------------------------------------------
*
* stampa coda
*
*/
void stampa() {
Automobile a = primo;
while (a != null) {
a.stampa();
a = a.successivo;
}
}
}
Esercizio 4
1 una classe Motore caratterizzata da una marca (rappresentabile tramite una stringa), un
numero di telaio (rappresentabile tramite un numero intero), un numero di cilindri
(rappresentabile tramite un numero intero), un riferimento al motore successivo in una coda
e un metodo per stampare marca, telaio e numero di cilindri.
2 una classe CatenaDiMontaggio che realizza una coda di motori, contenente un metodo
per inserire un nuovo motore in fondo alla coda, uno per estrarre un motore dalla testa della
coda e metterlo in produzione (nota: quest'ultimo metodo deve anche rimuovere il motore
estratto dalla catena di montaggio) e uno per stampare marca, telaio e numero di cilindri di
tutti i motori presenti sulla catena di montaggio nell'ordine in cui vi sono stati inseriti.
3 una classe Esercizio contenente un metodo main dove viene istanziata una catena di
montaggio, vi vengono inseriti alcuni motori e poi i vari motori vengono estratti uno per
volta secondo l'ordine di arrivo.
Svolgimento
/*-----------------------------------------
*
* Motore
*
*/
class Motore {
Motore successivo;
String marca;
int telaio
int numCilindri;
void stampa() {
System.out.println(marca + " " + telaio + " " + numCilindri);
}
}
/***************************************
**
** Coda
**
***************************************/
class CatenaDiMontaggio {
Motore primo;
/*------------------------------
*
* Costruttore
*
*/
CatenaDiMontaggio (Motore p) {
primo = p;
}
/*--------------------------------------------
*
* Inserzione un elemento in coda
*
*/
if (primo == null) {
} else {
Motore m = primo;
m = m.successivo;
void estrai () {
if (primo != null) {
primo = primo.successivo;
}
}
/*--------------------------------------------
*
* stampa coda
*
*/
void stampa() {
Motore m = primo;
while (m != null) {
m.stampa();
m = m.successivo;
}
}
}