RICONOSCIMENTO DI SEQUENZE DI EVENTI

Slides:



Advertisements
Presentazioni simili
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F1 Primi programmi.
Advertisements

I tipi Strutturati.
INFORMATICA Altre Istruzioni di I/O
Sistema operativo MS-DOS
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Linguaggi algoritmici
Unità G3 Algoritmi notevoli. Ordinamento Un insieme di dati {a0, a1, a2, …, an} si dice ordinato in ordine crescente se a0 a1 a2 a3 … an I dati sono generalmente.
Stringhe di caratteri In linguaggio C.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
ALGORITMI Un algoritmo (detto anche procedura, prescrizione, processo, routine, metodo) è un insieme di regole (dette anche direttive o istruzioni) che,
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
RICERCA IN UN VETTORE.
RICERCA IN UN VETTORE. Metodi basati sul confronto di chiavi Si confrontano gli elementi del vettore V con lelemento (chiave K) che si vuole ricercare.
Fondamenti di Informatica
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Iterazione enumerativa (for)
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 29/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Corso di Informatica (Programmazione)
Introduzione agli stream e alle classi
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
I File.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX AWK Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Vettori e Funzioni 3 Maggio Esercizio 1 Si scriva un programma in linguaggio C che, dopo aver acquisito il contenuto di un vettore di interi da.
Algoritmi e diagrammi di flusso
4 Tipi di dati & variabili
Biologia Computazionale - Algoritmi
Dall’algoritmo al programma.
Algoritmi di String Matching
PROGRAMMAZIONE: linguaggi
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Massimo Comun Divisore
Un esempio: Calcolo della potenza n-esima di un numero reale
Programmazione di Calcolatori
Programmazione Strutturata
Introduzione a Javascript
La ricorsione.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Operatori di incremento e decremento
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
Algoritmi.
Interpreti e compilatori
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Stringhe In linguaggio C. Stringhe  Un insieme di caratteri in sequenza forma una stringa.  Alcuni linguaggi definiscono per le stringhe uno specifico.
Algoritmi e Strutture Dati
GLI ALGORITMI DI ORDINAMENTO
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Il computer ragiona? Problemi e algoritmi. Paola Pianegonda2 Cos’è un problema?  Problema è qualsiasi situazione della quale non conosciamo la soluzione.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Suggerimenti [1d5] SE la prima lettera della matrice (in alto a sinistra, matrice[0,0]) è diversa dalla prima lettera della parola (parola[0]) ALLORA siamo.
MASSIMO COMUNE DENOMINATORE (M.C.D)
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

RICONOSCIMENTO DI SEQUENZE DI EVENTI

Il problema Realizzare un algoritmo per identificare in una sequenza di caratteri provenienti da un dispositivo d’input e di lunghezza non nota a priori la parola SUN, in qualunque contesto si trovi.

Una soluzione Il problema potrebbe essere ricondotto al riconoscimento di stringhe: si memorizza in un vettore di caratteri una parte della sequenza d’input e poi, a partire dalla prima posizione del vettore, si effettua il confronto tra una sottostringa lunga 3 caratteri e la parola di riferimento (SUN).

Se sono uguali si dichiara di aver trovato la parola cercata. Si procede così di seguito, avanzando ogni volta di una posizione, finché ci sono abbastanza caratteri nel vettore. Esauriti i caratteri del vettore di supporto, se ne caricano altri dal dispositivo di input.

Prima però si devono trasferire in testa al vettore gli ultimi due caratteri della sequenza precedente: potrebbero infatti contenere l’inizio della parola. Si preferisce adottare un altro approccio, comune a tutti i casi in cui occorre riconoscere sequenze di eventi.

La macchina a stati L’idea è quella di analizzare un elemento per volta (in questo caso, un carattere per volta) e di memorizzare in una apposita variabile, denominata stato_corrente, la condizione in cui ci si trova. Si svolge l’analisi di quanto può succedere aiutandosi con un disegno (diagramma a stati o pallogramma) e con una sequenza di caratteri qualsiasi, ideata in modo da contemplare tutti i casi possibili, come la seguente:

“QUESTO E’ UN TESTO DI COLLAUDO, CONTIENE SUN MA ANCHE SU E SSUN E ANCORA SUSUN NONCHE’ SUNSUN, CIOE’ DUE STRINGHE SUN CONSECUTIVE”.

All’inizio si suppone di essere in uno stato chiamato stato_iniz, e si analizzano i caratteri uno per volta, man mano che arrivano. Fin quando si ricevono caratteri diversi da ‘S’, si resta nello stesso stato stato_iniz. Quando arriva il carattere ‘S’, si passa ad un nuovo stato chiamato stato_s.

ALTRI CARATTERI ‘S’ STATO_S STATO_INIZ START

In stato_s, si verifica se arriva il carattere ‘U’, nel qual caso si passa allo stato stato_u. Se il carattere che arriva non è ‘U’, controllo che non sia ‘S’, nel qual caso si resta in stato_s (ci si trova in una situazione del tipo ...SSUN...). In tutti gli altri casi si è trattato di un falso allarme e si torna a stato_iniz.

STATO_S STATO_INIZ START ALTRI CARATTERI ‘S’ ‘S’ STATO_U ‘U’

In stato_u, se arriva ‘N’, si va in stato_fin, in cui si dichiara di aver riconosciuto la parola SUN; se invece arriva ‘S’, si torna in stato_s (situazione del tipo ...SUSUN...), mentre in tutti gli altri casi si torna a stato_iniz e si continua l’analisi fino all’esaurimento dei caratteri in input.

ALTRI CARATTERI ‘S’ ‘S’ ‘U’ ‘N’ START STATO_INIZ STATO_S STATO_U STATO_FIN ‘S’ ALTRI CARATTERI ALTRI CARATTERI

Se interessa riconoscere la parola SUN una sola volta, quando si raggiunge stato_fin si termina; altrimenti si fa coincidere stato_fin con stato_iniz e si continua.

STATO_INIZ START ALTRI CARATTERI ‘S’ STATO_S STATO_U ‘U’ ‘N’ : PAROLA RICONOSCIUTA

Si considera quest’ultimo caso, in modo che l’algoritmo tratti correttamente situazioni come ...SUNSUN..., identificando due occorrenze della stringa SUN. Nella realizzazione dell’algoritmo, si utilizza il costrutto switch (o, in alcuni linguaggi, il costrutto case) in sostituzione della cascata di if necessaria per analizzare il contenuto di stato_corrente.

Algoritmo Pongo il valore STATO_INIZ in stato_corrente Finché ci sono caratteri leggo un carattere in carat switch su stato_corrente caso STATO_INIZ: se carat = ‘S’ pongo il valore STATO_S in stato_corrente

caso STATO_S: se carat = ‘U’ pongo il valore STATO_U in stato_corrente altrimenti se carat ’S’ pongo il valore STATO_INIZ in stato_corrente

Fine. caso STATO_U: se carat = ‘N’ visualizzo “Parola riconosciuta” pongo il valore STATO_INIZ in stato_corrente altrimenti se carat = ‘S’ pongo il valore STATO_S in stato_corrente Fine.