11/11/2004Laboratorio di Programmazione - Luca Tesei1 Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Introduzione al linguaggio C++
LINGUAGGIO DI PROGRAMMAZIONE C
Package Utilizzo classi.
If a cascata, switch, operatori logici
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Progettazione Fase di progettazione di unapplicazione Fase di implementazione.
Linguaggi Regolari e Linguaggi Liberi
12/11/2004Laboratorio di Programmazione - Luca Tesei1 Caratteri – Input da Console Il tipo char Input dallo standard input.
26/10/2004Laboratorio di Programmazione - Luca Tesei1 Variabili e Oggetti Lo spazio di memoria di Java Le API di Java.
3/12/2004Laboratorio di Programmazione - Luca Tesei1 Sequenze di lunghezza variabile ArrayList Operazioni Ricerche.
5/11/2004Laboratorio di Programmazione - Luca Tesei1 Esercizi Su Progettazione e Implementazione di classi.
29/10/2004Laboratorio di Programmazione - Luca Tesei1 Metodi e variabili istanza Definizione e chiamata di metodi Uso delle variabili istanza Documentazione.
9/11/2004Laboratorio di Programmazione - Luca Tesei1 Tipi numerici di base - Costanti Interi e decimali Definizione di costanti.
22/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei1 Laboratorio – Primo Impatto Scrivere un semplice programma I primi concetti.
Programmazione e Laboratorio di Programmazione – Luca Tesei1 La Programmazione Cosè la programmazione? Concetti preliminari.
29/11/2004Laboratorio di Programmazione - Luca Tesei1 Ancora sulla progettazione/Pacchetti Concetti di coesione/accoppiamento/coerenza Uso dei package.
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Programmazione Ingegneria TLC
1 Semantica Operazionale di un frammento di Java: lo stato.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
9/12/2004Laboratorio di Programmazione - Luca Tesei1 Ereditarietà
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
FUNZIONI DI BIBLIOTECA
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Funzioni definite dall’utente
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Soluzione Esercizio - Classe Vettore
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Capitolo 4 Tipi di dati fondamentali
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
Il Linguaggio C.
LA DOCUMENTAZIONE È noto che un buon programma dovrebbe essere ben documentato.. ma lesperienza insegna che quasi mai ciò viene fatto! –non cè tempo, ci.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
Programmazione in Java
Programmazione in Java Claudia Raibulet
4 Tipi di dati & variabili
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Corso JAVA Lezione n° 12 Istituto Statale di Istruzione Superiore “F. Enriques”
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
Le eccezioni F. Bombi 01/11/ Errori e situazioni impreviste situazioni eccezionali In un programma situazioni eccezionali possono.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
15/11/2004Laboratorio di Programmazione - Luca Tesei1 Costrutto condizionale Scelte, blocchi.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Una "vera" classe.. ..un esempio pratico: la calcolatrice
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Introduzione a Javascript
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

11/11/2004Laboratorio di Programmazione - Luca Tesei1 Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di input

11/11/2004Laboratorio di Programmazione - Luca Tesei2 Operazioni fra interi e decimali In Java gli operatori + - * / si possono combinare come si vuole insieme a costanti numeriche, variabili di frame e variabili istanza per ottenere espressioni aritmetiche Gli operandi possono essere sia numeri interi ( byte, short, int, long ) che numeri in virgola mobile ( float, double ) Il risultato è un intero solo se tutti gli operandi sono interi Basta che un solo operando si in virgola mobile perché il valore di tutta lespressione sia in virgola mobile

11/11/2004Laboratorio di Programmazione - Luca Tesei3 Espressioni aritmetiche La grammatica per le espressioni aritmetiche che si possono scrivere in Java è la seguente: E E + T | E – T | T T T * F | T / F | F F - | (E) | | | La grammatica implementa le regole tipiche di associatività e precedenza degli operatori F è un ulteriore livello di precedenza per loperatore unario – (che lega più di tutti) usato per cambiare il segno a un operando

11/11/2004Laboratorio di Programmazione - Luca Tesei4 Espressioni aritmetiche è un simbolo non terminale che genera tutte le possibili costanti numeriche (intere e decimali, con o senza notazione esponenziale) è un simbolo non terminale che genera tutti i possibili identificatori Java è un simbolo non terminale che genera tutte le possibili espressioni formate da nomi e/o chiamate di metodi separate da punti (ad esempio myPurse.getTotal() rappresenta un double, this.nickels rappresenta un int allinterno di un metodo della classe Purse )

11/11/2004Laboratorio di Programmazione - Luca Tesei5 Espressioni aritmetiche Esempi: –7 * 4 valore 28 (int) – / 4 valore 11.5 (double) –( ) / 4 valore 3.25 (double) –this.nickels * this.getTotal() – 3 * 7 supponendo che il valore della variabile istanza nickel delloggetto this sia 3 (int) e che il totale this.getTotal() sia 12.5 (double) si ottiene un valore double a causa del valore double delloperando this.getTotal(). Il valore è 16.5

11/11/2004Laboratorio di Programmazione - Luca Tesei6 Divisione Bisogna prestare unattenzione particolare al simbolo / In Java esso rappresenta sia la divisione usuale che la divisione intera Viene applicata la divisione intera se entrambi gli operandi sono interi La divisione intera restituisce solo la parte intera del risultato! 7 / 4 valore 1! Non 1.75! 7 / 4.0 valore 1.75 (4.0 non intero)

11/11/2004Laboratorio di Programmazione - Luca Tesei7 Resto della divisione intera Il simbolo % è un operatore binario che si può applicare solo fra due interi Calcola il resto della divisione intera fra il primo e il secondo 7 % 4 valore 3

11/11/2004Laboratorio di Programmazione - Luca Tesei8 Errore comune Loverloading del simbolo / porta spesso ad errori logici difficili da individuare Ad esempio:... int p1 = 21; // punteggio prima prova int p2 = 24; // punteggio seconda prova int p3 = 22; // punteggio terza prova double media = (p1 + p2 + p3) / 3; System.out.println(media); /* Stampa 22.0! Non !! */

11/11/2004Laboratorio di Programmazione - Luca Tesei9 Errore comune Per ottenere il risultato che vogliamo bisogna fare in modo che almeno uno degli operandi sia un double // Se un intero viene assegnato a una variabile // di tipo double viene convertito a double double totale = p1 + p2 + p3; // totale è un valore double double media = totale / 3; Oppure double media = (p1 + p2 + p3) / 3.0;

11/11/2004Laboratorio di Programmazione - Luca Tesei10 Metodi static La classe java.lang.Math (consultare le API) è una collezione di costanti e metodi static Abbiamo già visto che una variabile istanza dichiarata come static si riferisce alla classe e ne esiste ununica copia (non viene inserita nello stato degli oggetti della classe che vengono creati) Anche un metodo può essere dichiarato come static e, analogamente, esso si riferisce alla classe

11/11/2004Laboratorio di Programmazione - Luca Tesei11 Metodi static Un metodo static non può essere invocato su un oggetto della classe Lunico modo per mandare in esecuzione il metodo static è quello di scrivere NomeClasse.nomeMetodo(parametri); Allinterno di un metodo statico non è disponibile il parametro implicito this (poiché non cè nessun oggetto su cui il metodo è stato invocato) Per il resto il meccanismo di esecuzione è analogo a quello dei metodi non statici (in particolare la creazione di una nuova attivazione e il meccanismo di passaggio e gestione dei parametri espliciti)

11/11/2004Laboratorio di Programmazione - Luca Tesei12 Funzioni e costanti matematiche Definite nella classe java.lang.Math come costanti e metodi static Pi greco: Math.PI Base dei logaritmi naturali: Math.E Radice quadrata: double radiceDi2 = Math.sqrt(2); Coseno: double cosenoDiPiGrecoMezzi = Math.cos(Math.PI / 2); Consultare le API per vedere tutte le altre funzioni disponibili

11/11/2004Laboratorio di Programmazione - Luca Tesei13 Conversioni di tipi Il compilatore esegue alcune conversioni di tipo implicitamente: Quando un valore intero viene assegnato ad una variabile double o float, il valore viene convertito in double o float automaticamente... double pippo = 4; // 4 è una costante intera System.out.println(pippo); // Stampa è la rappresentazione di una costante a virgola mobile (cè il punto decimale)

11/11/2004Laboratorio di Programmazione - Luca Tesei14 Conversioni esplicite La conversione precedente viene eseguita automaticamente perché non comporta nessuna perdita di informazione (i numeri interi hanno i loro corrispondenti nei numeri a virgola mobile) Quando un assegnamento, invece, può provocare una perdita di informazione viene segnalato dal compilatore come errore Una errore di questo genere si ha, ad esempio, quando si tenta di assegnare un valore a virgola mobile ad una variabile intera int prova = 3.5; // Errore di // compilazione

11/11/2004Laboratorio di Programmazione - Luca Tesei15 Conversioni esplicite Per forzare il compilatore ad accettare lassegnamento (se si vuole accettare la perdita di informazione che ne deriva) si deve fare una conversione di tipo esplicita Questa operazione si chiama casting int prova = (int)3.5; // accettato Leffetto di questo casting è di buttare via la parte decimale del numero a virgola mobile e di assegnare a prova solo la parte intera 3

11/11/2004Laboratorio di Programmazione - Luca Tesei16 Casting Il casting si può fare fra diversi tipi base, e ogni volta che si fa si accetta la possibilità di perdere informazione Ad esempio, facendo un casting da double a float si potranno perdere alcune cifre significative Così come facendo un casting da int a short

11/11/2004Laboratorio di Programmazione - Luca Tesei17 Casting Loperatore di casting (il tipo tra parentesi) lega più degli operatori aritmetici double total = 3.456; int prova = (int) total * 100; Esegue il casting su total e il valore di prova sarà 300 int prova = (int)(total * 100); Esegue il casting sul valore della moltiplicazione e il valore di prova sarà 345

11/11/2004Laboratorio di Programmazione - Luca Tesei18 Arrotondamenti Il casting da valori a virgola mobile a interi produce come risultato la parte intera del valore, anche se il valore è molto prossimo al valore intero successivo int prova = (int) 4.99; // prova vale 4 Per eseguire gli arrotondamenti secondo la regola usuale (se il primo decimale è da 0 a 4 si prende la parte intera, altrimenti la parte intera + 1) si può usare il metodo static Math.round (consultare le API: il valore restituito da Math.round è un long ! Quindi bisogna fare un ulteriore casting se si vuole assegnare il risultato ad un int )

11/11/2004Laboratorio di Programmazione - Luca Tesei19 Classi involucro Ognuno dei tipi base di Java ha una classe corrispondente nel pacchetto java.lang (consultare le API) Queste classi vengono dette classi involucro Gli oggetti di queste classi possono un valore del tipo base corrispondente La vera utilità sta nelle costanti e nei metodi statici che forniscono

11/11/2004Laboratorio di Programmazione - Luca Tesei20 Classe Integer Prendiamo ad esempio la classe java.lang.Integer Un oggetto di questa classe può contenere un valore intero Tale valore non si trova in una variabile di frame come i soliti int Si trova nello heap allinterno delloggetto corrispondente Costanti static utili della classe: –Integer.MIN_VALUE (minimo numero int rappresentabile –Integer.MAX_VALUE (massimo int rappresentabile)

11/11/2004Laboratorio di Programmazione - Luca Tesei21 Classe Integer Metodi statici pubblici utili della classe Integer public static int parseInt(String s) Cerca di interpretare il contenuto della stringa s come la rappresentazione di una costante intera: Integer.parseInt(15) restituisce lintero 15

11/11/2004Laboratorio di Programmazione - Luca Tesei22 Classe Integer Se la stringa contiene dei caratteri che non possono essere considerati la rappresentazione di un intero allora il metodo parseInt lancerà uneccezione Le eccezioni sono il meccanismo di base di Java per gestire gli errori Per adesso non gestiamo questa eccezione, vedremo più avanti come si fa Se uneccezione non viene gestita (il termine giusto sarebbe catturata) il programma termina con errore indicando quale eccezione si è verificata e la pila di attivazioni corrente (ci permette di risalire al punto preciso del programma in cui si è verificata)

11/11/2004Laboratorio di Programmazione - Luca Tesei23 Lettura di dati in input Vediamo due modi per acquisire dei dati di input dallutente: 1.Tramite una finestra grafica di dialogo 2.Tramite lo standard input (la console, ma in generale può essere un qualunque file) –I dati in input rendono il programma interattivo e possono fare in modo che il comportamento dello stesso programma sia diverso se vengono dati input diversi

11/11/2004Laboratorio di Programmazione - Luca Tesei24 Finestra di dialogo Possiamo chiedere allutente di inserire una stringa e possiamo trattare loggetto corrispondente nel nostro programma La classe che ci serve per far apparire la finestra è javax.swing.JOptionPane (consultare API) Questa classe ha diversi metodi static showInputDialog che restituiscono un oggetto String Per far apparire la finestra e ottenere linput: String input = JOptionPane.showInputDialog( Quanti nickel hai?);

11/11/2004Laboratorio di Programmazione - Luca Tesei25 Finestra di dialogo La stringa che passiamo come parametro sarà visualizzata sulla finestra

11/11/2004Laboratorio di Programmazione - Luca Tesei26 Finestra di dialogo Lutente è libero di digitare qualunque cosa nel campo di input Poi potrà fare click sui pulsanti OK o Annulla Se lutente fa click su Annulla viene restituito il valore null e la variabile String input varrà quindi null Se lutente fa click su OK viene creato un oggetto String che contiene la stringa inserita e il suo riferimento viene assegnato alla variabile input

11/11/2004Laboratorio di Programmazione - Luca Tesei27 Esempio di uso import javax.swing.JOptionPane; public class InputTest { public static void main(String argv[]) { String input = JOptionPane.showInputDialog( "Quanti nickel hai?"); // Utilizzo il metodo parseInt per ottenere // il numero intero digitato int nickels = Integer.parseInt(input); System.out.println(nickels); // Nei programmi che usano la grafica si deve usare // questa chiamata per terminare il programma System.exit(0); }

11/11/2004Laboratorio di Programmazione - Luca Tesei28 Esempio Naturalmente si dovrebbe gestire sia il caso in cui lutente fa click su Annulla sia il caso in cui quello che digita non è un intero Ancora non abbiamo gli strumenti per farlo Per adesso ci accontentiamo di un programma che, se qualcosa va storto, termina con errore Ricordarsi sempre di inserire System.exit(0); come ultima istruzione del main, altrimenti il programma resta in esecuzione (il gestore della grafica rappresenta un processo della nostra applicazione che rimane attivo fino a quando non lo si chiude esplicitamente con il metodo static System.exit)