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