Laboratorio di Informatica Lezione 4



Documenti analoghi
LABORATORIO DI INFORMATICA parte 6 -

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

Corso sul linguaggio Java

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

Programmare in Java. Olga Scotti

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

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

Laboratorio di Informatica Lezione 2

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

Introduzione al Linguaggio C

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

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

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

10 - Programmare con gli Array

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

Tale attività non è descritta in questa dispensa

Funzioni in C. Violetta Lonati

Appunti di Informatica 1

Eclipse - Nozioni Base

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:

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

Un oggetto per la lettura dalla tastiera

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

Gestione dei File in C

Struttura di un programma Java

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

Java: Compilatore e Interprete

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Corso di Reti di Calcolatori L-A

I file di dati. Unità didattica D1 1

Introduzione al MATLAB c Parte 2

Corso sul linguaggio Java

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

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Funzioni. Il modello console. Interfaccia in modalità console

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

Informa(ca Appun% dal laboratorio 2

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

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

Concetto di Funzione e Procedura METODI in Java

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

20 - Input/Output su File

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto

Algoritmi di Ricerca. Esempi di programmi Java

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

Mac Application Manager 1.3 (SOLO PER TIGER)

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Modulo 2: Strutture fondamentali della programmazione Java

Gestione delle Eccezioni

Utilizzo delle formule in Excel

Programmazione 1 A.A. 2015/2016

Introduzione al Python

Alcune regole di base per scrivere un programma in linguaggio C

Corso Eclipse. Prerequisiti. 1 Introduzione

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

Prova di Laboratorio di Programmazione

Scrivere un programma in Java

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

Eclipse. Avviare un progetto e compilare un semplice programma

3. La sintassi di Java

Raggruppamenti Conti Movimenti

Unità B3 Strutture di controllo

Le variabili. Olga Scotti

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Esercizi della lezione 5 di Java

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

Introduzione all uso di Eclipse

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Prof. Nicola Cappuccio

Gestione dei File. dischi nastri cd

Editor vi. Editor vi

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

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];

Invio SMS. DM Board ICS Invio SMS

Gestione delle eccezioni in Java

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Introduzione a Dev-C++

Installazione del software Fiery per Windows e Macintosh

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

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

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Realizzazione di una classe con un associazione

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente

NOZIONI BASE SHELL E SCRIPT LINUX

Corso di Informatica di base per le discipline umanistiche - XPATH

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

Codifica: dal diagramma a blocchi al linguaggio C++

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

Esercitazione 4 JDBC

Modulo 4: Ereditarietà, interfacce e clonazione

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Corso di Informatica

Architettura MVC-2: i JavaBeans

MANUALE EDICOLA 04.05

Esercitazione n 4. Obiettivi

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

Transcript:

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 I) 5 Lettura da File 6 Scrittura su File 7 Esercizi Cristian Consonni Laboratorio di Informatica, Lezione 4 2 / 42

Chi sono Cristian Consonni DISI - Dipartimento di Ingegneria e Scienza dell Informazione Pagina web del laboratorio: http://disi.unitn.it/ consonni/teaching Email: cristian.consonni@unitn.it Ufficio: Povo 2 - Open Space 9 Per domande: scrivetemi una mail Ricevimento: su appuntamento via mail Cristian Consonni Laboratorio di Informatica, Lezione 4 3 / 42

Outline for section 1 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte I) 5 Lettura da File 6 Scrittura su File 7 Esercizi Cristian Consonni Laboratorio di Informatica, Lezione 4 4 / 42

Note sullo stile Utilizzare il camelcase/pascalcase https://en.wikipedia.org/w/index.php?title=camelcase&oldid=686054689 Quando create una classe, la prima lettera è Maiuscola, ad es. TestPrimo; I metodi e le variabili hanno la lettera iniziale minuscola, ad es. sommainteri, stampavettore; le costanti vanno indicate tutte in MAIUSCOLO, ad es. NMAX, EPSILON; Cristian Consonni Laboratorio di Informatica, Lezione 4 5 / 42

Canali standard (I) I canali standard (o standard streams), in tutti i moderni sistemi operativi, rappresentano i dispositivi logici di input e di output che collegano un programma con l ambiente operativo in cui esso viene eseguito (tipicamente un terminale testuale) e che sono connessi automaticamente al suo avvio. fonte: https://it.wikipedia.org/wiki/canali_standard Cristian Consonni Laboratorio di Informatica, Lezione 4 6 / 42

Canali standard (II) Esistono tre canali standard predifiniti: stdin: standard input; stdout: standard output; stderr: standard error; Cristian Consonni Laboratorio di Informatica, Lezione 4 7 / 42

Canali standard (III) I canali standard possono essere rappresentati nel modo seguente: stdin stdout input main output errors stderr Cristian Consonni Laboratorio di Informatica, Lezione 4 8 / 42

Canali standard (IV) Questi canali sono tutti legati al terminale (o console o command prompt). Per esempio, tramite il terminale possiamo: leggere un input da terminale (stdin); stamparlo a schermo (stdout); raccogliere un messaggio di errore (stderr); Cristian Consonni Laboratorio di Informatica, Lezione 4 9 / 42

Canali standard (IV) Questi canali sono tutti legati al terminale (o console o command prompt). Per esempio, tramite il terminale possiamo: leggere un input da terminale (stdin); stamparlo a schermo (stdout); raccogliere un messaggio di errore (stderr); Cristian Consonni Laboratorio di Informatica, Lezione 4 9 / 42

Canali standard (IV) Questi canali sono tutti legati al terminale (o console o command prompt). Per esempio, tramite il terminale possiamo: leggere un input da terminale (stdin); stamparlo a schermo (stdout); raccogliere un messaggio di errore (stderr); Cristian Consonni Laboratorio di Informatica, Lezione 4 9 / 42

Canali standard (IV) Questi canali sono tutti legati al terminale (o console o command prompt). Per esempio, tramite il terminale possiamo: leggere un input da terminale (stdin); stamparlo a schermo (stdout); raccogliere un messaggio di errore (stderr); Cristian Consonni Laboratorio di Informatica, Lezione 4 9 / 42

Canali standard (IV) Questi canali sono tutti legati al terminale (o console o command prompt). Per esempio, tramite il terminale possiamo: leggere un input da terminale (stdin); stamparlo a schermo (stdout); raccogliere un messaggio di errore (stderr); Cristian Consonni Laboratorio di Informatica, Lezione 4 9 / 42

Canali standard (V) In sistemi Unix (Linux e Mac OS X) è possibile separare (redirezionare) i diversi streams lanciando il comando con una sintassi speciale: < redireziona lo stdin; java LetturaFile <in 1>out 2>err 1> redireziona lo stdout; 2> redireziona lo stderr; Cristian Consonni Laboratorio di Informatica, Lezione 4 10 / 42

Canali standard (V) In sistemi Unix (Linux e Mac OS X) è possibile separare (redirezionare) i diversi streams lanciando il comando con una sintassi speciale: < redireziona lo stdin; java LetturaFile <in 1>out 2>err 1> redireziona lo stdout; 2> redireziona lo stderr; Cristian Consonni Laboratorio di Informatica, Lezione 4 10 / 42

Canali standard (V) In sistemi Unix (Linux e Mac OS X) è possibile separare (redirezionare) i diversi streams lanciando il comando con una sintassi speciale: < redireziona lo stdin; java LetturaFile <in 1>out 2>err 1> redireziona lo stdout; 2> redireziona lo stderr; Cristian Consonni Laboratorio di Informatica, Lezione 4 10 / 42

Canali standard (V) In sistemi Unix (Linux e Mac OS X) è possibile separare (redirezionare) i diversi streams lanciando il comando con una sintassi speciale: < redireziona lo stdin; java LetturaFile <in 1>out 2>err 1> redireziona lo stdout; 2> redireziona lo stderr; Cristian Consonni Laboratorio di Informatica, Lezione 4 10 / 42

Outline for section 2 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte I) 5 Lettura da File 6 Scrittura su File 7 Esercizi Cristian Consonni Laboratorio di Informatica, Lezione 4 11 / 42

Lettura input da tastiera (I) Abbiamo già visto che per stampare dei valori a schermo si usa: System.out questo permette di interagire con lo stdout. Analogamente: System.in permette di interagire con lo stdin. Cristian Consonni Laboratorio di Informatica, Lezione 4 12 / 42

Lettura input da tastiera (II) Nella libreria java.util di Java esiste l oggetto Scanner che ci permette di utilizzare l input della console: import java.util.scanner; public class LetturaFile { public static void main(string[] args) { Scanner input = new Scanner(System.in);... } } // Al termine della lettura chiudere il canale di input input.close(); Cristian Consonni Laboratorio di Informatica, Lezione 4 13 / 42

Lettura input da tastiera (III) Per potere utilizzare Scanner dobbiamo importare la libreria java.util aggiungendo la riga: import java.util.scanner; all inizio del file. Lo statement import è il modo in cui si possono importare librerie in un programma Java. Una libreria è un insieme di funzioni e/o strutture dati predefinite e predisposte per essere riutilizzate facilmente all interno di svariati programmi. Cristian Consonni Laboratorio di Informatica, Lezione 4 14 / 42

Modalità di lettura da stdin (I) Dopo aver dichiarato l oggetto di tipo Scanner Scanner input = new Scanner(System.in); si possono usare i seguenti metodi: input.nextint() lettura di un int; input.nextdouble() lettura di un double; input.next() lettura di una stringa; input.nextline() legge l intera linea fino al carattere newline (Invio); Cristian Consonni Laboratorio di Informatica, Lezione 4 15 / 42

Modalità di lettura da stdin (II) Se viene inserito un valore di un tipo non corrispondendente viene causato un errore ovvero viene lanciata un eccezione. Se per esempio uso input.nextint(): Inserisci un numero intero: 3.2 Exception in thread "main" java.util.inputmismatchexception at java.util.scanner.throwfor(scanner.java:864) at java.util.scanner.next(scanner.java:1485) at java.util.scanner.nextint(scanner.java:2117) at java.util.scanner.nextint(scanner.java:2076) at LetturaIntero.main(LetturaIntero.java:11) Cristian Consonni Laboratorio di Informatica, Lezione 4 16 / 42

Modalità di lettura da stdin (II) Se viene inserito un valore di un tipo non corrispondendente viene causato un errore ovvero viene lanciata un eccezione. Se per esempio uso input.nextint(): Inserisci un numero intero: 3.2 Exception in thread "main" java.util.inputmismatchexception at java.util.scanner.throwfor(scanner.java:864) at java.util.scanner.next(scanner.java:1485) at java.util.scanner.nextint(scanner.java:2117) at java.util.scanner.nextint(scanner.java:2076) at LetturaIntero.main(LetturaIntero.java:11) Cristian Consonni Laboratorio di Informatica, Lezione 4 16 / 42

Modalità di lettura da stdin (III) Esistono dei metodi per controllare il tipo di dato inserito: input.hasnextint() controlla che venga letto un int; input.hasnextdouble() controlla che venga letto un double; etc. Queste funzioni ritornano true se il prossimo valore è del tipo indicato: print("inserisci la tua altezza (in cm): "); while (!input.hasnextint()) { println("il numero inserito non è un intero valido."); print("inserisci la tua altezza (in cm): "); input.next(); } Cristian Consonni Laboratorio di Informatica, Lezione 4 17 / 42

Outline for section 3 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte I) 5 Lettura da File 6 Scrittura su File 7 Esercizi Cristian Consonni Laboratorio di Informatica, Lezione 4 18 / 42

Scrittura su stdout (I) Abbiamo già visto dei comandi/funzioni per scrivere sullo standard output ( a schermo ): System.out.print( stringa ) System.out.prinlnf( stringa ) System.out.printf( formato, argomenti,...) Cristian Consonni Laboratorio di Informatica, Lezione 4 19 / 42

Scrittura su stdout (II) Alcune cose utili: Con printf il formato %nd, dove n è un numero (intero), stampa spazi aggiuntivi in modo tale che il numero occupi sempre n spazi (si veda l esercizio MatriceTrasposta); Con printf il formato %0nd, dove n è un numero (intero), stampa degli zeri aggiuntivi in modo tale che il numero occupi sempre n spazi, ad esempio %03d stampa il numero 7 come 007; altre sequenze di escape particolari sono \t per inserire una tabulazione (un numero di spazi variabile che allinea l output lungo una data colonna) Cristian Consonni Laboratorio di Informatica, Lezione 4 20 / 42

Outline for section 4 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte I) 5 Lettura da File 6 Scrittura su File 7 Esercizi Cristian Consonni Laboratorio di Informatica, Lezione 4 21 / 42

Esercizi (parte I) (I) Scrivere un programma in cui: si inserire un numero intero N 10 da console; Inizializzare un array di interi di lunghezza N con i valori presi in input da console (ciclare finché non si ottengono N valori del tipo desiderato); Dopo aver letto tutti i valori stampare progressivamente i valori inseriti; Cristian Consonni Laboratorio di Informatica, Lezione 4 22 / 42

Esercizi (parte I) (II) Per esempio, se l array inserito è il seguente {2, 5, 7, 4}. Il programma deve ciclare sull array stampando: 2 2, 5 2, 5, 7 2, 5, 7, 4 Suggerimento: sono due for annidati (uno all interno dell altro) utilizzate System.out.print per stampare i valori e quando uscite dal for interno stampate una riga vuota Cristian Consonni Laboratorio di Informatica, Lezione 4 23 / 42

Outline for section 5 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte I) 5 Lettura da File 6 Scrittura su File 7 Esercizi Cristian Consonni Laboratorio di Informatica, Lezione 4 24 / 42

Lettura da file (I) Il caso della lettura da file è simile a quello della lettura da stdin: viene creato un oggetto File che rappresenta il file nel filesystem. si usa uno Scanner come nel caso della lettura da standard input Cristian Consonni Laboratorio di Informatica, Lezione 4 25 / 42

Lettura da file (II) import java.io.file; import java.util.scanner; public class LetturaFile { public static void main(string[] args) { File file = new File("esempio.txt"); Scanner scan = new Scanner(file);... Si noti l utilizzo delle due librerie: java.io.file java.util.scanner Cristian Consonni Laboratorio di Informatica, Lezione 4 26 / 42

Lettura da file (II) import java.io.file; import java.util.scanner; public class LetturaFile { public static void main(string[] args) { File file = new File("esempio.txt"); Scanner scan = new Scanner(file);... Si noti l utilizzo delle due librerie: java.io.file java.util.scanner Cristian Consonni Laboratorio di Informatica, Lezione 4 26 / 42

Percorsi (I) Prima abbiamo indicato esempio.txt come nome del file, in generale possiamo indicare un percorso (o path). I percorsi si specificano in modo diverso per sistemi operativi diversi: Unix (Linux, Mac OS X) /utente/unitn/informatica/lab/prova.txt Windows C:\utente\unitn\informatica\lab\prova.txt Il nome del file va sempre inserito completo di estensione. Cristian Consonni Laboratorio di Informatica, Lezione 4 27 / 42

Percorsi (II) Inoltre un percorso può essere: relativo, se si riferisce alla cartella corrente. i path relatvi si riferiscono alla cartella corrente (indicata con.,.. alla cartella genitore di quella corrente). in Eclipse la cartella corrente è la cartella principale del progetto all interno del workspace. esempio.txt è un path relativo alla cartella corrente. assoluto, se si riferisce alla radice del filesystem (/ su sistemi Unix, C:\ su Windows) /utente/unitn/info/prova.txt C:\utente\unitn\info\prova.txt Cristian Consonni Laboratorio di Informatica, Lezione 4 28 / 42

Lettura da file (III) import java.io.file; import java.util.scanner; public class LetturaFile { public static void main(string[] args) { File file = new File("esempio.txt"); Scanner scan = new Scanner(file);... Dopo aver scritto la dichiarazione dello Scanner dovremmo avere ottenuto: un warning relativo al fatto che non chiudiamo lo scanner. un errore relativo al fatto che una eccezione non è gestita (unhandled). Cristian Consonni Laboratorio di Informatica, Lezione 4 29 / 42

Lettura da file (III) Scanner scan = new Scanner(file); Possiamo risolvere il problema in due modi (vedere anche la funzionalità quickfix attivata con il comando Ctrl + 1): lanciare (throw) un eccezione; gestire l eccezione con il costrutto try - catch; Questo avviene perché la lettura da file può causare errori come per esempio un file non esistente oppure non accessibile. Cristian Consonni Laboratorio di Informatica, Lezione 4 30 / 42

Lanciare un eccezione Se decidiamo di lanciare un eccezione allora la dichiarazione del main viene modificata come segue: import java.io.file; import java.io.filenotfoundexception; import java.util.scanner; public class LetturaFile {... main(string[] args) throws FileNotFoundException { File file = new File("esempio.txt"); Scanner scan = new Scanner(file);... Questa sintassi segnala che la funzione main può terminare a causa dell errore FileNotFoundException. Cristian Consonni Laboratorio di Informatica, Lezione 4 31 / 42

Gestire un eccezione con try - catch La gestione dell eccezione con try - catch avviene nel modo seguente: import java.io.file; import java.io.filenotfoundexception; import java.util.scanner; public class LetturaFile { public static void main(string[] args) { File file = new File("esempio.txt"); Scanner scan; try { scan = new Scanner(file); } catch (FileNotFoundException e) { e.printstacktrace(); return; } Cristian Consonni Laboratorio di Informatica, Lezione 4 32 / 42

Gestire un eccezione con try - catch (II) Le istruzioni nel blocco try vengono provate, se non causano errori l esecuzione del programma prosegue normalmente, in caso di errore viene eseguito il blocco catch: try { scan = new Scanner(file); } catch (FileNotFoundException e) { // Queste istruzioni vengono eseguite solo se il // blocco try ha restituito un errore del tipo // FileNotFoundException e.printstacktrace(); return; } Lo scopo del blocco try - catch è quello di compiere le operazioni necessarie in conseguenza dell errore. Cristian Consonni Laboratorio di Informatica, Lezione 4 33 / 42

Outline for section 6 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte I) 5 Lettura da File 6 Scrittura su File 7 Esercizi Cristian Consonni Laboratorio di Informatica, Lezione 4 34 / 42

Scrittura file (I) In modo analogo a quanto avviene per la lettura da file, per la scrittura: 1 dobbiamo creare un oggetto che rappresenti il file su cui vogliamo scrivere, esso rappresenta il file nel filesystem; 2 utilizziamo la classe di Java FileWriter, questa classe si preoccupa di preparare il file per la scrittura gestendo, per esempio, l encoding del file. 3 creiamo un buffer BufferedWriter che effettivamente conterrà il testo da scrivere sul file. 4 per scrivere usiamo il metodo write() del buffer 5 Quando abbiamo terminato, chiudiamo il buffer. Cristian Consonni Laboratorio di Informatica, Lezione 4 35 / 42

Scrittura file (I) In modo analogo a quanto avviene per la lettura da file, per la scrittura: 1 dobbiamo creare un oggetto che rappresenti il file su cui vogliamo scrivere, esso rappresenta il file nel filesystem; 2 utilizziamo la classe di Java FileWriter, questa classe si preoccupa di preparare il file per la scrittura gestendo, per esempio, l encoding del file. 3 creiamo un buffer BufferedWriter che effettivamente conterrà il testo da scrivere sul file. 4 per scrivere usiamo il metodo write() del buffer 5 Quando abbiamo terminato, chiudiamo il buffer. Cristian Consonni Laboratorio di Informatica, Lezione 4 35 / 42

Scrittura file (I) In modo analogo a quanto avviene per la lettura da file, per la scrittura: 1 dobbiamo creare un oggetto che rappresenti il file su cui vogliamo scrivere, esso rappresenta il file nel filesystem; 2 utilizziamo la classe di Java FileWriter, questa classe si preoccupa di preparare il file per la scrittura gestendo, per esempio, l encoding del file. 3 creiamo un buffer BufferedWriter che effettivamente conterrà il testo da scrivere sul file. 4 per scrivere usiamo il metodo write() del buffer 5 Quando abbiamo terminato, chiudiamo il buffer. Cristian Consonni Laboratorio di Informatica, Lezione 4 35 / 42

Scrittura file (I) In modo analogo a quanto avviene per la lettura da file, per la scrittura: 1 dobbiamo creare un oggetto che rappresenti il file su cui vogliamo scrivere, esso rappresenta il file nel filesystem; 2 utilizziamo la classe di Java FileWriter, questa classe si preoccupa di preparare il file per la scrittura gestendo, per esempio, l encoding del file. 3 creiamo un buffer BufferedWriter che effettivamente conterrà il testo da scrivere sul file. 4 per scrivere usiamo il metodo write() del buffer 5 Quando abbiamo terminato, chiudiamo il buffer. Cristian Consonni Laboratorio di Informatica, Lezione 4 35 / 42

Scrittura file (I) In modo analogo a quanto avviene per la lettura da file, per la scrittura: 1 dobbiamo creare un oggetto che rappresenti il file su cui vogliamo scrivere, esso rappresenta il file nel filesystem; 2 utilizziamo la classe di Java FileWriter, questa classe si preoccupa di preparare il file per la scrittura gestendo, per esempio, l encoding del file. 3 creiamo un buffer BufferedWriter che effettivamente conterrà il testo da scrivere sul file. 4 per scrivere usiamo il metodo write() del buffer 5 Quando abbiamo terminato, chiudiamo il buffer. Cristian Consonni Laboratorio di Informatica, Lezione 4 35 / 42

Scrittura file (II) import java.io.bufferedwriter; import java.io.file; import java.io.filewriter; import java.io.ioexception; public class ScritturaFile { public static void main(string[] args) throws IOException { String text = "TestoEsempio"; File file = new File("esempio.txt"); FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); bw.write(text); bw.flush(); bw.close();... Cristian Consonni Laboratorio di Informatica, Lezione 4 36 / 42

Scrittura file (III) Ogni qual volta aggiungiamo una delle classi necessarie alla scrittura su File Java segnala un errore che può essere risolto aggiungengo gli import statement necessari. import java.io.bufferedwriter; import java.io.file; import java.io.filewriter; import java.io.ioexception; Cristian Consonni Laboratorio di Informatica, Lezione 4 37 / 42

Scrittura file (V) Anche quando aggiungiamo il FileWriter dobbiamo preparci a gestire l eccezione, in questo caso segnaliamo il fatto che il main può generare una IOException. public class ScritturaFile { public static void main(string[] args) throws IOException { String text = "TestoEsempio"; File file = new File("esempio.txt"); FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); Cristian Consonni Laboratorio di Informatica, Lezione 4 38 / 42

Scrittura file (VI) public class ScritturaFile { public static void main(string[] args) throws IOException { String text = "TestoEsempio"; File file = new File("esempio.txt"); FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); } } bw.write(text); // Forza lo svuotamento del buffer e la scrittura su // file bw.flush(); bw.close(); Cristian Consonni Laboratorio di Informatica, Lezione 4 39 / 42

Outline for section 7 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte I) 5 Lettura da File 6 Scrittura su File 7 Esercizi Cristian Consonni Laboratorio di Informatica, Lezione 4 40 / 42

Esercizi (I) Scrivere un programma che apra il file esercizio01.txt (scaricatelo da qui http://bit.ly/esercizi-labinfo e inseritelo nella cartella principale del progetto) Il file contiene una serie di array di interi, la prima riga indica il numero di elementi per riga, mentre le righe successive sono effettivamente gli array. Stampate a video il massimo di ciascuna riga e alla fine il valore massimo totale. Esempio di input: 8 1 2 9 5 7 12 2 3 4 9 1 5 8 14 5 6 0 6 11 5 9 2 6 0 Cristian Consonni Laboratorio di Informatica, Lezione 4 41 / 42

Esercizi (II) Scrivere un programma che apra il file divina.txt (scaricatelo da http://bit.ly/esercizi-labinfo e inseritelo nella cartella principale del progetto); Il file contiene il primo capitolo della divina commedia. Leggete linea per linea, contando il numero di a, e, i, o, u ; Una volta letto tutto il file, create un nuovo file chiamato risultati.txt in cui scriverete il numero di a, e, i, o, u presenti; Suggerimento: utilizzate 5 variabili diverse o un array da 5 elementi, come preferite) scorrete la stringa e controllate carattere per carattere con il metodo nomestringa.charat(indice) Cristian Consonni Laboratorio di Informatica, Lezione 4 42 / 42