L'obiettivo di questa esercitazione è saper definire ed usare i TDA e prendere confidenza con il concetto occultamento delle informazioni (capitolo 7).
Raccomandazioni: Ove non altrimenti indicato, rispondete alle domande prima ragionando su carta e poi provando a editare, compilare ed eseguire. Gli esercizi etichettati con l'asterisco (*) sono più difficili: affrontateli dopo aver risolto gli altri.
Obiettivo: saper definire ed utilizzare TDA.
Attività:
Freccia
rappresenta una freccia orizzontale
che può essere allungata o accorciata. Se una freccia lunga 0 viene
accorciata ulteriormente, si trasforma in una freccia nel senso inverso.Freccia
con i metodi per
UsoFreccia
con un metodo per stampare
le frecce e che permetta di
a
lunga 3 verso destraa
fino a farla essere lunga 3 ma verso sinistrab
di lunghezza e verso letti da
tastiera--->--->---> --->--->---> --->--->--->(se non avete usato un ciclo avete sbagliato!)
-> -->--> --->--->---> ---->---->---->---->(se non avete usato un ciclo che modifica la freccia avete sbagliato!)
Obiettivo: prendere confidenza con l'occultamento delle informazioni.
Attività:
Ora
rappresenta un'ora del giorno in formato hh:mm.ss,
dove hh è compreso tra 0 e 23, mm e ss
tra 0 e 59.byte
(uno per le ore, uno per i
minuti ed uno per i secondi), ha i metodi
public static byte getOre(Ora o)
che restituisce il numero
di ore di o
public static byte getMinuti(Ora o)
che restituisce il
numero di minuti di o
public static byte getSecondi(Ora o)
che restituisce il
numero di secondi di o
public static void aggiungiOre(Ora o, byte h)
che aggiunge
all'ora o
un numero di ore pari a h
. Attenzione:
se l'ora o
rappresenta le 22:32.12 e si aggiungono
2 ore, il risultato sarà 0:32.12 e non 24:32.12public static void aggiungiMinuti(Ora o, byte m)
che aggiunge
all'ora o
un numero di minuti pari a m
(valgono
le stesse cosiderazioni del punto precedente nel caso si superi la mezzanotte)public static void aggiungiSecondi(Ora o, byte s)
che aggiunge
all'ora o
un numero di secondi pari a s
(valgono
le stesse cosiderazioni del punto precedente nel caso si superi la mezzanotte).UsoTDAOra
che (non fate tutto insieme,
ma controllate ogni volta che aggiungete una stampa)
a
con i valori letti da tastiera (ricordatevi che
i parametri del costruttore sono di tipo byte
e non int
)a
in formato hh:mm.ssa
e poi ne stampi il valorea
e poi ne stampi il valorea
e poi ne stampi il valorea
e poi ne stampi il valore
Ora
utilizzando 3 variabili private
di tipo byte
, ricompilate solo il file Ora.java (javac
Ora.java) ed eseguite di nuovo il programma UsoTDAOra
.
Funziona tutto come prima?Ora
in modo che, invece di usare 3 variabili
private, utilizzi un array di byte
di 3 posizioni.UsoTDAOra
funzioni ancora (non dovete modificarlo! Deve funzionare
esattamente come faceva prima. Se non lo fa vuol dire che avete sbagliato
qualcosa)Ora
in modo che, invece di usare un array di
byte
, utilizzi una sola variabile int
(che rappresenta il numero
di secondi trascorsi dalla mezzanotte).UsoTDAOra
funzioni come prima.Ora
in modo che, invece di usare una variabile
di tipo int
, utilizzi un carattere per le ore ('a' per l'ora 0,
'b' per l'ora 1,..., 'n' per l'ora 11, 'A' per l'ora 12,
'B' per l'ora 13,..., 'N' per l'ora 23) ed una variabile di tipo
int
per i minuti e secondi.UsoTDAOra
funzioni come prima.public static void togliOre(Ora o, byte h)
,
public static void togliMinuti(Ora o, byte m)
e public static void
togliSecondi(Ora o, byte s)
per rendere il TDA aderente alle specifiche del file
TDAOra.html.