Il numero di classi è assurdo, e pensare che originariamente il sistema I/O java era pensato per limitare l esplosione delle classi!

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Il numero di classi è assurdo, e pensare che originariamente il sistema I/O java era pensato per limitare l esplosione delle classi!"

Transcript

1 1

2 Il numero di classi è assurdo, e pensare che originariamente il sistema I/O java era pensato per limitare l esplosione delle classi! 2

3 3

4 4

5 Se i dati sono in formato testo, allora sono rappresentati da caratteri, altrimenti da byte. Distinguiamo in questo modo file contenenti caratteri, detti anche file di testo e file contenenti sequenze di dati (che possono essere letti byte a byte) e che prendono il nome di file binari. È chiaro che il primo tipo è intelligibile dall uomo mentre il secondo non necessariamente lo è. 5

6 6

7 7

8 8

9 9

10 10

11 11

12 12

13 13

14 Un esempio in cui i flussi orientati ai caratteri non sono utili è la compressione. Se prendiamo ad esempio la libreria java.util.zip, essa è orientata ai byte: perché leggere caratteri quando abbiamo tra le mani contenuti che possono andare da un file immagine a una presentazione, tutti file di tipo binario? Non ha senso, ed infatti in questi casi si preferisci usufruire della lettura orientata ai byte. 14

15 15

16 16

17 Classi modificatori (si vedano le precedenti slide sul pattern decorator). 17

18 18

19 19

20 Per aprire un file per l input di caratteri potete utilizzare FileReader specificando il file da utilizzare con un oggetto String (rappresentante il path del file) o direttamente un oggetto File. Le prestazioni di lettura vanno però incrementate e invece di leggere ogni volta è meglio bufferizzare (cioè creare un buffer, un contenitore, che legge alcune righe e le mette a disposizione del programmatore); potete ottenere questo risultato incapsulando l oggetto in un BufferedReader (ecco un tipico esempio di pattern decorator!). La sezione b mostra come potete utilizzare i filtri nella lettura dell input da console con l oggetto System.in (che rappresenta appunto lo standard input, di default la console). Il tipo di quest ultimo è InputStream quindi, poiché BufferedReader necessita di un argomento Reader, viene utilizzata la classe InputStreamReader per eseguire l adattamento. 20

21 Questa sezione accetta la stringa s2 (dove è contenuto il file) e la utilizza per creare uno StringReader. Viene quindi utilizzato il metodo read() per leggere tutti i caratteri, uno di seguito all altro, e inviarli alla console. Notate che read() restituisce il byte letto come un int che, quindi, dev essere convertito in un char per essere stampato correttamente. Nulla vieta che usiate un decoratore per bufferizzare la stringa, scriviate cioè: BufferedReader b = new BufferedReader(new StringReader(s2)); usando poi il metodo readline(), di BufferedReader. Tramite StringReader la lettura avverrà carattere a carattere invece. Questo può essere uno dei pochi motivi per utilizzare BufferedReader con una stringa. 21

22 Per leggere dati formattati potete utilizzare un oggetto di tipo DataInputStream, che è una classe di I/O orientata ai byte (e non orientata ai caratteri). Di conseguenza, dovete utilizzare la gerarchia di classi basata su InputStream invece delle classi basate su Reader. Naturalmente, potete leggere qualsiasi oggetto (ad es. un file) come sequenza di byte utilizzando le classi InputStream ma, per comodità, in questo caso viene utilizzato un oggetto di tipo String. Per convertire la stringa in un array di byte, che è il tipo necessario per costruire un oggetto ByteArrayInputStream, è possibile usare il metodo getbytes() della classe String. A questo punto, avete un appropriato InputStream da gestire con la classe DataInputStream. 22

23 In primo luogo viene creato un oggetto FileWriter per connettersi al file. Praticamente sempre sarà utile bufferizzare l output utilizzando un BufferedWriter (i buffer, lo ricordiamo, migliorano sensibilmente l I/O da file). Quindi, per la formattazione, l oggetto BufferedWriter viene incapsulato in un PrintWriter. Il file di dati così creato è leggibile come un normale file di testo. Notate che il numero di righe non viene tenuto con LineNumberInputStream che è una classe di non facile gestione. Al termine del flusso di input, il metodo readline() restituisce null. Alla fine dell elaborazione potete osservare un operazione esplicita di close(). Questa operazione è necessaria poiché l uso di flussi bufferizzati non garantisce che il contenuto del buffer venga scritto fisicamente nel file nel momento in cui i metodi di scrittura sono stati invocati. Il metodo close() forza la scrittura dei dati ancora in memoria e chiude il file. 23

24 Gli oggetti della classe PrintWriter formattano i dati in modo che possano essere letti dalle persone. Viceversa, per eseguire l output dei dati in modo che possano essere letti da un altro flusso, dovrete utilizzare gli oggetti DataOutputStream (e gli oggetti DataInputStream per leggerli). Naturalmente, questi flussi possono essere di qualsiasi tipo, ma nell esempio viene utilizzato un file bufferizzato, sia per la lettura sia per la scrittura. Le classi Data.. Sono orientate ai byte per cui richiedono degli InputStream e degli OutputStream. Se si utilizza un DataOutputStream per scrivere i dati, Java garantisce di poter leggere correttamente i dati con un DataInputStream, in modo indipendente dal sistema utilizzato. Questo aspetto è particolarmente importante, poiché è ben noto quanto tempo può venire sprecato per risolvere eventuali problemi di porting dei dati verso uno specifico sistema. Se disponete di Java su entrambe i sistemi questo problema è completamente eliminato. Utilizzando un DataOutputStream, l unico modo affidabile per scrivere un oggetto di tipo String in modo che possa essere letto da un DataInputStream consiste nell usare la codifica UTF-8. Come è facile notare i metodi vengono chiamati dualmente: in scrittura viene chiamata la scrittura di un reale seguito da una stringa e infine un reale, in lettura viene letto un reale e quindi una stringa e di nuovo il reale. Tuttavia, affinchè tutti i metodi di lettura funzionino correttamente, dovreste conoscere la posizione esatta dell elemento nei dati del flusso, poiché sarebbe ugualmente possibile leggere il valore double memorizzato come semplice sequenza di byte, o come un valore char e così via. Di conseguenza, dovete avere un formato fisso per i dati presenti nel file oppure dovete memorizzare ulteriori informazioni nel file per determinare la posizione dei dati. 24

25 25

26 26

27 27

28 Esistono diverse classi File nel mondo Java, due delle quali inserite nel runtime Java distribuito dalla Sun. Quella cui ci riferiamo, e ci riferiremo sempre, è la classe contenuta in java.io: quando effettuate l import assicuratevi che sia questa la classe che inserite, altrimenti vi ritroverete con errori di difficile comprensione Come riportato in slide, la creazione di un nuovo file è possibile SOLO e SOLTANTO in una cartella (directory) già preesistente. Nel caso tentiamo di generare un file con un percorso la cui cartella non esiste, vedrete lanciare un eccezione e la creazione del file, ovviamente, non andrà a buon fine. Fate quindi attenzione e sfruttate i metodi messi a disposizione della classe File per verificare che le directory in cui state navigando esistano. 28

29 29

30 Unix utilizza / mentre Windows usa \ (ma viene accettato anche // ). Quest ultimo carattere non può essere usato direttamente in Java in quanto carattere di escape (cfr. le prime slide) per cui va escepato a sua volta ( \\ ). Ne segue che un percorso del tipo dir1/dir2/dir3 per ambiente linux, debba essere rappresentato come dir1\\dir2\\dir3\\ sotto Windows! Per ovviare a questi problemi possiamo sostituire i separatori con il membro statico di file riportato in slide. In questo modo otteniamo: dir1 + File.Separator + dir2 + File.Separator + dir3 30

31 31

32 32

33 33

34 Sotto windows il percorso relativo sarebbe:../../products/testo.txt ---- Ricordate sempre che la chiamata al metodo di creazione del nuovo file può lanciare un eccezione IOException e va quindi opportunamente circondata da un blocco try; alternativamente potete sempre demandare la gestione al chiamante del metodo (dichiarazione throws ). 34

35 35

36 36

37 37

38 38

39 39

40 Potete usare anche lo spazio, come fatto alla slide 38 dallo StringTokenizer: Stringa.split( ); 40

41 Se scriviamo: [abc]* viene accetta dalla regola qualsiasi sequenza di zero o più lettere abc, quindi ad esempio: aabac Acacbb e così via Se scriviamo invece: [a][1-9]* accettiamo sequenze composte dalla lettera a seguita da 1 o più cifre in base 10, diverse dallo 0 (con compreso). Quindi ad esempio: a a Ma non: Arfjnfj3443 A30049 B30903 E così via. 41

42 Il risultato è lo stesso dell applicazione di o : viene cercata una o più occorrenze di o sequenziali. Nel nostro testo le o sono però singole per cui, appunto, non si hanno risultati diversi. Ben differente è il caso di una stringa del tipo: moo:too:soo In questo caso, l applicazione dell espressione o provoca la generazione di diverse posizioni vuote, in particolare il risultato è: m,, :t,, :s (l ultimo vuoto viene eliminato da Java) Questo risultato è dovuto al fatto che viene riconosciuta una o alla volta per cui la divisione avviene sulla prima e poi sulla seconda, lasciando una stringa vuota. Ecco la sequenza di scissione: moo m o o o Viceversa nel caso dell espressione o+, vengono riconosciute anche le sequenze, per cui moo:too viene spezzata correttamente come segue: moo:too m oo too t oo *sequenza successiva* E si ottiene infatti come risultato m, :t, :s Che è decisamente di più facile gestione dell altro risultato dato dall espressione o. 42

43 43

44 44

45 Come la maggior parte dei flussi, in andrebbe sempre bufferizzato. 45

46 46

47 Il programma collega l input standard ad un file e reindirizza l output standard e il flusso di errore standard verso un altro file. Il re-indirizzamento dell I/O manipola flussi di byte, non flussi di caratteri. Per questo motivo vengono utilizzate le classi InputStream e OutputStream invece di Reader e Writer. 47

48 48

49 49

50 Tutte le classi collection sono tipizzate con Object, tutti i loro metodi che devono tornare degli elementi della collezione, tornano un oggetto (o un insieme di oggetti) di tipo Object. Perché, vi potreste chiedere. È molto semplice e dovreste intuirlo. Le collezioni devono poter contenere qualsiasi tipo di oggetto, sia definito nelle API, sia definito dall utente. Tutti gli oggetti ereditano da Object (gerarchia a radice unica) per cui tipizzando le collezioni su questo tipo, si garantisce che qualsiasi oggetto possa essere inserito nelle strutture dati Java. Il rovescio della medaglia è che nell inserimento si ha l upcast automatico (dal tipo inserito ad Object) e si perde (in realtà nasconde, come abbiamo visto parlando di ereditarietà) informazione sul contenuto effettivo della collezione. Noi sappiamo di aver inserito certi oggetti, però, per cui all estrazione possiamo effettuare il casting al tipo specifico desiderato. Chiaramente se commettiamo un errore nell inserimento, all estrazione e soprattutto al cast, avremo un errore e il lancio di un eccezione (ClassCastException). 50

51 51

52 Qualsiasi tipo di oggetto può essere una chiave, non esistono (e non possono ovviamente esistere) vincoli sulla natura e complessità della chiave scelta. 52

53 Se remove() viene chiamato senza mai chiamare next () oppure se remove() viene chiamato più di una volta in sequenza, si genera una IllegalStateException. Ricordate inoltre che non tutti gli iteratori supportano l operazione di remove() per cui potreste ottenere alla chiamata un eccezione UnsupportedOperationException. 53

54 54

55 Il richiamo di previous() subito prima di next() (e viceversa) restituisce il medesimo elemento attuale. 55

56 Nel caso di set() aggiungiamo che, se next() non è stato chiamato o se add() oppure remove() sono stati chiamati da poco, il metodo può generare una eccezione IllegalStateException ---- Ancora una volta fate attenzione: alcune di queste operazioni non sono supportate da tutte le collezioni, per cui potreste ricevere un UnsupportedOperationException. Non vi preoccupate, non è un vostro errore ma una limitazione della struttura dati che state usando! 56

57 Questo grafico riassume le relazioni tra interfacce e classi collection. Al top abbiamo l interfaccia Iterable che definisce il metodo getiterator() per ottenere un iteratore di scorrimento degli elementi della collezione: in questo modo la definizione del codice è del tutto generica e poi specializzata nella struttura dati considerata. Abbiamo poi una sua sottointerfaccia Collection cui afferiscono le interfacce di tre dei tipi base di strutture dati. Notate che le mappe non afferiscono alla stessa gerarchia per cui non possono essere definiti degli iteratori su di esse allo stesso modo delle altre. Come detto, comunque, si possono ottenere gli elementi chiave o gli elementi puntati dalle chiavi come oggetti Set e quindi usufruire degli iteratori su questi insiemi. Alternativamente potete ottenere una lista da una mappa e quindi iterare su quella. 57

58 58

59 59

60 60

61 61

62 ArrayList è la classe che potreste usare per gestire in maniera flessibile insiemi di oggetti del progetto. Esiste anche la classe Vector, del tutto simile a quella disponibile in C++. Non usatela. Si tratta di una classe legavy cioè mantenuta solo per motivi di compatibilità col vecchio codice che ne fa uso. In realtà ArrayList è più veloce sia nella lettura, sia nella scrittura, sia nell accesso casuale; a meno di specifici casi, dovrete sempre preferirla alla più vecchia Vector. Ricordate di importarla dal package util, per utilizzarla, attraverso la direttiva: import java.util.arraylist; 62

63 63

64 Quello riportato tra brackets ( <, > ) viene chiamato generic. Corrisponde (all incirca) ai template C++ e sarà presentato come ultimo argomento di questo set di slide. Per ora sappiate che usando questa forma stiamo tipizzando l oggetto ArrayList creato in maniera tale che possa contenere solo e soltanto oggetti di tipo String. Se così non facessimo, l oggetto lista accetterebbe oggetti Object e quindi anche qualsiasi altra istanza di qualsiasi altra classe oltre gli oggetti di String. 64

65 65

66 Notate che la terza parte del for, l incremento, è spostato nel corpo del metodo. Il for si struttura in 3 parti: - Dichiarazione - Controllo - incremento In questo caso l incremento non è presente (nelle parentesi del for al secondo ; non segue nulla!). Il motivo risiede nel fatto che l incremento, quello che dovrebbe essere inserito nelle parentesi tonde del for, ci ritorna effettivamente il prossimo elemento e non è un indice, possiamo quindi inserirlo nel corpo del for (metodo next()). Eseguiamo quindi l inizializzazione dell iteratore nella dichiarazione del for ed eseguiamo ogni volta il controllo (c è un ulteriore elemento nell iteratore hasnext()) per poi ottenerlo nel corpo del for come detto poco sopra. Alla chiamata viene effettuato il cast dato che la collezione contiene in linea teorica oggetti di tipo Object (in realtà la definizione con i generics, di alcune slide precedenti, ci permette di evitare questo cast ma lo vedremo poi). 66

67 La riga rossa modifica l oggetto riferito dalla variabile acct. Quando stamperemo le due liste, entrambi avranno il valore dell oggetto inserito uguale. L oggetto riferito, infatti, è lo stesso. 67

68 68

69 E ne esistono anche altri! Il comportamento della maggior parte di essi è facilmente deducibile dal loro nome. Vi invito comunque a consultare le API per maggiori dettagli sul loro funzionamento e uso. 69

70 Notate che in questo caso abbiamo concatenato la chiamata all iteratore con la chiamata next(), avevamo infatti coscienza di aver inserito un elemento nella lista e potevamo quindi chiamare subito il metodo next() per ottenerlo senza verifica della sua presenza (con hasnext()). Ovviamente avremmo potuto anche usare mialista.get(0), per avere il primo elemento inserito (effettivamente quello ritornato tramite la chiamata next() fatta nel codice). 70

71 71

72 72

73 73

74 74

75 75

76 Voi, ovviamente, non dovete mantenere compatibilità con alcun codice per cui assicuratevi di tipizzare sempre e comunque le collezioni che userete e di usare su di esse, sempre e comunque, iteratori tipizzati! 76

77 Il tipo è detto sconosciuto in questo caso ( unknown ). Qualsiasi lista tipizzata con qualsiasi tipo è accetta in questo contesto. 77

78 Java 5 mette a disposizione un nuovo for (detto for-each) che può essere utilizzato sia con le collection che derivano da Iterable (quindi tutte, tranne le map) e anche con gli array. 78

79 A seconda del caso, potete utilizzare il vecchio o il nuovo for. Molto dipenderà dalla necessità o meno di accedere agli indici della struttura dati dato che quest ultimi, come specificato nella slide, non sono disponibili se usate il for-each. 79

80 80

81 81

82 82

83 In altre parole, se volete assicurarvi una buona preparazione, usate come traccia per lo studio le slide di Tesei per gli argomenti che lui ha affrontato e le mie per gli argomenti che vi ho presentato io ma studiate sul libro! Sebbene sia un tomo di tutto rispetto (ma fidatevi, ne esistono di ben più grandi sull argomento!) non dovete studiarlo tutto dato che esso introduce argomenti avanzati che non abbiamo affrontato né io, né il prof. Tesei (concorrenza, GUIs, ecc ). 83

84 Buon lavoro! 84

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, eliminazione, lettura e scrittura di file di testo Creazione, eliminazione, lettura e scrittura di file di testo Creazione Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file

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

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

L input da tastiera in Java. Dott. Ing. M. Banci, PhD

L input da tastiera in Java. Dott. Ing. M. Banci, PhD L input da tastiera in Java Dott. Ing. M. Banci, PhD La lettura di un flusso di input in Java avviene attraverso l'oggetto in della classe System. System.in appartiene alla classe InputStream (letteralmente

Dettagli

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, eliminazione, lettura e scrittura di file di testo Creazione, eliminazione, lettura e scrittura di file di testo Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file La classe

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Unità A1 I file testo

Unità A1 I file testo Dare una breve descrizione dei termini introdotti: (A) CONOSCENZA TERMINOLOGICA stream file testo file binari file di tipi primitivi bufferizzazione InputStreamReader OutputStreamWriter Reader Writer FileReader

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4  Outline Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi

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

Errata Corrige di Manuale di Java 8

Errata Corrige di Manuale di Java 8 Errata Corrige di Manuale di Java 8 pag. 43 - par. 2.5.1 - primo riquadro che riporta linee di codice public class Punto { public Punto() //metodo costruttore { deve essere corretto come di seguito: public

Dettagli

Unità 2 I file binari

Unità 2 I file binari Dare una breve descrizione dei termini introdotti: (A) CONOSCENZA TERMINOLOGICA file binari file di tipi primitivi file di oggetti serializzazione (B) CONOSCENZA E COMPETENZA Rispondere alle seguenti domande

Dettagli

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario La classe String Lettura da input di dati numerici (tipo int) Stampa di dati numerici Uno sguardo al codice Esercizi 21/03/2011 2

Dettagli

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

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

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

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di

Dettagli

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema Algoritmo 2 Procedimento di risoluzione di un problema La programmazione Ver. 2.4 Permette di ottenere un risultato eseguendo una sequenza finita di operazioni elementari Esempi: Una ricetta di cucina

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

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

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.

Dettagli

domenica 9 giugno 13 Serializzazione

domenica 9 giugno 13 Serializzazione Serializzazione A cosa serve? Ad ottenere una rappresentazione di una struttura dati che possiamo memorizzare, trasmettere via rete Cosa possiamo serializzare? OK NO Tipi primitivi, Riferimenti stringhe

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

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

Java Le stringhe. Stringhe

Java Le stringhe. Stringhe Java Le stringhe 1 Le stringhe in Java In Java le stringhe non sono semplicemente array di caratteri terminati con zero come avviene in C In Java le stringhe sono oggetti appartenenti alla classe String

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

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Esercitazione OBIETTIVI DELL ESERCITAZIONE

Esercitazione OBIETTIVI DELL ESERCITAZIONE Esercitazione OBIETTIVI DELL ESERCITAZIONE Sperimentare le classi di i/o relative a file di testo e a stream di byte Prendere confidenza con i meccanismi delle eccezioni Esercizi I/O Lo scenario GESTIONE

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Definizione di file. Directory e file File binari e file di testo

Definizione di file. Directory e file File binari e file di testo I/O Avanzato e File Definizione di file Directory e file File binari e file di testo 5 Definizione di file Directory e file Tutti i sistemi operativi permettono di organizzare le informazioni su hard disk

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 16 ottobre 2007 1 Rappresentazioni di caratteri in C In C un carattere è una costante intera il cui valore è dato dal codice ASCII

Dettagli

Lettura e scrittura - Stream

Lettura e scrittura - Stream Lettura e scrittura - Stream Obiettivo(fine della lezione): leggere/scrivere da/su file (e quindi verso qualsiasi dispositivo)! Tipi di stream " Stream di caratteri " Stream di byte! Classi astratte che

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

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio

Dettagli

Sistema Operativo (Software di base)

Sistema Operativo (Software di base) Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Uso di metodi statici. Walter Didimo

Uso di metodi statici. Walter Didimo Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un

Dettagli

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

Dettagli

Lettura da tastiera e scrittura su monitor

Lettura da tastiera e scrittura su monitor Lettura da tastiera e scrittura su monitor Per poter leggere UN SINGOLO CARATTERE dalla tastiera e visualizzare UN SINGOLO CARATTERE sul monitor si possono utilizzare le funzioni: int getchar (void) (per

Dettagli

Rappresentazione binaria delle variabili (int e char)

Rappresentazione binaria delle variabili (int e char) Rappresentazione binaria delle variabili (int e char) int e char son i due tipi utilizzati dal linguaggio C per la rappresentazione di valori interi; ai valori delle variabili del primo tipo sono assegnati

Dettagli

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

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22 Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente

Dettagli

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi Fondamenti di Informatica T-1 modulo 2 Laboratorio 10: preparazione alla prova d esame 1 Esercizio 1 - Gestione degli impegni Gli impegni giornalieri dei dipendenti di un azienda devono essere aggiornati

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

Università degli studi di Bergamo. Informatica II. Programmazione Object Oriented Tutorato. Lezione 1. Dott. Marco Guarnieri Dott. Eros Magri

Università degli studi di Bergamo. Informatica II. Programmazione Object Oriented Tutorato. Lezione 1. Dott. Marco Guarnieri Dott. Eros Magri Università degli studi di Bergamo Informatica II Programmazione Object Oriented Tutorato Lezione 1 Dott. Marco Guarnieri Dott. Eros Magri 05.10.11 Informazioni Contatti 0guarnieri.marco0@gmail.com erosmagri@gmail.com

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica: Convenzioni di Stile versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi

Dettagli

Prima prova intercorso 29 Novembre 2005

Prima prova intercorso 29 Novembre 2005 Laboratorio di Algoritmi e Strutture Dati R.Zizza (matr. dispari-dispari) Anno Acc. 2005-06 Prima prova intercorso 29 Novembre 2005 Cognome: Nome: Matricola: Regole del gioco: La soluzione del compito

Dettagli

Modulo 2: Strutture fondamentali della programmazione Java

Modulo 2: Strutture fondamentali della programmazione Java Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti

Dettagli

Esercizio 1: archivio CD e DVD

Esercizio 1: archivio CD e DVD Esercizio 1: archivio CD e DVD Realizzare un applicazione Java per la creazione e la consultazione di un archivio di dischi ottici (CD e DVD). L applicazione riceve da standard input in maniera interattiva

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio) Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Riferimenti ad oggetti: Cosa si può fare con i riferimenti?

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

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

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

Homework 2. 1 Il problema. Corso di Fondamenti di Informatica II. 26 Novembre L'Albero dei divisori

Homework 2. 1 Il problema. Corso di Fondamenti di Informatica II. 26 Novembre L'Albero dei divisori Homework 2 Corso di Fondamenti di Informatica II BIAR2 (Ing. Informatica e Automatica) e BSIR2 (Ing. dei Sistemi) A.A. 2010/2011 26 Novembre 2010 Sommario Questo documento fornisce informazioni relative

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Linguaggio C: i file

Linguaggio C: i file Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

Permutazioni. 1 Introduzione

Permutazioni. 1 Introduzione Permutazioni 1 Introduzione Una permutazione su un insieme di n elementi (di solito {1, 2,...,n}) è una funzione biiettiva dall insieme in sé. In parole povere, è una regola che a ogni elemento dell insieme,

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

FILE E INDICI Architettura DBMS

FILE E INDICI Architettura DBMS FILE E INDICI Architettura DBMS Giorgio Giacinto 2010 Database 2 Dati su dispositivi di memorizzazione esterni! Dischi! si può leggere qualunque pagina a costo medio fisso! Nastri! si possono leggere le

Dettagli

Introduzione alle stringhe e algoritmi collegati

Introduzione alle stringhe e algoritmi collegati Introduzione alle stringhe e algoritmi collegati Algoritmicamente August 15, 2009 1 Introduzione 1.1 Introduzione ai caratteri In informatica o più generalmente in una terminologia scientifica, il carattere

Dettagli

Corso Programmazione Java Standard

Corso Programmazione Java Standard Corso Programmazione Java Standard Codice: ITJS0113 Durata: 40 ore Descrizione corso Questo corso fornisce una panoramica sulle varie sfaccettature della sintassi del linguaggio Java, integrata con mirate

Dettagli

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso INDICI PER FILE Strutture ausiliarie di accesso 2 Accesso secondario Diamo per scontato che esista già un file con una certa organizzazione primaria con dati non ordinati, ordinati o organizzati secondo

Dettagli

A = Quindi > b=a(:) b =

A = Quindi > b=a(:) b = Una breve digressione. Se si vuole uscire da Matlab, occorre digitare ( come già riferito)il comando >> quit Se si vogliono utilizzare le variabili create per una successiva sessione di lavoro, prima di

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso

Dettagli

Prova d Esame Compito A

Prova d Esame Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private static int counter=0; private int code; public

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Operazioni numeriche - Input

Operazioni numeriche - Input Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di input 11/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Operazioni fra interi e decimali In Java

Dettagli

Introduzione a Java. Riferimenti

Introduzione a Java. Riferimenti Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

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

File e Stream In Java. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132

File e Stream In Java. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132 File e Stream In Java Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132 Lettura da e scrittura su file Java fornisce operazioni di input/output tramite le classi del package java.io. La

Dettagli

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere I/O INTERATTIVO scanf: quello che è indispensabile sapere printf: quello che è utile sapere Input da tastiera Funzioni disponibili (tra le altre): scanf getchar Schema di funzionamento Tastiera Sistema

Dettagli

Oggetti e classi. Cos è un oggetto

Oggetti e classi. Cos è un oggetto Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,

Dettagli

Modulo III - Creazione di documenti, presentazioni e report

Modulo III - Creazione di documenti, presentazioni e report Modulo III - Creazione di documenti, presentazioni e report Elisabetta Ronchieri Università di Ferrara Dipartimento di Economia e Management e-mail: elisabetta.ronchieri@unife.it 1 Dicembre 2016 Elisabetta

Dettagli

Mini-dispensa sui puntatori in C

Mini-dispensa sui puntatori in C Mini-dispensa sui puntatori in C P. Zavarise Versione 1 ottobre 013 1 Valore e indirizzo di una variabile Ripassiamo il significato di dal punto di vista del programmatore. int a=; Viene creata una variabile

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

C3 IL DBMS MICROSOFT ACCESS

C3 IL DBMS MICROSOFT ACCESS C3 IL DBMS MICROSOFT ACCESS 1 GERARCHIE OBBLIGATORIE Nella progettazione di una base di dati abbiamo moltissimi gradi di libertà ma anche alcune regole rigide che siamo costretti a rispettare. Il primo

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

Design Patterns. Introduzione 2. Introduzione 3

Design Patterns. Introduzione 2. Introduzione 3 Design Patterns Introduzione Design patterns: factory, singleton, adapter, composite, decorator, observer Introduzione I Design Patterns sono stati applicati per la prima volta nell architettura Per costruire

Dettagli

Introduzione alla Programmazione in Java attraverso un esempio commentato

Introduzione alla Programmazione in Java attraverso un esempio commentato Corso di Studi in Informatica Programmazione 1 corso B prof. Elio Giovannetti Introduzione alla Programmazione in Java attraverso un esempio commentato Programmazione 1 B - a.a. 2002-03 53 Modello di memoria

Dettagli

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori 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

Progetto Gennaio 2016

Progetto Gennaio 2016 UNIVESITÁ DEGLI STUDI DI MILANO LAUREA TRIENNALE IN COMUNICAZIONE DIGITALE PROGETTO LABORATORIO DI RETI DI CALCOLATORI Progetto Gennaio 2016 Matteo Zignani 15 dicembre 2015 1 PRESENTAZIONE DEL PROBLEMA

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Sockets in Java. Lorenzo Gallucci

Sockets in Java. Lorenzo Gallucci Sockets in Java Lorenzo Gallucci Sockets La libreria Java dispone di un API per la gestione dell I/O di rete Il package di riferimento è java.net Vari compiti: Gestione dell I/O su socket (sia TCP che

Dettagli

22 - Strutture Dati (Java Collections Framework)

22 - Strutture Dati (Java Collections Framework) 22 - Strutture Dati (Java Collections Framework) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x): Programmazione I 11 gennaio 2012 Matricola:........................................................................ Cognome:........................................................................ Nome:...........................................................................

Dettagli

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola. Tipi di dato Le variabili in C KP Cap.3 pp.95-129 Cap.5 pp.190-193 DD Cap. 9 pp.352-355 Abbiamo già parlato delle variabili, ed abbiamo fin ora usato il tipo int, ma abbiamo molte altre possibiltà I tipi

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3 Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali

Dettagli