Scomposizione di stringhe

Slides:



Advertisements
Presentazioni simili
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
Costruttori e Distruttori
Università di camerino
Programmazione Ingegneria TLC
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Programmazione in Java (3)
Appunti di Java Da: Concetti di informatica e Fondamenti di Java2 - 2Ed. - Cay Horstmann.pdf.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Fisica Computazionale I - 51 OPERAZIONI DI INPUT/OUTPUT Le operazioni di input/output sono estremamente complesse perche' implicano una sostanziale interazione.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: i commenti Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Astrazioni sul controllo Iteratori. 2 Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Derivazione tra classi
Soluzione Esercizio - Classe Vettore
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Selezione (=scelta) con “if-else”
Concetti di informatica e fondamenti di Java, 4 ed.Apogeo ©2007 Capitolo 11 Ingresso/uscita e gestione delle eccezioni Cay S. Horstmann Concetti di informatica.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
Introduzione a:. Nella prima parte di questo corso si vedranno i CONCETTI di: CLASSE (programma) METODO (Algoritmi e dati) CONCETTI CLASSICI DI PROGRAMMAZIONE.
Programmazione in Java
Programmazione in Java Claudia Raibulet
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Diagramma di flusso del problema del Supermercato.
void binario(int n); …………………
Diagramma di flusso del problema del Calcolo del Bollo di Circolazione
Programmazione concorrente
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
Conversione da base 10 a base X (Utilizzo della pila)
Corso di Programmazione in Java – Esercizio n° 001
Diagramma di flusso del problema dello stipendio del rappresentante.
1 Applet ed HTML Fondamenti di Informatica Corso D.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Esercizi.
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2014/15 Libreria standard.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
Lezione 3 Struttura lessicale del linguaggio
Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Gestione dei thread in Java
Programmazione in Java
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
10/10/20021 Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
1 Java primo contatto Quando le classi fanno la differenza …
1 Input / Output Spesso un programma deve acquisire dati da una sorgente esterna o inviare informazioni a una destinazione esterna. L’informazione può.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Stringhe in Java. Definire una stringa. Definire una stringa in Java Il modo più semplice e diretto per creare un oggetto di tipo String è assegnare alla.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

Scomposizione di stringhe Paragrafo5

Scomposizione di stringhe Una sottostringa con caratteristiche sintattiche ben definite (ad esempio, delimitata da spazi…) si chiama token Es.: “uno due tre quattro” Spesso e’ utile scomporre una stringa in token Per la scomposizione di stringhe in token, è molto utile la classe Scanner, del package java.util che gia’ conosciamo per la lettura da standard input Scanner considera come delimitatori di default gli spazi, i caratteri di tabulazione e i caratteri di “andata a capo” Questi e altri caratteri sono detti whitespaces e sono riconosciuti dal metodo predicativo: Character.isWhitespace(char c)

Scomposizione di stringhe Per usare Scanner, innanzitutto bisogna creare un oggetto della classe fornendo la stringa come parametro al costruttore Successive invocazioni del metodo next() restituiscono successive sottostringhe, fin quando l’invocazione del metodo predicativo hasNext() restituisce true String line = “uno due tre”; Scanner st = new Scanner(line); while (st.hasNext()) { String token = st.next(); // elabora token }

Scomposizione di stringhe Il metodo next () della classe Scanner lancia l’eccezione java.util.NoSuchElementException nel caso non ci siano piu’ token nella stringa (non molto comodo!) String line = “uno due tre”; Scanner st = new Scanner(line); String token1 = st.next (); // “uno” String token2 = st.next (); // “due” String token3 = st.next (); // “tre” String token4 = st.next (); java.util.NoSuchElementException

Scomposizione di stringhe Per questo prima di invocarlo si verifica la presenza di eventuali token per mezzo del metodo hasNext(), che ritorna un dato di tipo boolean true se ci sono ancora token, false altrimenti. while (st.hasNext()) { String token = st.next(); // elabora token } Al termine dell’elenco si puo’ comunicare al sistema operativo che l’input da standard input destinato al programma in esecuzione è terminato in una finestra DOS/Windows bisogna digitare Ctrl+C in una shell di Unix bisogna digitare Ctrl+D

Esempio: conta parole import java.util.Scanner; public class CountWords { public static void main(String[] args) { Scanner c = new Scanner(System.in); int count = 0; while (c.hasNext()) c.next(); // estrae il token count++; } System.out.println(count + " parole");

Altri metodi predicativi Analogamente al metodo hasNext() nella classe Scanner sono definiti metodi predicativi per ciascun tipo fondamentale di dato, ad esempio hasNextInt() hasNextDouble() hasNextLong() … E’ definito anche il metodi hasNextLine() utile per leggere righe

Consigli utili Paragrafo3

Errori con operatori relazionali Alcune espressioni “naturali” con operatori relazionali sono errate ma per fortuna il compilatore le rifiuta Perché il compilatore le rifiuta? if (0 <= x <= 1) // NON FUNZIONA! if (0 <= x && x <= 1) // OK if (x && y > 0) // NON FUNZIONA! if (x > 0 && y > 0) // OK EC4

Errori con operatori relazionali Il compilatore analizza l’espressione logica e trova due operatori di confronto quindi esegue il primo da sinistra e decide che il risultato sarà un valore booleano Successivamente si trova a dover applicare il secondo operatore relazionale a due operandi il primo dei quali è di tipo boolean mentre il secondo è di tipo int if (0 <= x <= 1) x++; // NON FUNZIONA! operator <= cannot be applied to boolean int if (0 <= x <= 10) x++; ^ 1 error EC4

Errori con operatori relazionali Il compilatore analizza l’espressione logica e trova un operatore di confronto (che ha la precedenza sull’operatore booleano && ) il cui risultato sarà un valore di tipo boolean Successivamente si trova ad applicare l’operatore booleano && a due operandi il primo dei quali è di tipo int mentre il secondo è di tipo boolean if (x && y > 0) x++; // NON FUNZIONA! operator && cannot be applied to intboolean if (x && y > 0) x++; ^ 1 error EC4

Rientri e Tabulazioni Decidere il numero ideale di caratteri bianchi da usare per ogni livello di rientro è molto arduo In questo corso consigliamo di usare tre caratteri Consigliamo anche di non usare i “caratteri di tabulazione” che di solito generano un rientro di otto caratteri eccessivo if (amount <= balance) { balance = balance - amount; if (amount > 20000000) { System.out.println("Esagerato!"); } CP1

Disposizione delle graffe if (...) { ...; ...; } Incolonnare le parentesi graffe Eventualmente lasciare su una riga da sola anche la graffa aperta Così invece è più difficile trovare la coppia! if (...) { ...; } if (...) { ...; } SQ1

Complementi di sintassi Java Paragrafo5

L’enunciato switch Una sequenza che confronti un’unica variabile intera con diverse alternative costanti può essere realizzata con un enunciato switch int x; int y; ... if (x == 1) y = 1; else if (x == 2) y = 4; else if (x == 4) y = 16; else y = 0; int x; int y; ... switch (x) { case 1: y = 1; break; case 2: y = 4; break; case 4: y = 16; break; default: y = 0; break; } AA2

L’enunciato switch Vantaggio: non bisogna ripetere il nome della variabile da confrontare Svantaggio: non si può usare se la variabile da confrontare non è intera Svantaggio: non si può usare se uno dei valori da confrontare non è costante Svantaggio: ogni case deve terminare con un enunciato break, altrimenti viene eseguito anche il corpo del case successivo! Questo è fonte di molti errori... AA2

Operatore di selezione Java prevede un operatore di selezione nella forma Se la condizione e’ vera, l’espressione vale valore1, altrimenti valore2 Puo’ essere usato nelle espressioni di assegnazione L’espressione e’ una scorciatoia per condizione ? valore1 : valore2 y = x > =0 ? x : -x // y = |x| modulo if (x >= 0) y = x; else y = -x; AA2