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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 pag Input e output Nell informatica classica il concetto di input e output era strettamente legato all uso dei dispositivi esterni di memorizzazione (dischi, nastri) e quindi al concetto di file, al più veniva esteso alla tastiera come dispositivo di input e alla stampante pensata come file di output. La tendenza odierna è quella di separare nettamente i dispositivi dal trattamento dei flussi di dati da e verso di essi. Per questa ragione in Java e in C++ si è fatta la scelta di introdurre astrazioni pensate come oggetti che sono indipendenti dai dispositivi. Si parla quindi di oggetti Stream, Pipe o Filter che sono veri e propri Abstract Data Type dotati di operazioni non dipendenti dai dispositivi Stream, filter, pipe di dati Il significato letterale della parola stream, dal dizionario di inglese, è quello di fiume, torrente o flusso. Nel caso dell informatica il flusso è un astrazione che definisce le modalità (i metodi) di lettura dei token di informazione che fluiscono nello stream di input o dei metodi di scrittura in uno stream di output. Un token è una unità di informazione accessibile è può consistere in un byte, un carattere o un oggetto strutturato. Uno stream o flusso di dati o canale è un percorso di comunicazione tra la sorgente di una certa informazione e la sua destinazione. Sorgente Flusso Destinazione Le sorgenti possono essere le più svariate: la memoria Ram del computer, Internet, un dispositivo permanente di memorizzazione dati, la tastiera ecc. La stessa cosa vale per le destinazioni. La sorgente e la destinazione del flusso di byte sono anche denominati rispettivamente processo produttore e processo consumatore. Non è necessario conoscere in dettaglio la sorgente o la destinazione per leggere un flusso di input o per scrivere in un flusso di output. I metodi generali (oppure i programmi) che operano su una sorgente di dati accettano come argomento un flusso di input, così quelli che scrivono su una destinazione accettano come argomento uno stream di output. Sorgente Flusso di input Metodo o programma che legge dati Metodo o programma che scrive dati Flusso di output Destinazione

2 pag.113 Oltre ai metodi (o programmi) che fanno uso di stream di I/O esistono anche oggetti detti processori di dati. Un filter (filtro) o processore è un metodo, o un programma, dotato di due argomenti di tipo flusso: legge dati dal flusso di input, li elabora (filtra, seleziona ecc.) e li scrive sul flusso di output. I filtri non necessitano di alcuna informazione, nè riguardo alla sorgente nè riguardo alla destinazione; i filtri richiedono soltanto le modalità di accesso (astratte) al rispettivo flusso. Un filtro può essere rappresentato dalla figura: Flusso di INPUT Filtro o Processore Flusso di OUTPUT Infine esiste un oggetto particolare che prende il nome di pipe o condotto o convogliatore. Il suo ruolo è quello di connettere e sincronizzare un flusso di input con un flusso di output. Non si occupa di trasformare il contenuto dei dati come il filtro. Flusso di INPUT Pipe o condotto Flusso di OUTPUT Queste astrazioni: Sorgente o processo produttore dei dati; Flusso di input; Pipe o condotto; Filtro o processore; Flusso di output; Destinazione o processo Consumatore dei dati consentono di separare logicamente quelle entità, come File e dispositivi di memorizzazione, che nell informatica classica erano considerate legate in modo univoco. È il programmatore che decide quali relazioni costruire tra le diverse entità astratte e tra queste ultime e i dispositivi concreti Flussi di input e output in Java Nel package java.io sono contenute le classi che consentono di gestire le operazioni relative ai flussi. InputStream e Reader sono flussi astratti di input e sono genitori di tutte le classi di input di Java. InputStream (e le sue sottoclassi) tratta flussi di Byte e definisce i modi fondamentali con cui si possono consumare. Reader (e le sue sottoclassi) tratta flussi di Caratteri e definisce i modi fondamentali con cui si possono consumare. Visto che i genitori sono classi astratte, i relativi metodi sono implementati solo nelle sottoclassi della gerarchia.

3 pag.114 Gli schemi seguenti mostrano la gerarchia, anche se non completa, delle classi essenziali relative al trattamento dei flussi di input InputStream ByteArrayInputStream FileInputStream Reader CharArrayReader StringReader InputStreamReader BufferedReader FileReader Di seguito si riporta la gerarchia, simmetrica a quella di input, delle classi relative ai flussi di output. OutputStream ByteArrayOutputStream FileOutputStream Writer CharArrayWriter StringWriter OutputStreamWriter BufferedWriter FileWriter In prevalenza saranno trattati flussi di tipo carattere (Reader e Writer); gli esempi proposti potranno essere trasformati molto semplicemente per trattare flussi di byte. poiché le sottoclassi relative ai flussi di tipo carattere sono più articolate di quelle relative ai flussi di byte. Dalla gerarchia si nota che il ByteArrayInputStream (sottoclasse di InputStream) ha un corrispondendente in modalità carattere in CharArrayReader (sottoclasse di Reader); analogo parallelo può essere fatto per i flussi di output. Allo stesso modo la sottoclasse FileInputStream ha la corrispondente nella classe FileReader (analogamente per l output). Oltre a CharArrayReader (Writer), in Reader (Writer) sono presenti le sottoclassi StringReader (Writer), BufferedReader (Writer), InputStreamReader (Writer) che rendono più ricca l'elaborazione dei flussi di caratteri. Se si volesse spiegare sinteticamente il funzionamento di un flusso si dovrebbe dire che su questo oggetto sono consentite poche e semplici operazioni: Creare un flusso di input che legge da una sorgente. Creare un flusso di output che scrive su una destinazione. Leggere un carattere (byte). Scrivere un carattere (byte). Leggere un gruppo di caratteri (byte) di dimensione nota.

4 pag.115 Scrivere un gruppo di caratteri (byte) di dimensione nota. Saltare (skip) in lettura un blocco di caratteri. Chiudere il flusso, liberando lo heap dagli oggetti costruiti. Elenco sommario delle sottoclassi di I/O e dei costruttori e metodi principali. CharArrayReader CharArrayWriter Costruttori CharArrayReader(char[]) Costruttori CharArrayWriter() CharArrayReader(char[],int,int) CharArrayWriter(int) Metodi Metodi int read() void write(int) int read(char[],int,int) void write(char[],int,int) boolean ready() void write(string) long skip(long) void write(string,int,int) void close() void close() String tostring() char[ ] tochararray() StringReader StringWriter Costruttori StringReader(String) StringWriter() StringWriter(int) Metodi IDENTICI a CharArray IDENTICI a CharArray più StringBuffer getbuffer() InputStreamReader Costruttori InputStreamReader(InputStream) OutputStreamWriter OutputStreamWriter(OutputStream) Metodi IDENTICI a CharArray IDENTICI a CharArray FileReader Costruttori FileReader(String) Metodi IDENTICI inputstreamreader FileWriter FileWriter(String) FileWriter(String, boolean) IDENTICI outputstreamwriter BufferedReader BufferedWriter Costruttori BufferedReader(Reader) BufferedWriter(Writer) BufferedReader(Reader, int) BufferedWriter(Writer,int) Metodi IDENTICI a CharArray più IDENTICI a CharArray più String readline() [*] void newline() Dalla tabella si nota che i metodi di ogni classe sono pochi e spesso identici. In particolare si ripetono i metodi di lettura/scrittura di un byte, di un carattere o di

5 pag.116 una sequenza di caratteri. Solo BufferedReader e BufferedWriter contengono i metodi readline() e newline(), rispettivamente, che intuitivamente consentono di agire non su singoli caratteri o su singoli byte, ma su intere righe Dalla sorgente alla destinazione Si farà uso nel seguito di uno schema astratto, ma semplificato, che pensa ad un programma che legge byte o caratteri come a un processo consumatore. Il programma è immaginato come la destinazione del flusso di input. Si ricorda che la distinzione tra inputstream e Reader si riferisce solo ai token che fluiscono; nel primo si tratta esclusivamente di byte, nel secondo esclusivamente di caratteri. Graficamente rappresenteremo la sorgente, il flusso e il programma (destinazione del flusso) nel modo seguente: Sorgente Tipo di Flusso Flusso Programma Questa rappresentazione grafica consentirà di cogliere sinteticamente le entità coinvolte e le loro relazioni reciproche. Sorgente Costruttore Token del flusso Progr. Destinazione array stringa file X X X X "XXXX" Text Flusso di Char Tipo di flusso (cons. di Char) (cons. di Line) tastiera (cons. di Byte) I simboli rappresentano: le sorgenti: array, stringa, file di testo, tastiera ecc; i tipi di flusso costruiti (classe Java utilizzata) per generare il flusso: CharArrayReader (CAR), StringReader(SR), InputStreamReader(ISR), BufferedReader(BR), FileReader (FR); i componenti o token del flusso: Char, Line o Byte; il programma: consumatore dei Token del flusso.

6 pag.117 Esempio 1. Costruire un programma che consenta di consumare (leggere e stampare sul monitor) un flusso di caratteri la cui sorgente è un array memorizzato nella RAM. Lo schema che rappresenta il programma potrebbe essere il seguente. X X X X CAR Flusso di Char (cons. di Char) Nello schema sono indicati: all'estrema sinistra, la sorgente che è un array di caratteri; il costruttore CAR CharArrayReader del flusso, che ha come argomento un array; il flusso ed i relativi token che in questo caso sono dei caratteri; il Programma consumatore o destinatario. public class cap09_es_01 { public static void main(string args[])throws IOException { char[] c={'a','b','c','d','e','f','g'; // sorgente CharArrayReader f_in = new CharArrayReader(c); // costruzione flusso int ch; while ((ch=f_in.read())!=-1) // ciclo di lettura System.out.print((char)ch); System.out.println("\nfine esecuzione."); Esecuzione: Commento al codice: La classe CharArrayReader scelta per la risoluzione è quella più aderente alla sorgente. Infatti il costruttore del flusso accetta come argomento un array di caratteri. Il metodo base per acquisire i caratteri del flusso è read(). Quando con successive letture si giunge al termine dello stream, read() restituisce il codice 1. Se la sorgente non è un array di caratteri ma una stringa, il problema potrebbe essere così riformulato: Esempio 2. Costruire un programma che consenta di consumare (leggere e stampare sul monitor) un flusso di caratteri la cui sorgente è una stringa memorizzato nella RAM. "XXXX" SR Flusso di Char (cons. di Char)

7 pag.118 public class cap09_es_02 { public static void main(string args[])throws IOException { String s="pippo e pluto"; // sorgente StringReader f_in = new StringReader(s); // costruzione flusso int ch; while ((ch=f_in.read())!=-1) // ciclo di lettura System.out.print((char)ch); System.out.println("\nfine esecuzione."); Esecuzione: Commento al codice: La classe StringReader, scelta per la risoluzione, è quella più aderente alla sorgente. Infatti il costruttore del flusso accetta come argomento una stringa. Il metodo base per acquisire i caratteri del flusso è ancora read() fino al termine dello stream. Gli esempi precedenti avevano solo un significato didattico formale. Infatti, se l obiettivo del programma è quello di stampare un array o una stringa, non è necessario operare con uno stream, sarebbe sufficiente un banale programma di stampa. L esempio che segue è più significativo perché per la prima volta mostra come si possano acquisire caratteri dalla tastiera. Esempio 3. Costruire un programma che consenta di consumare (leggere e stampare sul monitor) un flusso di caratteri la cui sorgente è la tastiera ISR Flusso di Char (cons. di Char) public class cap09_es_03 { public static void main(string args[])throws IOException { InputStreamReader f_in=new InputStreamReader(System.in); int ch; while ((ch=f_in.read())!='\r') System.out.print((char)ch); System.out.println("\nfine esecuzione."); Commento al codice: La tastiera è individuata in Java da System.in e si tratta, in particolare, di uno stream di Byte. La classe InputStreamReader, scelta per la soluzione, è una classe particolare che fa da ponte tra sorgenti di byte e sorgenti di caratteri. In sostanza InputStreamReader converte una sorgente di byte in una sorgente di caratteri. A conferma di questo si noti che il costruttore del flusso accetta come

8 pag.119 argomento un oggetto di tipo InputStream (flusso di byte). Il metodo base per acquisire i caratteri dal flusso è ancora read(). Si noti che in questo caso il ciclo di acquisizione di caratteri è interrotto (non dal codice 1 che indica la fine dello stream) dal codice \r che corrispondere alla pressione del tasto di INVIO. Il programma acquisisce solo una riga di caratteri fino alla pressione del tasto di invio. Se si volessero acquisire più righe, invece di una sola, si potrebbe condizionare la fine dell acquisizione alla lettura di un carattere convenzionale come per esempio # nel modo seguente: while ((ch=f_in.read())!='#') invece di while ((ch=f_in.read())!='\r') in questo caso si acquisirebbero da tastiera tutte le righe desiderate fino a quando non si immette il carattere convenzionale #. Esempio 4. Costruire un programma che consenta di consumare (leggere e stampare sul monitor) un flusso di caratteri la cui sorgente è un file di testo memorizzato su disco. Text FR Flusso di Char (cons. di Char) public class cap09_es_04 { public static void main(string args[])throws IOException { FileReader f_in = new FileReader("c:/mio.txt"); int ch; while ((ch=f_in.read())!=-1) { System.out.print((char)ch); System.out.println("\nfine esecuzione."); Esecuzione: Il file, come mostra la finestra di output, contiene le cinque righe che sono stampate prima del messaggio di <fine esecuzione.> Commento al codice: La classe FileReader, scelta per la soluzione, è quella più aderente alla sorgente. Infatti il costruttore del flusso esige come argomento una stringa che deve rappresentare il nome di un file su disco.

9 pag Flussi e Filtri Fino a questo momento i quattro esempi sviluppati hanno utilizzato quattro delle cinque classi di input illustrate nello schema del gruppo Reader. La quinta BufferedReader più che una classe generatrice di flussi di input è un filtro; infatti il suo costruttore esige come parametro un flusso di tipo Reader e costruisce un flusso bufferizzato organizzato in linee. Uno schema che ne rappresenti il funzionamento potrebbe essere il seguente: flusso di caratteri o Reader Buffered Reader Flusso bufferizzato in linee (cons. di Char o Line) Si nota che lo schema mostra che BuffereReader può essere pensato come il generatore di un oggetto che ha come parametro di input un flusso e che restituisce in output un flusso organizzato in linee che viene messo a disposizione come flusso di input del programma consumatore. Questo risponde alla definizione di Filtro in quanto da un flusso di caratteri si può ottenere un flusso modificato organizzato in linee di testo con marcatori di fine linea (\r o \n). esempio 5. assegnata una sorgente di tipo array di caratteri che contenga anche marcatori di fine linea (\r o \n), si desidera realizzare un programma che consumi i dati in forma di flusso di input acquisendo le singole righe del testo e stampandole numerate progressivamente. Lo schema mostra graficamente la relazione tra sorgente e flussi coinvolti: Flusso di Char Flusso di Linee X X X X CAR BR (cons. di Linee) public class cap09_es_05 { public static void main(string args[])throws IOException { char[]c={'p', r,'i','m', a,'\n','s','e','c','o','n', d, a,'\n'; CharArrayReader f_in = new CharArrayReader(c); BufferedReader in=new BufferedReader(f_in); String s=" "; int n=0; while ((s=in.readline())!=null) { n=n+1; System.out.println(n+ : +s); System.out.println("\nfine esecuzione."); Esecuzione: 1: prima 2: seconda fine esecuzione.

10 pag.121 Commento al codice: Notare che l array contiene caratteri i marcatori, indifferentemente \r o \n. Si costruisce prima il flusso di caratteri CharArrayReader che viene passato in input (come parametro del costruttore) a BufferedReader che costruisce il flusso Bufferizzato che sarà letto dal programma con il metodo readln() non presente nelle altre classi flusso. Il ciclo di lettura si interrompe quando la stringa in lettura è null. Il programma precedente può essere di maggior interesse se applicato ad un file di testo memorizzato su disco. esempio 6. realizzare un programma che legga un file di testo e stampi le singole righe numerandole progressivamente. La figura evidenzia che si può costruire un flusso di caratteri utilizzando FileReader e quindi filtrarlo con BufferedReader per ottenere il flusso di linee desiderato. Flusso di Char Flusso di Linee Text FR BR (cons. di Linee) public class cap09_es_06 { public static void main(string args[]) throws IOException { FileReader f_in = new FileReader("c:/mio.txt"); BufferedReader in=new BufferedReader(f_in); String s=" ";int n=0; while ((s=in.readline())!=null) { n=n+1; System.out.println(n+ : +s); System.out.println("\nfine esecuzione."); Commento al codice: Il file stampato è identico a quello dell esempio 4, la novità consiste nel fatto che la condizione di fine ciclo è fondata, come quella dell array precedente, sulla presenza dei marcatori di fine linea nel file di testo e quindi sul fatto che readline() restituisce null. Si costruisce prima il flusso di caratteri FileReader che viene passato in input (come parametro del costruttore) a BufferedReader che costruisce il flusso Bufferizzato che sarà letto dal programma con il metodo readln() non presente nelle altre classi flusso.

11 pag Flussi di Output con le classi Writer Si affronteranno ora alcuni esempi di utilizzo di flussi di output mostrando la simmetria esistente rispetto ai flussi di input. esempio 7. realizzare un programma che generi in sequenza i caratteri e li depositi su un flusso di output indirizzato ad una destinazione di tipo array di caratteri. Al termine stampi l array destinazione. (prod. di Char) CAW Flusso di Char X X X X public class cap09_es_07 { public static void main(string args[])throws IOException { CharArrayWriter out=new CharArrayWriter(); // (1) flusso do output for (int i=0; i<=9; i++) { String s=""+i; // trasforma il numero in stringa char ch=s.charat(0); // da stringa a carattere out.write(ch); // (2) scrive nel flusso char[] c=out.tochararray(); // (3) da flusso ad array di char System.out.println("il flusso di output contiene:"); for (int i=0; i<c.length; i++) System.out.print(c[i]); System.out.println("\nfine esecuzione."); Esecuzione: il flusso di output contiene: fine esecuzione. Commento al codice: La nota (1) mostra il costruttore del flusso. La (2) il metodo di scrittura di un carattere nel flusso di output. La (3) la trasformazione del flusso in un array destinazione. Si affronteranno due esempi più interessanti, il primo genera un file di testo in output scrivendo su di esso alcune stringhe, il secondo lo genera acquisendo l input dalla tastiera. esempio 8. realizzare un programma che generi un file di testo inserendo su ogni riga del file una parola contenuta in un array di stringhe. Lo schema grafico rappresentativo degli stream è il seguente:

12 pag.123 (prod. di Stringhe) FW Flusso di Char Text public class cap09_es_08 { public static void main(string args[])throws IOException { FileWriter out=new FileWriter("c:/out.txt"); // (1) String s[]={"pera","banana","fico","mela"; for (int i=0; i<s.length; i++) out.write(s[i]+'\n'); // (2) out.close(); // (3) /* verifica e stampa del file generato */ System.out.println("il flusso di output contiene:"); FileReader in=new FileReader("c:/out.txt"); int ch; while ((ch=in.read())!= -1) System.out.print((char)ch); System.out.println("\nfine esecuzione."); Esecuzione: il flusso di output contiene: pera banana fico mela fine esecuzione. Commento al codice: La nota (1) mostra il costruttore di FileWriter, la (2) la scrittura di una stringa sul file seguita dal marcatore \n di newline. La nota (3) evidenzia la necessità di chiudere il file di output per poter salvare i dati prima di riaprirlo per la lettura e la stampa di verifica. esempio 9. realizzare un programma che generi un file di testo inserendo su ogni riga una riga di testo acquisita da tastiera. Il programma termina quando da tastiera si immette una riga vuota. Lo schema grafico rappresentativo degli stream è il seguente: Flusso di Char Flusso di Linee Flusso di Linee ISR BR (cons. di Linee e produtt. di linee) FW BW Text

13 pag.124 public class cap09_es_09 { public static void main(string args[])throws IOException { InputStreamReader f_in=new InputStreamReader(System.in); // (1) BufferedReader in=new BufferedReader(f_in); // (2) FileWriter f_out=new FileWriter("c:/out.txt"); // (3) BufferedWriter out=new BufferedWriter(f_out); // (4) String s=" "; while (s.length()!=0) { // (5) s=in.readline(); // (6) out.write(s); // (7) out.newline(); // (8) out.close(); // (9) /* verifica e stampa del file generato */ System.out.println("\nil flusso di output contiene:"); FileReader new_in=new FileReader("c:/out.txt"); int ch; while ((ch=new_in.read())!= -1) System.out.print((char)ch); System.out.println("\nfine esecuzione."); Commento al codice: Si tratta evidentemente di un programma di INPUT/OUTPUT in quanto dopo la lettura di ogni linea dalla tastiera la trascrive nel file. Lo schema grafico mostra la necessità di costruire un ISR flusso di caratteri, vedi nota (1) del codice. Si filtra il flusso di input da tastiera attraverso un BR, nota (2) del codice, per ottenere un flusso organizzato in linee. Le note (3) (4) mostrano il costruttore di FileWriter, intermediario necessario per ottenere un output bufferizzato BW per la scrittura di intere righe nel file. Le note (5),(6),(7) e (8) mostrano rispettivamente, la condizione di interruzione della lettura da tastiera quando la riga di input è vuota (s.length()==0), la lettura della linea di input dal BR, la scrittura della stringa sul buffer del file e infine il newline necessario.

14 pag Un filtro interessante StreamTokenizer Un filtro molto utile per analizzare e selezionare token di uno stream di caratteri è lo StreamTokenizer. Questo filtro consente di separare con estrema semplicità diversi tipi di gettone (token) presenti nel flusso di input. Si possono isolare le parole formate da soli caratteri alfabetici (WORD), i token numerici (NUMBER) separandole da caratteri di punteggiatura o altro. Il filtro funziona identificando i caratteri separatori che di norma sono SPAZI, fine linea EOL o fine file EOF. Nella tabella sono riportatati sinteticamente campi, costruttori e metodi: StreamTokenizer NOTE Costruttori StreamTokenizer(Reader) L imput dello streamtokenizer e un oggetto Reader. In particolare se si legge da tastiera si può usare un InputStreamReader, se si legge da un file di testo è necessario passare da FileReader ecc. Attributi o Campi Metodi double nval String sval static int TT_EOF static int TT_EOL static int TT_NUMBER static int TT_WORD int ttye void commentchar(char) void eolissignificant() int lineno() void lowercasemode(boolean) int nexttoken() void ordinarychar(int) void ordinarychars(int, int) void wordchars(int, int) void quotechar(int, int) void whitespacechars(int, int) void slashslashcomments(boolean) void slashstarcomments(boolean) Campo che contiene il token di tipo NUMBER, trasformato in double dopo l isolamento del Token. Dopo l operazione di lettura a.nexttoken(); se a.ttype==a.tt_number allora si può acquisire il valore double a.nval. Campo che contiene, come nel caso precedente, il token do tipo WORD. La costante che indica che nexttoken() ha incontrato il fine file. Ad esempio if (a.ttype==a.tt_eof) Analogo al precedente. Analogo al precedente. Analogo al precedente. Campo che contiene informazioni relativamente al tipo di token isolato dopo una lettura a.nexttoken(). E possibile chiedersi SE a.ttype==a.tt_word oppure stampare il carattere (char)a.ttype Definisce quali caratteri debbano essere interpretati come un commento. Decreta che il marcatore di fine linea deve essere individuato e non tralasciato dal filtro. Restituisce il numero di riga del token letto. Se boolean è true, prima di analizzare i token li trasforma tutti in lettere minuscole. Legge il token successivo dello stream e restituisce un intero che rappresenta il ttype (tipo di token). Definisce il o l intervallo dei caratteri ordinari che non sono ne NUMBER ne WORD ne COMMENT ne SPACE ne EOL ne EOF. Definisce l intervallo dei caratteri che appartengono a un WORD. Per default sono i caratteri alfabetici. Definisce i caratteri che identificano una costante stringa. Definisce i caratteri che separano i Token. Definisce i caratteri che individuano commenti (che ST tralascia nell analisi) in C e C++ e Java /* */ oppure //

15 pag. 126 esempio 10. partendo da una stringa che contenga parole numeri e caratteri vari filtrarla con uno StreamTokenizer per stampare in modo separato i vari token indicando a fianco di ognuno di che cosa si tratta. Se utilizziamo gli schemi introdotti per indicare flussi e filtri si potrebbe indicare la sequenza del programma con il seguente schema grafico: stringa "XXXX" Flusso di Char SR Flusso di Token ST (cons. di Token) Lo schema mostra che dalla stringa sorgente si deve costruire con StringReader (SR) un flusso (Reader) necessario per costruire il filtro StringTokenizer (ST). Questo restituisce in output un flusso filtrato di Token che il programma consumerà per produrre gli effetti desiderati. class cap09_es_10 { public static void main(string arg[]) throws IOException { String s="parola (1) sono un numero 2.55?? una costante 2001 "; StringReader f_char=new StringReader(s); // (1) StreamTokenizer st=new StreamTokenizer(f_char); // (2) st.nexttoken(); // (3) while (st.ttype!=st.tt_eof) { // (4) if(st.ttype==st.tt_word) // (5) System.out.println("WORD:"+st.sval); // (6) else if(st.ttype==st.tt_number) // (7) System.out.println("NUM:"+st.nval); // (8) else if (st.sval==null) // (9) System.out.println("CHAR:"+(char)st.ttype); // (10) else System.out.println("OGGETTO di tipo "+st.ttype+" :"+st.sval); // (11) st.nexttoken(); Esecuzione: WORD:parola CHAR:( NUM:1.0 CHAR:) WORD:sono WORD:un WORD:numero NUM:2.55 CHAR:? CHAR:? WORD:una WORD:costante OGGETTO di tipo 39:2001

16 pag. 127 Commenti al codice: Le note (1) e (2) mostrano la costruzione dei flussi indicati nello schema. La (3) indica l invocazione del metodo che stacca il primo Token. La nota (4) evidenzia che il ciclo di estrazione dei Token ha termine quando si incontra il Token TT_EOF (costante predefinita in StreamTokenizer che indica la fine del flusso). Le note da (5) a (11) mostrano come si testano e si stampano i diversi token utilizzando il campo ttype di ogni token che informa a quale tipo appartiene il gettone attualmente in lettura. I tipi sono WORD, NUMBER, TT_EOF ecc. Se il tipo è null significa che si tratta di un singolo carattere di punteggiatura. Il metodo st.nexttoken() presente nell ultima riga del ciclo fa avanzare il puntatore al prossimo tokem dello stream. esempio 11. Si desidera realizzare un programma che stampi l intero file di testo c:/mio.txt memorizzato su disco e successivamente tutti e solo i token WORD che contiene. Richieste: Passare il FileReader ad un BufferedReader al fine di stampare le righe del file; quindi riaprire il FileReader e assegnarlo come input a StreamTokenizer per stampare i soli WORD secondo lo schema grafico seguente. Lo schema mostra che pur trattandosi di un unico codice questo può essere pensato come una coppia di programmi indipendenti che nel caso specifico sono eseguiti una dopo l altro. Il primo stampa semplicemente il file di testo, il secondo mostra come vengono estratti dal file i soli token di tipo WORD. Text Flusso di Char Flusso di Linee FR BR (cons. di Linee) Flusso di Char FR Flusso di Token ST (cons. di Token) class cap09_es_11 { public static void main(string arg[]) throws IOException { FileReader f_char=new FileReader("c:/mio.txt"); // (1) BufferedReader f_line=new BufferedReader(f_char); // (2) System.out.println("Le righe nel file sono:"); String s=" "; while ((s=f_line.readline())!=null) System.out.println(s); f_char=new FileReader("c:/mio.txt"); // (3) StreamTokenizer st=new StreamTokenizer(f_char); // (4) System.out.println("\nLe sole parole sono:"); st.nexttoken(); // (5) while (st.ttype!=st.tt_eof) { if(st.ttype==st.tt_word) System.out.print(st.sval+" "); st.nexttoken(); System.out.println("\nFine scansione.\n");

17 pag. 128 Esecuzione: Le righe nel file sono: prima riga numero 1234 anno "2001" // commento non analizzato NUMERO 3.32 Le sole parole sono: prima riga numero anno NUMERO Fine scansione. Commenti al codice: Le note (1) e (2), unite al primo ciclo di stampa. si riferiscono alla costruzione del flusso di input FileReader (FR) che opera sul file di testo, questo flusso viene filtrato dal successivo BufferedReader (BR) per consentire la stampa per linee del testo e consumare il flusso. Le note (3) (4) mostrano la sequenza di costruzione del FileReader che diviene input di StreamTokenizer. Infine si avvia la lettura del primo token evidenziato dalla nota (5). Le istruzioni successive consistono nel ciclo del programma che consuma i token e stampa solo i WORD che sono quelli desiderati. esempio 12. Si desidera realizzare un programma che stampi tutti e soltanto i token numerici di un file di testo memorizzato su disco con a fianco il numero di riga del file su cui il token è scritto. class cap09_es_12 { public static void main(string arg[]) throws IOException { FileReader f_char=new FileReader("c:/mio.txt"); // (1) StreamTokenizer st=new StreamTokenizer(f_char); // (2) System.out.println("I numeri contenuti nel file sono:"); st.nexttoken(); // (3) while (st.ttype!=st.tt_eof) { if(st.ttype==st.tt_number) System.out.println(st.nval+" riga:"+st.lineno()); st.nexttoken(); System.out.println("\nFine scansione file."); Esecuzione: I numeri contenuti nel file sono: riga: riga:5 Fine scansione file. Commenti al codice: Il programma non differisce dalla seconda parte del precedente esempio 11 con le uniche differenze che in questo caso si stampano solo i Token NUMBER e a fianco il numero di riga su cui questi sono memorizzati. Il metodo st.lineno() è utilizzato proprio al fine di estrarre i numeri di riga del token in esame.

18 pag E Esercizi Problemi che usano stream o filtri in modo elementare. Uso delle sottoclassi di ImputStream, OutputStream, Reader e Writer per risolvere problemi Si desidera costruire un programma che acquisisca da un array di caratteri le singole lettere utilizzando un opportuno stream e stampi solo le vocali. Richieste: realizzare il solo main() scegliendo il corretto costruttore di stream. Nota: il metodo che testa se un carattere è contenuto nell insieme delle vocali potrebbe essere il seguente appartenente alla classe String. String Voc= aeiou ; char ch= a ; if ((Voc.indexOf(ch))!=-1) 9.2. Si desidera costruire un programma che acquisisca da una stringa le singole lettere utilizzando un opportuno stream e le collochi in un StringBuffer ponendo al termine di ogni sequenza di cinque caratteri il marcatore \n e infine stampi il buffer ottenuto. Richieste: realizzare il solo main() scegliendo il corretto costruttore di stream Si desidera costruire un programma che acquisita da tastiera una sequenza di linee fino a quando non si immette il marcatore #. Trasferisca le linee acquisite in un StringBuffer eliminando i marcatori di fine linea \n, \r ; infine stampi il testo del Buffer ottenuto. Richieste: realizzare il solo main() scegliendo il corretto costruttore di stream Si desidera costruire un programma che acquisita dati da un array di caratteri assegnato dall utente, l array contiene anche marcatori di fine linea \n ; i dati acquisiti li scriva utilizzando un opportuno stream di output in un file di testo memorizzato su disco. Richieste: realizzare il solo main() utilizzando il costruttore FileWriter per lo stream di output Si desidera costruire un programma che acquisita da una stringa assegnata dall utente i caratteri e li trascriva in sequenze di cinque caratteri su ogni riga di un file di testo inserendo l opportuno marcatore di fine linea. Richieste: realizzare il solo main() scegliendo il/i corretto/i costruttore/i di stream di output Si desidera costruire un programma che acquisita da un file di testo memorizzato su disco le diverse linee e le riscriva su un nuovo file di testo in in sequenze di cinque caratteri su ogni riga di testo inserendo l opportuna marcatore di fine linea. Richieste: realizzare il solo main() scegliendo i corretti costruttori di stream di input e output. Problemi semplici che usano stream di I/O e la classe StreamTokenizer Si desidera costruire un programma che filtri un file di testo memorizzato su disco e stampi di fianco a ogni parola la riga su cui si trova. Richieste: realizzare il solo main() facendo uso del filtro StreamTokenizer.

19 pag Si desidera costruire un programma che Dopo aver acquisito una parola da ricercare, filtri un file di testo memorizzato su disco e stampi quante volte ricorre la parola nel testo. Richieste: realizzare il solo main() facendo uso del filtro StreamTokenizer Si desidera costruire un programma che Dopo aver acquisito una parola da ricercare, filtri un file di testo memorizzato su disco e stampi su quali righe si trova quella parola. Richieste: realizzare il solo main() facendo uso del filtro StreamTokenizer Si desidera costruire un programma che Filtri un file di testo memorizzato su disco che contiene esclusivamente numeri separati da spazi e stampi la somma algebrica dei numeri trovati. Richieste: realizzare il solo main() facendo uso del filtro StreamTokenizer. Problemi la cui soluzione richiede la progettazione di una a più classi senza Frame o GUI Si desidera costruire un programma che usi un flusso qualsiasi di caratteri di input e mostri il testo completo sulla console in output." Indicazioni: il flusso da cui provengono i caratteri è un generico Reader (a seconda delle necessità il dispositivo potrà essere uno StringBuffer, una Strimg, un Array o un File di caratteri, la Tastiera). Si tratta quindi di progettare una Classe. (Chi fa che cosa?) la Classe, chiamiamola, Leggi_mostra avrà un costruttore generico di tipo Reader e disprrà di almeno un metodo leggi() che acquisisce dallo stream i caratteri per costruire una Stringa (che deve essere memorizzata negli attributi), e un secondo metodo che mostra() la stringa su console. Leggi_mostra - Reader flusso; - String testo; +Leggi_mostra(Reader in) +String leggi() +void mostra() Richieste: implementare la classe e un main di prova per verificare i due metodi al variare dello stream reader associato Si desidera costruire un programma che analizzi un flusso qualsiasi di caratteri e consenta di sapere se il testo contiene token numerici e/o token di tipo word" Indicazioni: I casi d'uso potrebbero essere i seguenti: costruttore del Filtro (quali parametri?). realizzare una funzionalità (metodo?) che risponda alla domanda quanti_num();

20 pag. 131 realizzare una funzionalità (metodo?) che risponda alla domanda quante_par() opzionalmente: dammi_num() Filtro() dammi_par() quanti_num() quante_par() Il flusso sarà un generico Reader (a seconda delle necessità il dispositivo potrà essere uno StringBuffer, una Strimg, un Array o un File di caratteri, la Tastiera). L'analisi del flusso verrà eseguita utilizzando uno StreamTockenizer. Si tratta quindi di progettare una Classe Filtro. (Chi fa che cosa?) Rischieste: o Disegnare (diagramma di classe) la classe Filtro; o Codificare la Classe e un main() di prova che verifichi le funzionalità realizzate; Problemi la cui soluzione richiede la progettazione di una a più classi con l'uso di una Frame ed eventi GUI Si desidera costruire un programma che analizzi (filtri) un testo contenuto in un campo di una frame e mostri le elaborazioni in un secondo campo della frame alla pressione dell'opportuno pulsante." Richieste a: o si immagini che il testo nel primo campo sia immesso dall'utente e il filtro esegua una banale ricopiatura del testo di input nel secondo campo alla pressione di un button. o progettare una classe Filtro che abbia un metodo mostra() che restituisce il testo di input inalterato. o progettare la GUI (Finestra) con i due campi e il button che attiva il comando mostra(); o progettare un main() che attivi e verifichi il funzionamento. Richieste b: o si immagini che il testo nel primo campo sia, come nella richiesta (a), immesso dall'utente e il filtro esegua una banale ricopiatura del testo di input nel secondo campo alla pressione di un button. o Usare la classe Leggi_mostra progettata nell'esercizio o progettare la GUI con i due campi e il button che attiva il comando mostra(); o progettare un main() che attivi e verifichi il funzionamento. Richiesta c: o immagini che il testo nel primo campo sia, come nella richiesta (a), immesso dall'utente e il filtro scriva nel secondo campo il messaggio "ci sono/non ci sono parole o numeri". Il filtro deve accertare, alla pressione di un button, se il primo campo ha parole o numeri. o Usare la classe progettata nell'esercizio o progettare la GUI con i due campi e il button che attiva il comando;

appunti java Capitolo 9 pag. 1

appunti java Capitolo 9 pag. 1 appunti java Capitolo 9 pag. 1 9. Input e output Nell informatica classica il concetto di input e output era strettamente legato all uso dei dispositivi esterni di memorizzazione (dischi, nastri) e quindi

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

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

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

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

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

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

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

Dettagli

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

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

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

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

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

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

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

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++ ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è

Dettagli

Corso sul linguaggio Java

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

Dettagli

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

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando) Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando) Le basi della programmazione ad oggetti: per costruire in modo adeguato una applicazione basata sulla programmazione ad oggetti occorre

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

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

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

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

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

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

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

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

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

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Manuale Helpdesk per utenti

Manuale Helpdesk per utenti Manuale Helpdesk per utenti Il giorno 1 Agosto 2009 partirà il nuovo sistema per l helpdesk on-line, ovvero uno strumento che permetterà agli utenti di sapere in ogni momento 1) quale tecnico CED ha in

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

Unità B3 Strutture di controllo

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

Dettagli

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie Facoltà di Scienze Motorie CHE COS È UN FOGLIO ELETTRONICO Una tabella che contiene parole e numeri che possono essere elaborati applicando formule matematiche e funzioni statistiche. Esame di Informatica

Dettagli

7. Layer e proprietà degli oggetti

7. Layer e proprietà degli oggetti 7. Layer e proprietà degli oggetti LAYER 09/01/13 ing. P. Rordorf arch. D. Bruni arch. A. Chiesa ing. A. Ballarini 38(52) Le proprietà dei layer: - Nome: ogni layer ha un nome proprio che ne permette una

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 data base "Biblioteca"

Esercizio data base Biblioteca Rocco Sergi Esercizio data base "Biblioteca" Database 2: Biblioteca Testo dell esercizio Si vuole realizzare una base dati per la gestione di una biblioteca. La base dati conterrà tutte le informazioni

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

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti. SH.MedicalStudio Presentazione SH.MedicalStudio è un software per la gestione degli studi medici. Consente di gestire un archivio Pazienti, con tutti i documenti necessari ad avere un quadro clinico completo

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) (Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste

Dettagli

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

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa. La finestra di Excel è molto complessa e al primo posto avvio potrebbe disorientare l utente. Analizziamone i componenti dall alto verso il basso. La prima barra è la barra del titolo, dove troviamo indicato

Dettagli

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

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

Dettagli

Parte II: Reti di calcolatori Lezione 10

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

Dettagli

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

ARCHIVI E DATABASE (prof. Ivaldi Giuliano) ARCHIVI E DATABASE (prof. Ivaldi Giuliano) Archivio: è un insieme di registrazioni (o records) ciascuna delle quali è costituita da un insieme prefissato di informazioni elementari dette attributi (o campi).

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

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

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio Documento Tecnico Light CRM Descrizione delle funzionalità del servizio Prosa S.r.l. - www.prosa.com Versione documento: 1, del 11 Luglio 2006. Redatto da: Michela Michielan, michielan@prosa.com Revisionato

Dettagli

. 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

. 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 Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

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

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database Microsoft Access Introduzione alle basi di dati Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale limitato Meccanismi di sicurezza, protezione di dati e gestione

Dettagli

Word processor funzione Stampa Unione

Word processor funzione Stampa Unione Word processor funzione Stampa Unione La funzione Stampa unione permette di collegare un documento che deve essere inviato ad una serie di indirizzi ad un file che contenga i nominativi dei destinatari.

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

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

FPf per Windows 3.1. Guida all uso

FPf per Windows 3.1. Guida all uso FPf per Windows 3.1 Guida all uso 3 Configurazione di una rete locale Versione 1.0 del 18/05/2004 Guida 03 ver 02.doc Pagina 1 Scenario di riferimento In figura è mostrata una possibile soluzione di rete

Dettagli

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo Release 4.90 Manuale Operativo BARCODE Gestione Codici a Barre La gestione Barcode permette di importare i codici degli articoli letti da dispositivi d inserimento (penne ottiche e lettori Barcode) integrandosi

Dettagli

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso 2.0 Gli archivi All interno della sezione archivi sono inserite le anagrafiche. In pratica si stratta di tutti quei dati che ricorreranno costantemente all interno dei documenti. 2.1 Inserire gli archivi

Dettagli

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

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo Creazione di moduli Creazione di moduli Che cos'è un modulo? Un elenco di domande accompagnato da aree in cui è possibile scrivere le risposte, selezionare opzioni. Il modulo di un sito Web viene utilizzato

Dettagli

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico) Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico) 1 Aprire Access Appare una finestra di dialogo Microsoft Access 2 Aprire un

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

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

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Gestione del workflow

Gestione del workflow Gestione del workflow Stefania Marrara Corso di Tecnologie dei Sistemi Informativi 2004/2005 Progettazione di un Sistema Informativo Analisi dei processi Per progettare un sistema informativo è necessario

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

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

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

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

Olga Scotti. Basi di Informatica. Excel

Olga Scotti. Basi di Informatica. Excel Basi di Informatica Excel Tabelle pivot Le tabelle pivot sono strumenti analitici e di reporting per creare tabelle riassuntive, riorganizzare dati tramite trascinamento, filtrare e raggruppare i dati,

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von

Dettagli

I database relazionali (Access)

I database relazionali (Access) I database relazionali (Access) Filippo TROTTA 04/02/2013 1 Prof.Filippo TROTTA Definizioni Database Sistema di gestione di database (DBMS, Database Management System) Sistema di gestione di database relazionale

Dettagli

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare. Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare. E stato previsto l utilizzo di uno specifico prodotto informatico (denominato

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

ISTRUZIONI SULLE OPERAZIONI DI CAMBIO ANNO CONTABILE 2005/2006 LIQUIDAZIONE IVA - STAMPA REGISTRI - CHIUSURA/APERTURA CONTI

ISTRUZIONI SULLE OPERAZIONI DI CAMBIO ANNO CONTABILE 2005/2006 LIQUIDAZIONE IVA - STAMPA REGISTRI - CHIUSURA/APERTURA CONTI ISTRUZIONI SULLE OPERAZIONI DI CAMBIO ANNO CONTABILE 2005/2006 LIQUIDAZIONE IVA - STAMPA REGISTRI - CHIUSURA/APERTURA CONTI PREMESSA La procedura contabile consente la gestione di più anni in linea. Questo

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Text Analytics versione 15 mediante un licenza

Dettagli

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 1 di 38 Portale tirocini Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 2 di 38 INDICE 1. INTRODUZIONE... 3 2. ACCESSO AL SISTEMA...

Dettagli

IL MIO PRIMO SITO: NEWS

IL MIO PRIMO SITO: NEWS Pagina 1 IL MIO PRIMO SITO: NEWS Sommario IL MIO PRIMO SITO: NEWS...1 Introduzione...2 I Contenitori...2 Creo un Contenitore...3 I Tracciati...4 Creo le Notizie...6 Inserisco il Testo...6 Inserisco un

Dettagli

Gestione e allineamento delle Giacenze

Gestione e allineamento delle Giacenze Release 5.20 Manuale Operativo INVENTARIO Gestione e allineamento delle Giacenze Il modulo permette la contemporanea gestione di più inventari, associando liberamente ad ognuno un nome differente; può

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

STUDIUM.UniCT Tutorial per gli studenti

STUDIUM.UniCT Tutorial per gli studenti STUDIUM.UniCT Tutorial per gli studenti Studium.UniCT Tutorial Studenti v. 6 06/03/2014 Pagina 1 Sommario 1. COS È STUDIUM.UniCT... 3 2. COME ACCEDERE A STUDIUM.UniCT... 3 3. COME PERSONALIZZARE IL PROFILO...

Dettagli

Procedure di ripristino del sistema.

Procedure di ripristino del sistema. Procedure di ripristino del sistema. Procedure adatte a sistemi con sistema operativo Microsoft Windows 7 In questo manuale verranno illustrate tutte le procedure che potrete utilizzare per creare dei

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Alla scoperta della nuova interfaccia di Office 2010

Alla scoperta della nuova interfaccia di Office 2010 Alla scoperta della nuova interfaccia di Office 2010 Una delle novità più eclatanti della versione 2007 era la nuova interfaccia con la barra multifunzione. Office 2010 mantiene questa filosofia di interfaccia

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

Studente: SANTORO MC. Matricola : 528

Studente: SANTORO MC. Matricola : 528 CORSO di LAUREA in INFORMATICA Corso di CALCOLO NUMERICO a.a. 2004-05 Studente: SANTORO MC. Matricola : 528 PROGETTO PER L ESAME 1. Sviluppare una versione dell algoritmo di Gauss per sistemi con matrice

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

Gestione Turni. Introduzione

Gestione Turni. Introduzione Gestione Turni Introduzione La gestione dei turni di lavoro si rende necessaria quando, per garantire la continuità del servizio di una determinata struttura, è necessario che tutto il personale afferente

Dettagli

On-line Corsi d Informatica sul web

On-line Corsi d Informatica sul web On-line Corsi d Informatica sul web Corso base di FrontPage Università degli Studi della Repubblica di San Marino Capitolo1 CREARE UN NUOVO SITO INTERNET Aprire Microsoft FrontPage facendo clic su Start/Avvio

Dettagli

Guida Sintetica sulle operazioni iniziali per l'utilizzo di Scuolanext

Guida Sintetica sulle operazioni iniziali per l'utilizzo di Scuolanext Guida Sintetica sulle operazioni iniziali per l'utilizzo di Scuolanext CREAZIONE UTENZE DOCENTI Per creare le utenze dei docenti per l'utilizzo su Scuolanext è necessario eseguire delle operazioni preliminari

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

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

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

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca) Ministero dell Istruzione, dell Università e della Ricerca Istituto Tecnico Industriale Statale Enrico Mattei Via Martiri di Cefalonia 46-20097 San Donato Milanese Tel. 0255691411 - Fax 025276676 itisando@tin.it

Dettagli

Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio

Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio Pillola operativa Integrazione Generazione Dettagli Contabili INFORMAZIONI

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014) Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014) Il software per gli esami ICON può essere eseguito su qualunque computer dotato di Java Virtual Machine aggiornata.

Dettagli