Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

Stringhe di caratteri In linguaggio C.
PROGRAMMARE IN PASCAL (le basi)
Dipartimento di Matematica
Algoritmi e Programmazione
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
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 II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
Tail recursion: esempio
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)
CORSO DI PROGRAMMAZIONE II
Introduzione alla programmazione lll
Array Struttura numerate di dati. Memorizzare molti dati In informatica cè spesso bisogno di memorizzare ed elaborare un insieme costituito da molti dati.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Java base I: Sintassi e tipi di dati
4 Tipi di dati & variabili
Biologia Computazionale - Algoritmi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
BIOINFO3 - Lezione 221 Listruzione IF-ELSE prevede un secondo blocco di istruzioni da eseguire in alternativa al primo nel caso la condizione sia falsa.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Lezione 3 Struttura lessicale del linguaggio
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Introduzione a Javascript
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Programmazione in Java
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
Liste di Interi Esercitazione. Una variante Liste concatenate di Integers Non modificabile Costruttori per creare la lista vuota o un nodo Metodi d’istanza.
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.
1 Le s-espressioni. 2  Sexpr 4 alberi binari (possibilmente “vuoti”) che hanno sulle foglie atomi (stringhe) 4 sono la struttura dati base del linguaggio.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
1 Un esempio con iteratore: le liste ordinate di interi.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
ADT 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 24 Introduzione ai.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Cicli e Array. 2 Costrutto while while(espressione) { … } Il codice dentro le parentesi graffe viene eseguito finché la condizione è vera Potrebbe non.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
10. Programmazione Ricorsiva Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E10 Esercizi su Array di Stringhe A. Miola Gennaio 2012 http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

Problema su array di stringhe . . . Dato un array di stringhe, verificare che esiste almeno una stringa nell’array che sia costituita da tutti caratteri alfabetici maiuscoli Ad esempio {"2100"}; {"PIPPO"}; {"Ab4cd7e00","ABC","pippO"}; {"2001", "odissea", "nello", "spazio"}; {"2001", “ODISSEA", "nello", “SPAZIO"}; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

. . . Problema su array di stringhe Per risolvere il problema devo di fatto verificare che un dato array appartenga allo specifico “linguaggio degli array di stringhe, con almeno una stringa nell’array che sia costituita da tutti caratteri alfabetici maiuscoli” Assumo che l’array sia non nullo e non vuoto e che i suoi elementi-stringhe siano non nulle e non vuote Definisco quindi la grammatica per quel linguaggio Definisco una serie di metodi ciascuno dei quali serve a verificare una delle regole di produzione della grammatica http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

La grammatica . . . Linguaggio degli array di stringhe, con almeno una stringa nell’array che sia costituita da tutti caratteri alfabetici maiuscoli Il lessico V = Insieme di tutti i caratteri Unicode I simboli non terminali N = {<array> , <seq-stringhe-inz> , <seq-stringhe-fin> , <stringa>, <carattere-unicode>, <stringa-tipoA> , <maiuscola> } http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

. . . La grammatica . . . Il simbolo iniziale S = <array> Le regole di produzione <array> ::= {<seq-stringhe-iniz> <stringa-tipoA> <seq-stringhe-fin> } <seguenza-stringhe-iniz> ::= { <stringa> , }h <seguenza-stringhe-fin> ::= { , <stringa> }k Nota : con h + k + 1 = n, se n è la dimensione dell’array . . . http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

. . . La grammatica . . . <stringa> ::= <carattere-unicode> { <carattere-unicode> } <carattere-unicode> ::= uno dei caratteri unicode <stringa-tipoA> ::= <maiuscola> {<maiuscola>} < maiuscola > ::= A | B | ... | Y | Z http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

Soluzione del problema su array di stringhe . . . Scrivere un metodo boolean maiuscola(char c) che, dato un carattere c, verifica se il carattere è una lettera maiuscola, cioè se (c >= ‘A’ && c <= ‘Z’) Il metodo di fatto verifica la regola di produzione < maiuscola > ::= A | B | ... | Y | Z public static boolean maiuscola(char c){ return (c >= ‘A’ && c <= ‘Z’); } boolean ris; if (c >= ‘A’ && c <= ‘Z’) ris = true else ris = false; return ris} http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

. . . Soluzione del problema su array di stringhe . . . Scrivere un metodo boolean stringaTipoA(String s) che, data una stringa s, verifica se la stringa s è una stringa di tipo A Il metodo di fatto verifica la regola di produzione <stringa-tipoA> ::= <maiuscola> {<maiuscola>} cioè verifica se tutti i suoi caratteri sono lettere maiuscole, cioè quelli per cui il metodo maiuscola ritorna true si tratta di una verifica universale http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

. . . Soluzione del problema su array di stringhe Scrivere un metodo boolean almenoUnaStringaTipoA(String[ ] a) che, dato un array di stringhe a, verifica se almeno una stringa sia del tipo A Il metodo di fatto verifica la regola di produzione <array> ::= {<seq-stringhe-iniz> <stringa-tipoA> <seq-stringhe-fin> } cioè verifica se almeno una stringa abbia tutti i suoi caratteri lettere maiuscole, cioè una stringa per cui il precedente metodo stringaTipoA ritorna true si tratta di una verifica esistenziale Scrivere una classe applicazione per i test di ciascuno dei metodi precedenti http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

RICORDIAMOCI - Verifica esistenziale … Bisogna determinare se una sequenza di elementi contiene almeno un elemento che soddisfa una certa proprietà In altre parole: si vuole verificare che in una sequenza di elementi a1,…, an esiste almeno un elemento che verifica una data proprietà p cioè che  i {1,..,n}, p(ai) = true http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

… RICORDIAMOCI - Verifica esistenziale … Viene usata una variabile booleana che indica se la sequenza contiene almeno un elemento che soddisfa la proprietà Inizialmente si assegna alla variabile booleana un valore che indica convenzionalmente che la sequenza non contiene nessun elemento che soddisfa la proprietà (false) A partire dal primo elemento della sequenza si verifica se l’elemento corrente soddisfa la proprietà se l’elemento corrente soddisfa la proprietà, allora si assegna alla variabile booleana un valore che indica convenzionalmente che la sequenza contiene almeno un elemento che soddisfa la proprietà (true) Quando si trova un elemento che soddisfa la proprietà ci si ferma (non ha senso esaminare oltre perché il problema è risolto) http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

… RICORDIAMOCI - Schema risolutivo boolean proprietaSoddisfatta; // almeno un elemento // soddisfa la proprietà proprietaSoddisfatta = false; ... altre eventuali inizializzazioni ... finche’ non trovo un elemento che soddisfa la proprieta’ while (!proprietaSoddisfatta && sequenza non terminata) { ... accedi al prossimo elemento ... if (l’elemento corrente soddisfa la proprietà) proprietaSoddisfatta = true; } ... altre elaborazioni ... usare un nome opportuno per la variabile booleana http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

RICORDIAMOCI - Verifica universale … Un problema di verifica universale consiste nel verificare se tutti gli elementi di una sequenza a1,…, an soddisfano una certa proprietà p una variante (duale) dei problemi di verifica esistenziale In altre parole: Un problema di verifica universale è soddisfatto, se tutti gli elementi verificano una data proprietà p:  i  {1,..,n}, p(ai) = true Oppure un problema di verifica universale non è soddisfatto se esiste almeno un elemento che non verifica p:  i  {1,..,n}, p(ai) = false La verifica universale si può sempre ricondurre alla verifica esistenziale http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

… RICORDIAMOCI - Verifica universale … Un problema di verifica universale può essere sempre ricondotto a un problema di verifica esistenziale il problema diventa quello di verificare se non esiste alcun elemento della sequenza che non soddisfa la proprietà inizialmente si assegna alla variabile booleana un valore che indica convenzionalmente che tutti gli elementi della sequenza soddisfano la proprietà (true) per ogni elemento della sequenza, si verifica se l’elemento corrente non soddisfa la proprietà se l’elemento corrente non soddisfa la proprietà, allora si assegna alla variabile booleana un valore che indica convenzionalmente che non tutti gli elementi della sequenza soddisfano la proprietà (false) http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

… RICORDIAMOCI - Schema risolutivo boolean proprietaSoddisfatta; /* assumo che tutti gli elementi soddisfano la proprieta’ */ proprietaSoddisfatta = true; ... altre inizializzazioni ... finche’ non trovo un elemento che non soddisfa la proprieta while (proprietaSoddisfatta && la sequenza non e’ finita){ ... accedi al prossimo elemento ... if (l’elemento corrente non soddisfa la proprietà) proprietàSoddisfatta = false; } ... altre elaborazioni ... usare un nome opportuno per la variabile booleana http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

TORNIAMO ALLA - Soluzione del problema su array di stringhe Scrivere un metodo boolean stringaTipoA(String s) che, data una stringa s, verifica se la stringa s è una stringa di tipo A Il metodo di fatto verifica la regola di produzione <stringa-tipoA> ::= <maiuscola> {<maiuscola>} cioè verifica se tutti i suoi caratteri sono lettere maiuscole, cioè quelli per cui il metodo maiuscola ritorna true si tratta di una verifica universale http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

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

TORNIAMO ALLA - Soluzione del problema su array di stringhe Scrivere un metodo boolean almenoUnaStringaTipoA(String[ ] a) che, dato un array di stringhe a, verifica se almeno una stringa sia del tipo A Il metodo di fatto verifica la regola di produzione <array> ::= {<seq-stringhe-iniz> <stringa-tipoA> <seq-stringhe-fin> } cioè verifica se almeno una stringa abbia tutti i suoi caratteri lettere maiuscole, cioè una stringa per cui il precedente metodo stringaTipoA ritorna true si tratta di una verifica esistenziale http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

Il metodo stringaTipoA public static boolean almenoUnaStringaTipoA(String[] a){ int i; boolean almenoUna; /* verifica esistenziale: inizialmente la variabile booleana e' falsa: non appena trovo l'elemento che soddisfa la verifica, la varabile booleana diventa vera */ almenoUna = false; i = 0; while (!almenoUna && i<a.length ) { if (stringaTipoA(a[i]) ) almenoUna = true; i++; } return almenoUna ; http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

Problema su array di stringhe Dato un array di stringhe, verificare che tutte le stringhe dell’array contengono almeno una coppia di lettere maiuscole adiacenti Per risolvere il problema devo di fatto verificare che un dato array appartenga allo specifico “linguaggio degli array di stringhe, con tutte le stringhe dell’array contengono almeno una coppia di lettere maiuscole adiacenti” Assumo che l’array sia non nullo e non vuoto e che i suoi elementi-stringhe siano non nulle e non vuote Definisco quindi la grammatica per quel linguaggio Definisco una serie di metodi ciascuno dei quali serve a verificare una delle regole di produzione della grammatica http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

La grammatica . . . Linguaggio degli array di stringhe, con tutte le stringhe dell’array contenenti almeno una coppia di lettere maiuscole adiacenti Il lessico V = Insieme di tutti i caratteri Unicode I simboli non terminali N = {<array> , <carattere-unicode>, <stringa-tipoB> , <maiuscola> } Il simbolo iniziale S = <array> . . . http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

. . . La grammatica . . . Le regole di produzione <array> ::= { <stringa-tipoB> } | { <stringa-tipoB> { , < stringa-tipoB > }n-1 } <stringa-tipoB> ::= { <carattere-unicode> } <maiuscola> <maiuscola> {< carattere-unicode >} <carattere-unicode> ::= uno dei caratteri unicode < maiuscola > ::= A | B | ... | Y | Z http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array

Soluzione del problema su array di stringhe Scrivere tutti i metodi necessari AUGURI ! http://www.dia.uniroma3.it/~java/fondinf/ Esercizi su array