Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Slides:



Advertisements
Presentazioni simili
Oggetti Java.
Advertisements

Costruttori e Distruttori
Programmazione Ingegneria TLC
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
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.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: funzione di output a video Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: i commenti Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Scomposizione di stringhe
Soluzione Esercizio - Classe Vettore
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Programmazione Corso di laurea in Informatica
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Approfondimento delle classi
Dichiarazione di classi Programmazione Corso di laurea in Informatica.
Selezione (=scelta) con “if-else”
Programmazione in Java Claudia Raibulet
Diagramma di flusso del problema del Supermercato.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Diagramma di flusso del problema del Calcolo del Bollo di Circolazione
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Diagramma di flusso del problema dello stipendio del rappresentante.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Lezione n° 07 - Esercitazione
Esercizi.
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Una "vera" classe.. ..un esempio pratico: la calcolatrice
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Definizione di classi Capitolo 18 febbraio 2004 Definizione di classi.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
1 novembre I nomi in Java F. Bombi 1 novembre 2002.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
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
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
Liste Concatenate 11 Aprile E’ una delle strutture dati fondamentali in tutti i linguaggi di programmazione di alto livello Una Lista Concatenata.
Liste di Interi Esercitazione. IntList Lista di interi Una lista è una disposizione ordinata di elementi ( non in modo crescente-descrescente, ma per.
LIP: 8 Marzo 2005 Vettori. Abbiamo visto L’uso di Vector come alternativa all’uso di arrays Rivediamo l’esercizio dell’altra volta.
Esercitazione del 7 marzo 2008 Ereditarieta’. Esercizio: soluzione Implementare la seguente specifica che definisce un tipo di dato Libro.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Primo Compitino Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Fondamenti di informatica T-A Esercitazione 5 : Stringhe ed array AA 2012/2013 Tutor : Domenico Di Carlo.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
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.
Transcript della presentazione:

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E09 Esercizi su Array e Oggetti C. Limongelli Gennaio 2012 http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Contenuti La classe Libro e un esempio di gestione Verifiche universali ed esistenziali su array di stringhe Verifica dell’esistenza di una stringa, in un array, formata tutta da caratteri maiuscoli Verifica dell’esistenza di una stringa, in un array, formata sia da lettere che da cifre http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Data la classe Libro per rappresentare oggetti libro con il nome dell’autore, il titolo e il numero di pagine e con i relativi metodi d’istanza scrivere un metodo che, ricevendo come parametro un array di oggetti Libro, calcola e restituisce un array di oggetti Libro dello stesso autore scrivere un metodo che, ricevendo come parametro un array di oggetti Libro, calcola e restituisce l’oggetto Libro con il massimo numero di pagine http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti La classe Libro . . . // Variabili d’istanza private String autore; private String titolo; private int pagine; // Costruttore della classe public Libro (String a, String t, int p){ this.autore = a; this.titolo = t; this.pagine = p; } http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti . . . La classe Libro . . . I metodi d’istanza della classe String getAutore() Restituisce la stringa corrispondente al nome dell’autore String getTitolo() Restituisce la stringa corrispondente al titolo del Libro int getPagine() Restituisce l’intero corrispondente al numero di pagine del Libro String toString() Restituisce una stringa (su più righe) che contiene tutti I dati del libro boolean equals(Libro b) Verifica l’uguaglianza tra libri http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti . . . La classe Libro . . . I primi metodi della classe: public String getAutore(){ return this.autore; } public String getTtitolo() { return this.titolo ; public int getPagine() { return this.pagine ; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti . . . La classe Libro Altri metodi della classe: public String toString(){ return ("AUTORE: " + this.autore + "\n" + "TITOLO: " + this.titolo + "\n"+ "N. PAGINE: " + this.pagine + "\n"); } public boolean equals(Libro b){ return (this.getAutore.equals(b.getAutore) && this.getTitolo.equals(b.getTitolo) && this.getPagine == b.getPagine) ); http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Creare un elenco di libri… La classe GestioneLibro Crea e restituisce un array di oggetti Libro Restituisce il libro con il maggior numero di pagine Restituisce tutti i titoli dei libri che hanno un determinato autore (dato in input). … si possono aggiungere altri metodi a piacere . . . http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

…Creare un array di libri… Acquisisce i dati da input: //crea un array di n libri public static Libro[] creaElenco(int n){ Libro[] l; String a,t; int i; int p; l = new Libro[n]; System.out.println("Dati del libro: "); for (i=0; i<n; i++){ System.out.println("inserisci autore "); a = Lettore.in.leggiString(); System.out.println("inserisci titolo "); t = Lettore.in.leggiString(); System.out.println("inserisci numero pagine "); p = Lettore.in.leggiInt(); l[i] = new Libro(a,t,p); } return l; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

…Creare un array di libri… Esplicitamente per la classe di test elencoLibri = new Libro[10]; elencoLibri[0] = new Libro("Esopo","Le storie dell'asino",20); elencoLibri[1] = new Libro("Italo Calvino", "Il visconte dimezzato",158); elencoLibri[2] = new Libro("Esopo","Le storie del cane",20); elencoLibri[3] = new Libro("Esopo","Le favole piu' belle",98); elencoLibri[4] = new Libro("Giovanni Rodari","Filastrocche lunghe e corte",80); elencoLibri[5] = new Libro("Italo Calvino","le cosmicomiche",250); elencoLibri[6] = new Libro("Gianni Rodari","Enciclopedia della favola",1120); elencoLibri[7] = new Libro("Italo Calvino","Il barone rampante",135); elencoLibri[8] = new Libro("Fratelli Grimm","Raperonzolo",36); elencoLibri[9] = new Libro("Italo Calvino","Il cavaliere inesistente",124); http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Calcolare i dati richiesti . . . Segnatura del metodo che stampa un elenco di libri stampaElenco(Libro[] e) Il metodo visualizzerà le stringhe ottenute dall’uso del metodo String toString()della classe Libro Segnatura del metodo che crea l’elenco dei libri con lo stesso autore Libro[] stessoAutore(Libro[] e, String autore) Il metodo stessoAutore prende un elenco di libri e un autore e calcola un nuovo array che contiene i libri di quell’autore ad esempio libriDiCalvino = stessoAutore(elencoLibri,"Italo Calvino") La stampa di questo nuovo elenco può poi essere effettuata per mezzo del metodo stampaElenco http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

. . . Calcolare i dati richiesti Stampa il libro con il massimo numero di pagine Il metodo maxPagine fornisce l’indice dell’array relativo al libro con più pagine Con la segnatura int maxPagine(Libro[] e) L’oggetto Libro con più pagine è identificato da: elencoLibri[maxPagine(elencoLibri)] La stampa può essere effettuata per mezzo del metodo toString della classe Libro, cioé System.out.println( elencoLibri[maxPagine(elencoLibri)].toString() ); http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Metodo stessoAutore… Prima scorro l’array di libri per calcolare il numero di libri che hanno l'autore richiesto e per dimensionare il nuovo array da calcolare Se l’attributo autore dell’i-esimio libro, cioè dell’oggetto e[i] è uguale all’autore dato come parametro al metodo, allora incremento il contatore k public static Libro[] stessoAutore(Libro[] e, String autore){ int i,k; //k rappresenta la lunghezza del nuovo array Libro[] app; //Il nuovo array da creare /* scorro l'array e solo per dimensionare app */ k=0; for (i=0; i<e.length; i++) if (e[i].getAutore().equals(autore)) k++; // …… continua … http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti … Metodo stessoAutore Creo l’array app e scorro nuovamente l’array e per inserire in app i k libri che hanno l'autore uguale alla stringa parametro del metodo Bisogna usare il metodo equals definito per le stringhe //…. continua … /* creo l'array di k componenti */ app = new Libro[k]; /* scorro nuovamente l'array e per inserire in app i k libri che hanno l'autore richiesto */ k = 0; for (i=0; i<e.length; i++) if (e[i].getAutore().equals(autore)){ app[k] = e[i]; k++; } return app; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Metodo maxPagine Il metodo maxPagine() prende in input l’array e (elenco libri) e restituisce l’indice dell’array che corrisponde al libro che presenta il maggior numero di pagine in e public static int maxPagine(Libro[] e){ int i,indMax,max; max = e[0].getPagine(); indMax = 0; for (i=1; i<e.length; i++){ if (e[i].getPagine()>max){ max = e[i].getPagine(); indMax = i; } return indMax; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti La classe test public static void testElencoLibri(){ Libro[] elencoLibri; //… elencoLibri = new Libro[10]; elencoLibri[0] = new Libro("Esopo","Le storie dell'asino",20); elencoLibri[1] = new Libro("Italo Calvino", "Il visconte dimezzato",158); elencoLibri[2] = new Libro("Esopo","Le storie del cane",20); elencoLibri[3] = new Libro("Esopo","Le favole piu' belle",98); elencoLibri[4] = new Libro("Giovanni Rodari","Filastrocche lunghe e corte",80); elencoLibri[5] = new Libro("Italo Calvino","le cosmicomiche",250); elencoLibri[6] = new Libro("Gianni Rodari","Enciclopedia della favola",1120); elencoLibri[7] = new Libro("Italo Calvino","Il barone rampante",135); elencoLibri[8] = new Libro("Fratelli Grimm","Raperonzolo",36); elencoLibri[9] = new Libro("Italo Calvino","Il cavaliere inesistente",124); stampaElenco(elencoLibri); System.out.println("il libro con il max. numero di pagine e':"); System.out.println(elencoLibri[maxPagine(elencoLibri)].toString()); //stampa l'elenco di libri con lo stesso autore System.out.println("stampa di tutti i libri di Italo Calvino"); stampaElenco(stessoAutore(elencoLibri,"Italo Calvino")); System.out.println("stampa di tutti i libri di Esopo"); stampaElenco(stessoAutore(elencoLibri,"Esopo")); System.out.println("stampa di tutti i libri di Wilde"); stampaElenco(stessoAutore(elencoLibri,"Oscar Wilde")); }//end test http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Esempi d’esecuzione… ==================================== ========== ELENCO LIBRI ============= AUTORE: Esopo TITOLO: Le storie dell'asino N. PAGINE: 20 il libro con il max. numero di pagine e': ==================================== ========== ELENCO LIBRI ============= AUTORE: Esopo TITOLO: Le storie dell'asino N. PAGINE: 20 AUTORE: Italo Calvino TITOLO: Il visconte dimezzato N. PAGINE: 158 TITOLO: Le storie del cane il libro con il max. numero di pagine e': http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti … Esempi d’esecuzione ==================================== =========== ELENCO LIBRI ============ AUTORE: Esopo TITOLO: Le storie dell'asino N. PAGINE: 20 AUTORE: Italo Calvino TITOLO: Il visconte dimezzato N. PAGINE: 158 TITOLO: Le storie del cane TITOLO: Le favole piu' belle N. PAGINE: 98 AUTORE: Gianni Rodari TITOLO: Filastrocche lunghe e corte N. PAGINE: 80 TITOLO: le cosmicomiche N. PAGINE: 250 TITOLO: Enciclopedia della favola N. PAGINE: 1120 TITOLO: Il barone rampante N. PAGINE: 135 AUTORE: Fratelli Grimm TITOLO: Raperonzolo N. PAGINE: 36 AUTORE: Italo Calvino TITOLO: Il cavaliere inesistente N. PAGINE: 124 il libro con il max. numero di pagine e': AUTORE: Gianni Rodari TITOLO: Enciclopedia della favola N. PAGINE: 1120 stampa di tutti i libri di Esopo ==================================== =========== ELENCO LIBRI ============ AUTORE: Esopo TITOLO: Le storie dell'asino N. PAGINE: 20 TITOLO: Le storie del cane TITOLO: Le favole piu' belle N. PAGINE: 98 stampa di tutti i libri di Italo Calvino ==================================== =========== ELENCO LIBRI ============ AUTORE: Italo Calvino TITOLO: Il visconte dimezzato N. PAGINE: 158 TITOLO: le cosmicomiche N. PAGINE: 250 TITOLO: Il barone rampante N. PAGINE: 135 TITOLO: Il cavaliere inesistente N. PAGINE: 124 stampa di tutti i libri di Wilde Press any key to continue . . . http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Aggiungere altri metodi alla classe GestioneLibro Supponiamo che, data una stringa che rappresenta il nome di un autore, si voglia calcolare l’elenco dei titoli relativi a quell’autore Si definisce un array di stringhe in cui vengono memorizzati solo i titoli dei libri di quell’autore: titoliAutore. Di che tipo è l’array? String[] titoliAutore Il metodo stampaElenco è ancora applicabile a questo array? NO, perché stampaElenco può essere solo applicato a un array di libri http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Il metodo titoliAutore public static String[] titoliAutore(Libro[] e, String autore){ int i,k; //k rappresenta la lunghezza del nuovo array String[] app; /* scorro l'array solo per calcolare il numero di libri che hanno l'autore richiesto e dimensionare app*/ k=0; for (i=0; i<e.length; i++) if (e[i].getAutore().equals(autore)) k++; /* creo l'array di k componenti */ app = new String[k]; /* scorro nuovamente l'array e per inserie in app i k libri che hanno l'autore richiesto */ k = 0; if (e[i].getAutore().equals(autore)){ app[k] = e[i].getTitolo(); } return app;} http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Aggiungere altri metodi alla classe Libro Supponiamo di voler modificare il numero di pagine di un libro, o il nome di un autore, ad esempio in una nuova edizione Bisogna definire dei metodi d’istanza che modificano un dato oggetto Libro Esempio: modifica del numero di pagine public void setPagine(int nuovoNum){ this.pagine = nuovoNum; } Esempio: modifica del nome dell’autore public void setAutore(String nuovoAutore){ this.autore = nuovoAutore; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su array di stringhe Dato un array di stringhe di caratteri alfanumerici, verificare che esiste almeno una stringa nell’array che sia costituita da tutti caratteri alfabetici maiuscoli Classe di test. Esempi: { } La verifica da esito negativo {“2100"} {“PIPPO"} la verifica da esito positivo perché esiste la stringa “PIPPO” {"Abcde00","ACCaEEbcde","ABC","pippO"} la verifica dà esito positivo perché esiste la stringa “ABC” {“2001“, “odissea”, “nello”, “spazio”} La verifica dà esito negativo http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Algoritmo Una verifica esistenziale su un insieme di elementi (stringhe dell’array) Almeno una stringa tutta di caratteri maiuscoli Ciascuno degli elementi deve soddisfare una verifica universale Data una stringa essa soddisfa la verifica se è composta da tutti caratteri maiuscoli http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Il metodo tutteMaiuscole public static boolean tutteMaiuscole(String s){ int i; boolean tutteMaiuscole; char c; verifica universale: inizialmente la variabile booleana è vera finché non trovo un elelmento della sequenza che non soddisfa la proprietà richiesta tutteMaiuscole = true; i = 0; while (i<s.length() && tutteMaiuscole){ c=s.charAt(i); if (!(c>='A'&& c<='Z')) tutteMaiuscole = false; i++; } return tutteMaiuscole; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti La classe di test public static void testTutteMaiuscole(){ String[] a; a = new String[]{}; System.out.println(almenoUnaTuttaMaiuscola(a) + " = FALSE"); System.out.println(); a = new String[]{"2100"}; a = new String[]{"PIPPO"}; System.out.println(almenoUnaTuttaMaiuscola(a) + " = TRUE"); a = new String[]{"Abcde00","ACCaEEbcde","ABC","pippO"}; a = new String[]{"2001", "odissea", "nello", "spazio"}; } http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Esempio d’esecuzione false = FALSE true = TRUE Press any key to continue . . . http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

…Schema generale della classe class TutteMaiuscole{ public static void main(String[] args){ testTuttiMaiuscoli(); } public static void testTutteMaiuscole(){ … System.out.println(almenoUnaTuttaMaiuscola(a) + " = FALSE"); public static boolean almenoUnaTuttaMaiuscola(String[] a){ public static boolean tutteMaiuscole(String s){ http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Esercizio Dato un array di stringhe di caratteri alfanumerici, verificare che esiste almeno una stringa nell’array che contiene un’alternanza di lettere (maiuscole o minuscole) e cifre Esempio: a7B8d9c0, 4o5k6w Classe di test. Esempi: { } La verifica da esito negativo {“2"} {“a”} {“P1”} La verifica da esito positivo {“a7B8d9c0"} {“A1B21C”} La verifica esito negativo {“4o5k6w”} La verifica esito positivo {“2",“a","A1B2C","pippo"} {“2",“a","A1BeC","pippo"} http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Schema generale della classe… Lo schema generale della classe AlternanzaLettereCifre è simile al precedente: Cambia il metodo per la verifica della proprietà, oltre ai test specifici di correttezza La proprietà, che è vera se nella stringa sono presenti in modo alternato lettere e cifre, che tipo di verifica comporta? Il metodo per la verifica esistenziale (sull’array) rimane invariato, a parte la chiamata del metodo specifico http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Il metodo per la verifica dell’alternanza di lettere e cifre Algoritmo: Una stringa di lunghezza 0 o 1 non presenta alternanze, quindi il metodo restituisce false Negli altri casi bisogna distingure se si parte con una cifra o con una lettera (maiuscola o minuscola) Se il primo carattere è una lettera allora Tutte le lettere si devono trovare in posizione d’indice pari nella stringa e tutte le cifre in posizione d’indice dispari Se il primo carattere è una cifra allora Tutte le lettere si devono trovare in posizione d’indice dispari nella stringa e tutte le cifre in posizione d’indice pari Inizialmente la variabile booleana è true e non appena una delle precedenti condizioni non è verificata diventa false e l’istruzione ripetitiva termina http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Il metodo alternanza… Casi particolari e inizializzazioni public static boolean alternanza(String s){ int i; boolean verifica; char c, primo; /* caso particolare lunghezza 0 o 1 */ if (s.length() == 0 || s.length() == 1) verifica = false; else { //caso generale /* verifica universale: inizialmente la variabile booleana e' true */ verifica = true; primo = s.charAt(0); http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

…Il metodo alternanza… Se il primo carattere è una lettera: /*se il primo carattere e' una lettera */ if ((primo>='a' && primo<='z') || (primo>='A' && primo<='Z')){ i=1; /* tutti gli indici pari devono essere lettere e tutti i dispari cifre */ while (i<s.length() && verifica){ c = s.charAt(i); if (i%2 == 0 && !( (c>='a' && c<='z') || (c>='A' && c<='Z'))) verifica = false; if (i%2 == 1 && !(c>='0' && c<='9')) i++; } http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

…Il metodo alternanza… Se il primo carattere è una cifra else /* il primo carattere e' una cifra */ if ((primo>='0' && primo<='9')) { i=1; /* tutti gli indici pari devono essere cifre e tutti i dispari lettere */ while (i<s.length() && verifica){ c = s.charAt(i); if (i%2 ==1 && !( (c>='a' && c<='z') || (c>='A' && c<='Z'))) verifica = false; if (i%2 ==0 && !(c>='0' && c<='9')) i++; } } //chiude il primo else return verifica; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Il metodo unaAlternanza Verifica esistenziale public static boolean unaAlternanza(String[] a){ int i; boolean trovata; //true se ho trovato una stringa con lettere e cifre /* verifica esistenziale: inizialmente la variabile booleana e' falsa: non appena trovo l'elemento che soddisfa la verifica, la varabile booleana diventa vera */ trovata=false; i = 0; while (i<a.length && !trovata){ if(alternanza(a[i])) trovata = true; } return trovata; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Il metodo di test public static void testAlternanza(){ String[] a; a = new String[]{}; System.out.println(unaAlternanza(a) + " = FALSE"); System.out.println(); a = new String[]{"2"}; a = new String[]{"a"}; a = new String[]{"P1"}; System.out.println(unaAlternanza(a) + " = TRUE"); a = new String[]{"a7B8d9c0"}; a = new String[]{"A1B21C"}; System.out.println(unaAlternanza(a) + " = FALSE"); a = new String[]{"4o5k6w"}; a = new String[]{"2","a","A1B2C","pippo"} ; a = new String[]{"2","a","A1BeC","pippo"} ; System.out.println();} http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti

Esercizi su Array e Oggetti Esempio d’esecuzione false = FALSE true = TRUE false = FALSE Press any key to continue . . . http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su Array e Oggetti