La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linguaggi e Modelli Computazionali a.a. 2009/2010 Docente: Studente: Enrico Denti Gabriele Morlini FantaGenius.

Presentazioni simili


Presentazione sul tema: "Linguaggi e Modelli Computazionali a.a. 2009/2010 Docente: Studente: Enrico Denti Gabriele Morlini FantaGenius."— Transcript della presentazione:

1 Linguaggi e Modelli Computazionali a.a. 2009/2010 Docente: Studente: Enrico Denti Gabriele Morlini FantaGenius

2 FantaGenius: Lo scopo Lo scopo di questa applicazione è aiutare il giocatore di Fantacalcio nelle attivita di routine, evitando di analizzare diverse pagine di quotidiani e siti internet, alla ricerca delle informazioni necessarie per essere vincenti in questo gioco. L'applicazione deve fornire quindi le informazioni reperite dai siti web, in maniera comoda per il giocatore attraverso un interfaccia grafica, e aiutarlo nelle decisioni. Ma cosè il fantacalcio? Un breve accenno..

3 FantaGenius: Cosè il Fantacalcio Il Fantacalcio è un gioco nel quale un gruppo di persone si sfidano con le proprie fantasquadre. Una fantasquadra è composta da 25 giocatori della serie A di squadre anche diverse. Le fantasquadre si affrontano in un campionato parallelo a quello della serie A. Le fantasquadre si affrontano in una serie di partite,per ognuna delle quali bisogna creare una formazione, in cui vince chi fa il punteggio più alto. Il punteggio della formazione schierata è determinata dalla somma dei voti assegnati in pagella dai quotidiani e dai punti "bonus" e "malus".

4 FantaGenius: Le attivà di routine Prima di ogni giornata di campionato bisognava: –Conoscere le formazioni probabili, per sapere chi gioca o meno. –Conoscere le medie dei voti dei giocatori, per scegliere i giocatori migliori –Creare una formazione. Dopo ogni giornata di campionato bisognava: –Calcolare il punteggio di una partita fra due formazioni. –Dal punteggio ricavare il risultato.

5 FantaGenius: Obiettivi Realizzare un parser in grado di prima di tutto di riconoscere una pagina web già esistente, fornendo solo le informazioni interessanti allinterprete, organizzandole in maniera adeguata, in una insieme di nodi/classi legate fra di loro. Realizzare un interprete in grado di utilizzare le informazioni fornite sotto forma di classi, per aiutare lutente nelle attività di routine,attraverso una comoda interfaccia grafica.

6 FantaGenius: Linguaggi I linguaggi studiati quindi nel corso della realizzazione di questa applicazione, si riconducono all HTML (HyperText Markup Language). Al fine di poter estrarre le informazioni dalle pagine, sono state realizzate delle grammatiche che riconoscono i tipi e la posizione dei tag Html. Ogni grammatica può essere divisa in 2 parti: – Una parte condivisa per riconoscere gli elementi costitutivi di un documento HTML. – Una parte specifica per riconoscere le informazioni utili.

7 FantaGenius: I siti internet Le pagine web da cui si è partiti per scrivere le grammatiche: Per le formazioni probabili –www.fantagazzetta.com/probabili-formazioni-serie-a.aspwww.fantagazzetta.com/probabili-formazioni-serie-a.asp Per conoscere le medie dei voti dei giocatori, per scegliere i giocatori migliori: –www.fantagazzetta.com/statistiche_portieri.aspwww.fantagazzetta.com/statistiche_portieri.asp –www.fantagazzetta.com/statistiche_difensori.aspwww.fantagazzetta.com/statistiche_difensori.asp –www.fantagazzetta.com/statistiche_centrocampisti.aspwww.fantagazzetta.com/statistiche_centrocampisti.asp –www.fantagazzetta.com/statistiche_attaccanti.aspwww.fantagazzetta.com/statistiche_attaccanti.asp Per i voti dei giocatori per il calcolo del punteggio di una partita. –http://www.pianetafantacalcio.it/Voti_Ufficiali.asphttp://www.pianetafantacalcio.it/Voti_Ufficiali.asp

8 FantaGenius: Le grammatiche Le grammatiche: Per le formazioni probabili: –www.fantagazzetta.com/probabili-formazioni-serie-a.aspwww.fantagazzetta.com/probabili-formazioni-serie-a.asp Per conoscere le medie dei voti dei giocatori, per scegliere i giocatori migliori: –www.fantagazzetta.com/statistiche_portieri.aspwww.fantagazzetta.com/statistiche_portieri.asp –www.fantagazzetta.com/statistiche_difensori.aspwww.fantagazzetta.com/statistiche_difensori.asp –www.fantagazzetta.com/statistiche_centrocampisti.aspwww.fantagazzetta.com/statistiche_centrocampisti.asp –www.fantagazzetta.com/statistiche_attaccanti.aspwww.fantagazzetta.com/statistiche_attaccanti.asp Per i voti dei giocatori per il calcolo del punteggio di una partita. –http://www.pianetafantacalcio.it/Voti_Ufficiali.asphttp://www.pianetafantacalcio.it/Voti_Ufficiali.asp StatPortGrammar.jj ProbFormGrammar.jj VotiGrammar.jj StatGiocGrammar.jj

9 Le grammatiche: la parte comune La parte comune si tratta principalmente dello scanner che riconosce i tag HTML e li fornisce sottoforma di token al parser, e alcune produzioni della grammatica. TOKEN: ::= ["0"-"9"] ::= | ["a"-"z"] | ["A"-"Z"] | "!" | "?" | ":" | "_"| "=" | "/" | "\"" | "\\" | "-" | ";" | "(" | ")" | "{" | "}" | "[" | "]" | "+" | "&" | "|" | "*" | "#" | "%" | "." | ","| "\'" | | "\u00c3\u00a8" | … e atri caratteri particolari...> ::= ( | " ")*> | " ")* "\'">

10 Le grammatiche: la parte comune La parte comune si tratta principalmente dello scanner che riconosce i tag HTML e li fornisce sottoforma di token al parser, e alcune produzioni della grammatica. TOKEN: ::= " ::= " " " ::= "/>" | ">"

11 Le grammatiche: la parte comune La parte comune si tratta principalmente dello scanner che riconosce i tag HTML e li fornisce sottoforma di token al parser, e alcune produzioni della grammatica. TOKEN: ::= " ">" ::= " " ::= " ">" | " " ::= " " ::= " ">" | " " ::= " " e così via per tutti i possibili tag HTML...

12 Le grammatiche: la parte comune La parte comune si tratta principalmente dello scanner che riconosce i tag HTML e li fornisce sottoforma di token al parser, e alcune produzioni della grammatica. SCOPO: Html_page ::= Html_comment Html_HEAD Html_BODY

13 Le grammatiche: la parte comune La parte comune si tratta principalmente dello scanner che riconosce i tag HTML e li fornisce sottoforma di token al parser, e alcune produzioni della grammatica. PRODUZIONI: Html_HEAD ::= ( Html_head_element )* Html_head_element ::= | | | Html_script| Html_comment Html_BODY ::=( Html_body_element )* Html_body_element::=Html_comment | Html_href | Html_form | Html_ul | Html_table| Html_script | | | Html_div |...e molti altri..

14 Le grammatiche: la parte comune La parte comune si tratta principalmente dello scanner che riconosce i tag HTML e li fornisce sottoforma di token al parser, e alcune produzioni della grammatica. PRODUZIONI: Html_img::= ( )+ Html_strong::= ( | | Html_img | Html_href | )* Html_href::= ( | Html_strong | Html_img )* Html_span::= ( | | | Html_img | Html_strong )*....E così via per tutti gli altri possibili elementi Html...

15 Le grammatiche: la parte comune La parte comune si tratta principalmente dello scanner che riconosce i tag HTML e li fornisce sottoforma di token al parser, e alcune produzioni della grammatica. PRODUZIONI: Html_div ::= ( Html_body_element )+ ( )? | ( ( )* | " " ) ( Html_body_element )+ ( )? | | …….. Altra Produzione diversa per ogni grammatica specifica di una certa pagina web

16 Le grammatiche: Probabili Formazioni In una pagina web ci sono informazioni: trascurabili Html_div ::= ( Html_body_element )+ ( )? | ( ( )* | " " ) ( Html_body_element )+ ( )? | | Probabili e altre interessanti

17 Le grammatiche: Probabili Formazioni Le formazioni probabili sono composti da una serie di scontri Probabili::= ( Scontro )+

18 Le grammatiche: Probabili Formazioni Ogni scontro contiene diverse informazioni: Scontro::= Ultime TeamSx TeamDx Ultime html_body_element

19 Le grammatiche: Probabili Formazioni Ogni scontro contiene diverse informazioni:come il nome della squadra, e informazioni specifiche su alcuni giocatori. Ultime::= ( )+ ( | )* ( )+ InfoGiocatori ( html_href ( )+ )? ( )+

20 Le grammatiche: Probabili Formazioni Informazioni specifiche su alcuni giocatori: InfoGiocatori::=( ( Squalificati | Infortunati | InDubbio ) ( )+ )* Squalificati::= Infortunati::= InDubbio::=

21 Le grammatiche: Probabili Formazioni Informazioni specifiche sui giocatori titolari e in panchina in uno scontro: TeamSx::=( GiocatoreSx )+ ( GiocatoreSx )+ GiocatoreSx::= TeamDx::=( GiocatoreDx )+ ( GiocatoreDx )+ GiocatoreDx::= Nome giocatore

22 Le grammatiche: Probabili Formazioni Token specifici delle probabili formazioni: ::= "Squalificati" ::= "Infortunati" ::= "In dubbio" ::= " "

23 Le grammatiche: Statistiche In una pagina web ci sono informazioni: trascurabili Html_div ::= ( Html_body_element )+ ( )? | ( ( )* | " " ) ( Html_body_element )+ ( )? | | Stat e altre interessanti ::= " "

24 Le grammatiche: Statistiche Le statistiche di tutti i giocatori di un ruolo sono contenuti all'interno di una tabella: Stat ::= Giocatori Ogni riga contiene i dati di un giocatore: Giocatori ::= ( Giocatore )+

25 Le grammatiche: Statistiche Ogni statistica di un giocatore del campo,ovvero di tutti escluso il portiere, ha i seguenti dati: Giocatore ::= ( | ) ( | ) ID Giocatore Cognome Giocatore Partite Giocate Media Voto Media Voto con Bonus/Malus Media Voto prec. con Assist Goal FattiRigori a segno Rigori sbagliatiAssist AmmonizioniEspulsioni Squadra Quotazione

26 Le grammatiche: Statistiche Mentre il portiere ha i seguenti dati: Giocatore ::= ( | ) ( | ) ID Giocatore Cognome Giocatore Partite Giocate Media Voto Media Voto con Bonus/Malus Rigori parati AmmonizioniEspulsioni Squadra Quotazione Gol subiti

27 Le grammatiche: Voti Per i voti si è utilizzato un sito diverso,più orientato alle tabelle, questo ha implicato una grammatica un po' più rigida e meno leggibile: Html_div ::=...sempre uguale... | Voti Voti ::= { Html_table }3 ( Html_body_element )+....

28 Le grammatiche: Voti.... Squadre Html_table Squadre::= ( Html_script )+ Html_table Html_div ( Squadra )+ Squadra ::=.... Giocatori

29 Le grammatiche: Voti Giocatori ::= ( Giocatore ( ( html_body_element )+ )* )+

30 Le grammatiche: Voti Il voto di un giocatore ha 29 possibili attributi/colonne..il risultato è una grammatica un po' prolissa.. Giocatore ::= ( | )* ( | | | | )* ( | ) ( | | )* ( | )* ( | )....

31 Grammatica e Linguaggio: Tipologia Grammatica di tipo 2(context free) secondo Chomsky perchè le produzioni sono vincolate alla forma:: A α con A ε VN e α ε (VN U VT)+ Linguaggio di tipo 2 perché sono presenti produzioni che contengono self-embedding: A α1 A α2 con A ε VN e α1, α2 ε (VN U VT)+ LL(1)perchè linsieme degli director-symbols corrispondenti alle parti destre delle produzioni alternative di uno stesso metasimbolo sono fra loro disgiunti;

32 Grammatica e Linguaggio: Tipologia Grammatica di tipo 2(context free) secondo Chomsky perchè le produzioni sono vincolate alla forma:: A α con A ε VN e α ε (VN U VT)+ Linguaggio di tipo 2 perché sono presenti produzioni che contengono self-embedding: A α1 A α2 con A ε VN e α1, α2 ε (VN U VT)+ LL(1)perchè linsieme degli director-symbols corrispondenti alle parti destre delle produzioni alternative di uno stesso metasimbolo sono fra loro disgiunti; Allinterno di un documento HTML potrei avere una serie di elementi di tipo DIV annidati: Html_body_element::= |…| Html_div Html_div ::= ( Html_body_element )+ ( )? Es.: … Ciao!! … Allinterno di un documento HTML potrei avere una serie di elementi di tipo DIV annidati: Html_body_element::= |…| Html_div Html_div ::= ( Html_body_element )+ ( )? Es.: … Ciao!! … Allinterno di un documento HTML potrei avere una serie di elementi di tipo DIV annidati: Html_body_element::= |…| Html_div Html_div ::= ( Html_body_element )+ ( )? Es.: … Ciao!! … Allinterno di un documento HTML potrei avere una serie di elementi di tipo DIV annidati: Html_body_element::= |…| Html_div Html_div ::= ( Html_body_element )+ ( )? Es.: … Ciao!! … Allinterno di un documento HTML potrei avere una serie di elementi di tipo DIV annidati: Html_body_element::= |…| Html_div Html_div ::= ( Html_body_element )+ ( )? Es.: … Ciao!! … Allinterno di un documento HTML potrei avere una serie di elementi di tipo DIV annidati: Html_body_element::= |…| Html_div Html_div ::= ( Html_body_element )+ ( )? Es.: … Ciao!! …

33 FantaGenius: La squadra Per salvare e caricare una squadra è stato realizzato uno specifico linguaggio di tipo 3(non c'è self-enbedding),descritto dalla seguente grammatica, gestita tramite la funzione.split(String sep) della classe String: Squadra:=ListaGiocatori"\n" ListaGiocatori"\n" ListaGiocatori ListaGiocatori::=(Giocatore ";" ListaGiocatori)|Giocatore ";" Giocatore::=Nome","Squadra Nome::= Squadra::= MiaSquadra.txt: Antonioli,CESENA;Cavalieri,CESENA;Handanovic,UDINESE; Criscito,GENOA;Samuel,INTER;Nesta,MILAN;Cassetti,ROMA;Dias,LAZIO;dellafiore,PARMA;Felipe,FIORENTINA;Grava,NAPOLI; Cambiasso,INTER;Pirlo,MILAN;alvarez e. a.,BARI;Colucci,CESENA;Giovinco,PARMA;Marchionni,FIORENTINA;Jimenez,CESENA;Marques,PARMA; Gilardino,FIORENTINA;Cassano,SAMPDORIA;Del Piero,JUVENTUS;pozzi,SAMPDORIA;paloschi,PARMA;marilungo,SAMPDORIA;

34 FantaGenius: La formazione Per salvare e caricare una formazione è stato realizzato uno specifico linguaggio di tipo 3(non c'è self-embedding) descritto dalla seguente grammatica, gestita tramite la funzione.split(String sep) della classe String: Formazione_S::="titolari:\n"Formazione "panchina:\n"Formazione Formazione:=Portiere"\n" ListaGiocatori"\n" ListaGiocatori Portiere::= ListaGiocatori::=( "," ListaGiocatori) | MiaFormazione.txt: titolari: Antonioli Nesta,criscito,samuel,Dias Giovinco,Pirlo,Cambiasso Cassano,gilardino,del Piero panchina: Handanovic Cassetti,grava Marques,colucci Pozzi

35 FantaGenius: Strumenti utilizzati Linguaggio di programmazione: JavaSE 1.6 Generazione automatica di scanner e parser: JavaCC 5.0 Interfaccia grafica NetBeans 6.8 Ambiente di sviluppo: Eclipse 3.5

36 FantaGenius: Architettura Package: App: Classi necessarie allinterfaccia grafica. Elements: Classi a cui corrispondo le principali entità del sitema. Parser: Classi relative allo scanner ed al parser create in automatico da javacc.

37 FantaGenius: Architettura

38

39 FantaGenius: Test L'applicazione è già stata utilizzata nelle ultime due giornate di campionato di serie A. I giocatori che l'hanno provato sono rimasti soddisfatti.

40 FantaGenius: Interfaccia grafica Colori per rappresentare stato giocatori: Verde: titolare Azzurro: panchina Rosso: squalificato Grigio: infortunato Bianco: non esistente

41 FantaGenius: Interfaccia grafica

42 FantaGenius: Possibili sviluppi Utilizzo di tuProlog per calcolare il risultato di una partita e calcolare una formazione ideale in maniera più intelligente e flessibile. Unificare in un unico file la parte comune delle 4 grammatiche riguardanti i siti web. Possibilità di modificare alcuni parametri dell'applicazione, attraverso l'interfaccia grafica.


Scaricare ppt "Linguaggi e Modelli Computazionali a.a. 2009/2010 Docente: Studente: Enrico Denti Gabriele Morlini FantaGenius."

Presentazioni simili


Annunci Google