Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il valore come numero decimale ( attenzione alla conversione di tipo) 2. Creare un applicazione che calcoli (mediante un'opportuna struttura di controllo) e visualizzi la somma e il prodotto dei seguenti valori interi: 16, 33, 54, 29, 7 memorizzati in un array di 5 elementi ( attenzione alla definizione di un array) 3. Creare un applicazione che ad ogni esecuzione visualizza un numero casuale decimale tra 0 e 1 se alla linea di comando è stato specificato come parametro dec oppure se non è stato specificato alcun parametro, e un numero casuale intero tra 0 e 10 se è stato specificato come parametro int [cercare nel package java.util la classe Random] ( attenzione al metodo di confronto tra stringhe) 4. Creare un applicazione che ad ogni esecuzione visualizza l ora corrente in ms [cercare nel package java.lang la classe System] ( attenzione al concetto di metodo statico; notare l importazione automatica del package) 2
Esercizi / problemi /2 5. Creare un applicazione che, usando la classe Conto (il sorgente è qui sotto), crei due conti, li movimenti con alcuni versamenti e prelievi, e quindi ne confronti i rispettivi saldi visualizzando quale dei due ha il saldo più elevato class Conto { public int saldo; public Conto(int valoreiniziale) { saldo = valoreiniziale; // nuova classe // proprietà della classe // costruttore della classe public void versamento(int valore) { // metodo della classe saldo += valore; public void prelievo(int valore) { saldo -= valore; // metodo della classe 6. Creare un applicazione che effettui alcuni esempi di elaborazione di stringhe, esplorando in particolare i metodi substring(), indexof(), replaceall(), split() 3 Soluzioni (problema 1) class Pr1 { /* La media è un numero intero in quanto i numeri inseriti sono interi. Il risultato è 58 */ System.out.println((35+117+23)/3); /* La media è un numero intero nonostante si sia effettuato un CASTING da int a double. In questo caso la media viene calcolata come numero intero e il risultato finale viene convertito in decimale Il risultato è 58.0 */ System.out.println((double)((35+117+23)/3)); /* La media è un numero decimale (double). Il risultato è 58.3...*/ System.out.println((double)(35+117+23)/3); /* La media è un numero decimale in quanto il valore 3.0 è un numero decimale. Il risultato è 58.3...*/ System.out.println((35+117+23)/3.0); 4
(problema 2) class Pr2 { /* La prima linea compie due operazioni: * 1. DICHIARO la variabile "numeri" di tipo array (le parentesi quadre) di interi (int) * 2. INIZIALIZZO la variabile "numeri" (new int) ad array di cinque elementi. */ int[] numeri = new int[5]; int somma = 0; int molt = 1; /* Si ricorda che l'indice dell'array parte da 0 (non da 1!), per cui se la lunghezza di un * array <nome array>.length è pari a n l'indice degli elementi va da 0 a n-1. */ numeri[0] = 16; numeri[1] = 33; numeri[2] = 54; numeri[3] = 29; numeri[4] = 7; /* Il ciclo for crea la somma ed il prodotto. */ for (int i = 0; i < numeri.length; i++) { somma += numeri[i]; molt = molt * numeri[i]; System.out.println("Somma: " + somma); System.out.println("Moltiplicazione: " +molt); 5 (problema 3) import java.util.random; class Pr3 { /* Istanzio un oggetto di tipo Random. */ Random numerocasuale = new Random(); System.out.print("numerocasuale: "); /* la prima condizione di controllo verifica se sia stato inserito da linea di comando un parametro. La seconda condizione controlla che il parametro inserito sia uguale a dec. Si noti che per effettuare il controllo dell uguaglianza di due stirnghe occorre utilizzare il metodo equals. */ if(args.length == 0 args[0].equals("dec")) { System.out.println(numerocasuale.nextDouble()); else { System.out.println(numerocasuale.nextInt(10)); 6
(problema 4) class Pr4 { /* Si noti che i metodi System.out.println e System.currentTimeMillis possono essere chiamati direttamente senza essere dichiarati e inizializzati.*/ System.out.println(System.currentTimeMillis()); 7 (problema 5, parte 1) Creazione e movimentazione di un conto corrente class Pr5 { /* DEFINISCO la variabile cc di tipo Conto e CREO l oggetto conto attraverso la scrittura new Conto(). Il valore 5 è il parametro richiesto dal costruttore Conto della classe. */ Conto cc = new Conto(5); /* Controllo il saldo. Il saldo è una proprietà della classe Conto. */ System.out.println(cc.saldo); /* Effettuo un versamento. Il versamento è un metodo della classe Conto, richiede in ingresso un intero (int) e non fornisce nulla in uscita (void). */ cc.versamento(2); /* Effettuo un prelievo. Il prelievo è un metodo della classe Conto, richiede in ingresso un intero (int) e non fornisce nulla in uscita (void). */ cc.prelievo(4); System.out.println(cc.saldo); 8
(problema 5, parte 2) Creazione e movimentazione di due conti correnti class Pr5 { /* In questo caso ISTANZIO due oggetti di tipo Conto. I due oggetti sono distinti. */ Conto cc1 = new Conto(5); Conto cc2 = new Conto(10); cc1.versamento(2); cc2.prelievo(4); /* Confronto la proprietà saldo dei due conti correnti. */ if(cc1.saldo > cc2.saldo) { System.out.println("cc1 maggiore di cc2"); System.out.println("Saldo cc1: " + cc1.saldo); else { System.out.println("cc2 maggiore o uguale di cc1"); System.out.println("Saldo cc2: " + cc2.saldo); Nota: In entrambi casi non si è importata la classe in quanto si è ipotizzato che l applicazione Pr5 fosse posizionata nella stessa cartella della classe Conto 9