Espressioni regolari nella pratica. 1 Preliminari: sintassi delle espressioni regolari in UNIX

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Espressioni regolari nella pratica. 1 Preliminari: sintassi delle espressioni regolari in UNIX"

Transcript

1 Sapienza Università di Roma Corso di Laurea in Ingegneria Informatica Esercitazione di Fondamenti di Informatica II A.A Espressioni regolari nella pratica Luigi Laura 8 ottobre 2008 Fino a questo punto del corso si sono viste le espressioni regolari come formalismo per descrivere Linguaggi di Tipo 3. In questa esercitazione vedremo: Cenni preliminari sulla sintassi delle espressioni regolari in UNIX. Come usare le espressioni regolari all interno di editor di testo e IDE di programmazione, per compiti di find and replace. Come usare le espressioni regolari all interno di programmi Java. 1 Preliminari: sintassi delle espressioni regolari in UNIX La sintassi delle espressioni regolari che vedremo è quella tradizionale di UNIX, che è definita obsoleta dallo standard POSIX ma è tuttora molto usata ed è largamente diffusa. Nella Tabella 1 vediamo uno schema riassuntivo della sintassi 1. E possibile usare il comando grep 2 con la seguente sintassi: grep PATTERN FILE visualizza tutte le linee del file FILE che contengono una stringa che corrisponde al PATTERN, specificato mediante una espressione regolare 3. Ad esempio, grep [Jj]ava * stampa tutte le linee dei file nella cartella corrente che contengono la parola java o la parola Java. Alcuni esempi: matica trova tutte le parole che contengono la stringa matica, come matematica, informatica, automatica e automaticamente. [aeiou]matica trova tutte le parole che contengono una vocale seguita dalla stringa matica, come matematica, automatica e automaticamente (ma non informatica). ^I trova tutte le linee che iniziano per I (maiuscola). 1 Sono numerosissime le varianti; si consiglia, prima di utilizzare un qualsiasi strumento software che supporti le espressioni regolari di controllarne l effettiva sintassi nella documentazione. 2 Esiste anche il comando egrep, con una sintassi estesa di espressioni regolari. 3 A seconda dell espressione regolare fornita come parametro a grep può essere o meno necessario circondarla con una coppia di apici. Negli esempi successivi ci concentriamo sulle espressioni regolari e quindi non faremo uso di apici 1

2 Per trovare singoli caratteri. Trova ogni singolo carattere. [ ] Trova un singolo carattere contenuto nelle parentesi. Ad esempio, [abc] trova a, b, o c. [a-z] è un intervallo e trova ogni lettera minuscola dell alfabeto. Possono esserci casi misti: [abcq-z] trova a, b, c e i caratteri da q a z, esattamente come [a-cq-z]. Il carattere - è letterale solo se è primo o ultimo carattere nelle parentesi: [abc-] o [-abc]. Per trovare un carattere [ o ], il modo più semplice è metterli primi all interno delle parentesi: [][ab] trova ], [, a o b. [^ ] Trova ogni singolo carattere non incluso nelle parentesi. Ad esempio, [^abc] trova ogni carattere diverso da a, b, o c. [^a-z] trova ogni singolo carattere che non sia una lettera minuscola. Marcatori di posizione ^ Corrisponde all inizio della linea. $ Corrisponde alla fine della linea o alla posizione immediatamente precedente un carattere di nuova linea. \< Corrisponde all inizio della parola 1. \> Corrisponde alla fine della parola 1. Marcatori di conteggio * Un espressione seguita da * trova zero o più copie di tale espressione Ad esempio, [xyz]* trova "", x, y, zx, zyx, e così via. + Un espressione seguita da + trova una o più copie di tale espressione. Ad esempio, [xyz]+ trova x, y, zx, zyx, e così via.? Un espressione seguita da? trova zero o una copia di tale espressione. Ad esempio, [xyz]? trova "",x, y e z. {x,y Trova l ultimo blocco almeno x volte e non più di y volte. Ad esempio, a{3,5 trova aaa, aaaa o aaaaa 1. Altro ( ) Definisce una sottoespressione marcata. Ciò che è incluso nella sottoespressione, può essere richiamato in seguito. Vedi sotto, \n. \n Dove n è una cifra da 1 a 9; trova ciò che la n-esima sottoespressione ha trovato 1. Rappresenta l OR: con (infor mate)matica trovo tutte le parole informatica e matematica. 1 non supportato da tutte le versioni di egrep Tabella 1: Sintassi base delle espressioni regolari in UNIX ^[Ii] trova tutte le linee che iniziano per i, maiuscola o minuscola. \<[A-Ca-c] trova tutte le parole che iniziano per a,b o c, maiuscole o minuscole. Particolarmente interessante è l uso delle parentesi e delle backreference \n: le parentesi consentono di raggruppare un espressione, e il backreference si riferisce a espressioni (all interno di parentesi) precedentemente individuate (\1 si riferisce alla prima espressione, \2 alla seconda e così via). Ad esempio, ([a-z]+)te\1 identifica tutte le parole in cui compare una qualche sottostringa, seguita da te, seguita dalla sottostringa originale: ad esempio matematica (ma compare prima e dopo di te). Esercizio 1. Scaricare il file baregrep.exe e il file divinacommedia.txt dalla cartella dell e- 2

3 sercitazione sul sito del corso. Baregrep è un programma per Windows che offre (alcune del)le funzionalità di grep attraverso una interfaccia grafica. Fate partire baregrep e selezionate il file divinacommedia.txt: rispondete alle seguenti domande mediante la scrittura di opportune espressioni regolari. Quali versi della Divina Commedia iniziano con una lettera T e finiscono con una lettera e? Sono più numerosi i versi che iniziano o quelli che finiscono con la parola Amor? Attenzione: la prima linea di ogni terzina inizia con due spazi; vi state perdendo qualche verso nel conteggio? Esercizio 2. Provare con baregrep tutti i comandi mostrati in Tabella 1. Quali funzionano? 2 Uso all interno di editor di testo o IDE Ci sono diversi editor di testo che supportano funzionalità di find and replace mediante espressioni regolari. In particolare, segnaliamo (per Windows) Notepad++ 4 (editor di testo generico) e JCreator 5 come ambiente di programmazione Java (vedi Figura 1). Oltre a essere utilizzate per compiti di ricerca all interno di file, come nel caso di grep, è possibile specificare un pattern di sostituzione in maniera simile a quanto visto per le backreference: in questo caso la sintassi è $n dove n è un intero: $1 si riferisce alla prima sottoespressione identificata, $2 alla seconda e così via. Ad esempio, supponiamo che gli indirizzi delle home page dei docenti del dipartimento cambino secondo la seguente regola: da a NOMEDOCENTE.dis.uniroma1.it/. Se abbiamo un elenco di file di testo contenente gli indirizzi nel vecchio formato da sostituire con il nuovo, è sufficiente aprire i file con JCreator e inserire le due espressioni regolari: (TROVA) (SOSTITUISCI) $1.dis.uniroma1.it/ In questo caso in $1 viene riportato quanto trovato nella parentesi ([a-z]+), ovvero il cognome del docente. Da notare che le singole occorrenze del sito del dipartimento non vengono modificate. Esercizio 3. Far partire JCreator. Inserire un nuovo programma Java contenente una serie di coordinate del tipo (A,B) dove A e B sono numeri interi di diverse cifre: (12,45), (41,34), (6,789). Scrivere opportunamente, mediante il comando find and replace, due espressioni regolari per fare in modo che ogni occorrenza della coppia (A,B) sia sostituita da una occorrenza di (B,A). Nota bene. Quando è necessario identificare dei caratteri che sono parte della sintessi delle espressioni regolari, come ad esempio *.()^$ (e quindi le parentesi dell esercizio precedente) è necessario farli precedere dal simbolo \: per esempio le parentesi si denotano con \( e \). Esercizio 4. Supponiamo di aver scritto un metodo statico Somma(intero a,intero b), definito nella classe Java riportata qui sotto Decidiamo di cambiare il metodo e di trasformarlo in un metodo non statico somma(intero y) che viene invocato su un oggetto di tipo intero. Dobbiamo quindi sostituire tutte le occorrenze del metodo Somma(x,y) in x.somma(y): scrivere le espressioni regolari necessarie (sempre all interno di JCreator). public class i n t e r o { public int v a l o r e ;

4 Figura 1: Schermata dell applicazione JCreator in cui è possibile vedere il pannello di find and replace. public i n t e r o ( int i ) { v a l o r e=i ; public static i n t e r o Somma( i n t e r o a, i n t e r o b ) { return new i n t e r o ( a. v a l o r e+b. v a l o r e ) ; public static void main ( S t r i n g [ ] args ) { i n t e r o a=new i n t e r o ( 1 ) ; i n t e r o b=new i n t e r o ( 1 ) ; i n t e r o c=new i n t e r o ( 1 ) ; i n t e r o d=new i n t e r o ( 1 ) ; i n t e r o e=new i n t e r o ( 1 ) ; i n t e r o f=somma( a, b ) ; i n t e r o g=somma(b, c ) ; i n t e r o h=somma( e, d ) ; i n t e r o i=somma( a, e ) ; i n t e r o j=somma( i, f ) ; i n t e r o k=somma(h, g ) ; i n t e r o l=somma( a, h ) ; 4

5 i n t e r o m=somma(b, i ) ; i n t e r o n=somma( c, j ) ; i n t e r o o=somma(d, k ) ; i n t e r o p=somma( e, l ) ; 3 Uso all interno di programmi Java: il package java.util.regex Java gestisce le espressioni regolari attraverso il package java.util.regex, che consiste essenzialmente delle tre classi Pattern, Matcher e PatternSyntaxException: Un oggetto di tipo Pattern contiene la rappresentazione di una espressione regolare. La classe Pattern non ha costruttori pubblici. Per creare un oggetto di tipo Pattern bisogna invocare uno dei metodi statici compile della classe, che restituiranno un oggetto di tipo Pattern. Questi metodi prendono come primo parametro una espressione regolare. Un oggetto di tipo Matcher è il motore che interpreta il pattern ricevuto e lo confronta con una stringa di input passatagli come argomento. Come per la classe Pattern, la classe Matcher non ha costruttori pubblici. Si ottiene un oggetto di tipo Matcher invocando il metodo matcher su un oggetto della classe pattern. Un oggetto di tipo PatternSyntaxException è una eccezione (unchecked 6 ) che indica un errore di sintassi nel pattern dell espressione regolare. Per i dettagli sull utilizzo del package Java si rimanda alla documentazione delle relative classi e al tutorial Sun [2]. Nell appendice riportiamo un programma di test che illustra il funzionamento delle due classi Pattern e Matcher, oggetto dell esercitazione. Esercizio 5. Scrivere e compilare il programma Java riportato in appendice. Testare le capacità della libreria di riconoscere sottostringhe denotate da espressioni regolari. Cosa succede se l espressione regolare è [ab]aba e la stringa è babababababa? Quante occorrenze segnala il programma? Quante occorrenze ci sono? Esercizio 6. Ispirandosi al programma Java riportato in appendice, scrivere un programma che: 1. chiede all utente una estensione di file (ad esempio txt, java, doc) e 2. stampa su schermo l elenco dei file di quella estensione contenuti nella directory corrente. Suggerimento. Si ricorda che le seguenti linee di codice Java F i l e c o r r e n t e= new F i l e (. ) ; S t r i n g [ ] n o m i f i l e= c o r r e n t e. l i s t ( ) ; memorizzano nell array di stringhe nomifile i nomi di tutti i file della cartella corrente. NOTA BENE: ovviamente si devono usare le espressioni regolari per filtrare i file! Esercizio 7. Modificare il programma scritto nell esercizio precedente in modo da ottenere un programma che: 6 Si ricorda che le eccezioni unchecked sono quelle eccezioni run-time per le quali non è necessario dichiarare la clausola throws nei metodi che potrebbero generare le eccezioni stesse. 5

6 1. chiede all utente una estensione di file (ad esempio txt, java, doc) e una espressione regolare RE 2. stampa su schermo le occorrenze dell espressione regolare nei file di quella estensione contenuti nella directory corrente. Riferimenti bibliografici [1] Jeffrey E. F. Friedl, Mastering regular expressions, 2nd edition, O Reilly [2] Tutorial online sul package java.util.regex, disponibile all indirizzo docs/books/tutorial/essential/regex/ [3] Espressione Regolare, voce di Wikipedia.it 6

7 Appendice Qui di seguito riportiamo il testo del programma di test delle classi pattern e matcher del package java.util.regex. Il programma è una versione modificata di quello preso dal tutorial della Sun: è stato eliminato l utilizzo della classe Console in quanto funzionante solo su Java versione 6 (e al laboratorio è installata la versione 5) e i messaggi di interazione con l utente sono stati tradotti in italiano. import java. i o. ; import java. u t i l. regex. Pattern ; import java. u t i l. regex. Matcher ; public c l a s s RegexTestHarness { public static void main ( S t r i n g [ ] args ) throws IOException { BufferedReader in=new BufferedReader (new InputStreamReader ( System. in ) ) ; while ( true ) { System. out. p r i n t l n ( I n s e r i s c i l e s p r e s s i o n e r e g o l a r e : ) ; Pattern pattern = Pattern. compile ( in. readline ( ) ) ; System. out. p r i n t l n ( I n s e r i s c i l a s t r i n g a n e l l a quale e f f e t t u a r e l a r i c e r c a : ) ; Matcher matcher = pattern. matcher ( in. readline ( ) ) ; boolean found = f a l s e ; while ( matcher. f i n d ( ) ) { System. out. p r i n t l n ( Ho trovato i l t e s t o + matcher. group ( )+ a p a r t i r e d a l l a p o s i z i o n e +matcher. s t a r t ( )+ f i n o a l l a p o s i z i o n e +matcher. end ( ) ) ; found = true ; i f (! found ) { System. out. p r i n t l n ( Nessuna c o r r i s pondenza trovata. ) ; 7

Espressioni regolari in UNIX p.1/19

Espressioni regolari in UNIX p.1/19 Espressioni regolari in UNIX Violetta Lonati a Dipartimento Scienze dell Informazione Università degli Studi di Milano a E garantito il permesso di copiare, distribuire e/o modificare i materiali cont

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: C# versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Linguistica Computazionale

Linguistica Computazionale Linguistica Computazionale Laboratorio espressioni regolari (1) 30 settembre 2014 Cercare, ricercare Cercare una parola in un testo è semplice: ma come fare per ricerche più complesse? le parole che terminano

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Lesson #4. Espressioni Regolari. Roberto De Virgilio

Lesson #4. Espressioni Regolari. Roberto De Virgilio Lesson #4 Espressioni Regolari Roberto De Virgilio Sistemi operativi - 9 Novembre 2015 Espressioni regolari in Unix Patterns (modelli) che individuano insiemi di stringhe (linguaggi) e rappresentano uno

Dettagli

Linguistica Computazionale

Linguistica Computazionale Linguistica Computazionale Salvatore Sorce Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Ludici Adattati da Alessandro Lenci Dipartimento di Linguistica T. Bolelli Espressioni

Dettagli

Introduzione alle espressioni regolari

Introduzione alle espressioni regolari Introduzione alle espressioni regolari Introduzione Le espressioni regolari possono essere trovate in molti editor avanzati come il vi, nei programmi grep/egrep e in linguaggi come l'awk, il perl e il

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

Espressioni regolari in Javascript (RegExp) Le espressioni regolari. Un po di storia. Antonio Lioy - Politecnico di Torino (2009) I-1

Espressioni regolari in Javascript (RegExp) Le espressioni regolari. Un po di storia. Antonio Lioy - Politecnico di Torino (2009) I-1 Espressioni regolari in Javascript (RegExp) Antonio Lioy < lioy @ polito.it > Politecnico di Torino Dip. Automatica e Informatica (estensione di materiale preparato da Andrea S. Atzeni) Le espressioni

Dettagli

5 - Istruzioni condizionali

5 - Istruzioni condizionali 5 - Istruzioni condizionali 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

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere

Dettagli

Espressioni regolari in Javascript (RegExp)

Espressioni regolari in Javascript (RegExp) Espressioni regolari in Javascript (RegExp) Antonio Lioy < lioy @ polito.it > Politecnico i di Torino Dip. Automatica e Informatica (estensione di materiale preparato da Andrea S. Atzeni) Le espressioni

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

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse AA 2018/2019 Tutor lorenzo.rosa@unibo.it 2 Esercitazione 6 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso Eclipse

Dettagli

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe/array Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

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

Le command line di Java. Esercitazioni di Sistemi Operativi III Lezione n. 2

Le command line di Java. Esercitazioni di Sistemi Operativi III Lezione n. 2 Le command line di Java Esercitazioni di Sistemi Operativi III Lezione n. 2 Esempio 1 - Punti e Segmenti Punto 2 0..n Segmento PuntoColorato Le tre classi appartengono al package geometrie. I file sorgenti

Dettagli

Java Gli array. Array

Java Gli array. Array Java Gli array 1 Gli array In generale un array è una sequenza di locazioni di memoria, che contengono entità dello stesso tipo, e a cui si può fare riferimento con un nome comune Le entità che compongono

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

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Input/Output, Variabili, Tipi e Stringhe Tutor: Angelo Feraudo angelo.feraudo2@unibo.it a.a. 2017/2018 Fondamenti di Informatica T-1 Angelo Feraudo 1 / 26 TUTOR Angelo Feraudo

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 API di Java Istruzione di scrittura Istruzione di lettura 21/03/2011 2 API di Java Java è un linguaggio orientato agli oggetti basato

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale Object Oriented Programming: Fondamenti Prof. Stefano Mariani Dott. Alket Cecaj Indice Introduzione all OOP Classi vs. oggetti Campi

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale OOP: I/O da/su File e Java Exceptions Prof. Stefano Mariani Dott. Alket Cecaj Indice I/O da/su file: java.io e java.nio BufferedReader

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Array Array monodimensionali Array bidimensionali Esercizi 16/01/2013 2 ARRAY Gli array sono oggetti utilizzati in Java per memorizzare

Dettagli

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

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

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Programma Introduzione al calcolatore e Java Linguaggio Java, basi e

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

Laboratorio di Programmazione Laurea in Bioinformatica

Laboratorio di Programmazione Laurea in Bioinformatica Laboratorio di Programmazione Laurea in Bioinformatica Web: http://www.scienze.univr.it/fol/main?ent=oi&id=34121 Docente: Carlo Drioli Email: drioli@sci.univr.it 2007/2008 Lucidi a cura di Nicola Drago,

Dettagli

Introduzione Programmazione Java

Introduzione Programmazione Java Introduzione Programmazione Java Paolo Tomeo paolo.tomeo@poliba.it Regole basilari Java è case sensitive quindi prestare attenzione alle maiuscole Il commento si inserisce con // all'inizio della linea

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

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

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013 Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013 Matricola:...................... Cognome:...................... Nome:...................... Informatica

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA4 B3 Documentazione 1 Prerequisiti Programmazione elementare ad oggetti Documentazione del software Tipi di documentazione 2 1 Introduzione Lo scopo di questa Unità

Dettagli

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013 Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013 Comandi di ricerca 1 Sommario Comandi shell di ricerca: grep find 2 - comando di ricerca: grep - 3 file passwd, ricordiamo che Le righe di

Dettagli

Fondamenti di Programmazione Recupero Primo Parziale 30 Gennaio 2008 Traccia A

Fondamenti di Programmazione Recupero Primo Parziale 30 Gennaio 2008 Traccia A Fondamenti di Programmazione Recupero Primo Parziale 30 Gennaio 2008 Traccia A Cognome: Nome: Corso di Laurea N. Matricola: Giorno non preferito per l orale (Matematici) Giorno non preferito per l orale

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

Eclipse e SDK. Capiamo che sistema operativo abbiamo

Eclipse e SDK. Capiamo che sistema operativo abbiamo Eclipse e SDK Capiamo che sistema operativo abbiamo 1 2 Cliccare su impostazioni 3 Cliccare su Sistema 1 Cliccare 4 Cliccare su Informazioni su 2 Eclipse ECLIPSE: http://www.eclipse.org/ Esistono versioni

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni

Dettagli

Java Gli array. Array

Java Gli array. Array Java Gli array 1 Gli array In generale un array è una sequenza di locazioni di memoria, che contengono entità dello stesso tipo, e a cui si può fare riferimento con un nome comune Le entità che compongono

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 07 Oggetti e Java Marzo 2010 Programmazione Java 1 Contenuti Il linguaggio Java Applicazioni Java e il metodo main Esempi di applicazioni

Dettagli

Fondamenti di Informatica T-1. Guida al LAB4 Introduzione a JDK e Eclipse

Fondamenti di Informatica T-1. Guida al LAB4 Introduzione a JDK e Eclipse Guida al LAB4 Introduzione a JDK e Eclipse 2 Tutor Tutor: e-mail: francesco.casimiro@studio.unibo.it Ricevimento studenti: al termine delle esercitazioni o previo appuntamento via e-mail Sito del corso:

Dettagli

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini ed esercizi aggiuntivi 16. Stream di I/O Esempio. Visualizza sul monitor il contenuto di un file di caratteri. int i; while ((i

Dettagli

Introduzione al linguaggio C

Introduzione al linguaggio C Linguaggio C Introduzione al linguaggio C Sistemi di sviluppo integrati Noti anche come IDE: Integrated Development Environment Un pacchetto software che permette di scrivere, preprocessare, compilare,

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.JOO.3 Java: le classi Object e Class February 2, 2008 p. 1/12 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso

Dettagli

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici

Dettagli

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E01 Esempi di programmi A. Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di programmi - 1 1 Contenuti

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Input/Output, Variabili, Tipi e Stringhe Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2016/2017 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 19 VARIABILI

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Conclusioni Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr.

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr. Programmazione A.A. 2002-03 I Costrutti di base ( Lezione XII, parte I ) Gestione dell input Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

Stringhe. Walter Didimo

Stringhe. Walter Didimo Stringhe Walter Didimo La classe String L uso di stringhe (sequenze di caratteri alfanumerici) nei programmi è molto frequente Per tale motivo, l API di Java offre una classe con molti metodi utili per

Dettagli

Laboratorio di Programmazione 1 [Java]

Laboratorio di Programmazione 1 [Java] Laboratorio di Programmazione 1 [Java] Prova di esame - 26 Gennaio 2011 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Pizzeria. La classe Tavolo ha i seguenti attributi: nome (una

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 Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando

Dettagli

Espressioni Regolari. Giancarlo Massidda

Espressioni Regolari. Giancarlo Massidda Espressioni Regolari Giancarlo Massidda Espressioni regolari O RegEx dall inglese regular expression Traduzione errata: dovrebbe essere espressioni basate su regole Si tratta di un sistema per descrivere

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini ed esercizi aggiuntivi Gli esercizi proposti sono utili per rivedere gli esempi riportati, che sono stati sviluppati e discussi

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

System.out.print("\tATTENZIONE: hi inserito un valore non valido!\n");

System.out.print(\tATTENZIONE: hi inserito un valore non valido!\n); Creare un applicazione console che dato l indice della borsa di Milano nel giorno precedente, calcola la variazione percentuale rispetto al valore dell indice del giorno corrente. import java.io.*; public

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

Esercizi in Python. Docente: Domenico Daniele Bloisi

Esercizi in Python. Docente: Domenico Daniele Bloisi Esercizi in Python Docente: Domenico Daniele Bloisi http://profs.scienze.univr.it/~bloisi/asl/asl.html Esercizio 1 Utilizzare il linguaggio di programmazione Python per stampare a video la scritta "prima

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo L6 (JAVA9) 1 Introduzione alle applet 1 Prerequisiti Architettura client/server Elementi di base HTML Programmazione Java Utilizzo package awt di Java 2 1 Introduzione

Dettagli

La programmazione nel linguaggio JavaScript. Il programma

La programmazione nel linguaggio JavaScript. Il programma Il programma Nei linguaggi di programmazione il programma è una funzione che ha come argomento i dati digitati in input e opportunamente convertiti. la descrizione della funzione (ovvero il programma)

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2014/2015 Linguaggi formali e compilazione sul corso Sito web: http://algogroup.unimore.it/people/mauro/dida/2014-2015 / Ricevimento:

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2015/2016 Linguaggi formali e compilazione sul corso Sito web: http://algogroup.unimore.it/people/mauro/dida/2015-2016 / Ricevimento:

Dettagli

Corso di Laurea in Informatica Applicata Prima Prova di Verifica Intermedia di Programmazione II 1 Dicembre 2010

Corso di Laurea in Informatica Applicata Prima Prova di Verifica Intermedia di Programmazione II 1 Dicembre 2010 Corso di Laurea in Informatica Applicata Prima Prova di Verifica Intermedia di Programmazione II 1 Dicembre 2010 Istruzioni: scrivere le risposte alle domande negli spazi presenti nel testo e riconsegnare

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

Le basi del linguaggio Java

Le basi del linguaggio Java Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using

Dettagli

Fondamenti di Informatica T2 Modulo 2

Fondamenti di Informatica T2 Modulo 2 Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Integrated Development Environment (IDE)

Dettagli

Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009

Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009 Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Integrated Development Environment (IDE)

Dettagli

Tutorato di Fondamenti di Informatica TUTOR: DAVIDE GHIANI, GIULIA ORRU

Tutorato di Fondamenti di Informatica TUTOR: DAVIDE GHIANI, GIULIA ORRU Tutorato di Fondamenti di Informatica PROFESSORE: GIAN LUCA MARCIALIS TUTOR: DAVIDE GHIANI, GIULIA ORRU Organizzazione Informazioni di contatto: informatica.marcialis@gmail.com Davide Ghiani Giulia Orrù

Dettagli

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

Dettagli

Primo programma in C

Primo programma in C Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file

Dettagli

Variabili e assegnazione

Variabili e assegnazione Corso di Laurea Ingegneria Civile Fondamenti di Informatica Variabili e assegnazione Carla Limongelli Marzo 2009 Variabili e assegnazione 1 Contenuti Variabili a ab e assegnazionea e Variabili e aree di

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

Università degli Studi di Ferrara

Università degli Studi di Ferrara Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018 2019 Programmazione Lezione 8 Esercizi in C Docente: Michele Ferrari - michele.ferrari@unife.it Informazioni Docente di supporto

Dettagli

La programmazione nel linguaggio C

La programmazione nel linguaggio C 3 La programmazione nel linguaggio C 3.0 La programmazione nel linguaggio C c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 3.0 0 Introduzione ai programmi

Dettagli

Esercitazione Fondamenti di Informatica 2

Esercitazione Fondamenti di Informatica 2 Esercitazione Fondamenti di Informatica 2 Array 6 Marzo 2006 Marco R. Iarusso iarusso@dia.uniroma3.it Riassumendo. Un array è una collezione finita di variabili di uno stesso tipo posto in corrispondenza

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Metodi statici e array Tutor: Angelo Feraudo angelo.feraudo2@unibo.it a.a. 2017/2018 Fondamenti di Informatica T-1 Angelo Feraudo 1 / 14 METODI STATICI: Definizione Un metodo

Dettagli