Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.

Slides:



Advertisements
Presentazioni simili
I Linguaggi di programmazione
Advertisements

Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Analisi e progettazione
Informatica Recupero debito quarto anno Terzo incontro.
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
PHP.
I linguaggi di programmazione
Sommario Nelle lezioni precedenti abbiamo introdotto tutti gli elementi che formano un particolare tipo di linguaggio logico, denominato linguaggio predicativo.
Analizzatori Lessicali con JLex
Tabelle LALR Costruzione delle tabelle LALR Metodo LALR Introduciamo lultimo metodo di costruzione di tabelle per il parsing LR Nome: lookahead-LR abbreviato.
L’Informatica dal Problema alla Soluzione
Biglietti: schema E/R.
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
Corso di Laurea in Biotecnologie Informatica (Programmazione)
OPEN OFFICE e IMPRESS Masucci Antonia Maria.
Linguaggi di markup1 LINGUAGGI DI MARKUP. Linguaggi di markup2 Documenti su Internet Internet permette (tra laltro) di accedere a documenti remoti In.
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
I File.
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per lambiente e il territorio Ambienti di programmazione Stefano Cagnoni e Monica Mordonini.
Daniel Stoilov Tesi di Laurea
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
I SISTEMI OPERATIVI.
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
ANTLR V.3 Renzi Alberto.
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
Linguaggi e Modelli Computazionali LS - Prof E.Denti
Algoritmi e Programmazione strutturata
CineMan Linguaggio per la descrizione della programmazione di cinema
S ::= Formazione Formazione ::= NomeSquadra Team NomeSquadra ::= Team ::= Schema Tabellino | Tabellino Schema ::= Difesa Tabellino ::= ElencoTitolari.
Linguaggio per la generazione di biglietti da visita
Gianfranco Zampolini Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.
PORRE E RISOLVEREPROBLEMI PORRE E RISOLVERE PROBLEMI il testo e i dati Vai avanti.
Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.
Linguaggi e modelli computazionali LS
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Corso di Laurea Specialistica in Ingegneria Informatica Previsione dei Consumi Elettrici = Progetto per lesame di Linguaggi e Modelli Computazionali LS.
Un linguaggio ed un interprete per il gioco Citadels
Progetto don’t you forget
Progetto Fireworks Simulatore di spettacoli pirotecnici
Tablabla Progetto di Valent Cristina
SQL File Manager un nuovo modo di gestire il filesystem….
Università degli Studi di Bologna Facoltà di Ingegneria Anno Accademico 2007/2008 Laurea Specialistica in Ingegneria Informatica Linguaggi e Modelli Computazionali.
Chess Game Visualizer Un interprete per Short Algebraic Notation Progetto per lesame di Linguaggi e modelli computazionali LS prof. Denti – A.A. 2007/08.
Linguaggi e modelli computazionali LS Manni Tiziano
Programma di Informatica Classi Prime
Commenti all’esempio del treno Nell’esempio del treno si è iniziato dalle attività generiche che tipicamente servono per portare a termine i compiti iniziali.
ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
Lezione 3 Struttura lessicale del linguaggio
Realizzato dagli stagisti media educator Per creare un utente andate su Amministrazione del sito -> Utenti -> Profili -> Nuovo utente. L'username.
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
IV D Mercurio DB Lezione 2
Microsoft Access Chiavi, struttura delle tabelle.
DRAUGHTS Linguaggi e Modelli Computazionali LS Linguaggio e interprete per effettuare una partita di dama inglese contro un’intelligenza artificiale Progetto.
Giannicola Spezzigu Accordo: sovrapposizione di 3 o più suoni Ogni sigla denota un accordo, ossia i suoni da cui esso è formato Accordi e.
Trading EToro Un linguaggio per descrivere e gestire operazioni di borsa Progetto di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Mancini Laura.
Progetto di Linguaggi e modelli computazionali M Prof. Enrico Denti Progetto di: Francesco Paci.
DerIntCalculator La calcolatrice per integrali e derivate Progetto di Linguaggi e Modelli Computazionali M Prof. Enrico Denti Realizzato da: Gabriella.
Linguaggi e Modelli Computazionali LS Anno Accademico 2007/2008 Alessio Della Motta Un linguaggio per descrivere partite di Maraffone: il gioco più popolare.
CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.
Concetti Fondamentali sulla Programmazione
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
CORSO DI ALFABETIZZAZIONE INFORMATICA ORIENTATO A INTERNET E ALLA PIATTAFORMA NOVARETE DIREZIONE DIDATTICA VI CIRCOLO NOVARA USABILITA’ E ACCESSIBILITA’
Microsoft Access (parte 3) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Le basi di dati.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
Le modalità attraverso le quali gli utenti interagiscono con il computer A cura di Eleonora Bilotta.
Transcript della presentazione:

Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano Landi Prof. Enrico Denti Anno Accademico

Scopo del progetto Definire un linguaggio che possa essere di aiuto nella descrizione e nella valutazione di itinerari aerei Aiutare lutente: tramite opportuni controlli, a specificare correttamente e logicamente tutti i dati a scegliere quindi il volo migliore per le sue esigenze

Il problema Vi sono oggigiorno compagnie che si definiscono point-to-point, ovvero che non permettono di pianificare voli con scalo, ma forniscono solo il supporto per lacquisto di biglietti per voli singoli Il proliferare delle compagnie low cost ha fatto sì che lutente possa voler pianificare un itinerario con voli di diverse compagnie (e i siti delle compagnie non permettono gli incroci tra di loro!)

Il problema Volando in aereo ci si trova ad avere a che fare con: fusi orari diversi valute diverse (dipendenti dallo stato) possibilità di scali in città diverse (quello che interessa generalmente allutente è da dove si parte e dove si arriva, non le fermate intermedie!) possibilità di voli diretti o con uno o più scali prezzi molto diversi a seconda del giorno, della compagnia… costi tipicamente distinti per prezzo base e tasse tempi di percorrenza totali molto diversi dipendenti da numero di scali, tragitti, tempi intermedi di attesa in aeroporto…

Grammatica Utilizzo la notazione dello strumento jjdoc G = P è linsieme di tutte le produzioni della grammatica Il mio fine è descrivere e valutare un viaggio aereo, e di conseguenza la grammatica ha come scopo proprio: Scopo::= Viaggio: Viaggio

Grammatica Viaggio::= ( Possibilita: Possibilita )* Da notare la presenza dell * => del fatto che ci possano essere 0…N possibilità di viaggio => che non ce ne siano affatto! La grammatica accetta senza problemi la frase Viaggio:. Questo non genera incoerenza: tutto avviene correttamente, semplicemente le soluzioni valutate saranno zero. … daltra parte un programma scritto in C o in Java con un Main vuoto cosa fa? … nulla, ma funziona benissimo! Allo stesso modo il mio valutatore, se non vengono fornite possibilità da valutare, non dà nessun errore ma logicamente non fa nulla e non fornisce alcun risultato! Daltra parte ci potremmo immaginare uno strumento automatico di generazioni di frasi, da poi valutare, per esempio a partire da un db: se non vi fossero possibilità nel db corrispondenti alle scelte dellutente (in input per esempio da interfaccia grafica), verrebbe generata solo la frase Viaggio:.

Grammatica Possibilita::= { ( Volo: Volo )+ } Notare il + : una possibilità di itinerario produce 1…N voli: non ha infatti senso in questo caso prevedere una possibilità senza voli. Se esiste una possibilità, ci deve essere almeno un volo. Niente self embedding: una e una sola parentesi graffa prima, una e una sola dopo: nessun livello di nesting di cui tenere conto.

Grammatica Volo::= [ Codice: Partenza: Partenza Arrivo: Arrivo Costo: Costo] Partenza::= ( Data: Ora: Fuso: Luogo: ) Lespansione del VN Arrivo è analoga a quella della Partenza : le ho lasciate differenziate per questione di ordine e di leggibilità Ammetto anche numeri nel luogo: considero valida anche luoghi come città1 (utilizzabili per prove o debug)

Grammatica Costo::= ( Prezzo: Tasse: Valuta: ) Grammatica rigida: i numeri vanno espressi forzatamente con due decimali. Daltra parte questa è lusanza tipica di molte valute. Infatti siamo abituati ai centesimi per gli Euro, per la sterlina, per i Dollari… Ipotizzo (ragionevolmente) che il prezzo e le tasse di un volo siano espresse nella stessa valuta

Grammatica – Token ::= "-" "-" ::= ":" ::= ("+" | "-") (("0" ) | "10" | "11" | "12" ) ::= ("-EUR-" | "-GBP-" |"-USD-"| "-LTL-") ::= (( ( )*) | "0") "." ::= ( | )+

Grammatica – Token ::= ["0"-"9"] ::= ["1"-"9"] ::= ["a"-"z", "A"-"Z", "_"] Le espansioni che iniziano con # sono interne al mondo dei token e non interessano le produzioni, che non le vedono non le possono utilizzare.

Grammatica - osservazioni La grammatica è volutamente abbastanza rigida (richiede di scrivere ogni volta Codice:, Partenza:, Ora:, Luogo:, …): questo perché intendevo dare una struttura che facilitasse non solo la lettura automatica ma anche umana di una frase del linguaggio Per quello che riguarda i token ho voluto intenzionalmente essere restrittivo nel modo di specificare date e orari: questo impone una attenzione maggiore da parte dellutente nello scrivere le frasi, ma aiuta lindividuazione di errore da parte del programma

Grammatica - osservazioni La grammatica comprende la stringa vuota nella seconda produzione (quella che contiene in EBNF il simbolo *: un viaggio può produrre da 0 a N possibilità), ma questa può essere eliminata con una semplice manipolazione algebrica Scopo::= Viaggio: Viaggio Viaggio::= ( Possibilita: Possibilita )*

Grammatica - osservazioni Infatti possiamo facilmente vedere come: Scopo::= Viaggio: Viaggio Viaggio::= ( Possibilita: Possibilita )* equivale a Scopo::= Viaggio: (Viaggio)? Viaggio::= ( Possibilita: Possibilita )+

Grammatica - osservazioni Utilizzando la BNF non Extended possiamo vedere come la -rule possa essere eliminata Scopo::= Viaggio: Viaggio Viaggio::= Possibilita: Possibilita Viaggio | che equivale a Scopo::= Viaggio: Viaggio | Viaggio: Viaggio::= Possibilita: Possibilita Viaggio | Possibilita: Possibilita

Grammatica - osservazioni Il linguaggio è di tipo 3 ma, secondo la classificazione di Chomsky, la grammatica è di tipo 2 in quanto le produzioni non sono regolari grammatica di tipo 2 + assenza di self-embedding => il linguaggio è regolare la grammatica non è stata riscritta per leggibilità la grammatica è LL(1)

Strumenti utilizzati Java 1.6 JavaCC 4.0 Java Tree Builder NetBeans 5.5

Architettura packages creati e imposti dagli strumenti automatici utilizzati packages creati seguendo il modello architetturale dato dagli strumenti automatici

Architettura syntaxtree contiene quanto necessario allalbero sintattico una serie di classi relative ai nodi una classe per ogni metasimbolo della grammatica parser contiene quanto serve per la gestione del parser classi per il parser e per i token per la gestione delle eccezioni e degli errori lessicali visitor contiene vari visitor di default generati dallo strumento automatico (presenti ma non sfruttati durante lesecuzione) il visitor ItinerarioVisitor che si occupa della valutazione dellalbero: controlla la coerenza dei dati e fornisce loutput

Architettura main contiene solo il (brevissimo) file di lancio dellapplicazione grafica contiene quando relativo allinterfaccia grafica e alla gestione degli eventi e di quanto compete linterfaccia utility contiene alcune classi atte a semplificare la gestione dei dati inseriti nellalbero sintattico e metodi sfruttati nella valutazione da parte del visitor e nella successiva visualizzazione in output esplicitati solo i metodi principali! eseguono i controlli della coerenza dei dati inseriti (orari compatibili, città degli scali corrette…)

Linterfaccia grafica

Limiti dellapplicazione e sviluppi futuri Lapplicazione non esegue alcun controllo tra le città e i fusi orari inseriti in input: per fare ciò sarebbe infatti necessario avere una enorme tabella con tutte le corrispondenze Le valute possibili utilizzabili sono poche, date solo a titolo di esempio: per una funzionalità completa ne andrebbero inserite molte altre I possibili sviluppi futuri potrebbero andare in varie direzioni: pianificazione di itinerari con andata e ritorno ordine dei voli in output fornito sulla base di più parametri o con parametri secondari (es: visualizzazione per numero di scali e, in caso parità, anche di costo) si potrebbe consentire il confronto anche tra voli con città di partenza e/o di arrivo diverse, purché nel raggio di un certo numero di Km ulteriori opzioni di visualizzazione o di controllo