Laboratorio di Informatica 4 Novembre 2005 Marco Iarusso Programmazione Java
Ringraziamenti Parte della presente dispensa materiale didattico è derivato dalla dispensa prodotta da Luca Cabibbo Dip. Informatica e Automazione Università degli Studi Roma Tre Il suo utilizzo in questo corso è stato concesso dall autore 2
L oggetto software Math I linguaggi di programmazione consentono di manipolare dati numerici mediante gli operatori aritmetici somma (+), prodotto (*), differenza ( ), divisione (/) Molti linguaggi di programmazione non forniscono operatori per valutare altre funzioni matematiche, come la radice quadrata o il calcolo di potenze è allora utile avere a disposizione un oggetto software bravo in matematica che sappia calcolare le funzioni matematiche più comuni Math Math è un oggetto software bravo in matematica 3
L oggetto software Math La classe Math contiene metodi per eseguire alcune operazioni numeriche fondamentali come la radice quadrata, l esponenziale, il logaritmo e le funzioni trigonometriche. Math.sqrt(n): calcola la radice quadrata del numero n: i.e. Math.sqrt(144)=12 Math.abs(n): calcola il valore assoluto del numero n: i.e. Math.abs(10-13)=3 Math.pow(n,k): calcola il valore di n elevato a k: i.e. Math.pow(3,3)=81 Math.sin(α): calcola il seno della variabile α: i.e. Math.sin(10)= -0.544 Math.toRadians(n) e Math.toDegrees(n): trasformano rispettivamente il valore di n da gradi a radianti e da radianti a gradi. 4
Compilazione ed esecuzione Il metodo classico per la compilazione e l esecuzione dei programmi java è tramite la linea di comando. Realizziamo un programma Radice che calcola la radice quadrata di un numero letto da tastiera.. Il nome del file è Radice.java Per la compilazione bisogna rendere visibili al compilatore le librerie esterne fiji.jar javac classpath / fiji.jar Radice.java Anche per l esecuzione bisogna rendere visibili alla JVM le librerie esterne fiji.jar java classpath / fiji.jar Radice 5
Linee guida per lo svolgimento dell esame Riassumiamo in breve i passi fondamentali dell esame: 1. Scrittura di un programma tramite un editor (textpad) 2. Utilizzo di librerie esterne per la lettura di dati da linea di comando (fiji) 3. Compilazione ed esecuzione del programma 4. Invio del sorgente così ottenuto tramite e-mail (!) 6
Esercizi Dati due cateti di un triangolo rettangolo c 1 e c 2 letti da tastiera - calcolare il valore dell ipotenusa i. Calcolare la diagonale di un quadrato di lato l letto da tastiera. Calcolare l area A di un cerchio inscritto in un quadrato di lato l letto da tastiera. Calcolare successivamente il valore assoluto della differenza tra l area del cerchio appena calcolato e l area del quadrato che lo contiene. Dato un piano inclinato alto h e lungo l, calcolare la sua pendenza Per pendenza si vuole intendere l angolo formato tra il piano inclinato ed il piano orizzontale. (n.b. la pendenza deve essere espressa in gradi). 7
Esercizio #1 import fiji.io.*; class Pitagora{ public static void main(string[] args){ //dichiarazione delle variabili int c1; int c2; double Ip; // lettura dei valori System.out.print("primo cateto: "); c1 = Lettore.in.leggiInt(); System.out.println(); System.out.print("Secondo cateto: "); c2 = Lettore.in.leggiInt(); System.out.println(); // Calcolo dell ipotenusa Ip = Math.sqrt(Math.pow(c2,2)+Math.pow(c1,2)); // Stampa sul video del risultato System.out.println("Ipotenusa= "+Ip); 8
Esercizio #2 import fiji.io.*; /* Lo svolgimento dell'esercizio prevede l'impiego di due classi Quadrato e Pitagora. Il File che contiene la definizione delle classi deve essere chiamata con lo stesso nome della classe applicazione: in questa caso si chiamerà Quadrato.java */ class Quadrato{ public static void main(string[] args){ //dichiarazione variabili int lato; double diagonale; // Classe utilizzata esclusivamente per il calcolo dell'ipotenusa // di un triangolo rettangolo noti i due cateti. class Pit{ public static double Ipotenusa(int a, int b){ return Math.sqrt(Math.pow(a,2)+Math.pow(b,2)); //Lettura dei parametri System.out.print("lato: "); lato = Lettore.in.leggiInt(); System.out.println(); // Calcolo dell'ipotenusa di un triangolo rettangolo diagonale = Pit.Ipotenusa(lato,lato); // Stampa su video del risultato System.out.println("diagonale: "+diagonale); 9
Esercizio #3 import fiji.io.*; class Cerchio{ public static void main(string[] args){ // dichiarazione variabili int lato; double Aq; // area del quadrato double Ac; // area del cerchio double raggio; // raggio del cerchio //Lettura del valore del lato del quadrato System.out.print("lato del quadrato= "); lato = Lettore.in.leggiInt(); //Calcolo dell'area del quadrato Aq = lato * lato; System.out.println("Area del quadrato= "+Aq); // Calcolo dell'area del cerchio raggio = (double)lato/2; Ac = Math.pow(raggio,2)*Math.PI; // (r^2)*pi System.out.println("Area del cerchio= "+Ac); System.out.println("Valore assoluto delle due aree= "+Math.abs(Ac-Aq)); 10
Esercizio #4 import fiji.io.*; class PInclinato{ public static void main(string[] args){ // dichiarazioni delle variabili int H; // altezza del piano inclinato int L; // lunghezza del piano inclinato double inclinazione; // inclinazione del piano inclinato //Lettura dei valori da tastiera System.out.print("Altezza: "); H = Lettore.in.leggiInt(); System.out.print("Lunghezza: "); L = Lettore.in.leggiInt(); // Calcolo e stampa del valore dell'inclinazione del piano. inclinazione = Math.atan((double)H/L); System.out.println("Inclinazione: "+Math.toDegrees(inclinazione)); 11