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

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Informatica I. Ingegneria Medica. Prof. Diego Salamon Informatica I Ingegneria Medica Prof. Diego Salamon Gestione I/O Prof. Diego Salamon Introduzione Nella creazione e gestione del software è necessario interagire con entità esterne a quelle del programma

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

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

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

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

Capitolo 11 Gestione File ed Eccezioni

Capitolo 11 Gestione File ed Eccezioni Capitolo 11 Gestione File ed Eccezioni Obiettivi del capitolo Lettura e scrittura file ASCII File testo e binari 1 Fondamenti di Informatica Fondamenti di Informatica 2 Lettura di file testo Scrivere file

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

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

Capitolo 11 Ingresso/uscita e gestione delle eccezioni. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Capitolo 11 Ingresso/uscita e gestione delle eccezioni. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Capitolo 11 Ingresso/uscita e gestione delle eccezioni Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Essere in grado di leggere e scrivere file di

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

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

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

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

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

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

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

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

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

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Java File Flussi e file Flusso (stream) = sequenza di dati di input: da cui leggere di output: su cui scrivere I file sono visti come flussi di dati Il package java.io definisce

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

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

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

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

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

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

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte) INPUT OUTPUT 2004-05 Le operazioni di I/O avvengono attraverso stream (sequenze di byte) programma stream in lettura sorgente Programmazione in rete e laboratorio programma stream in scrittura destinazione

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

Lavorare con i File e gestire le Eccezioni

Lavorare con i File e gestire le Eccezioni Lavorare con i File e gestire le Eccezioni Anno Accademico 2003/04 Docente modulo 2: Barbara Masucci Due modi per memorizzare i dati Formato testo Dati rappresentati come sequenze di caratteri 12345 memorizzato

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

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

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

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

Lavorare con i File e gestire le Eccezioni

Lavorare con i File e gestire le Eccezioni Due modi per memorizzare i dati Lavorare con i File e gestire le Eccezioni Anno Accademico 2003/04 Docente modulo 2: Barbara Masucci Formato testo Dati rappresentati come sequenze di caratteri 12345 memorizzato

Dettagli

LABORATORIO DI INFORMATICA 1 2014-2015. - parte 6 -

LABORATORIO DI INFORMATICA 1 2014-2015. - parte 6 - LABORATORIO DI INFORMATICA 1 2014-2015 - parte 6 - Lettura da File Obiettivo: leggere un file Per prima cosa dobbiamo creare un oggetto che rappresenti il file che vogliamo utilizzare (inserendo anche

Dettagli

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

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

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

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication

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

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

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

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

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

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

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

Corso sul linguaggio Java

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

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

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

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

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

Access. P a r t e p r i m a

Access. P a r t e p r i m a Access P a r t e p r i m a 1 Esempio di gestione di database con MS Access 2 Cosa è Access? Access e un DBMS che permette di progettare e utilizzare DB relazionali Un DB Access e basato sui concetti di

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

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

Programmare in Java. Olga Scotti

Programmare in Java. Olga Scotti Programmare in Java Olga Scotti Linguaggi di programmazione linguaggio macchina assembler linguaggi ad alto livello Linguaggi ad alto livello istruzioni comprensibili linguaggio simile a quello naturale

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

La paninoteca. Mi resta da scrivere solo costo()

La paninoteca. Mi resta da scrivere solo costo() La paninoteca Mi resta da scrivere solo costo() La paninoteca Usiamo l ereditarietà per definire dei Panini particolari Ci sono alcuni tipi di pane Estendendo Panino scrivo meno codice Nell esempio eredito

Dettagli

Test di unità con JUnit4

Test di unità con JUnit4 Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso

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

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java:

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Esercitazione n 4 Obiettivi: Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Gestione di input/output da console e da file (package java.io) Utilizzo di

Dettagli

LETTURA DI DATI DA INPUT

LETTURA DI DATI DA INPUT LETTURA DI DATI DA INPUT Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream FileDescriptor InputStream SequenceInputStream ByteArrayInputStream

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

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

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

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu

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

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

3.5.1.1 Aprire, preparare un documento da utilizzare come documento principale per una stampa unione.

3.5.1.1 Aprire, preparare un documento da utilizzare come documento principale per una stampa unione. Elaborazione testi 133 3.5 Stampa unione 3.5.1 Preparazione 3.5.1.1 Aprire, preparare un documento da utilizzare come documento principale per una stampa unione. Abbiamo visto, parlando della gestione

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

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

void funzioneprova() { int x=2; cout<<dentro la funzione x=<<x<<endl; } FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

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

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Le stringhe. Le stringhe

Le stringhe. Le stringhe Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010) Sapienza - Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica, Ingegneria dei Sistemi Informatici Esercitazioni

Dettagli

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizio 1 Nella classe definita di seguito indicare quali sono le variabili di istanza, quali sono le variabili

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Prova di Laboratorio di Programmazione

Prova di Laboratorio di Programmazione Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il

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

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Dettagli

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

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

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide

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

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30' Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di

Dettagli