Numeri, espressioni, calcoli, caratteri, input

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Numeri, espressioni, calcoli, caratteri, input"

Transcript

1 Numeri, espressioni, calcoli, caratteri, input Interi e decimali Definizione di costanti Espressioni Funzioni matematiche Classi involucro Il tipo char Acquisizione di input 1

2 Una classe Borsellino /** Realizza un borsellino per le monete. Registra il numero di monete e calcola il valore totale */ public class Purse { /** Costruisce un borsellino vuoto */ public Purse() { } /** Aggiunge monete di tipo "nickel" al count il numero di nickel da aggiungere */ public void addnickels(int count) { } 2

3 Classe Borsellino cont d } /** Aggiunge monete di tipo "dime" al count il numero di dime da aggiungere */ public void adddimes(int count) { } /** Aggiunge monete di tipo "quarter" al count il numero di quarter da aggiungere */ public void addquarters(int count) { } /** Ispeziona il valore totale delle monete nel la somma dei valori di tutte le monete attualmente presenti */ public double gettotal() { } 3

4 Esempio d uso Purse mypurse = new Purse(); mypurse.addnickels(3); mypurse.adddimes(1); mypurse.addquarters(2); double totalvalue = mypurse.gettotal(); totalvalue conterrà 0,75 cioè il valore in dollari delle monete contenute nel borsellino 4

5 Numeri interi e numeri decimali Per rappresentare quantità che si contano naturalmente con multipli di 1 (positivi o negativi) usiamo variabili di tipo intero (int) Nell esempio del borsellino int è il tipo dei parametri dei metodi addxxx Questo perché è naturale considerare le monete come quantità indivisibili e quindi quantificate con un numero intero Il metodo gettotal() invece restituisce un double Questo perché è naturale per un valore che rappresenta una quantità di dollari avere dei decimali 5

6 Primi passi per l implementazione di Purse Ogni oggetto di tipo Purse può essere descritto dalla quantità di nickels, dimes e quarters che contiente Inseriamo quindi tre variabili istanza di tipo int per rappresentare queste quantità... private int nickels; private int dimes; private int quarters; 6

7 Primi passi per l implementazione di Purse public double gettotal() { return nickels * dimes * quarters * 0.25; } L * indica la moltiplicazione (perché o non si trovano generalmente nelle tastiere) L espressione dopo return segue le regole di associatività e precedenza tipiche dell aritmetica (la grammatica di Java per le espressioni segue le regole che abbiamo visto a Programmazione) Il valore ottenuto è un numero in virgola mobile poiché moltiplicando un intero per un numero decimale si ottiene un numero decimale, in generale 7

8 Costanti numeriche Nelle costanti numeriche che si possono scrivere nel codice la virgola deve essere indicata come punto decimale Si può usare anche la notazione esponenziale Ad esempio 5, si scrive come 5.0E-3 Cioè si usa il punto decimale e si scrive E seguito dall esponente di 10 8

9 Numeri interi Un numero intero è un numero senza decimali che può essere sia positivo che negativo Il tipo base Java corrispondente ai numeri interi è int Una variabile int può contenere i numeri interi da a bit + 1 bit per il segno = 32 bit di memoria allocati per ogni variabile int 9

10 Numeri interi Esistono altri tipi base di interi che possono rappresentare meno o più numeri di int short: 16 bit - Range: da a byte: 8 bit - Range da 2 7 a long: 64 bit - Range da 2 63 a

11 Numeri in virgola mobile Possono contenere cifre decimali Contengono un certo numero di cifre significative e la posizione della virgola Es hanno tutti le stesse cifre significative (25), ciò che cambia è la posizione della virgola (da qui virgola mobile ) Naturalmente la rappresentazione in realtà è in base 2 In java la virgola è rappresentata dal punto decimale come nella notazione anglosassone (come tutte le calcolatrici del resto) 11

12 Numeri in virgola mobile double può rappresentare circa 15 cifre significative: è il tipo con maggiore precisione ( doppia precisione ) float può rappresentare circa 7 cifre significative: precisione spesso insufficiente, ma calcoli più veloci Per precisione si intende la grandezza degli errori dovuti all arrotondamento che inevitabilmente si commettono con l uso di questi numeri 12

13 Precisione public class ProvaPrecisione { public static void main(string [] argv) { double originalprice = 3E14; double discountedprice = originalprice 0.05; double discount = originalprice discountedprice; // dovrebbe essere 0.05 System.out.println(discount); // stampa Errore dovuto //all arrotondamento da rappresentazione } } 13

14 Numeri rappresentabili Il tipo float può rappresentare il range dei numeri, positivi o negativi, con valore assoluto che va da a ( ) Il tipo double può rappresentare il range dei numeri, positivi o negativi, con valore assoluto che va da a ( )

15 Numeri a lunghezza e precisione arbitraria Il pacchetto java.math contiene una classe BigInteger i cui oggetti possono rappresentare numeri interi di lunghezza arbitraria Lo stesso pacchetto contiene una classe BigDecimal i cui oggetti possono rappresentare numeri a virgola mobile con precisione arbitraria 15

16 Numeri a lunghezza e precisione arbitraria Per questi numeri non si possono usare i normali operatori + * - / = I corrispondenti metodi add, multiply, subtract, divide ed equals sono forniti dalle relative classi: BigInteger a = new BigInteger( ); BigInteger b = new BigInteger( ); BigInteger c = a.multiply(b); System.out.println(c); // stampa Naturalmente i calcoli con questi numeri sono più lenti di quelli fatti con i numeri dei tipi base 16

17 Costruttore di Purse Public Purse() { nickels = 0; dimes = 0; quarters = 0; } Il costruttore di default farebbe esattamente la stessa cosa, ma lo specifichiamo per chiarezza 17

18 Implementazione di addnickels public void addnickels(int count) { nickels = nickels + count; } È la tipica istruzione di incremento di un valore L assegnamento prima valuta la parte a sinistra dell = e quindi considera il valore corrente della variabile istanza intera nickels al quale aggiunge il valore di count Il valore così ottenuto sarà assegnato alla variabile istanza nickels, cioè sarà il suo valore dopo l esecuzione dell istruzione (si può pensare che sia il valore che nickels ha dopo il ; finale) 18

19 Altre istruzioni di incremento In Java, come in C, esiste una forma abbreviata per l incremento nickels = nickels + count; può essere scritta equivalentemente come nickels += count; La stessa abbreviazione si può usare anche per gli altri operatori (*, /, -): P *= q; // equivalente a p = p * q; 19

20 Incremento di 1 Un istruzione che ricorre molto frequentemente nei programmi è l incremento o il decremento di una variabile intera di una unità In Java, come in C, esistono abbreviazioni speciali per questi casi: i++; // equivalente a i = i + 1; e a i +=1; i--; // equivalente a i = i 1; e a i -=1; 20

21 Costanti public double gettotal() { return nickels * dimes * quarters * 0.25; } La maggior parte del codice si documenta da sé, ma in questo caso i numeri 0.05, 0.1 e 0.25 compaiono senza nessuna spiegazione È buona regola evitare di inserire nel codice questi numeri magici 21

22 Costanti Le costanti possono essere pensate come dei nomi a cui è associato un valore Tale associazione rimane valida per tutta la vita della costante e non cambia mai In genere, per convenzione, le costanti sono scritte tutte maiuscole e si usa l underscore come separatore nel caso che il nome sia composto da più parole In Java una costante si dichiara come una variabile (di frame) usando la parola chiave final e inizializzando il valore nella dichiarazione 22

23 Costanti public double gettotal() { final double NICKEL_VALUE = 0.05; final double DIME_VALUE = 0.1; final double QUARTER_VALUE = 0.25; return nickels * NICKEL_VALUE + dimes * DIME_VALUE + quarters * QUARTER_VALUE; } 23

24 final In generale in Java la parola chiave final indica un qualcosa che non può essere più modificato (vedremo che esistono, oltre alle variabili, anche classi final, cioè che non possono essere estese) Il compilatore dà errore se si cerca di modificare una variabile final. 24

25 Costanti La dichiarazione di una variabile con lo specificatore final ha lo stesso effetto di una qualsiasi altra definizione di variabile Viene cioè allocata la nuova variabile sul frame corrente dell attivazione corrente Al momento della chiusura del blocco del frame in cui è stata definita essa scompare E il controllo del compilatore che la rende non modificabile 25

26 Costanti In genere però le costanti sono utili in diversi metodi della stessa classe Per evitare di dover ridefinire le variabili final in ogni metodo che le usa (ed evitare anche errori se il valore viene modificato solo in alcuni metodi, ad esempio in un altra versione del programma) possiamo pensare di associare le costanti direttamente alla classe Per definire costanti che si riferiscono ad una classe si può usare lo specificatore static 26

27 static Lo specificatore static deriva dal C e il suo nome può risultare fuorviante In Java, se nella definizione di una classe viene inserita una variabile istanza con lo specificatore static, quella variabile istanza va considerata come elemento della classe In genere le variabili istanza formano lo stato di ogni oggetto della classe che viene creato Le variabili istanza static invece non vanno a far parte dello stato degli oggetti della classe, ma fanno parte della definizione della classe stessa 27

28 static Esiste una sola copia di una variabile istanza static di una classe e si riferisce all intera classe Per riferirla e/o modificarla si usa la notazione NomeClasse.nomeVariabileIstanzaStatic Alle variabili istanza static possono essere associati tutti i possibili specificatori di accesso: public, private e protected Inoltre possono essere final, cioè costanti di classe 28

29 Esempio Vedremo più avanti degli esempi in cui sono utili variabili static di classe Per adesso useremo questa possibilità solo per specificare costanti Nel nostro caso le costanti che indicano il valore di ogni moneta sembrano essere utili solo nel contesto della classe Purse e quindi le dichiariamo private Molte classi delle API hanno invece delle costanti pubbliche che si possono usare 29

30 Esempio public class Purse {... private static final double NICKEL_VALUE = 0.05; private static final double DIME_VALUE = 0.1; private static final double QUARTER_VALUE = 0.25;... } 30

31 Esempio All interno dei metodi della classe si possono riferire le variabili static (sia final che non) semplicemente con il loro nome (nel caso di conflitto va invece specificato il nome completo (cioè NomeClasse.nomeVariabile), ad esempio Purse.NICKEL_VALUE public double gettotal() { return nickels * NICKEL_VALUE + dimes * DIME_VALUE + quarters * QUARTER_VALUE; } 31

32 Operazioni fra interi e decimali In Java gli operatori + - * / si possono combinare come si vuole insieme a costanti numeriche, variabili di frame, variabili istanza e chiamate di metodi 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 l espressione sia in virgola mobile 32

33 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 -<Op> <Op> <Op> (E) <Num> <Ide> <DotExpr> La grammatica implementa le regole tipiche di associatività e precedenza degli operatori F è un ulteriore livello di precedenza per l operatore unario (che lega più di tutti) usato per cambiare il segno a un operando 33

34 Espressioni aritmetiche <Num> è un simbolo non terminale che genera tutte le possibili costanti numeriche (intere e decimali, con o senza notazione esponenziale) <Ide> è un simbolo non terminale che genera tutti i possibili identificatori Java <DotExpr> è 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 all interno di un metodo della classe Purse ) 34

35 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 dell oggetto this sia 3 (int) e che il totale this.gettotal() sia 12.5 (double) si ottiene un valore double a causa del valore double dell operando this.gettotal(). Il valore è

36 Divisione Bisogna prestare un attenzione 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) 36

37 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 37

38 Errore comune L overloading 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 !! */ 38

39 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; 39

40 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 un unica 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 È analogo a una funzione del C 40

41 Metodi static Un metodo static non può essere invocato su un oggetto della classe L unico modo per mandare in esecuzione il metodo static è quello di scrivere NomeClasse.nomeMetodo(parametri); All interno 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) 41

42 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 42

43 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) 43

44 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 44

45 Conversioni esplicite Per forzare il compilatore ad accettare l assegnamento (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 L effetto di questo casting è di buttare via la parte decimale del numero a virgola mobile e di assegnare a prova solo la parte intera 3 45

46 Casting Il casting si può fare fra diversi tipi base 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 46

47 Casting L operatore 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à

48 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) 48

49 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 49

50 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 all interno dell oggetto corrispondente Costanti static utili della classe: Integer.MIN_VALUE (minimo numero int rappresentabile Integer.MAX_VALUE (massimo int rappresentabile) 50

51 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 l intero 15 51

52 Classe Integer Se la stringa contiene dei caratteri che non possono essere considerati la rappresentazione di un intero allora il metodo parseint lancerà un eccezione 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 un eccezione 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) 52

53 Lettura di dati in input Vediamo due modi per acquisire dei dati di input dall utente: 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 53

54 Finestra di dialogo Possiamo chiedere all utente di inserire una stringa e possiamo trattare l oggetto 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 l input: String input = JOptionPane.showInputDialog( Quanti nickel hai? ); 54

55 Finestra di dialogo La stringa che passiamo come parametro sarà visualizzata sulla finestra 55

56 Finestra di dialogo L utente è libero di digitare qualunque cosa nel campo di input Poi potrà fare click sui pulsanti OK o Annulla Se l utente fa click su Annulla viene restituito il valore null e la variabile String input varrà quindi null Se l utente fa click su OK viene creato un oggetto String che contiene la stringa inserita e il suo riferimento viene assegnato alla variabile input 56

57 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); } } 57

58 Esempio Naturalmente si dovrebbe gestire sia il caso in cui l utente 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) 58

59 Il tipo base char Il tipo base char rappresenta i caratteri Come sappiamo Java gestisce tutto il set di caratteri Unicode Per indicare un carattere basta inserirlo tra due apici singoli: a Ogni sequenza di escape corrisponde a un carattere \n, \t, \u009f Un carattere ha associato un valore numerico reperibile con Character.getNumericValue 59

60 Caratteri e Stringhe h è un char h è una stringa, quindi un oggetto dello Heap, che contiene un solo carattere h Pippo.charAt(0) ritorna il carattere P Nelle stringhe i caratteri sono numerati da 0 in su Pippo.length() ritorna 5, la lunghezza della stringa Consultare le API 60

61 Input da console Oltre che da una finestra di dialogo l input può essere prelevato da uno stream di ingresso In Java, così come in C e in altri linguaggi, esiste uno stream apposito per questo che viene chiamato standard input Conosciamo già System.out, che è lo standard output, e sappiamo che è un oggetto della classe java.io.printstream System.in è un oggetto della classe java.io.inputstream ed è lo standard input 61

62 Ottenere l input Un oggetto della classe InputStream, quale è System.in, è in grado di leggere un byte per volta dallo stream che rappresenta Non è molto comodo Quello che vorremmo è poter ottenere, come con la finestra di dialogo, una stringa di input Per prima cosa bisogna incapsulare l oggetto System.in, di tipo InputStream, in un oggetto della classe java.io.inputstreamreader 62

63 Ottenere l input Un oggetto della classe InputStreamReader interpreta i byte di un oggetto InputStream come caratteri (tipo base char di Java) È un passo avanti per arrivare al nostro obiettivo I costruttori di questi oggetti richiedono sempre come argomento un oggetto della classe InputStream Possiamo quindi usare System.in 63

64 Ottenere l input InputStreamReader reader = new InputStreamReader(System.in); reader può restituire l input sotto forma di un carattere per volta (guardare le API e scoprire come mai il metodo read restituisce un int piuttosto che un char) Possiamo ottenere di meglio Gli oggetti della classe java.io.bufferedreader possono restituire stringhe formate da caratteri di uno stream di caratteri 64

65 Ottenere l input BufferedReader console = new BufferedReader(reader); Il costruttore richiede un oggetto della classe java.io.reader, di cui InputStreamReader è una sottoclasse Possiamo quindi passare il nostro oggetto System.in, incapsulato nell oggetto reader di tipo InputStreamReader, al costruttore e ottenere l oggetto riferito da console 65

66 Ottenere l input Sugli oggetti della classe BufferedReader è possibile chiamare il metodo readline() che restituisce una stringa contentente una linea di testo Questo è quello che volevamo ottenere 66

67 Ottenere l input Ricapitolando: InputStreamReader reader = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(reader); Oppure BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); 67

68 Ottenere l input A questo punto: String input = console.readline(); Aspetta fino a quando l utente non digita una linea di testo e preme Invio La linea scritta è contenuta nella stringa riferita da input A questo punto possiamo fare il parsing della stringa con i metodi delle classi involucro se ci aspettiamo l inserimento di un valore di un certo tipo (es Integer.parseInt) 68

69 IOException Abbiamo già visto che il metodo Integer.parseInt può sollevare un eccezione se la stringa passata non contiene le cifre di un intero Anche il metodo readline della classe BufferedReader può sollevare un eccezione se qualcosa va storto con il reperimento dell input L eccezione è del tipo IOException L eccezione IOException è un eccezione che deve essere gestita obbligatoriamente Nel caso non la si voglia gestire si deve esplicitare che il metodo che stiamo scrivendo la può sollevare 69

70 Throws Nel nostro caso il metodo che chiama readline è il main Siccome ancora non abbiamo visto come gestire l eccezione dobbiamo esplicitamente dichiarare che non la gestiamo scrivendo public static void main(string[] argv) throws IOException {... } 70

71 Un programma di esempio import java.io.*; public class InputDaConsole { } public static void main(string argv[]) throws IOException { } BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Quanti nickels hai?"); String input = console.readline(); int nickels = Integer.parseInt(input); System.out.println("Hai scritto " + nickels); 71

72 Classe Scanner Dalla versione 1.5 della jdk è disponibile una classe java.util.scanner Un oggetto di questa classe permette di scorrere un flusso di caratteri o una stringa riconoscendo interi, float, double o stringhe che fanno match con una data espressione regolare Nella sua versione di default i separatori sono gli spazi bianchi Si vedano le API per maggiori dettagli 72

73 Esercizio Riscrivere il costruttore della classe Purse in modo che chieda in input il numero di monete iniziali Aggiungere alla classe Purse un metodo che restituisca il totale in dollari e in penny (100 penny = 1 dollaro) (Suggerimento: usare la divisione intera e il resto della divisione intera) 73

74 Esercizio Scrivere una classe RisolutoreEquazione2Grado Il costruttore deve chiedere in input i coefficienti a, b, c dell equazione Implementare i due metodi per dare le due soluzioni: public double getfirstsolution() public double getsecondsolution() Scrivere una classe test 74

75 Esercizio Scrivere un programma che assista un cassiere nel dare il resto Input: sommadapagare e sommaricevuta La differenza sommaricevuta sommadapagare rappresenta il resto da dare Il resto deve essere corrisposto usando le seguenti banconote/monete: 1 dollaro, 1 Quarter, 1 Dimes, 1 Nickel, 1 Penny Il programma deve indicare quante monete di ogni tipo il cassiere deve dare --continua 75

76 Esercizio cont d Il programma deve fornire una soluzione che corrisponda all erogazione del minimo numero possibile di banconote/monete Esempio Cassiere harry = new Cassiere(); harry.setsommadapagare(8.37); harry.riceve(10); int dollars = harry.returndollars(); // Restituisce 1 int quarters = harry.returnquarters(); // Restituisce 2 int dimes = harry.returndimes(); // Restituisce 1 int nickels = harry.returnnickels(); // Restituisce 0 int pennies = harry.returnpennies(); // Restituisce 3 76

77 Esercizio Scrivere un programma che legge un numero intero e poi stampa le sue cifre, una ad una, in ordine inverso Esempio: se leggo Deve stampare

78 Esercizio Scrivere un programma che calcoli la data della domenica di Pasqua, che è la prima domenica dopo la prima luna piena di primavera, di un qualunque anno. Si usi il seguente algoritmo ideato da Carl Friedrich Gauss nel 1800: Sia y l anno (1800, 2001,...) Dividi y per 19 ottenendo il resto a. Ignora il quoziente Dividi y per 100 ottenendo il quoziente b e il resto c Continua 78

79 Esercizio cont d Dividi b per 4 ottenendo quoziente d e resto e Dividi 8 * b + 13 per 25 ottenendo il quoziente g. Ignora il resto. Dividi 19 * a + b - d - g + 15 per 30 ottenendo il resto h. Ignora il quoziente. Dividi c per 4, ottenendo il quoziente j e il resto k Dividi a + 11 * h per 319, ottenendo il quoziente m. Ignora il resto Continua 79

80 Esercizio cont d Dividi 2 * e + 2 * j - k - h + m + 32 per 7 ottenendo il resto r. Ignora il quoziente Dividi h - m + r + 90 per 25, ottenendo il quoziente n. Ignora il resto Dividi h - m + r + n + 19 per 32 ottenendo il resto p. Ignora il quoziente Pasqua cade il giorno p del mese n Scrivere una classe Year con metodi geteasterday() e geteastermonth() 80

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Capitolo 4 Tipi di dati fondamentali Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Apprendere l utilizzo di numeri interi e di numeri in virgola mobile

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro Laboratorio di Programmazione Lezione 1 Cristian Del Fabbro Reperibilità homepage corso: https://users.dimi.uniud.it/~cristian.delfabbro/teaching.php email: cristian.delfabbro@uniud.it telefono: 0432 558676

Dettagli

Rectangle BankAccount Purse

Rectangle BankAccount Purse Rectangle BankAccount Purse StringTokenizer RandomNumberGenerator GestoreNuoviConti Math main CalcolaBustaPaga PogrammaPerIlPagamento Purse public class Purse { public Purse() {...} public void addnickels(int

Dettagli

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Operazioni di scrittura e lettura con periferici in linguaggio Java

Operazioni di scrittura e lettura con periferici in linguaggio Java Operazioni di scrittura e lettura con periferici in linguaggio Java Flussi logici (stream) di output Operazione di scrittura a monitor con uso di stream (flusso logico) di output RAM System.out.println

Dettagli

Esercizio: la classe CashRegister

Esercizio: la classe CashRegister Esercizio: la classe CashRegister Si veda anche il libro di testo: Consigli pratici 3.1 Sezione 4.2 Sezione 8.2 Esercizi 8.1 e 8.2 1 Problema Si chiede di realizzare una classe CashRegister che simuli

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

Dettagli

Informatica Teorica. Macchine a registri

Informatica Teorica. Macchine a registri Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere Tipi elementari, costanti 1 Tipi di dati VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori Tipi Semplici intero reale carattere Strutturati 2 1 Tipo intero Gli interi servono

Dettagli

Un flusso (stream) è una astrazione che produce e/o consuma informazioni.

Un flusso (stream) è una astrazione che produce e/o consuma informazioni. I programmi Java eseguono l I/O mediante i flussi. Un flusso (stream) è una astrazione che produce e/o consuma informazioni. Ogni flusso è collegato ad un dispositivo fisico dal sistema di I/O di java.

Dettagli

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita UD4 - MATLAB M-file. Efficienza degli algoritmi. Formati d uscita M-files In MatLab è possibile eseguire istruzioni contenute in file esterni; Tali file sono chiamati M-file perché devono avere estensione.m

Dettagli

Flussi, lettori e scrittori

Flussi, lettori e scrittori Flussi, lettori e scrittori Per sequenze di byte, InputStream, OutputStream e loro sottoclassi. Es: InputStream in = ; int next = in. read(); if (next!= -1) byte b = (byte) next; Per sequenze di caratteri,

Dettagli

Input e Output in Java

Input e Output in Java Input e Output in Java Stream Redirecting Scomposizione dell input Uso di file Set di caratteri 1 Inserimento dati e test Riconsideriamo la versione iniziale della classe DataSet usata per illustrare le

Dettagli

introduzione alla programmazione in Java classi, oggetti ed altro

introduzione alla programmazione in Java classi, oggetti ed altro introduzione alla programmazione in Java classi, oggetti ed altro nomi file ed estensioni file.java: sorgenti Java creati con editor javac.exe: compilatore Java es.: per compilare il sorgente in pippo.java

Dettagli

Java Native Interface Appunti

Java Native Interface Appunti Java Native Interface Appunti Riccardo Rizzo 1/8 Introduzione L'uso delle Java Native Interface e' giustificato tutte quelle volte che una applicazione non puo' essere scritta interamente in Java. Per

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

Dettagli

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette. 3.5 STAMPA UNIONE Le funzioni della stampa unione (o stampa in serie) permettono di collegare un documento principale con un elenco di nominativi e indirizzi, creando così tanti esemplari uguali nel contenuto,

Dettagli

Uso degli oggetti. Un programma Java. è un insieme di oggetti, ognuno istanza di una classe, che si inviano messaggi

Uso degli oggetti. Un programma Java. è un insieme di oggetti, ognuno istanza di una classe, che si inviano messaggi Uso degli oggetti Uso di oggetti predefiniti attraverso l'invio di messaggi. Il concetto di metodo; argomenti e restituzione di valori; segnatura e prototipo di un metodo. Il concetto di overloading. Le

Dettagli

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint parseint parseint showinputdialog JOptionPanenull null throw BankAccount IllegalArgumentException amount public class BankAccount { public void withdraw(double amount) { if (balance < amount) { // Parametro

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno. Tipo File Per memorizzare un dato su un supporto magnetico come un hard disk o un nastro, o più in generale su un'unità di memoria di massa viene utilizzata un tipo di dato chiamato file. Un file può essere

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

3. Terza esercitazione autoguidata: progetto gestione voli

3. Terza esercitazione autoguidata: progetto gestione voli 9 3. Terza esercitazione autoguidata: progetto gestione voli Qui ci occupiamo di scrivere un programma abbastanza lungo, dedicato alla gestione di una tabella di dati. Una tabella e una struttura dati

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it Esercitazioni di Reti Logiche Lezione 1 Rappresentazione dell'informazione Zeynep KIZILTAN zkiziltan@deis.unibo.it Introduzione Zeynep KIZILTAN Si pronuncia Z come la S di Rose altrimenti, si legge come

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

CAPITOLO V. DATABASE: Il modello relazionale

CAPITOLO V. DATABASE: Il modello relazionale CAPITOLO V DATABASE: Il modello relazionale Il modello relazionale offre una rappresentazione matematica dei dati basata sul concetto di relazione normalizzata. I principi del modello relazionale furono

Dettagli

ESERCIZI DEL CORSO DI INFORMATICA

ESERCIZI DEL CORSO DI INFORMATICA ESERCIZI DEL CORSO DI INFORMTIC Questa breve raccolta di esercizi vuole mettere in luce alcuni aspetti della prima parte del corso e fornire qualche spunto di riflessione. Il contenuto del materiale seguente

Dettagli

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo. PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,

Dettagli

Sistemi Web per il turismo - lezione 3 -

Sistemi Web per il turismo - lezione 3 - Sistemi Web per il turismo - lezione 3 - Software Si definisce software il complesso di comandi che fanno eseguire al computer delle operazioni. Il termine si contrappone ad hardware, che invece designa

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel

Dettagli

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni Anno Accademico 2011/2012 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un processo utente o dal

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi Tipo intero Tipi base o primitivi Tipi interi: int, byte, short, long Tipi float: float, double Caratteri: char Tipo booleano: boolean Operatori numerici e logici La parola chiave int definisce una variabile

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le

Dettagli

Release MOVIO SCMS. Versione Tutorial. Commenti Dichiarazione di copyright

Release MOVIO SCMS. Versione Tutorial. Commenti Dichiarazione di copyright Titolo Tutorial MOVIO: Multilinguismo Release MOVIO SCMS 1.00 Versione Tutorial 1.00 Data 16/02/14 Autori e affiliation Rubino Saccoccio (Gruppometa) Commenti Dichiarazione di copyright Abstract Questo

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca) 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 itisando@tin.it

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi

Dettagli

Il Manuale di KXSLDbg. Keith Isdale Traduzione del documento: Samuele Kaplun Traduzione del documento: Simone Solinas

Il Manuale di KXSLDbg. Keith Isdale Traduzione del documento: Samuele Kaplun Traduzione del documento: Simone Solinas Keith Isdale Traduzione del documento: Samuele Kaplun Traduzione del documento: Simone Solinas 2 Indice 1 Introduzione 5 1.1 Funzionalità......................................... 5 2 Usare KXSLDbg 6 2.1

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Un oggetto per la lettura dalla tastiera

Un oggetto per la lettura dalla tastiera Fondamenti di informatica Oggetti e Java ottobre 2012 1 Un oggetto per la lettura dalla tastiera Le API di Java hanno un oggetto System.in che rappresenta la tastiera del calcolatore, ma che non è semplice

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

Dettagli

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007 Files in C++ Fondamenti di Informatica R. Basili a.a. 2006-2007 Sintesi Motivazioni Definizione di file in C++ Un esempio Uso dei file Esempi Esercizi Motivazioni il programma in esecuzione legge (sequenzialmente)

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Aritmetica. Progetto dei programmi

Aritmetica. Progetto dei programmi Aritmetica Un approccio metodologico alla costruzione dei programmi. Tipi di dati primitivi. int, float, double Variabili, dichiarazioni e operazioni Progetto dei programmi 2 Definizione del problema Scenario

Dettagli

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Java con GNU/Linux. di Giacomino Timillero

Java con GNU/Linux. di Giacomino Timillero Programmare in Java con GNU/Linux di Giacomino Timillero 1 Introduzione Questa guida è indirizzata a chi intende realizzare programmi in Java all'interno di un sistema operativo GNU/linux. Questa guida

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

Dettagli

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13 PSICOMETRIA Esercitazione n.1 C.d.L. Comunicazione e Psicologia a.a. 2012/13 ESERCITAZIONE 1: INDICE 1. Informazioni di carattere generale sulle esercitazioni 2. Il foglio di calcolo (Excel) 3. Avviare

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Dettagli

Programmare con le Socket TCP in java. 2: Application Layer 1

Programmare con le Socket TCP in java. 2: Application Layer 1 Programmare con le Socket TCP in java 2: Application Layer 1 Il Client contatta il server Il Server: Il processo server è sempre attivo in attesa di connessioni (demone) Crea una socket per accettare la

Dettagli

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata. Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Sistema Gestionale Avviso Maplab

Sistema Gestionale Avviso Maplab Sistema Gestionale Avviso Maplab Guida al sistema Servizi Informatici Versione 23 Sommario della guida Il sistema informatico per la gestione delle domande L utente presentatore: diritti e responsabilità

Dettagli

Gestione delle Eccezioni

Gestione delle Eccezioni Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un

Dettagli

Tipi di dato-prima parte

Tipi di dato-prima parte Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) Tipi di dato-prima parte Ing. Agnese Pinto 1 di 15 Tipi di dato Sommario Tipi di dato Classificazione dei tipi di dato Tipi

Dettagli

Alcune regole di base per scrivere un programma in linguaggio C

Alcune regole di base per scrivere un programma in linguaggio C Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza

Dettagli

Cifratura simmetrica

Cifratura simmetrica Cifratura Cifratura simmetrica Alice canale insicuro Bob 2 Cifratura simmetrica m Algoritmo di decifratura m Alice canale insicuro Algoritmo di cifratura Bob 3 Cifrari simmetrici chiave privata k chiave

Dettagli

La velocità di una carovana

La velocità di una carovana Programmazione A.A. 2002-03 I linguaggio Java ( Lezione X, Parte I ) Il primo programma Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 2 Rappresentazione delle informazioni: numeri e caratteri 1 Codice La relazione che associa ad ogni successione ben formata di simboli di

Dettagli

Pila di interi. Car 1. Car n. Pila di interi: Pila di Oggetti: Gli elementi che sono inseriti e tolti dalla pila sono numeri interi

Pila di interi. Car 1. Car n. Pila di interi: Pila di Oggetti: Gli elementi che sono inseriti e tolti dalla pila sono numeri interi Pila di Oggetti Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577 234850 - interno: 7102 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

Manuale di configurazione e utilizzo Barcode card

Manuale di configurazione e utilizzo Barcode card Manuale di configurazione e utilizzo Barcode card Premessa... 3 Impostazioni Monetica... 3 Impostazioni... 3 Menu Barcode card... 5 Impostazioni... 6 Registrazione... 6 Elenco barcode card... 7 Configurazione

Dettagli

Rappresentazione dell informazione Codifica Binaria

Rappresentazione dell informazione Codifica Binaria Fondamenti di Informatica Rappresentazione dell informazione Codifica Binaria Fondamenti di Informatica - D. Talia - UNICAL 1 Rappresentazione dell informazione Tutta l'informazione in un calcolatore è

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

Progettazione di classi

Progettazione di classi Progettazione di classi Scegliere una classe Una classe rappresenta un singolo concetto Esempi: Una classe puo` rappresentare un concetto matematico Point Rectangle Ellipse Una classe puo` rappresentare

Dettagli

CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe

CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe Caratteri e stringhe Caratteri Sono i blocchi costitutivi di ogni programma:

Dettagli

Utilizzo collegamento remoto

Utilizzo collegamento remoto Utilizzo collegamento remoto Introduzione Il collegamento VPN (virtual private network) consente a PC collegati ad internet ma fisicamente fuori dalla rete interna regionale, di accedere, con le credenziali

Dettagli

LA NOTAZIONE SCIENTIFICA

LA NOTAZIONE SCIENTIFICA LA NOTAZIONE SCIENTIFICA Definizioni Ricordiamo, a proposito delle potenze del, che = =.000 =.000.000.000.000 ovvero n è uguale ad seguito da n zeri. Nel caso di potenze con esponente negativo ricordiamo

Dettagli

Programmazione in Java Parte I: Fondamenti

Programmazione in Java Parte I: Fondamenti Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice

Dettagli

Programmare con le Socket TCP

Programmare con le Socket TCP Programmare con le Socket TCP Il Client deve contattare il server Il processo server deve già essere attivo Il server deve aver creato una socket che accetta la connessione del client ( socket di benvenuto

Dettagli

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari Felice Iavernaro Dipartimento di Matematica Università di Bari http://dm.uniba.it/ iavernaro 6 Giugno 2007 Felice Iavernaro (Univ.

Dettagli

L'informazione e la sua codifica

L'informazione e la sua codifica L'informazione e la sua codifica Corso di Informatica CdL: Chimica Claudia d'amato claudia.damato@di.uniba.it Informatica e telecomunicazione Cos è l informatica informatica? lo studio sistematico degli

Dettagli