Ministero dell’Istruzione, dell’Università e della Ricerca
Istituto Tecnico Industriale Statale “Enrico Mattei”
Via Martiri di Cefalonia 46 - 20097 San Donato Milanese
Tel. 0255691411 - Fax 025276676 [email protected] www.itismattei.it
LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)
Ripassare quanto studiato durante l’anno e svolgere gli esercizi assegnati con le modalità illustrate durante le ultime
lezioni. Gli studenti che devono sostenere la prova scritta di recupero del debito a settembre possono tralasciare gli
esercizi facoltativi, concentrandosi in particolare sugli argomenti di base relativi alla programmazione ad oggetti il Java
(I/O da console, stringhe e funzioni matematiche, concetto di classe, attributi, metodi, costruttori, overloading, oggetti
annidati, array di oggetti, ereditarietà e polimorfismo, eccezioni).
DAL LIBRO DI TESTO (J
AVA
:
- ED. MINERVA SCUOLA)
- Modulo A, Unità Didattica A3
ripasso completo del capitolo, con esercizi finali
- Modulo B, Unità Didattica B1
ripasso completo del capitolo, con esercizi finali
- Modulo B, Unità Didattica B2
ripasso dei paragrafi 2.1, 2.2, 2.4, 2.5, 2.6, 2.10 e relativi esercizi finali
ESERCIZI:
•
Realizzare una classe Java per un programma di geometria analitica chiamata PUNTO con la
seguente struttura:
- attributi:
x,y
(coordinate del punto)
- costruttore a zero parametri:
x=0, y=0
- costruttore a due parametri:
parametri: x e y
- costruttore copia
- funzioni membro:
setXY
per il settaggio dei valori di x e y
getX
per ricavare il valore di x
getY
per ricavare il valore di y
toString
per restituire la stringa di visualizzazione del punto
muovi(int orizz ,int vert)
per muovere il punto orizzontalmente e/o verticalmente
•
Realizzare un programma Java che crei un array di 100 punti, li inizializzi con le coordinate dei
punti posizionati sulla funzione y=cos(x) nell’intervallo 0-5 ed infine visualizzi il vettore.
1
•
Realizzare una classe Java chiamata CERCHIO con la seguente struttura:
- attributi:
- costruttore a zero parametri:
- costruttore a due parametri:
- costruttore a tre parametri:
- costruttore copia
- funzioni membro:
setXYR
getX
getY
getR
getCirc
getArea
inContatto
r (raggio del cerchio - double)
c (centro del cerchio - punto)
centro (0,0) e raggio 10
parametri: centro e raggio
parametri: coordinate del centro (xc e yc) e raggio
per il settaggio dei valori di xc, yc, r
per ricavare il valore di xc
per ricavare il valore di yc
per ricavare il valore di r
per ricavare il valore della circonferenza del cerchio
per ricavare il valore dell'area del cerchio
per restituire true o false a seconda che due cerchi siano o no in
contatto.
•
Realizzare un programma Java che, dopo aver creato e inizializzato un oggetto CERCHIO,
consenta visualizzare la posizione del centro, il raggio, la circonferenza e l'area del cerchio.
•
Successivamente realizzare un programma Java che , dopo aver creato e inizializzato due oggetti
CERCHIO, comunichi all’operatore se i due cerchi sono o no in contatto.
• Realizzare la seguente classe Java: public class Frazione
Costruttori:
Frazione(int x) Costruisce una nuova Frazione il cui numeratore è uguale all'argomento e il cui denominatore è 1.
Frazione(int x, int y) Costruisce una nuova frazione il cui valore è il rapporto fra il primo argomento e il secondo argomento.
Metodi:
Frazione diviso(Frazione f)
boolean
int
int
void
void
boolean
boolean
Frazione
Restituisce il riferimento a un nuovo oggetto che rappresenta la frazione ottenuta dividendo la frazione che esegue il
metodo per quella specificata come argomento.
equals(Frazione f)
Confronta la frazione rappresentata dall'oggetto che esegue il metodo con la frazione specificata come argomento.
getDenominatore()
Restituisce il valore del denominatore della frazione.
getNumeratore()
Restituisce il valore del numeratore della frazione.
setDenominatore(int y)
Modifica il valore del denominatore della frazione.
setNumeratore(int x)
Modifica il valore del numeratore della frazione.
isMaggiore(Frazione f)
Confronta la frazione rappresentata dall'oggetto che esegue il metodo con la frazione specificata come argomento,
restituisce true se la frazione che esegue il metodo è maggiore di quella specificata come argomento, false altrimenti.
IsMinore(Frazione f)
Confronta la frazione rappresentata dall'oggetto che esegue il metodo con la frazione specificata come argomento,
restituisce true se la frazione che esegue il metodo è minore di quella specificata come argomento, false altrimenti.
meno (Frazione f)
Restituisce il riferimento a un nuovo oggetto che rappresenta la frazione ottenuta sottraendo la frazione specificata come
argomento a quella che esegue il metodo.
Frazione per(Frazione f)
Restituisce il riferimento a un nuovo oggetto che rappresenta la frazione ottenuta moltiplicando la frazione specificata
come argomento con quella che esegue il metodo.
Frazione piu(Frazione f)
Restituisce il riferimento a un nuovo oggetto che rappresenta la frazione ottenuta sommando la frazione specificata come
argomento a quella che esegue il metodo.
String toString()
Restituisce una stringa di caratteri che descrive la frazione rappresentata dall'oggetto che esegue il metodo.
Successivamente realizzare un programma main Java che realizza una minicalcolatrice per frazioni.
2
•
Realizzare una classe Java chiamata CERCHIO2 e derivata dalla classe PUNTO con la struttura
costituita dall'eredità della classe PUNTO con in aggiunta:
- attributi:
- costruttore a zero parametri:
- costruttore a due parametri:
- costruttore a tre parametri:
- costruttore copia
- funzioni membro:
setR()
getR()
getCirc()
getArea()
r (raggio del cerchio)
centro (0,0) e raggio 10
parametri: centro e raggio
parametri: coordinate del centro (xc e yc) e raggio
per il caricamento da tastiera del valore di r
per ricavare il valore di r
per ricavare il valore della circonferenza del cerchio
per ricavare il valore dell'area del cerchio
•
Successivamente realizzare un programma Java che, dopo aver creato e inizializzato un oggetto
CERCHIO2, consenta visualizzare la posizione del centro, il raggio, la circonferenza e l'area del
cerchio.
•
Progettare e realizzare una classe Java per rappresentare una carta da gioco. Per rappresentare la
carta usare un intero per rappresentarne il valore (1-10) e un char per rappresentare il seme
(Coppe, Denari, Spade, Bastoni).
La classe deve contenere i seguenti metodi:
- costruttore con nessun parametro (la carta costruita sarà “nulla” cioè di valore pari a zero)
- costruttore con due parametri (vengono passati valore e seme)
- metodo per estrarre il valore della carta
- metodo per estrarre il seme della carta
- metodo per modificare il valore della carta
- metodo per modificare il seme della carta
- metodo per visualizzare la carta, esempio: 7 di denari
Scrivere un semplice programma per testare la classe appena creata.
•
Progettare e realizzare una classe Java per rappresentare un mazzo di 40 carte da gioco. Per
rappresentare il mazzo usare un array di oggetti carta. L’assenza della carta dal mazzo sarà
indicata usando la carta “nulla” cioè di valore pari a zero.
La classe deve contenere i seguenti metodi:
- costruttore con nessun parametro (il mazzo di carte deve essere creato con le 40 carte disposte in ordine
crescente e suddivise per seme: Coppe, Denari, Spade, Bastoni)
- metodo per visualizzare l’intero mazzo
- metodo per estrarre la prima carta del mazzo
- metodo per estrarre l’ultima carta del mazzo
- metodo per estrarre una carta a caso nel mazzo
- metodo per inserire una carta all’inizio del mazzo
- metodo per inserire una carta alla fine del mazzo
- metodo per contare le carte presenti nel mazzo
- metodo per mischiare il mazzo
Scrivere un programma (o una nuova classe) per testare la classe appena creata (si suggerisce il gioco “7 e ½”).
3
•
Progettare e realizzare una classe Java per rappresentare un numero complesso (caratterizzato
dalla parte reale e la parte immaginaria).
La classe deve contenere i seguenti metodi:
- costruttore con nessun parametro (0+i0)
- costruttore con due parametri (vengono passate parte reale e immaginaria)
- metodo per estrarre la parte reale (get)
- metodo per estrarre la parte immaginaria (get)
- metodo per modificare parte reale e immaginaria (set)
- metodo per visualizzare il numero complesso (es: 5+i3)
Attenzione! Prevedere i casi di
- parte immaginaria negativa
- parte imm. uguale a 0
- parte reale uguale a 0
- metodo per estrarre il modulo del numero complesso
- metodo per estrarre l’argomento del numero complesso (attenzione alla divisione per 0)
- metodi di somma, sottrazione, ecc.
- metodo toString (per visualizzare il numero: es. “2+i5”).
Scrivere un semplice programma per testare la classe appena creata.
• Realizzare una classe Java per un programma di gare di atletica chiamata TEMPO con la seguente struttura:
- attributi:
m (minuti), s (secondi)
- costruttore a zero parametri:
inizializzazione attributi → m=0, s=0
- costruttore a due parametri:
parametri → m e s (controllare che siano maggiori o uguali a zero)
- costruttore copia
- funzioni membro:
setTempo
per il settaggio del valore di minuti e secondi (due parametri)
getM
per ricavare il valore di m
getS
per ricavare il valore di s
toString
per ricavare la stringa di visualizzazione del tempo
il tempo con m=5 e s=30 verrà visualizzato: “Tempo: 5 minuti e 30 secondi”
getSecondiTotali
per ricavare il numero totale di secondi (secondi = s + m*60)
setTempo
per il settaggio del valore di minuti e secondi (un solo parametro per i secondi
totali)
Aggiungere inoltre i seguenti metodi:
- metodo per settare il valore di m e s in modo casuale.
- metodo somma per sommare due tempi.
- metodo equals per confrontare due tempi.
Successivamente scrivere un semplice programma main per testare la classe appena creata (tutti i metodi devono essere
testati ed inoltre un array di oggetti tempo settati a valori casuali deve essere creato e visualizzato).
4
•
Realizzare rispettando la gerarchia indicata le seguenti classi Java, prevedendo la presenza dei
seguenti metodi:
- costruttore di default (a 0 parametri)
- costruttore con tutti i parametri
- funzioni per modificare i dati
- funzioni per restituire i dati
- funzioni per la stampa a video dei dati (toString)
utente
protected:
cognome
telefono
public:
.......................
tesserato
protected:
numero tessera
prezzo ingresso
anno di scadenza
public:
.......................
casuale
protected:
prezzo ingresso
indirizzo
public:
.......................
dipendente
protected:
mansione
percentuale sconto
public:
.......................
Realizzare un programma main che:
- consenta di testare tutti i metodi;
- verifichi la sequenza di chiamata dei costruttori;
- verifichi la possibilità di assegnamento tra istanze di classi diverse.
5
•
Realizzare la seguente gerarchia di classi Java:
Successivamente testare le classi create con il seguente codice:
Movable m1 = new MovablePoint(5, 6, 10, 10);
System.out.println(m1);
m1.moveLeft();
System.out.println(m1);
// upcast
Movable m2 = new MovableCircle(2, 1, 2, 2, 20); // upcast
System.out.println(m2);
m2.moveRight();
System.out.println(m2);
•
Scrivere una nuova classe MovableRectangle, che è formata da due MovablePoints (angolo in
alto a sinistra e in basso a destra) e implementa Movable Interface. Assicurarsi che i due punti
abbiano la stessa velocità.
6
•
Scrivere un programma Java che consenta di caricare da tastiera (e successivamente
visualizzare) un array di 10 double usando istruzioni del tipo (inserite voi gli opportuni cicli
for):
public static void main(String[] args) throws IOException {
double v[] = new double[10];
String s;
InputStreamReader flusso = new InputStreamReader(System.in);
BufferedReader ta = new BufferedReader(flusso);
System.out.print("Inserisci un numero!");
s = ta.readLine();
x[0] = Double.parseDouble(s);
}
Successivamente:
1) Verificare il tipo di eccezione che si genera nel caso in cui il formato del numero inserito non
sia valido.
2) Usare il costrutto try catch per evitare il blocco del programma e consentire il reinserimento
dell’elemento con un opportuno messaggio (in caso di errore è sufficiente decrementare il
valore del contatore i).
facoltativo
Utilizzando Netbeans o Eclipse e se necessario aiutandosi con il libro di testo provare a realizzare
semplici applicazioni Java GUI come già visto nelle lezioni di laboratorio durante l’anno scolastico.
facoltativo
Utilizzando ADT con Eclipse e se necessario aiutandosi con il libro di testo provare a realizzare
semplici applicazioni Android per dispositivi mobile come già visto nelle lezioni di laboratorio durante
l’ultimo periodo dell’anno scolastico.
facoltativo
Provare a sviluppare un semplice progetto software a vostra scelta GUI o Android eventualmente
utilizzando anche thread java.
7