albero sintattico parser scanner Errori sintattici

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "albero sintattico parser scanner Errori sintattici"

Transcript

1 albero programma scanner tokens parser sintattico rrori sintattici Un parser deve riconoscere la struttura di una stringa di ingresso, la cui struttura è fornita in termini di regole di produzione di una CFG, BNF, o diagrammi sintattici. Un parser è una macchina astratta che raggruppa input in accordo con regole grammaticali. 1

2 La sintassi è costituita da un insieme di regole che definiscono le frasi formalmente corrette permettono di assegnare ad esse una struttura (albero sintattico) che ne indica la decomposizione nei costituenti immediati. Ad es. la struttura di una frase (ovvero di un programma) di un linguaggio di programmazione ha come costituenti le parti dichiarative e quelle esecutive. Le parti dichiarative definiscono i dati usati dal programma. Le parti esecutive si articolano nelle istruzioni, che possono essere di vari tipi: assegnamenti, istruzioni condizionali, frasi di lettura, ecc. I costituenti del livello più basso sono gli elementi lessicali già considerati, che dalla sintassi sono visti come atomi indecomponibili. Infatti la loro definizione spetta al livello lessicale. La teoria formale dei linguaggi offre diversi modelli, ma nella quasi totalità dei casi il tipo di sintassi adottata è quello noto come sintassi libera o non-contestuale (context-free) che corrisponde al tipo 2 della gerarchia di Chomsky. I metodi sintattici per il trattamento del linguaggio sono semplici efficienti la definizione del linguaggio attraverso le regole delle sintassi libere dal contesto è diretta ed intuitiva gli algoritmi deterministici di riconoscimento delle frasi sono veloci (hanno complessità lineare) e facili da realizzare partendo dalla sintassi. Tutti questi vantaggi hanno imposto le grammatiche libere dal contesto come l unico metodo pratico per definire formalmente la struttura di un linguaggio. 2

3 Non tutte le regole di un linguaggio di programmazione possono essere espresse in termini nel modello noncontestuale. Ad esempio non puo espremere le seguenti regole: in un programma ogni identificatore di variabile deve comparire in una dichiarazione il tipo del parametro attuale di un sottoprogramma deve essere compatibile con quello del parametro formale corrispondente Da queste critiche sarebbe sbagliato concludere che i metodi sintattici sono inutili: al contrario essi sono indispensabili come supporto (concettuale e progettuale) su cui poggiare i più completi strumenti della semantica. Il parser lavora con stringhe di tokens Programa sorgente Scanner token get next token Parser Albero sintattico 3

4 Le strutture ricorsive presenti nei linguaggi di programmazione sono definite da una grammatica contextfree. Una grammatica context-free (CFG) è definita come Un insieme finito di terminali S (sono i token prodotti dallo scanner) Un insieme di non terminali V. Un assioma o simbolo iniziale (uno dei non terminali. Un insieme di produzioni (dette anche rewriting rules con la seguente forma A X 1... X m dove X 1 to X m possono essere terminali o non terminali. Se m =0 si ha A che è una produzione valida Le strutture ricorsive presenti nei linguaggi di programmazione sono definite da una grammatica contextfree. Una grammatica context-free (CFG) è definita come Un insieme finito di sempio terminali V (sono i token prodotti dallo scanner) T = { (, ), id, vsl, +, *, /, -} Un insieme di non terminali V = {} V. + Un assioma o simbolo iniziale (uno dei non terminali. Un insieme di produzioni (dette * anche rewriting rules con la seguente forma / - A X 1... X m ( ) dove X 1 to X m possono essere id terminali o non terminali. val Se m =0 si ha A che è una produzione valida 4

5 + + deriva da Possiamo sostituire con con + Perr poter fare questo deve esistere una produzione + nella grammatica. + id+ id+id Una sequenza di sostituzioni di non-terminali e chiamata una derivazione di id+id da. In generale un passo di derivazione è A se A in G (V T)* e (V T)* n ( n deriva da 1 o 1 è derivato da n ) one step * zero o più steps + 1 o più steps V = { Prog, Seq, Istr, xpr} T = { {, ;, id, +,} } Assioma = Prog Prog { Seq } Seq Istr; Seq Seq Istr { Seq } Istr id = xpr xpr id xpr xpr + id V = { Prog, Seq, Istr, xpr} T = { {, ;, id, +, } } Assioma = Prog Prog { Seq } Seq Seq ; Istr Istr {Seq } id = xpr xpr id xpr + id 5

6 Per esempio partendo da Prog possiamo generare, applicando ripetutamente le produzione le seguenti stringhe: Prog { Seq } { Istr ; Seq} {Istr; Istr ; Seq} { id = xpr ; Istr, } { id = id ;Istr ; } { id = id ; id = xpr } { id = id ; id = xpr + id} { id = id ; id = id + id} Le produzioni devono avere le seguenti proprietà: no produzioni inutili o ridondanti (i.e., A A), no non-terminali nella RHS di una produzione senza produzioni con LHS uguale al non terminale (e.g., A Ba dove B non è definito), no cicli infiniti (e.g., A Aa) senza altre produzioni per A), no ambiguita : una grammatica con più alberi sintattici per la stessa espressione è ambigua 6

7 L(G) è il linguaggio generato da G. Una frase di L(G) è una stringa di simboli terminali di G. Se S è l assioma o start symbol di G allora è una frase di L(G) + iff S dove T*. Se G è una grammatica context-free, L(G) è un linguaggio context-free. Due grammatiche sono equivalenti se producono lo stesso linguaggio. S Se contiene non-terminali, è chiamata forma di frase di G. * Se non contiene no-terminali è chiamata frase di G. Derivazione canonica sinistra (Left-Most Derivation) - -() -(+) -(id+) -(id+id) Derivazione canonica destra (Right-Most Derivation) - -() -(+) -(+id) -(id+id) top-down parser cerca una left-most derivation del programma sorgente bottom-up parser cerca una right-most derivation del programma sorgente 7

8 I nodi non foglie dell albero sintattico sono simboli non-terminal, le foglie simboli terminali () - -(+) - ( ) ( ) -(id+) - ( ) -(id+id) - ( ) id id id Un albero sintattico è una rappresentazione grafica di una derivazione. sempio: Consideriamo l analisi della frase * 3 secondo la seguente grammatica <expr> ::= <expr> + <expr> <expr> * <expr> L analisi sintattica può essere vista come un processo number per costruire gli alberi sintattici (parse tree). La sintassi di un programma è descritto da un agrammatica libera dal contesto (CFG). La notazione BNF (Backus-Naur Form) è una notazione per la descrzione di una CFG. Il parser verifica se un programma sorgente soddisfa le regole implicate da una grammatica context-free o no. Se le soddisfa, il parser crea l albero sintattico (del programma altrimenti genera un messaggio di errore. Una grammatica non contestuale Da una specifica rigorosa della sintassi dei linguaggi di programmazione Il progetto della grammatica e la fase iniziale del progetto del compilatore sistono strumenti automatici per costruire automaticamente il compilatore dalla grammatica 8

9 Una grammatica è ambigua se esistono più alberi sintattici per la stessa frase. + id+ id+* id+id* id+id*id + id * id id * +* id+* id+id* id+id*id + id * id id T = { (, ), id, +, *, /, -} V = {} + * / - ( ) id Per poter costruire un parser la grammatica non deve essere ambigua Grammatica non ambigua un unico albero sintattico per ogni frase del linguaggio Le ambiguità nella grammatica devono essere eliminate durante il progetto del compilatore 9

10 istr if expr then istr if expr then istr else istr otheristrs if 1 then if 2 then S 1 else S 2 istr if expr then istr else istr istr if expr then istr 1 if expr then istr S 2 1 if expr then istr else istr 2 S S 1 S Noi preferiamo il secondo albero sintattico (else corrisponde al if più vicino). Dobbiamo eliminare l ambiguità con tale obiettivo La grammatica non-ambigua sarà: istr matchedistr unmatchedistr matchedistr if expr then matchedistr else matchedistr otheristrs unmatchedistr if expr then istr if expr then matchedistr else unmatchedistr 10

11 Grammatiche ambigue possono essere rese non-ambigue in accordo alle precedenze degli operatori e alle regole di associativià degli operatori. + * id () +T T T T*F F F id () precedenze: * (left to right) + (left to right) Una grammatica è left recursive se ha un non terminale A + tale che A A per qualche stringa Le tecniche di parser Top-down non possono gestire grammatiche left-recursive. Una grammatica left-recursive deve esssere convertita in una non left-recursive. La ricorsione sinistra può comparire in un singolo passo della derivazione (immediate left-recursion), o può comparire in più che un passo. 11

12 A A dove A e (V T)* A A A A grammatica equivalente In generale A A 1... A m 1... n A 1 A... n A A 1 A... m A dove i A e (V T)* grammatica equivalente +T T T T*F T F F id F () eliminate immediate left recursion T +T T F T T *F T T F id F () 12

13 Una grammatica che non e direttamente left-recursive, ma lo è in modo indiretto Anche in questo caso va eliminata la ricorsione sinistra sempio S Aa b A Sc d S Aa Sca A Sc Aac - Ordinare I non-terminali A 1... A n - for i from 1 to n do { - for j from 1 to i-1 do { sostituire ogni produzione A i A j con A i 1... k dove A j 1... k } - eliminare la ricorsione sinistra nelle produzioni di A i } 13

14 S Aa b A Ac Sd f - Ordinare I non-terminali: S, A per S: - non c e una ricorsione sinistra diretta. for A: - sostituiamo A Sd con A Aad bd Cosi avremoa Ac Aad bd f - liminiamo la ricorsione sinistra in A A bda fa A ca ada Avremo la grammatica non ricorsiva equivalente: S Aa b A bda fa A ca ada S Aa b A Ac Sd f - Ordinare I non-terminali : A, S per A: liminamo la ricorsione sinistra in A A SdA fa A ca per S: - Sostituiamo S Aa with S SdA a fa a Così avremo S SdA a fa a b - liminamo la ricorsione sinistra in S S fa as bs S da as Avremo la grammatica non ricorsiva equivalente: S fa as bs S da as A SdA fa A ca 14

15 Un parser top down deterministico richiede una grammatica left-factored. grammatica grammatica equivalente istr if (expr ) istr else istr if (expr) istr In generale, A 1 2 dove (V T)* - { }, 1 (V T)* 2 (V T)* e 1 2. Noi possiamo riscrivere la grammatica come segue A A A

16 Per ogni non-terminale A con due o più alternative (produzioni) con una parte non vuota comune A 1... n 1... m diventa A A 1... m A 1... n A abb ab cdg cdeb cdfb A aa cdg cdeb cdfb A bb B A aa cda A bb B A g eb fb 16

17 A ad a ab abc b A aa b A d b bc A aa b A d ba A c istr if (expr ) istr else istr if (expr) istr istr if (expr ) istr X X else istr X 17

18 Le frasi possono essere analizzate da sinistra a destra (L parser), possono essere costruite con derivazioni left-most (LL(k) parser) o right-most (LR(k) parser) utilizzando k symboli di look-ahead! LL è più conosciuta come top-down parser. LR è più conosciuta come bottom-up parser. Per ragioni pratiche k deve essere piccolo. Per un compilatore è auspicabile l uso di grammatiche che possono essere analizzate in modo deterministico con al più k symboli di lookahead. L assenza di ambiguità è condizione necessaria per un analisi determinstica Consideriamo un bottom up parse per abbcde generato dalla seguente grammatica con assioma S, eseguento un approccio left-most matches First. S aacbe A Ab b B d 18

19 abbcde aabcbe aacbe S applicando B d applicando A b applicando A Ab applicando S aacbe A 1 A 2 S 4 B 3 a b b c d e Due differenti metodi di analisi sintattica top-down: l albero sintattico è creato dalla radice alle foglie bottom-up: l albero sintattico è creato dalle foglie alla radice Il parser può lavorare in una varietà di modi ma esso tipicamente processa l input da sinistra a destra. Parser sia top-down che bottom-up possono essere implmentati in modo efficente solo per alcune sottoclassi di gramatiche contextfree: LL per top-down LR per bottom-up Una left-most (right-most) derivation è una derivazione nella quale durante ogni passo viene sostituito solo il non-terminale più a sinistra (destra). 19

20 Data una grammatica non contestuale G(V,T,P,S) si definisce First( ) = {a in T * a } Quindi First( ) è il seguente sottoinsieme di T: se = a con a T allora a First( ) se = A con A V allora se una produzione A allora First( ) First( ) se una produzione A allora First( ) First( ) First( ) è l insieme di tutti i terminali con cui può iniziare una stringa derivata da. Se * allora First( ). First( ) = {a T * a } if a * then { } else T = {a, b, c, d, e}, V = {S, B, C} P = { S ase B, B bbe C, C cce d } S = S First(aSe) = {a} First(B) = First(bBe) First(C) = {b} First(cCe) First(d) = {b} {c} {d} = {b, c, d} First(bBe) = {b} First(C) = First(cCe) First(d) = {c} {d} = {c, d} First(cCe) = {c} First(d) = {d} 20

21 T = {a, b, c, d, e} V = {A, B, C, D} P = { A B Ce a B bc, C Dc D d } S = A First(B) = First(bC) ={b} First(C e) = First (Dc) = First(d) First( ) = {d} { } = {d, } First(a) = {a} First(bC )= {b} First(Dc) = First(d) First( ) = {d} { } = {d, } First(d) = {d} First( )= { } T = {(, +, ), v, f} V = {, Prefix, Tail} P = { Prefix() v Tail Prefix f Tail + } S = First(Prefix() ) = {f} { } First(v Tail) = {v} First(f) = {f} First( )= { } First(+) = {+} 21

22 T = {a, (, ), +, ","} V = {, T, L, P} P = { + T T T a () a(l) L P, P P "," } S = First() = {a, (} First(T) = {a, (} First(L) = {, a, (} First(P) = {a, (} T = {a, b, c, d, e} V = {A, B, C, D} P = { A B C Ce a B bc C Dc D D d } S = A First(A) = {a, b, d, c, e, } First(B) = {b} First(C) = {d, c, } First(D) = {d, } 22

23 Data una grammatica non contestuale G(V,T,P,S) si definisce Follow(A) l insieme dei terminali che seguono in una qualsiasi frase sso è definito come segue: Follow(A) = {a T S + Aa.} (if S * A then { } else } T = {a, b, c, d, e}, V = {S, B, C} P = { S ase B, B bbe C, C cce d } S = S Follow(S) = {e, $} Follow(B) = {e, $} Follow(C) = {e, $} 23

24 T = {a, (, ), +, ","} V = {, T, L, P} P = { + T T T a () a(l) L P, P P "," } S = Follow() = {+, ),,, $} Follow(T) = {+, ),,, $} Follow(L) = { ) } Follow(P) = {),, } T = {(, +, ), v, f} V = {, Prefix, Tail} P = { Prefix() v Tail Prefix f Tail + } S = Follow(Prefix ) = { ( } Follow() = { ), $} Follow(Tail) = {), $ } 24

25 T = {a, b, c, d, e} V = {A, B, C, D} P = { S = A A B Ce a B bc, C Dc D d } Follow(A) = {$} Follow(B) = {$} Follow(C) = {$, e} Follow(D) = {c} T = {a, b, c, d, e} V = {A, B, C, D} P = { A B C Ce a B bc C Dc D D d } S = A Follow(A) = {$} Follow(B) = Follow(A) = {$} Follow(C) = Follow(A) Follow(B) {e} = {e, $} Follow(D) = {c } Follow(C) = {c, e, $} 25

Contenuti del corso. Parsing: esempio. Cosa aggiungiamo in questo corso. Parsing. Data una grammatica: E T T + E

Contenuti del corso. Parsing: esempio. Cosa aggiungiamo in questo corso. Parsing. Data una grammatica: E T T + E Continuazione del corso di linguaggi. Nuovi paradigmi di computazione logico: Prolog logic - funzionale: Curry Teoria base dei compilatori parsing grammatiche ad attributi type checking generazione codice

Dettagli

Algebra di Boole Algebra di Boole

Algebra di Boole Algebra di Boole 1 L algebra dei calcolatori L algebra booleana è un particolare tipo di algebra in cui le variabili e le funzioni possono solo avere valori 0 e 1. Deriva il suo nome dal matematico inglese George Boole

Dettagli

Trattamento degli errori

Trattamento degli errori Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Trattamento degli errori Giacomo PISCITELLI Trattamento degli errori Comunemente gli errori di programmazione

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

2. Sintassi e Semantica

2. Sintassi e Semantica 2. Sintassi e Semantica Un linguaggio di programmazione è un linguaggio formale dotato di una sintassi e una semantica ben definita. Per linguaggio formale si intende un insieme di stringhe di lunghezza

Dettagli

Linguaggi e tecnologie per il Web

Linguaggi e tecnologie per il Web Sapienza Università di Roma Corso di Laurea in Ingegneria Informatica e Automatica Linguaggi e tecnologie per il Web a.a. 2015/2016 Riccardo Rosati Dipartimento di ingegneria informatica, automatica e

Dettagli

Come funziona il linguaggio COME FUNZIONA IL LINGUAGGIO

Come funziona il linguaggio COME FUNZIONA IL LINGUAGGIO Come funziona il linguaggio COME FUZIOA IL LIGUAGGIO SITASSI Il cervello di ogni persona contiene un dizionario di parole e dei concetti che esse rappresentano (dizionario mentale) e un insieme di regole

Dettagli

Programmazione Dichiarativa. Programmazione Logica. SICStus PROLOG PROLOG. http://www.sics.se/sicstus/ Bob Kowalski: "Algoritmo = Logica + Controllo"

Programmazione Dichiarativa. Programmazione Logica. SICStus PROLOG PROLOG. http://www.sics.se/sicstus/ Bob Kowalski: Algoritmo = Logica + Controllo Programmazione Logica Bob Kowalski: "Algoritmo = Logica + Controllo" nella programmazione tradizionale: il programmatore deve occuparsi di entrambi gli aspetti nella programmazione dichiarativa: il programmatore

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

Dettagli

Analizzatore lessicale o scanner

Analizzatore lessicale o scanner Analizzatore lessicale o scanner Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner, attraverso un esame carattere per carattere dell'ingresso,

Dettagli

ESERCIZI IN PIÙ I NUMERI COMPLESSI

ESERCIZI IN PIÙ I NUMERI COMPLESSI ESERCIZI IN PIÙ I NUMERI COMPLESSI L equazione x x 0 non ha soluzioni nell insieme dei numeri reali; infatti, applicando la formula ridotta, si ottiene x, 3. Interpretando come numero immaginario, cioè

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Modulo 2 Data Base - Modello Relazionale

Modulo 2 Data Base - Modello Relazionale Modulo 2 Data Base - Modello Relazionale Università degli Studi di Salerno Corso di Laurea in Scienze della comunicazione Informatica generale Docente: Angela Peduto A.A. 2004/2005 Modello Relazionale

Dettagli

Riconoscere e formalizzare le dipendenze funzionali

Riconoscere e formalizzare le dipendenze funzionali Riconoscere e formalizzare le dipendenze funzionali Giorgio Ghelli 25 ottobre 2007 1 Riconoscere e formalizzare le dipendenze funzionali Non sempre è facile indiduare le dipendenze funzionali espresse

Dettagli

La codifica. dell informazione

La codifica. dell informazione La codifica dell informazione (continua) Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da 0 a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero

Dettagli

Prof.ssa Laura Pagnozzi Prof. Ivano Coccorullo. Calcolo Combinatorio

Prof.ssa Laura Pagnozzi Prof. Ivano Coccorullo. Calcolo Combinatorio Prof.ssa Laura Pagnozzi Prof. Ivano Coccorullo Calcolo Combinatorio Calcolo Combinatorio ü Molti dei problemi classici di calcolo delle probabilità si riducono al calcolo dei casi favorevoli e di quelli

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2015/2016 Linguaggi formali e compilazione Elementi generali Un parser generico di tipo procede operando una sequenza di riduzioni a

Dettagli

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Dettagli

Le aree dell informatica

Le aree dell informatica Fondamenti di Informatica per la Sicurezza a.a. 2006/07 Le aree dell informatica Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università

Dettagli

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un

Dettagli

Procedura operativa per la gestione della funzione di formazione classi prime

Procedura operativa per la gestione della funzione di formazione classi prime Procedura operativa per la gestione della funzione di formazione classi prime Questa funzione viene fornita allo scopo di effettuare la formazione delle classi prime nel rispetto dei parametri indicati

Dettagli

7. OSSA. Alessio Maculani

7. OSSA. Alessio Maculani 7. OSSA ossa è il modulo software realizzato in questo stage di laurea. Esso aggiunge all applicazione composta da MadCow, VisualOntoGraph e FormalAnnotation, gli strumenti necessari all utente annotatore

Dettagli

Analisi. Calcolo Combinatorio. Ing. Ivano Coccorullo

Analisi. Calcolo Combinatorio. Ing. Ivano Coccorullo Analisi Ing. Ivano Coccorullo Prof. Ivano Coccorullo ü Molti dei problemi classici di calcolo delle probabilità si riducono al calcolo dei casi favorevoli e di quelli possibili. Quando le situazioni diventano

Dettagli

Introduzione a Visual Basic Lezione 2 Cicli e anomalie

Introduzione a Visual Basic Lezione 2 Cicli e anomalie a Visual Basic Lezione 2 Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Perché i cicli? Un esempio concreto Finora abbiamo visto

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione (con linguaggio di riferimento C++) Gianfranco Rossi Università di Parma Dip. di Matematica e Informatica 43100 Parma (Italy) [email protected] Indice 1 Introduzione

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

Esercizi sulla conversione tra unità di misura

Esercizi sulla conversione tra unità di misura Esercizi sulla conversione tra unità di misura Autore: Enrico Campanelli Prima stesura: Settembre 2013 Ultima revisione: Settembre 2013 Per segnalare errori o per osservazioni e suggerimenti di qualsiasi

Dettagli

Programmazione Ricorsione

Programmazione Ricorsione Programmazione Ricorsione Samuel Rota Bulò DAIS Università Ca Foscari di Venezia. Outline Ricorsione Cos è la ricorsione? In matematica... n! = { n (n 1)! se n > 0 1 altrimenti N = {0} {i + 1 : i N} Principio

Dettagli

Esercitazione n o 3 per il corso di Ricerca Operativa

Esercitazione n o 3 per il corso di Ricerca Operativa Esercitazione n o 3 per il corso di Ricerca Operativa Ultimo aggiornamento October 17, 2011 Fornitura acqua Una città deve essere rifornita, ogni giorno, con 500 000 litri di acqua. Si richiede che l acqua

Dettagli

Sistemi Web per il turismo - lezione 3 -

Sistemi Web per il turismo - lezione 3 - Sistemi Web per il turismo - lezione 3 - Software Si definisce software il complesso di comandi che fanno eseguire al computer delle operazioni. Il termine si contrappone ad hardware, che invece designa

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Ingegneria del Software 9. Macchine a stati. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Ingegneria del Software 9. Macchine a stati. Dipartimento di Informatica Università di Pisa A.A. 2014/15 Ingegneria del Software 9. Macchine a stati Dipartimento di Informatica Università di Pisa A.A. 2014/15 so far Modello del dominio Modello statico: diagrammi delle classi Modello dinamico : diagrammi di

Dettagli

INTRODUZIONE ALLE BASI DATI RELAZIONALI

INTRODUZIONE ALLE BASI DATI RELAZIONALI INTRODUZIONE ALLE BASI DATI RELAZIONALI RELAZIONI E TABELLE Nelle BASI DI DATI RELAZIONALI le informazioni sono organizzate in TABELLE; Le tabelle sono rappresentate mediante griglie suddivise in RIGHE

Dettagli

COMPILAZIONE. Tarsformazione di linguaggi

COMPILAZIONE. Tarsformazione di linguaggi COMPILAZIONE Tarsformazione di linguaggi Le fasi della compilazione File sorgente Compilazione File sorgente File sorgente File sorgente Compilazione Compilazione Compilazione Libreria di run-time File

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi

Dettagli

CAPITOLO V. DATABASE: Il modello relazionale

CAPITOLO V. DATABASE: Il modello relazionale CAPITOLO V DATABASE: Il modello relazionale Il modello relazionale offre una rappresentazione matematica dei dati basata sul concetto di relazione normalizzata. I principi del modello relazionale furono

Dettagli

SOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n

SOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n SPAZI E SOTTOSPAZI 1 SOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n Spazi di matrici. Spazi di polinomi. Generatori, dipendenza e indipendenza lineare, basi e dimensione. Intersezione e somma di sottospazi,

Dettagli

1.2 MONOMI E OPERAZIONI CON I MONOMI

1.2 MONOMI E OPERAZIONI CON I MONOMI Matematica C Algebra. Le basi del calcolo letterale. Monomi e operazioni con i monomi. MONOMI E OPERAZIONI CON I MONOMI... L insieme dei monomi D ora in poi quando scriveremo un espressione letterale in

Dettagli

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro -

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro - PowerDIP Software gestione presenze del personale aziendale - Guida all inserimento e gestione dei turni di lavoro - Informazioni preliminari. E necessario innanzitutto scaricare e installare l ultima

Dettagli

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi. Algoritmi Un tema centrale dell informatica è lo studio degli algoritmi. Ora nostro obiettivo sarà quello di esplorare a sufficienza questa materia fondamentale per poter capire e apprezzare appieno l

Dettagli

Linguaggi e Traduttori: Introduzione al corso

Linguaggi e Traduttori: Introduzione al corso Linguaggi e Traduttori: Introduzione al corso Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-Lab) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di

Dettagli

La disposizione estetica della lettera commerciale

La disposizione estetica della lettera commerciale La disposizione estetica della lettera commerciale Gli elementi costitutivi della lettera commerciale vengono disposti sul foglio secondo stili diversi: ogni a- zienda, infatti, caratterizza la sua immagine

Dettagli

INDICAZIONI PER LA RICERCA DEGLI ASINTOTI VERTICALI

INDICAZIONI PER LA RICERCA DEGLI ASINTOTI VERTICALI 2.13 ASINTOTI 44 Un "asintoto", per una funzione y = f( ), è una retta alla quale il grafico della funzione "si avvicina indefinitamente", "si avvicina di tanto quanto noi vogliamo", nel senso precisato

Dettagli

I database. Introduzione alla teoria delle basi di dati

I database. Introduzione alla teoria delle basi di dati I database Introduzione alla teoria delle basi di dati 1 Cosa sono e a cosa servono i Database Un database (o base di dati) e' una raccolta organizzata di dati correlati. Il principale scopo di un database

Dettagli

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi Somma di numeri floating point Algoritmi di moltiplicazione e divisione per numeri interi Standard IEEE754 " Standard IEEE754: Singola precisione (32 bit) si riescono a rappresentare numeri 2.0 10 2-38

Dettagli

Italiano Tecnico 2007-2008. La relazione di lavoro

Italiano Tecnico 2007-2008. La relazione di lavoro Italiano Tecnico 2007-2008 La relazione di lavoro La relazione Si tratta di un testo che deve tracciare il bilancio di un esperienza o il resoconto di una ricerca. Nella relazione prevale la componente

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia [email protected] A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica

Dettagli

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita UD4 - MATLAB M-file. Efficienza degli algoritmi. Formati d uscita M-files In MatLab è possibile eseguire istruzioni contenute in file esterni; Tali file sono chiamati M-file perché devono avere estensione.m

Dettagli

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo. PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,

Dettagli

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO Linguaggio macchina Uno per ogni processore o famiglia di processori Linguaggio assembler Versione simbolica di quello macchina. LINGUAGGI DI ALTO

Dettagli

Lezione 3 Progettazione di siti

Lezione 3 Progettazione di siti Lezione 3 Progettazione di siti Ingegneria dei Processi Aziendali Modulo 1 Servizi Web Unità didattica 1 Protocolli Web Ernesto Damiani Università di Milano Elementi base della progettazione di servizi

Dettagli

0.1 Esercizi calcolo combinatorio

0.1 Esercizi calcolo combinatorio 0.1 Esercizi calcolo combinatorio Esercizio 1. Sia T l insieme dei primi 100 numeri naturali. Calcolare: 1. Il numero di sottoinsiemi A di T che contengono esattamente 8 pari.. Il numero di coppie (A,

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel

Dettagli

Normalizzazione. Definizione

Normalizzazione. Definizione Normalizzazione Definizione Le forme normali 2 Una forma normale è una proprietà di una base di dati relazionale che ne garantisce la qualità, cioè l'assenza di determinati difetti Quando una relazione

Dettagli

Sul pattern Decorator

Sul pattern Decorator Sul pattern Decorator 1 Introduzione Consideriamo una famosa panineria fa tre tipi di panini: al prosciutto crudo, al prosciutto cotto, al tonno. A ciascuno di questi tre tipi corrisponde un costo. Figura

Dettagli

Cos è un Calcolatore?

Cos è un Calcolatore? Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per

Dettagli

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi 7 Disegni sperimentali ad un solo fattore Giulio Vidotto Raffaele Cioffi Indice: 7.1 Veri esperimenti 7.2 Fattori livelli condizioni e trattamenti 7.3 Alcuni disegni sperimentali da evitare 7.4 Elementi

Dettagli

Le sue caratteristiche:

Le sue caratteristiche: I Virus Un virus, in informatica, è un software, appartenente alla categoria dei malware, che è in grado, una volta eseguito, di infettare dei file in modo da riprodursi facendo copie di se stesso, generalmente

Dettagli

Metodi per la risoluzione di sistemi lineari

Metodi per la risoluzione di sistemi lineari Metodi per la risoluzione di sistemi lineari Sistemi di equazioni lineari. Rango di matrici Come è noto (vedi [] sez.0.8), ad ogni matrice quadrata A è associato un numero reale det(a) detto determinante

Dettagli

RELAZIONI BINARIE. Proprietà delle relazioni Data una relazione R, definita in un insieme non vuoto U, si hanno le seguenti proprietà :

RELAZIONI BINARIE. Proprietà delle relazioni Data una relazione R, definita in un insieme non vuoto U, si hanno le seguenti proprietà : RELAZIONI INARIE Dati due insiemi non vuoti, A detto dominio e detto codominio, eventualmente coincidenti, si chiama relazione binaria (o corrispondenza) di A in, e si indica con f : A, (oppure R ) una

Dettagli

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F Macchina di Turing Nastro di Input...!!! a b b! b a! testina!!... s r s t q i Unità di Controllo q j Q S / D / F P Definizione Formale Una macchina di Turing deterministica è una sestupla

Dettagli

Gli algoritmi: definizioni e proprietà

Gli algoritmi: definizioni e proprietà Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da

Dettagli

Principi e Metodologie della Progettazione Meccanica

Principi e Metodologie della Progettazione Meccanica Principi e Metodologie della Progettazione Meccanica ing. F. Campana a.a. 06-07 Lezione 11: CAE e Ottimizzazione Strutturale Il ruolo dell ottimizzazione nell ambito della progettazione meccanica Durante

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Marco Liverani ([email protected])

Dettagli

Corso di Laurea in Matematica per l Informatica e la Comunicazione Scientifica

Corso di Laurea in Matematica per l Informatica e la Comunicazione Scientifica Corso di Laurea in Matematica per l Informatica e la Comunicazione Scientifica Soluzione del compito di Matematica Discreta 1 del 25 luglio 200 1. Qual è il numero di applicazioni f : A = {1,..., 5} B

Dettagli

Applicazioni lineari e diagonalizzazione. Esercizi svolti

Applicazioni lineari e diagonalizzazione. Esercizi svolti . Applicazioni lineari Esercizi svolti. Si consideri l applicazione f : K -> K definita da f(x,y) = x + y e si stabilisca se è lineare. Non è lineare. Possibile verifica: f(,) = 4; f(,4) = 6; quindi f(,4)

Dettagli

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1 Corso di INFORMATICA Laurea triennale - Comunicazione&DAMS Dr. Marco Manna 1 1 Dipartimento di Matematica Università della Calabria Corso di laurea intercalsse in COMUNICAZIONE&DAMS http://elleboro.unical.it/drupalab/informatica2009/

Dettagli

WINDOWS95. 1. Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

WINDOWS95. 1. Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni WINDOWS95 1. Avviare Windows95 Avviare Windows95 non è un problema: parte automaticamente all accensione del computer. 2. Barra delle applicazioni 1 La barra delle applicazioni permette di richiamare le

Dettagli

Progettazione logica

Progettazione logica Progettazione logica Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E- R in modo corretto ed efficiente. Richiede

Dettagli

Internet (- working). Le basi.

Internet (- working). Le basi. Internet (- working). Le basi. 1 GABRIELLA PAOLINI (GARR) 18 OTTOBRE 2011 Capire come funziona Internet 2 FACCIAMO UN PASSO INDIETRO Internet È un insieme di reti interconnesse fra di loro su tutto il

Dettagli

Steel&Graphics srl Via Cà Nova Zampieri 4/E 37057 San Giovanni Lupatoto VR Tel. 045/8778577 Fax. 045/8778576 Email: info@steel-graphics.

Steel&Graphics srl Via Cà Nova Zampieri 4/E 37057 San Giovanni Lupatoto VR Tel. 045/8778577 Fax. 045/8778576 Email: info@steel-graphics. Steel&Graphics srl Via Cà Nova Zampieri 4/E 37057 San Giovanni Lupatoto VR Tel. 045/8778577 Fax. 045/8778576 Email: [email protected] TecnoMETAL BIM 2012 rappresenta la soluzione per la progettazione

Dettagli

EQUAZIONI DI PRIMO GRADO

EQUAZIONI DI PRIMO GRADO Cognome... Nome... Equazioni di primo grado EQUAZIONI DI PRIMO GRADO Un'equazione di primo grado e un'uguaglianza tra due espressioni algebriche di primo grado, vera solo per alcuni valori che si attribuiscono

Dettagli

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing 1 Macchina di Turing (MDT ) Un dispositivo che accede a un nastro (potenzialmente) illimitato diviso in celle contenenti ciascuna un simbolo

Dettagli

Ministero della Salute

Ministero della Salute Ministero della Salute DIREZIONE GENERALE DELLA PROGRAMMAZIONE SANITARIA UFFICIO V FAQ ANAGRAFE FONDI SANITARI DOCUMENTI, DATI E INFORMAZIONI DA INSERIRE NEL SIAF 1. Quando si richiede il profilo per accedere

Dettagli

E una notazione per descrivere gli algoritmi.

E una notazione per descrivere gli algoritmi. Linguaggio di Programmazione E una notazione per descrivere gli algoritmi. Programma:: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni linguaggio

Dettagli

Topologie delle reti di telecomunicazione

Topologie delle reti di telecomunicazione Topologie delle reti di telecomunicazione Gruppo Reti TLC [email protected] http://www.telematica.polito.it/ INTRODUZIONE ALLE RETI TELEMATICHE - 1 Rete di telecomunicazione Definizione: un insieme

Dettagli

Sistemi di equazioni lineari

Sistemi di equazioni lineari Sistemi di equazioni lineari I sistemi di equazioni si incontrano in natura in molti problemi di vita reale. Per esempio, prendiamo in considerazione una bevanda a base di uova, latte e succo d arancia.

Dettagli

Introduzione alle macchine a stati (non definitivo)

Introduzione alle macchine a stati (non definitivo) Introduzione alle macchine a stati (non definitivo) - Introduzione Il modo migliore per affrontare un problema di automazione industriale (anche non particolarmente complesso) consiste nel dividerlo in

Dettagli

Occupazione e disoccupazione

Occupazione e disoccupazione Lezione 20 1 Occupazione e disoccupazione L occupazione ha una fortissima importanza sociale, e pone molti problemi di rilevazione. In questa lezione vediamo come la definizione di occupazione fa emergere

Dettagli

Lezione 6 Le pile. Informatica. 28 Aprile 2016

Lezione 6 Le pile. Informatica. 28 Aprile 2016 Lezione 6 Le pile Informatica 28 Aprile 2016 Il porto di Anversa Il terminal del porto merci di Anversa usa delle gru a cavaliere per movimentare i container: I container arrivano per nave e vengono messi

Dettagli

TEORIA RELAZIONALE: INTRODUZIONE

TEORIA RELAZIONALE: INTRODUZIONE TEORIA RELAZIONALE: INTRODUZIONE Tre metodi per produrre uno schema relazionale: a) Partire da un buon schema a oggetti e tradurlo b) Costruire direttamente le relazioni e poi correggere quelle che presentano

Dettagli

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari Lezione 4 L artimetica binaria: I numeri relativi e frazionari Sommario I numeri relativi I numeri frazionari I numeri in virgola fissa I numeri in virgola mobile 1 Cosa sono inumeri relativi? I numeri

Dettagli

IL TIME MANAGEMENT: ORGANIZZARE IL TEMPO E GOVERNARLO

IL TIME MANAGEMENT: ORGANIZZARE IL TEMPO E GOVERNARLO Idee e metodologie per la direzione d impresa Giugno - Luglio 2003 Inserto di Missione Impresa dedicato allo sviluppo pratico di progetti finalizzati ad aumentare la competitività delle imprese. : ORGANIZZARE

Dettagli

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. ACCESS Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. Database Relazionale: tipo di database attualmente più diffuso grazie alla

Dettagli

Teoria della Progettazione delle Basi di Dati Relazionali

Teoria della Progettazione delle Basi di Dati Relazionali Teoria della Progettazione delle Basi di Dati Relazionali Complementi di Basi di Dati 1 Teoria della Progettazione delle Basi di Dati Relazionali Angelo Montanari Dipartimento di Matematica e Informatica

Dettagli

Interpretazione astratta

Interpretazione astratta Interpretazione astratta By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents Interpretazione astratta... 2 Idea generale... 2 Esempio di semantica... 2 Semantica concreta... 2 Semantica

Dettagli

LA PREDISPOSIZIONE DELLA NOTA INTEGRATIVA

LA PREDISPOSIZIONE DELLA NOTA INTEGRATIVA LA PREDISPOSIZIONE DELLA NOTA INTEGRATIVA PREMESSA Con il software Blustring, è possibile predisporre un fascicolo di bilancio completo di stato patrimoniale, conto economico, nota integrativa, analisi

Dettagli

BILANCIO DEI VINCOLI ED ANALISI CINEMATICA

BILANCIO DEI VINCOLI ED ANALISI CINEMATICA BILANCIO DEI VINCOLI ED ANALISI CINEMATICA ESERCIZIO 1 Data la struttura piana rappresentata in Figura 1, sono richieste: - la classificazione della struttura in base alla condizione di vincolo; - la classificazione

Dettagli

* in giallo le modifiche apportate rispetto alla versione precedente datata 17/04/2012

* in giallo le modifiche apportate rispetto alla versione precedente datata 17/04/2012 Nota Salvatempo Contabilità 22 MAGGIO 2012 * in giallo le modifiche apportate rispetto alla versione precedente datata 17/04/2012 Nuova modalità di esportazione dei dati dalla Contabilità all Unico Persone

Dettagli

Esercizi svolti sui sistemi lineari

Esercizi svolti sui sistemi lineari Francesco Daddi - www.webalice.it/francesco.daddi Esercizi svolti sui sistemi lineari Esercizio 1. Risolvere il seguente sistema lineare al variare del parametro reale t: tx+(t 1)y + z =1 (t 1)y + tz =1

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

Il linguaggio SQL: query innestate

Il linguaggio SQL: query innestate Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento

Dettagli