C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo"

Transcript

1 File e Flussi C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di Bari

2 Obiettivi 2 Saper leggere e scrivere file di testo Acquisire familiarità con i concetti di formato binario e di testo Capire la codifica cifrata delle informazioni Capire quando va usato l accesso casuale o sequenziale ai file Saper leggere e scrivere oggetti usando la serializzazione

3 Leggere e Scrivere File di Testo 3 Il modo più semplice per leggere file di testo prevede l utilizzo della classe Scanner Per leggere dati da un file presente sul disco, occorre dapprima costruire un oggetto di tipo FileReader FileReader reader = new FileReader("input.txt"); Scanner in = new Scanner(reader); Si utilizza tale oggetto come parametro per costruire un oggetto di tipo Scanner Per leggere i dati, si possono usare i metodi della classe: next, nextline, nextint e nextdouble

4 Leggere e Scrivere File di Testo 4 Per scrivere file di testo usate la classe PrintWriter e i suoi metodi print e println PrintWriter out = new PrintWriter("output.txt"); Se il file in cui scrivere esiste già, viene svuotato prima di scrivervi nuovi dati Se il file non esiste, viene creato un file vuoto

5 Leggere e Scrivere File di Testo 5 Usate, poi, i consueti metodi print e println per inviare numeri, oggetti e stringhe all'istanza di PrintWriter out.println(29.95); out.println(new Rectangle(5, 10, 15, 25)); out.println("hello, World!"); Quando avete terminato di scrivere in un oggetto di tipo PrintWriter,, accertatevi di chiuderlo out.close(); Se il programma termina l esecuzione senza aver chiuso l oggetto di tipo PrintWriter,, può darsi che non tutti i dati siano stati realmente scritti nel file su disco

6 Esempio di Programma 6 Legge tutte le righe presenti in un file di dati in ingresso e le invia ad un file di uscita, facendo precedere a ciascuna riga di testo il corrispondente numero di riga Se il file d ingresso è: Mary had a little lamb Whose fleece was white as snow. And everywhere that Mary went, The lamb was sure to go!

7 Esempio di programma 7 Allora il programma produce il seguente file: /* 1 */ Mary had a little lamb /* 2 */ Whose fleece was white as snow. /* 3 */ And everywhere that Mary went, /* 4 */ The lamb was sure to go! I numeri di riga sono racchiusi tra delimitatori /* */ in modo che il programma possa essere utilizzato per numerare file di codice sorgente Java

8 LineNumberer.java 8 01: import java.io.filereader; 02: import java.io.ioexception; 03: import java.io.printwriter; 04: import java.util.scanner; 05: 06: public class LineNumberer 07: { 08: public static void main(string[] args) 09: { 10: Scanner console = new Scanner(System.in); 11: System.out.print("Input file: "); 12: String inputfilename = console.next(); 13: System.out.print("Output file: "); 14: String outputfilename = console.next(); 15: 16: try 17: { 18: FileReader reader = new FileReader(inputFileName); 19: Scanner in = new Scanner(reader); 20: PrintWriter out = new PrintWriter(outputFileName); 21: int linenumber = 1;

9 LineNumberer.java 9 22: 23: while (in.hasnextline()) 24: { 25: String line = in.nextline(); 26: out.println("/* " + linenumber + " */ " + line); 27: linenumber++; 28: } 29: 30: out.close(); 31: } 32: catch (IOException exception) 33: { 34: System.out.println("Error processing file:" + exception); 35: } 36: } 37: }

10 Una Finestra di Dialogo 10 Figura 1: Una finesta di dialogo del tipo JFileChooser

11 Una Finestra di Dialogo 11 JFileChooser chooser = new JFileChooser(); FileReader in = null; if (chooser.showopendialog(null) == JFileChooser.APPROVE_OPTION) { File selectedfile = chooser.getselectedfile(); reader = new FileReader(selectedFile);... }

12 Formato di Testo 12 Esistono due modi fondamentalmente diversi di memorizzare i dati: In formato testo In formato binario

13 Formato di Testo 13 Nel formato testo i dati sono rappresentati in una forma leggibile dagli esseri umani come una sequenza di caratteri Per esempio, il numero intero viene memorizzato come una sequenza di cinque caratteri: '1' '2' '3' '4' '5' Per elaborare dati in ingresso e in uscita dovete usare le classi Reader e Writer e le loro sottoclassi Per leggere: FileReader reader = new FileReader("input.txt"); Per scrivere: FileWriter writer = new FileWriter("output.txt");

14 Formato Binario 14 Nel formato binario i dati sono rappresentati da byte In formato binario il numero intero viene registrato come una sequenza di quattro byte come una sequenza di quattro byte Se memorizzate le informazioni in forma binaria, come sequenza di byte, dovete usare le classi InputStream e OutputStream e le loro sottoclassi La memorizzazione binaria è più compatta e più efficiente

15 Formato Binario 15 Per leggere dati binari da un file su disco si crei un oggetto di tipo FileInputStream FileInputStream inputstream = new FileInputStream("input.bin"); Si usi oggetti di tipo FileWriter e FileOutputStream per scrivere dati in un file su disco in forma di testo o, rispettivamente, binaria FileOutputStream outputstream = new FileOutputStream("output.bin");

16 Leggere un Singolo Carattere da 16 un File in Formato Testo La classe Reader ha un metodo, read,, che legge un carattere alla volta Il metodo read di fatto restituisce un dato di tipo int 1 Alla fine dei dati, read restituisce 1 Reader reader =...; int next = reader.read(); char c; if (next!= -1) c = (char) next;

17 Leggere un Singolo Carattere da 17 un File in Formato Testo La classe InputStream ha un metodo read per leggere un byte alla volta Restituisce un dato di tipo int,, che può essere il byte che è stato inserito Restituisce il numero intero 1,, se è stata raggiunta la fine del flusso InputStream in =...; int next = in.read(); byte b; if (next!= -1) b = (byte) next;

18 Formato Testo e Binario 18 Le classi Writer e FileOutputStream hanno un metodo write per scrivere, rispettivamente, un singolo carattere o byte Questi metodi basilari sono gli unici metodi di lettura e scrittura forniti dalle classi che leggono e scrivono un file Il pacchetto dei flussi di Java si basa sul principio che ciascuna classe deve avere una responsabilità ben precisa

19 Formato Testo e Binario 19 Il compito di un oggetto di tipo FileInputStream è quello di interagire con i file, cioè di acquisire dati sotto forma di byte, non di analizzarli Se volete leggere numeri, stringhe o altri oggetti, dovete combinare la classe con altre classi

20 Un Programma di Crittografia 20 Il programma cifra un file Mescola i dati in modo che siano illeggibili tranne per chi conosca il metodo di decifrazione e la corrispondente parola segreta Useremo un metodo che era conosciuto ai tempi di Giulio Cesare Si sceglie una chiave di cifratura, che in questo caso è un numero compreso tra 1 e 25 Esempio se la chiave è 3, si sostituisce A con D, B con E, e così via

21 Un programma di crittografia 21 Per la decifrazione, si usa semplicemente il valore opposto della chiave (negativo) Testo normale Testo cifrato Figura 2: Il codice di Cesare

22 Elaborazione di Dati Binari 22 int next = in.read(); if (next == -1) done = true; else { byte b = (byte) next; //call the method to encrypt the byte byte c = encrypt(b); out.write(c); }

23 Encryptor.java 23 01: import java.io.file; 02: import java.io.fileinputstream; 03: import java.io.fileoutputstream; 04: import java.io.inputstream; 05: import java.io.outputstream; 06: import java.io.ioexception; 07: 08: /** 09: un cifratore cifra file usando la crittyografia di Cesare. 10: Per la decifrazione, usate un cifratore con la chiave 11: opposta a quella di cifratura. 12: */ 13: public class Encryptor 14: { 15: /** 16: Costruisce un cifratore. akey la chiave di cifratura 18: */

24 Encryptor.java 24 19: public Encryptor(int akey) 20: { 21: key = akey; 22: } 23: 24: /** 25: cifra il contenuto di un file. infile il nome del file in ingresso outfile il nome del file in uscita 28: */ 29: public void encryptfile(string infile, String outfile) 30: throws IOException 31: { 32: InputStream in = null; 33: OutputStream out = null; 34: 35: try 36: {

25 Encryptor.java 25 37: in = new FileInputStream(inFile); 38: out = new FileOutputStream(outFile); 39: encryptstream(in, out); 40: } 41: finally 42: { 43: if (in!= null) in.close(); 44: if (out!= null) out.close(); 45: } 46: } 47: 48: /** 49: Cifra il contenuto di un flusso. in il flusso di ingresso out il flusso di uscuta 52: */

26 Encryptor.java 26 53: public void encryptstream(inputstream in, OutputStream out) 54: throws IOException 55: { 56: boolean done = false; 57: while (!done) 58: { 59: int next = in.read(); 60: if (next == -1) done = true; 61: else 62: { 63: byte b = (byte) next; 64: byte c = encrypt(b); 65: out.write(c); 66: } 67: } 68: } 69:

27 Encryptor.java 27 70: /** 71: Cifra un byte. b il byte da cifrare il byte cifrato 74: */ 75: public byte encrypt(byte b) 76: { 77: return (byte) (b + key); 78: } 79: 80: private int key; 81: }

28 EncryptorTester.java 28 01: import java.io.ioexception; 02: import java.util.scanner; 03: 04: /** 05: Un programma per collaudare il cifratore con il codice di Cesare. 06: */ 07: public class EncryptorTester 08: { 09: public static void main(string[] args) 10: { 11: Scanner in = new Scanner(System.in); 12: try 13: { 14: System.out.print("Input file: "); 15: String infile = in.next(); 16: System.out.print("Output file: "); 17: String outfile = in.next();

29 EncryptorTester.java 29 18: System.out.print("Encryption key: "); 19: int key = in.nextint(); 20: Encryptor crypt = new Encryptor(key); 21: crypt.encryptfile(infile, outfile); 22: } 23: catch (IOException exception) 24: { 25: System.out.println("Error processing file: " + exception); 26: } 27: } 28: } 29: 30:

30 Crittografia con Chiave Pubblica 30 Chiave pubblica di Bob Vediamoci alla festa in toga Vediamoci alla festa in toga Testo normale Testo cifrato chiave privata di Bob testo decifrato Figura 3

31 Accesso Casuale e 31 Accesso sequenziale Accesso Sequenziale Un file viene elaborato un byte alla volta può essere poco efficiente Accesso casuale consente di accedere a posizioni arbitrarie nel file Solo i file su disco forniscono l accesso casuale System.in e System.out non lo forniscono Ciascun file su disco ha una posizione speciale detta puntatore del file Potete scrivere e leggere nella posizione in cui si trova il puntatore

32 Accesso Casuale 32 e Accesso Sequenziale Ciascun file su disco ha una posizione speciale detta puntatore del file Potete scrivere e leggere nella posizione in cui si trova il puntatore Accesso sequenziale Accesso casuale

33 RandomAccessFile 33 Potete aprire un file solo per: Leggere ( r ) Leggere e scrivere ( rw ) RandomAccessFile f = new RandomAcessFile("bank.dat","rw"); f.seek(n); L invocazione del metodo sposta il puntatore al byte di indice n, contando le posizioni dall inizio del file

34 RandomAccessFile 34 Per sapere qual è la posizione corrente del puntatore del file userete long n = f.getfilepointer(); Per sapere qual è il numero dei byte di un file si usa il metodo length filelength = f.length();

35 Esempio di Programma 35 Usa un file ad accesso casuale per memorizzare un insieme di conti correnti Il programma di prova fa specificare un numero di conto qualsiasi e vi aggiunge gli interessi Se si vuol manipolare un insieme di dati presenti in un file, si deve prestare particolare attenzione alla disposizione dei dati stessi Supposto di inserire semplicemente i dati in formato testo: Immaginiamo che il conto numero 1001 abbia un saldo uguale a $900 e che il conto numero 1015 abbia saldo 0$

36 Esempio di Programma 36 Vogliamo versare $100 nel conto numero Se ora si scrivesse semplicemente il nuovo valore, il risultato sarebbe:

37 Esempio di Programma 37 La classe RandomAccessFile memorizza i dati in binario I metodi readint e writeint leggono e scrivono numeri interi sotto forma di quantità di quattro byte double x = f.readdouble(); f.writedouble(x); I metodi readdouble e writedouble elaborano numeri in virgola mobile in doppia precisione sotto forma di quantità di otto byte

38 Esempio di Programma 38 Per poter aggiornare un file dovete assegnare a ciascun campo una dimensione fissa che sia sufficientemente grande Ne risulta che tutti i record ( insiemi di campi ) del file hanno la stessa dimensione Questo presenta il vantaggio che è molto più facile spostarsi sui record Quando si memorizzano numeri in un file avente dimensioni fisse per i record, è più facile inserirli in formato binario invece che in formato testo

39 Esempio di Programma 39 Il metodo size determina il numero totale di conti, dividendo la lunghezza del file per la dimensione di un record public int size() throws IOException { return (int) (file.length() / RECORD_SIZE); // RECORD_SIZE è pari a 12 bytes: // 4 bytes per il numero di conto e // 8 bytes per il saldo }

40 Esempio di Programma 40 Per leggere dal file il conto n-esimo, il metodo read posiziona il puntatore del file all indirizzo n * RECORD_SIZE (il primo conto ha indice n uguale a 0), quindi legge i dati e costruisce un oggetto che rappresenta un conto bancario: public BankAccount read(int n) throws IOException { file.seek(n * RECORD_SIZE); int accountnumber = file.readint(); double balance = file.readdouble(); return new BankAccount(accountNumber, balance); }

41 Esempio di Programma 41 Per scrivere un conto si fa, invece, così: public void write(int n, BankAccount account) throws IOException { file.seek(n * RECORD_SIZE); file.writeint(account.getaccountnumber()); file.writedouble(account.getbalance()); }

42 BankDatatester.java 42 01: import java.io.ioexception; 02: import java.io.randomaccessfile; 03: import java.util.scanner; 04: 05: /** 06: Questo programma collauda l accesso casuale. 07: Potete accedere ai conti esistenti e aggiungervi 08: gli interessi oppure creare nuovi conti.i conti vengono memorizzati in un file ad accesso casuale 09: */ 10: public class BankDataTester 11: { 12: public static void main(string[] args) 13: throws IOException 14: { 15: Scanner in = new Scanner(System.in); 16: BankData data = new BankData(); 17: try

43 BankDatatester.java 43 18: { 19: data.open("bank.dat"); 20: 21: boolean done = false; 22: while (!done) 23: { 24: System.out.print("Account number: "); 25: int accountnumber = in.nextint(); 26: System.out.print("Amount to deposit: "); 27: double amount = in.nextdouble(); 28: 29: int position = data.find(accountnumber); 30: BankAccount account; 31: if (position >= 0) 32: { 33: account = data.read(position); 34: account.deposit(amount); 35: System.out.println("new balance=" 36: + account.getbalance()); 37: }

44 BankDatatester.java 44 38: else // Aggiungi un nuovo conto 39: { 40: account = new BankAccount(accountNumber, 41: amount); 42: position = data.size(); 43: System.out.println("adding new account"); 44: } 45: data.write(position, account); 46: 47: System.out.print("Done? (Y/N) "); 48: String input = in.next(); 49: if (input.equalsignorecase("y")) done = true; 50: } 51: } 52: finally 53: { 54: data.close(); 55: } 56: } 57: }

45 BankData.java : import java.io.ioexception; 002: import java.io.randomaccessfile; 003: 004: /** 005: Questa classe funge da tramite per un file 006: ad accesso casuale contenente i dati di conti bancari. 007: */ 008: public class BankData 009: { 010: /** 011: Costruisce un oggetto del tipo BankData senza 012: associarlo ad un file. 013: */ 014: public BankData() 015: { 016: file = null; 017: }

46 BankData.java : 019: /** 020: Apre il file dei dati. filename il nome del file che contiene 022: informazioni sui conti bancari 023: */ 024: public void open(string filename) 025: throws IOException 026: { 027: if (file!= null) file.close(); 028: file = new RandomAccessFile(filename, "rw"); 029: } 030: 031: /** 032: Restituisce il numero di conti presenti nel file. il numero dei conti 034: */ 035: public int size() 036: throws IOException 037: { 038: return (int) (file.length() / RECORD_SIZE); 039: } 040:

47 BankData.java : /** 042: Chiude il file dei dati. 043: */ 044: public void close() 045: throws IOException 046: { 047: if (file!= null) file.close(); 048: file = null; 049: } 050: 051: /** 052: Legge il record di un nuovo conto bancario. n l indice del conto nel file dei dati conto inizializzato con i dati letti dl file 055: */ 056: public BankAccount read(int n) 057: throws IOException 058: { 059: file.seek(n * RECORD_SIZE); 060: int accountnumber = file.readint(); 061: double balance = file.readdouble(); 062: return new BankAccount(accountNumber, balance); 063: }

48 BankData.java : 065: /** 066: Trova la posizione del conto bancario avente // il numero di conto indicato accountnumber il numero di conto da cercare la posizione del conto trovato oppure 069: -1 se il non esiste conto con tale numero 070: */ 071: public int find(int accountnumber) 072: throws IOException 073: { 074: for (int i = 0; i < size(); i++) 075: { 076: file.seek(i * RECORD_SIZE); 077: int a = file.readint(); 078: if (a == accountnumber) // trovato 079: return i; 080: } 081: return -1; // Non trovato dopo aver seaminato tutti i file 082: }

49 BankData.java : 084: /** 085: Scrive nel file dei dati il record di un conto bancario n l indice del conto nel file dei dati account il conto da scrivere 088: */ 089: public void write(int n, BankAccount account) 090: throws IOException 091: { 092: file.seek(n * RECORD_SIZE); 093: file.writeint(account.getaccountnumber()); 094: file.writedouble(account.getbalance()); 095: } 096: 097: private RandomAccessFile file; 098: 099: public static final int INT_SIZE = 4; 100: public static final int DOUBLE_SIZE = 8; 101: public static final int RECORD_SIZE 102: = INT_SIZE + DOUBLE_SIZE; 103: }

50 Output 50 Account number: 1001 Amount to deposit: 100 adding new account Done? (Y/N) N Account number: 1018 Amount to deposit: 200 adding new account Done? (Y/N) N Account number: 1001 Amount to deposit: 1000 new balance= Done? (Y/N) Y

51 Flussi di Oggetti 51 La classe ObjectOutputStream può memorizzare sul disco interi oggetti La classe ObjectInputStream li può rileggere Gli oggetti vengono salvati in formato binario; di conseguenza, si usano stream e non writer

52 Scrivere in un File un Oggetto di 52 Tipo BankAccount Il flusso di uscita per oggetti memorizza automaticamente nel flusso stesso tutti i campi di esemplare dell oggetto BankAccount b =...; ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream("bank.dat")); out.writeobject(b);

53 Scrivere in un File un Oggetto di 53 Tipo BankAccount Si usa il metodo readobject della classe ObjectInputStream,, che restituisce un riferimento di tipo Object Dovrete ricordare i tipi degli oggetti che avete memorizzato e usare un cast ObjectInputStream in = new ObjectInputStream(new FileInputStream("bank.dat")); BankAccount b = (BankAccount) in.readobject();

54 Scrivere in un File un Oggetto di 54 Tipo BankAccount Il metodo readobject può lanciare un eccezione di tipo ClassNotFoundException È un eccezione controllata La si cattura oppure la si dichiara in una clausola throws

55 Scrivere e Leggere un ArrayList 55 Con una sola istruzione si può salvare il vettore e tutti gli oggetti cui fa riferimento ArrayList<BankAccount> a = new ArrayList<BankAccount>(); // Ora inserisci in a molti oggetti di tipo BankAccount out.writeobject(a); E con una sola istruzione si possono rileggere tutti ArrayList<BankAccount> a = (ArrayList<BankAccount>) in.readobject();

56 Interfaccia Serializable 56 In un flusso di oggetti possono essere memorizzati soltanto esemplari di classi che realizzino l interfaccia Serializable class BankAccount implements Serializable {... } Questa interfaccia non ha metodi

57 Interfaccia Serializable 57 Il processo di memorizzazione degli oggetti in un flusso viene chiamato serializzazione Ad ogni oggetto viene assegnato un numero di serie all interno del flusso Se lo stesso oggetto viene salvato due volte, la seconda volta viene scritto soltanto il suo numero di serie Quando gli oggetti vengono poi riletti, i numeri di serie ripetuti sono considerati come riferimenti allo stesso oggetto

58 SerialTester.java 58 01: import java.io.file; 02: import java.io.ioexception; 03: import java.io.fileinputstream; 04: import java.io.fileoutputstream; 05: import java.io.objectinputstream; 06: import java.io.objectoutputstream; 07: 08: /** 09: Questo programma verifica la serializzazione di un oggetto 10: di tipo Bank. Se esiste un file con i dati serializzati di 11: una banca,esso viene caricato;altrimenti il programma parte 12: con una nuova banca. Ulteriori conti bancari sono aggiunti 13: alla banca, quindi i dati della banca vengono memorizzati nel file 14: */ 15: public class SerialTester 16: {

59 SerialTester.java 59 17: public static void main(string[] args) 18: throws IOException, ClassNotFoundException 19: { 20: Bank firstbankofjava; 21: 22: File f = new File("bank.dat"); 23: if (f.exists()) 24: { 25: ObjectInputStream in = new ObjectInputStream 26: (new FileInputStream(f)); 27: firstbankofjava = (Bank) in.readobject(); 28: in.close(); 29: } 30: else 31: { 32: firstbankofjava = new Bank(); 33: firstbankofjava.addaccount(new BankAccount(1001, 20000));

60 SerialTester.java 60 34: firstbankofjava.addaccount(new BankAccount(1015, 10000)); 35: } 36: 37: // Effettua alcuni versamenti 38: BankAccount a = firstbankofjava.find(1001); 39: a.deposit(100); 40: System.out.println(a.getAccountNumber() + ":" + a.getbalance()); 41: a = firstbankofjava.find(1015); 42: System.out.println(a.getAccountNumber() + ":" + a.getbalance()); 43: 44: ObjectOutputStream out = new ObjectOutputStream 45: (new FileOutputStream(f)); 46: out.writeobject(firstbankofjava); 47: out.close(); 48: } 49: }

61 Output 61 Prima esecuzione del programma 1001: : Seconda esecuzione del programma 1001: :

File, flussi e pacchetto java.io

File, flussi e pacchetto java.io File, flussi e pacchetto java.io Formato binario e formato di testo I dati sono memorizzati nei files in due formati: testo (successione di caratteri) binario (successione di bytes) Ad es. numero 12345

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

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

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

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

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

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

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

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

Introduzione. Java. Streams. Streams

Introduzione. Java. Streams. Streams Java il sistema di I/O G. Prencipe prencipe@di.unipi.it Introduzione La gestione del sistema di I/O è una parte fondamentale di qualsiasi linguaggio di programmazione In questa lezione approfondiremo la

Dettagli

Input/Output in Java

Input/Output in Java Corso Java Input/Output in Java Docente: Dott. Marco Bianchi Slide realizzate da Ing. A.Bei, Dott. M.Bianchi, Dott. F.Lombardi Input/Output in Java Per effettuare operazioni di I/O in Java è possibile

Dettagli

Jav@Lab Il linguaggio Java I file sequenziali

Jav@Lab Il linguaggio Java I file sequenziali Jav@Lab Il linguaggio Java I file sequenziali Input e Output Secondo i canoni dei linguaggi di programmazione "procedurali" il concetto di input e output è strettamente legato al tipo di dispositivo esterno

Dettagli

JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO

JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO JAVA JAVA Introduzione INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) Cross Platform Web Dinamico Versioni e IDE DIAPOSITIVA 2 1 JAVA La programmazione orientata agli oggetti JAVA La programmazione OOP Nascita

Dettagli

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete Compito in classe proposto Realizzare un applicazione C/S per trasferire al Client il contenuto

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

Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12

Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12 Laboratorio LP2 Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12 ventre@dia.unisa.it Esercizio P14.8 Scrivete un programma Find che cerchi in tutti i file specificati sulla riga di comando una

Dettagli

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. public abstract class FiguraPiana2{ private double base; public FiguraPiana2(double

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

La gestione di file e flussi in Java: note introduttive

La gestione di file e flussi in Java: note introduttive Università degli Studi di Palermo Facoltà di Ingegneria La gestione di file e flussi in Java: note introduttive Edoardo Ardizzone & Riccardo Rizzo Appunti per il corso di Fondamenti di Informatica A.A.

Dettagli

Laboratorio di Informatica Lezione 4

Laboratorio di Informatica Lezione 4 Laboratorio di Informatica Lezione 4 Cristian Consonni 28 ottobre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 4 1 / 42 Outline 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte

Dettagli

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008 Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 6 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

789:;<:' .&+/"0&12%34%5&66+,("%3787%% %"+&%88$77%9%8:$:7%% ;<'&12%8%=,+>"%3787 % % % %"+&%88$77%9%8:$:7%

789:;<:' .&+/0&12%34%5&66+,(%3787%% %+&%88$77%9%8:$:7%% ;<'&12%8%=,+>%3787 % % % %+&%88$77%9%8:$:7% !"#$"%&'()')*+'!"#$%!&'()%*&++,+&-%%!"#$%&'"(()("*+,#$'"&$-. 789:;"%3787 % % % %"+&%88$77%9%8:$:7%?("'(%)"'"%'&0% 0,6"+,@"+("%1(%A'5"+=,B/,%C+,'1&$%

Dettagli

Architettura Client-Server

Architettura Client-Server Architettura Client-Server 1. il client manda una richiesta al server 2. il server (in attesa) riceve la richiesta 3. il server esegue il servizio richiesto (generando un thread concorrente) 4. il server

Dettagli

10.4. La classe File e gli attributi di directory e file

10.4. La classe File e gli attributi di directory e file pag.143 10.4. La classe File e gli attributi di directory e file Questa classe, molto utile per operare con i file su disco, consente di accedere alle directory, verificare e acquisire le caratteristiche

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

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate

Dettagli

File e flussi (capitolo 11) Leggere/scrivere file di testo. Leggere un file di testo. Gestione di file in Java. Leggere file con FileReader

File e flussi (capitolo 11) Leggere/scrivere file di testo. Leggere un file di testo. Gestione di file in Java. Leggere file con FileReader File e flussi (capitolo 11) Leggere/scrivere file di testo 1 2 Gestione di file in Java Finora abbiamo visto programmi Java che interagiscono con l utente soltanto tramite i flussi di ingresso e di uscita

Dettagli

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output Prof. Franco Zambonelli Lucidi realizzati in collaborazione

Dettagli

Lezione 18 Le classi per l'input/output nel pacchetto java.io

Lezione 18 Le classi per l'input/output nel pacchetto java.io Lezione 18 Le classi per l'input/output nel pacchetto java.io Il package java.io incapsula le funzionalità di Input/Output (I/O) di Java. Come tutti i programmatori presto imparano, le applicazioni informatiche

Dettagli

Eccezioni. Gestione degli errori. Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. Approccio tradizionale: Problemi

Eccezioni. Gestione degli errori. Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. Approccio tradizionale: Problemi Eccezioni Eccezioni per codificare errori lancio di eccezioni Eccezioni user defined checked e unchecked Gestione di eccezioni cattura di eccezioni Gestione degli errori Approccio tradizionale: codifica

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

Corso di Reti di Calcolatori. java.net.url

Corso di Reti di Calcolatori. java.net.url Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (2 a parte) paolo.trunfio@deis.unical.it 1 java.net.url URL (String spec) crea un oggetto URL

Dettagli

Modulo 2: Strutture fondamentali della programmazione Java

Modulo 2: Strutture fondamentali della programmazione Java Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Input e Output da Console Leggere valori in input (Scanner); Stampare valori di output (System.out.print); Modulo 2: Strutture

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

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

TECNICHE AVANZATE DI I/O. Al loro livello più basso, tutti i file scritti sull hard disk. Training per esperti SU FILE

TECNICHE AVANZATE DI I/O. Al loro livello più basso, tutti i file scritti sull hard disk. Training per esperti SU FILE Training per esperti TECNICHE AVANZATE DI I/O SU FILE Spesso, la decisione di dividere in processi differenti la produzione dei dati dall uso degli stessi viene presa perché occorre scrivere i dati su

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

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

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

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

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

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array 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

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

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition Linguaggio Java (... (javac, Tool di sviluppo Librerie per l'interfaccia grafica Librerie di base Macchina

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

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Introduzione all'uso di JAVA. Come si scrive, compila, esegue una applicazione Java con uso di IDE JCreator?

Introduzione all'uso di JAVA. Come si scrive, compila, esegue una applicazione Java con uso di IDE JCreator? Introduzione all'uso di JAVA Che cosa è Java? 1. Un architettura interpiattaforma ed un linguaggio di programmazione OO con cambio di paradigma rispetto alla tradizionale impostazione procedurale. 2. Funziona

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Java e Serializzazione dalla A all'xml di Leonardo Puleggi

Java e Serializzazione dalla A all'xml di Leonardo Puleggi dalla A all'xml di Leonardo Puleggi Indice generale Introduzione2 Grafo di Riferimenti 4 Attributi Transient.. 6 Metodi writeobject e readobject... 7 Ereditarietà e Serializzazione...10 Serializzazione

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

Uno stream o flusso di dati o canale è un percorso di comunicazione tra la sorgente di una certa informazione e la sua destinazione.

Uno stream o flusso di dati o canale è un percorso di comunicazione tra la sorgente di una certa informazione e la sua destinazione. pag.112 9. Input e output Nell informatica classica il concetto di input e output era strettamente legato all uso dei dispositivi esterni di memorizzazione (dischi, nastri) e quindi al concetto di file,

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

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

Interfaccia del file system. Fabio Buttussi HCI Lab Dipart. di Matematica ed Informatica Università degli Studi di Udine www.dimi.uniud.

Interfaccia del file system. Fabio Buttussi HCI Lab Dipart. di Matematica ed Informatica Università degli Studi di Udine www.dimi.uniud. HCI Lab Dipart. di Matematica ed Informatica Università degli Studi di Udine www.dimi.uniud.it/buttussi Cos'è il file system? Consiste in: Insieme di file Strutture dati per organizzare i file nel sistema

Dettagli

Lezione 11 Accesso al file system

Lezione 11 Accesso al file system A cura di Carlo Pelliccia Qualunque applicazione Android può leggere e scrivere file dalla memoria interna del telefono o da una scheda esterna inserita nel dispositivo. I principi da osservare per compiere

Dettagli

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell Tecnologie Web L-A Java e HTTP Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi Java e TCP/IP in a Nutshell! java.net.inetaddress: rappresenta un indirizzo IP e

Dettagli

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) (RMI) Remote Method Invocation (RMI) in Java. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. e-mail: cazzola@disi disi.unige.it Walter Cazzola Java: Remote

Dettagli

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2) Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione

Dettagli

Scritto da Enrico Battuello Giovedì 25 Novembre 2010 21:11 - Ultimo aggiornamento Venerdì 07 Gennaio 2011 23:50

Scritto da Enrico Battuello Giovedì 25 Novembre 2010 21:11 - Ultimo aggiornamento Venerdì 07 Gennaio 2011 23:50 Nell'informatica e in particolare nell'ambito del salvataggio e della trasmissione dei dati, la serializzazione è il processo mediante il quale è possibile convertire una struttura dati e/o un insieme

Dettagli

Sviluppo Applicazioni Mobile Lezione 13. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 13. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 13 + Credits I lucidi di questa lezione sono stati preparati da: Professor Stefano Mizzaro Professor Paolo Coppola e sono stati modificati e completati dal Dr. Paolo

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

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili 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 Corso di

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

Corso di Programmazione ad oggetti

Corso di Programmazione ad oggetti Corso di Programmazione ad oggetti Il sistema di I/O del C++ a.a. 2008/2009 Claudio De Stefano 1 Il Modello di Von Neumann Il Modello di Von Neumann prevede che la CPU carichi in maniera sequenziale i

Dettagli

Il tipo di dati char (capitolo 4)

Il tipo di dati char (capitolo 4) SETTIMANA 3 Il tipo di dati char (capitolo 4) Caratteri in una stringa Sappiamo già come estrarre sottostringhe da una stringa, con il metodo substring A volte è necessario estrarre ed elaborare sottostringhe

Dettagli

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java.

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java. Corso di Laurea in Informatica e Comunicazione Digitale a.a. 2006-2007 Interazione Uomo-Macchina Introduzione a Java Seconda Parte Irene Mazzotta Giovanni Cozzolongo Vincenzo Silvetri 1 Richiami: Java

Dettagli

Utilizzo delle classi

Utilizzo delle classi Utilizzo delle classi I metodi costruttore ed il loro utilizzo. Alcune classi di ingresso e uscita 2 Classi ed Oggetti predefiniti Oggetti predefiniti Sono presenti nel programma Non è necessario crearli

Dettagli

Programmazione Java (Applicazioni e Applet )

Programmazione Java (Applicazioni e Applet ) Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della cartella \bin nel PATH si possono provare i seguenti programmi funzionanti.

Dettagli

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Http con java, URL Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei - Tecnologie

Dettagli

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini Introduzione all utilizzo di Visual Basic for Application Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini PROGRAMMAZIONE Insieme delle attività da svolgersi per creare

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

Tecnologia e Applicazioni Internet 2010/11

Tecnologia e Applicazioni Internet 2010/11 Tecnologia e Applicazioni Internet 2010/11 Lezione 1 - Gestione delle dipendenze Matteo Vaccari http://matteo.vaccari.name/ vaccari@pobox.com 1 Modalità di esame Preparazione di un elaborato, da solo o

Dettagli

un programma Java 2.1 Scrittura, compilazione ed esecuzione

un programma Java 2.1 Scrittura, compilazione ed esecuzione 2 Scrivere ed eseguire un programma Java Contenuto 2.1 Scrittura, compilazione ed esecuzione 2.2 La compilazione 2.3 L esecuzione 2.4 I package e la direttiva import 2.5 Cosa può andare male? 2.6 Esercizi

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP D /LQH&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: i inviano al server pacchetti (vuoti) che vengono interpretati dal server come richiesta

Dettagli

Livelli di astrazione

Livelli di astrazione Realizzare Classi Astrazione Perdita di dettaglio Utile nella descrizione, progettazione, implementazione e utilizzo di sistemi complessi Dettagli trascurabili vengono incapsulati in sottosistemi più semplici

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

ARRAY E STRINGHE. G. Frosini Slide 1

ARRAY E STRINGHE. G. Frosini Slide 1 ARRAY E STRINGHE G. Frosini Slide 1 Array: VARIABILI ARRAY struttura dati costituita da elementi (anche nessuno, array vuoto) dello stesso tipo; tipo array: tipo degli elementi, non numero degli elementi;

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

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

Esercizi classi e array

Esercizi classi e array Esercizi classi e array Raffaella Brighi, a.a. 2006/07 Corso di Algoritmi e programmazione. A.A. 2006-07 CdL Operatore Informatico Giuridico. Progetto DataSet Realizzare una classe DataSet per la gestione

Dettagli

Il sistema I/O di Java

Il sistema I/O di Java Programmazione Java:. Il sistema I/O di Java romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Stream I/O Gestione di stream byte oriented Filtri Gestione di stream char oriented

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Prova d Esame 07.04.2006 Compito A

Prova d Esame 07.04.2006 Compito A DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

Prova d Esame 07.04.2006 Compito B

Prova d Esame 07.04.2006 Compito B DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public

Dettagli

String, Array e Main. Lezione 7

String, Array e Main. Lezione 7 String, Array e Main Lezione 7 Scopo della Lezione Presentare la classe String ed il tipo Stringa; Presentare ed imparare ad usare gli array in Java; Approfondire la conoscenza con il metodo speciale main.

Dettagli

ELEMENTI DI PROGETTAZIONE SOFTWARE

ELEMENTI DI PROGETTAZIONE SOFTWARE ELEMENTI DI PROGETTAZIONE SOFTWARE Massimiliano Redolfi Lezione 7: la fortezza Perché un sistema sia robusto ogni suo componente deve essere robusto. Una semplice metodo public class Main { public static

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

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Reflection in Java 1 Reflection Riflessione

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

Programmazione generica

Programmazione generica 16 Programmazione generica Obiettivi del capitolo Capire gli obiettivi della programmazione generica Essere in grado di realizzare classi e metodi generici Comprendere il meccanismo di esecuzione di metodi

Dettagli

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono","e-mail"}; //nomi delle colonne della tabella

Finestra.java. static String nomicolonne[] = {ind.,cognome,nome,telefono,e-mail}; //nomi delle colonne della tabella import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowevent; import java.awt.event.windowlistener; import java.io.*; import java.util.*;

Dettagli

Lezione 5: Socket SSL/ TLS. Corso di Programmazione in Rete Laurea Magistrale in Ing. Informatica Università degli Studi di Salerno

Lezione 5: Socket SSL/ TLS. Corso di Programmazione in Rete Laurea Magistrale in Ing. Informatica Università degli Studi di Salerno Lezione 5: Socket SSL/ TLS Corso di Programmazione in Rete Laurea Magistrale in Ing. Informatica Università degli Studi di Salerno 1 Outline Introduzione Gestione delle chiavi e dei certificati Comunicazione

Dettagli

Applicazioni web. Parte 5 Socket

Applicazioni web. Parte 5 Socket Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 5 Michele Tomaiuolo tomamic@ce.unipr.it Protocolli Internet I computer

Dettagli

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Corsi di Reti di Calcolatori (Docente Luca Becchetti) Corsi di Reti di Calcolatori (Docente Luca Becchetti) NOT : le soluzioni proposte sono volutamente sintetiche. Lo studente dovrebbe fare uno sforzo per risolvere i quesiti in modo autonomo, espandendo

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP D (FKR&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: il server attende una connessione da parte del client (su MDYDQHW6HUYHU6RFNHW), usa la

Dettagli

Progettare un'applicazione di tipo GUI con tre menu e voci di menu (come nelle figure sottostanti):

Progettare un'applicazione di tipo GUI con tre menu e voci di menu (come nelle figure sottostanti): Progettare un'applicazione di tipo GUI con tre menu e voci di menu (come nelle figure sottostanti): All'attivazione della voce Apri del menu File corrisponde la possibilità di aprire un file scelto con

Dettagli