Analisi semantica. Type Assignment System
|
|
- Fabia Venturini
- 5 anni fa
- Visualizzazioni
Transcript
1 Analisi semantica Type Assignment System Descrizione formale del sistema di tipi. Univ. di Udine Terza fase del compilatore Controllo statico sul codice (albero sintattico) estrarre informazioni eseguire controlli non liberi dal contesto type checking, il controllo principale Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 1 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 2 / 46 Type system In precedenza, discussione informale sui sistemi di tipi nei linguaggi. Type system definizione formale del controllo di tipo statico (tempo di compilazione) attraverso un sistema di regole (simile deduzione naturale) derivo giudizi nella forma M : A quando un espressione M del mio linguaggi ha tipo A, nell ambiente statico (con le ipotesi), assegna un tipo alle variabili di M, ha forma x1:a1, x2:a2,... xn:an Type checking: codice, algoritmo, che implementa il type system Altri giudizi ausiliari A, A è un espressione di tipo corretta, l ambiente è ben formato. Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 3 / 46 di derivazione simili alla deduzione naturale, un insieme di giudizi premessa, porta ad un giudizio conclusione Gamma1 - M1 : A1... GammaN - Mn : An Gamma - M : A regole senza premesse sono gli assiomi regole date per induzione sulla struttura di M ad ogni costrutto del linguaggio si associa una regola (più o meno) all arricchirsi del linguaggio, aumentano le regole, approccio modulare singole regole restano valide, all arricchirsi del linguaggio regole piuttosto semplici Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 4 / 46
2 Derivazioni Type checking, type inference problema di controllo di tipo, type checking, hanno una struttura ad albero, Permettono di derivare i giudizi validi dato un termine M, un tipo A un ambiente Gamma, determinare se Gamma - M : A sia valido problema di inferenza di tipo, type inference, dato un termine M, e ambiente Gamma, trovare A tale che Gamma - M : A sia valido errore di tipo, non esiste A tale che Gamma - M : A definizione indiretta l inferenza di tipo può essere un problema complesso: vedi Haskell, linguaggio polimorfo l inserimento di dichiarazioni di tipo nel codice lo semplifica Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 5 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 6 / 46 Type soundness Esempi di regole Nel seguito presentiamo, in maniera incrementale Collegamento tra computazione e type system, il sistema di tipi deve assicurare che alcune proprietà siano preservate nella computazione questo permette di garantire l assenza di alcuni errori. semplici linguaggi di programmazione relative regole di tipo. illustrative linguaggi diversi usano, regole diverse, simili nello spirito, singolarmente semplici ma sistema di tipi complesso, numero di regole elevato piccole modifiche, ad una singola regolo, possono portare ad inconsistenze Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 7 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 8 / 46
3 Sistemi di tipi al prim ordine. Prim ordine, perché nessuna variabile di tipo non ci sono i tipi polimorfi Presentiamo alcuni esempi linguaggio base un insieme di estensioni ogni estensione richiede nuove regole le regole precedenti vengono preservate struttura modulare. Sistema F1, (lambda calcolo tipato semplice) quasi un frammento minimo di Haskell Tipi... A, B un insieme di tipi base K in Basic tipi funzioni A -> B Termini, codice... M, N variabili x costanti c : K funzioni \ x:a -> M applicazioni M N associo un tipo al parametro formale di ogni funzione diversamente da Haskell similmente a quasi tutti gli altri linguaggi Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 9 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 10 / 46 ovvie per i giudizi di buona formazione e buon tipo, (Var) definibili mediante sintassi G, x:a, G' - x : A (Fun) G, x : A - M : B G - (\ x:a -> M) : A->B (App) G - M : A->B G - N : A G - M N : B Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 11 / 46 Tipi base e costanti Ad ogni costante devo associare una regola che gli assegna tipo (Unit) G - unit : Unit (True) (False) G - true : Bool (ite) G - false : Bool G - (if _ then _ else _) : Bool -> A -> A -> A o alternativamente G - M : Bool G - N1 : A G - N2 : A G - if M then N1 else N2 : A Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 12 / 46
4 linguaggio minimale G - 0 : Nat G - pred : Nat -> Nat estensioni G - succ : Nat -> Nat Naturali G - iszero : Nat -> Bool insieme infinito di regole per infinite constanti G - 1 : Nat G - 2 : Nat G - 3 : Nat... operazioni aritmetiche G - (+) : Nat -> Nat -> Nat... Esempio \ y:nat -> \ z:nat -> y + y + z Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 13 / 46 nuovo costruttore di tipi A x B (Pair) G - M : A G - N : B G - (M,N) : AxB (First) (Second) G - first : AxB -> A Esempio Tipi prodotto G - second : AxB -> A \ y : (Int, Int) -> (first y) + (second y) Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 14 / 46 in alternativa posso usare il costrutto case (pattern matching) (With) G - M : A1 x A2 G, x1:a1, x2:a2 - N:B G - case M of (x1:a1,x2:a2) -> N : B sintassi: in alternativa case M of (x1:a1,x2:a2) -> N si scrive: with (x1:a1,x2:a2) := M do N Esempio \ y : (Int, Int) -> case y of (y1 : Int, y2: Int) -> y1 + y2 Semplice la generalizzazione al prodotto di n tipi. Tipi unione nuovo costruttore di tipi A + B (InLeft), (InRight) G - inleft : A -> A+B G - inright - B -> A+B (IsLeft), (IsRight) G - IsLeft : A+B -> Bool G - isright - A+B -> Bool (AsLeft), (AsRight) G - asleft : A+B -> A G - asright - A+B -> B possono causare errore di tipo a tempo di esecuzioni Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 15 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 16 / 46
5 evitati con (case) G - M : A1 + A2 G, x1:a1 - N1:B G, x2:a2 - N2:B G - case M of(inleft(x1:a1) ->N1)(inRight(x2:A2) -> N2) : B sintassi: in alternativa case M of (inleft(x1:a1)->n1) (inright(x2:a2)->n2) : B si scrive case M of x1:a1 then N1 x2:a2 then N2 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 17 / 46 Estensione del tipo prodotto un numero arbitrario di componenti sistema di etichette l Record (structure) nuovo costruttore di tipo { l1 : A1,..., ln : An } regole (Record) G - M1 : A1 G - M2:A2... G - Mn:An G - { l1:m1,..., ln:mn } : { l1:a1,..., ln:an } (Record Select) G - M : { l1 : A1,..., ln : An } G - M.li : Ai Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 18 / 46 Variant type (Record With) G - M:{l1:A1,..., ln:an} G, x1:a1,..., xn:an - N : B G - case M of {x1:a1,..., xn:an} -> N of B Estensione del tipo unione un numero arbitrario di componenti sistema di etichette l Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 19 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 20 / 46
6 definiscono locazioni di memoria introducono la memoria, lo stato distinguo in maniera esplicita la locazione di memoria dal suo contenuto separazione sfumata in altri linguaggi costrutto simile in ML costruttore di tipo Ref A Reference type Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 21 / 46 (Ref) G - ref M : Ref A creo una nuova locazione di tipo che inizializzo con valore M posso tradurre var x = M; N con let x = ref M in N oppure con (\ x -> N) (ref M) (Deref) accedo al contenuto G - deref : (Ref A) -> A Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 22 / 46 (Assign) G - M : Ref A G - N : A G - M := N : Unit Esempio (\ x :(Ref Nat) -> x := x + 1) (ref 3) (\ x :(Ref Nat) -> x := (deref x) + 1) (ref 3) Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 23 / 46 Tipi di dati ricorsivi Il tipo data di Haskell ne sono un esempio. Introduco variabili di tipo Y Un funzione di punto fisso mu sui tipi mu Y. A Con mu Y. A indico il tipo tipo isomorfo a A [ mu Y. A / Y] Analogia con Haskell liste di naturali data ListInt = Nil Cons Int ListInt` diventa, F1 mu Y. Unit + (Int x Y) Per costruire valori di tipo ricorsivo, si usa una famiglia di costruttori fold_(mu Y.A) uno per ogni tipo ricorsivo. Per esaminare valori di tipo ricorsivo, si usa una famiglia di distruttori unfold_(mu Y.A) Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 24 / 46
7 Esempio: (Fold) G - M : A [ mu Y. A / Y] G - fold M : mu Y. A per brevità ometto l indice di tipo (Unfold) G - M : mu Y. A G - unfold M : A [ mu X. A / Y] i costruttori di liste li posso definire: Nil = fold(inleft unit) Cons a as = fold(inright (a,as) i distruttori di liste head as = tail as = first (asright (unfold as)) second (asright (unfold as)) Esempio di come usando nozione semplici (mu, fold, unfold) posso modellare sistemi di tipo ricchi. Tutti i dati ricorsivi, non mutuamente ricorsivi e non parametrici, di Haskell, trattabili in questo modo. Codifica non troppo complessa. Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 25 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 26 / 46 Considero tre categorie sintattiche Espressioni Linguaggio imperativo, simil C. E ::= const id E binop E unop E Comandi C ::= id = E C; C while E {C} if E then C else C I(E,... E) {D ; C} Dichiarazione D ::= A id = E id(a1 id1,..., An idn) { C } epsilon D; D Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 27 / 46, espressioni Per le espressione, valgono le corrispondenti regole del linguaggio funzionale (Id, (Var)) G, id:a, G' - id : A G - true : Bool (ite) G - false : Bool G - (if _ then _ else _) : Bool -> A -> A -> A G - 1 : Nat G - 2 : Nat G - 3 : Nat... operazioni aritmetiche G - E1 : Nat G - E2 : Nat G - E1 + E2 : Nat Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 28 / 46
8 (Assign) G - id : A G - E : A G - id = E : Unit (Sequence) G - C1 : Unit G - C2 : Unit G - C1; C2 : Unit (While) G - E : Bool G - C : Unit G - while E {C} : Unit Comandi (If Then Else) G - E : Bool G - C1 : Unit G - C2 : Unit G - if E then C1 else C2 : Unit (Procedure) G - id : (A1 x...x An) -> Unit G - E1 : A1... G - En : A G - id (E1,..., En) : Unit (Blocco) G - D :: G1 G, G1 - C : Unit G - {D;C} : Unit Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 29 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 30 / 46 Dichiarazioni Le dichiarazione necessitano di un nuovo tipo di giudizio Una dichiarazione crea un ambiente, che viene utilizzato nel blocco della dichiarazione Giudizi nella forma G - D :: G1 (Id) G - E : A (A tipo memorizzabile) G - A id = E :: (id : A) (Proc) G, id1 : A1,..., idn : An - C : Unit G - id(a1 id1,... idn){ C } :: id : (A1 x...x An) -> Unit (Recursive Proc) G, id1 : A1,... An, id : (A1 x...x An) -> Unit - C : Unit G - id(a1 id1,... idn){ C } :: id : (A1 x...x An) -> Unit Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 31 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 32 / 46
9 (Sequenza) G - D1 :: G1 G, G1 - D2 :: G G - D1; D2 :: G1, G2 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 33 / 46 Array Devo formalizzare le due differente interpretazioni delle espressioni a sinistra della assegnazione = a destra dell assegnazione finora a sinistra solo identificatori id Tipi, aggiungo un costruttore di tipo A[B] con le opportune restrizioni A a memorizzabile B tipo enumerazione Espressioni, distinguo tra espressioni sinistre e destre LE ::= id LE[RE] RE ::= LE const RE binop RE unop RE Una nuova versione dell assegnamento C ::= LE = RE... Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 34 / 46 Per le espressioni distinguo due giudizi, G -l E : A significato: E può denotare una locazione di tipo A G -r E : A significato: E può denotare un valore di tipo A (Assign) G -l E1 : A G -r E2 : A G -l E1 = E2 : Unit (Left-Right) G -l E : A G -r E : A (Var) G, x:a, G' -l x : A Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 35 / 46 (Array) G -l E : A[B] G -r E1 : B G -l E[E1] : A Le restanti regole regole per le espressioni restano inalterate, diventando regole per giudizi right -r. Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 36 / 46
10 Polimorfismo di sottotipo. Maggiore flessibilità permetto ad un espressione di avere più tipi Varie forme di polimorfismo ad hoc di sottotipo parametrico combinazioni dei precedenti Sottotipo ( e ad hoc) introduco una relazione di sottotipo, con relativi giudizi e regole G - A <: B (Subsumtion) G -r E : A G - A <: B G -r E : B per i giudizi di sottotipo Posso trattare il polimorfismo ad-hoc, con assiomi del tipo. G - Int <: Float Polimorfismo dei linguaggi ad oggetti: un tipo oggetto con più campi, sottoggetto di uno con meno. formalizziamolo con i tipi Record G - A1 <: B1... G - Am <:Bm m < n G - { l1:a1,..., ln:an } <: { l1:b1,..., lm:bm} Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 37 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 38 / 46 Definisco regole di sottotipo per ogni costruttore di tipi. (Prod <:) G - A1 <: B1 G - A2 <:B G - A1 x A2 <: B1 x B2 sempre covariante con eccezione (Arrow <:) G - A1 <: B1 G - A2 <:B G - B1 -> A2 <: A1 -> B2 controvariante sul primo argomento. Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 39 / 46 (Arrow <:) G, X <: Y - A <: B G - mu X. A <: mu Y. B la regola (Arrow <: Wrong) G, X - A <: B G - mu X. A <: mu X. B mi permette di derivare Regola non ovvia, tipi ricorsivi. G - mu X. X -> Int <: mu X. X -> Float non corretto. Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 40 / 46
11 Esempi Polimorfismo parametrico Type inference per \ y: Int -> y * 2 * 3.14 \ y: Int -> y * 2 * 3.14 { Int[0..3] V = [2, 3, 4, 5]; V[V[1]] = V[1]} Haskell (versione semplificata), ML Hindley-Milner type system (versione semplificata) linguaggio funzionale senza notazioni di tipo variabili di tipo le regole associano ad un termine il tipo più generale si basa sull algoritmo del MGU (most general unifier) dati due termine con variabile trova la sostituzione più generale che rende i due termini uguali Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 41 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 42 / 46 Frammento minimo di Haskell Tipi... A, B un insieme di tipi base K in Basic un insieme di variabili di tipo a, b,c tipi funzioni A -> B Termini, codice... M, N variabili x costanti c : K funzioni \ x -> M applicazioni M N (Var) x:a - x : a (Fun) G, x : A - M : B G - (\ x:a -> M) : A->B Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 43 / 46 Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 44 / 46
12 (App) G1 - M : A1->B G2 - N : A U (G1 + G2) - M N : U(B) side conditions: G1 A1, non hanno nessuna variabile di tipo in comune con G2 A2 U la sostituzione di variabili di tipi con tipi più generale che faccia concordare G1 con G2 (assegnano alla stessa variabile lo stesso tipo) A1 con A2 (diventano uguali) ottenibile mediante l algoritmo di MGU (most general unifier) esempi - \ y -> \ x -> y x :? - \ y -> \ x -> y (y x) :? - (\ y -> \ x -> y (y x))(\ y -> \ x -> y (y x)) :? Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 45 / 46 se: - M : (a -> b) -> a -> b Idee e limiti M può assumere tutti i tipi ottenibili, istanziando le variabili a e b al termine N = \ f -> \ (y, z) -> (f z, f y) viene assegnato tipo (a -> b) -> (a x a) -> (b x b) il termine N (\ x -> x) (2, true) corretto ma non tipabile, tipabile con un sistema di tipi più ricco, t 1 <: σ 1. τ Regola principale: G - M : \/ t <: A. B G - A1 <: A G - M : B[A1/t] M ha tutti tipi ottenibili istanziando in τ, t1 con un qualsiasi sottotipo di σ. Descrizione formale del sistema di tipi. (Univ. di Udine) Type Assignment System 46 / 46
Elementi di semantica operazionale
Elementi di semantica operazionale 1 Contenuti sintassi astratta e domini sintattici un frammento di linguaggio imperativo semantica operazionale domini semantici: valori e stato relazioni di transizione
DettagliVBA è 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?
DettagliProgetto per il corso di Linguaggi di Programmazione e Compilatori A.A. 2003-2004 ML--
Progetto per il corso di Linguaggi di Programmazione e Compilatori A.A. 2003-2004 ML-- Luca Padovani lpadovan@cs.unibo.it 1 Introduzione Scopo del progetto è scrivere un compilatore per un linguaggio funzionale
DettagliElementi di semantica denotazionale ed operazionale
Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato
DettagliDefinizione di nuovi tipi
Definizione di nuovi tipi Un tipo è un insieme di valori. Per definire un nuovo tipo occorre specificare: 1 un nome per il tipo 2 come costruire i valori del tipo, cioè quali sono i costruttori del tipo.
DettagliAbstract Data Type (ADT)
Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo
DettagliProgrammazione 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
DettagliDEFINIZIONE DI NUOVI TIPI Un tipo è un insieme di valori.
1 DEFINIZIONE DI NUOVI TIPI Un tipo è un insieme di valori. Per definire un nuovo tipo occorre specificare: 1. un nome per il tipo 2. come costruire i valori del tipo, cioè quali sono i costruttori del
DettagliEsonero del corso di Programmazione a Oggetti
Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio
DettagliLINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliLezione 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
DettagliINFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
DettagliTEORIA 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
Dettaglistrutturare dati e codice
Puntatori e passaggio parametri strutturare dati e codice Tipo di dati int * Pi ; Op. dereferenziazione j = *Pi ; Op. indirizzo Pi = &i ; By value int f(int i) ; a = f(b) ; By address int f(int * Pi) ;
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliInterpretazione 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
DettagliCorso di Laurea in INFORMATICA
Corso di Laurea in INFORMATICA Algoritmi e Strutture Dati MODULO 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Specifica
DettagliGestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
DettagliProff. Fabio Ciao e Raffaele Bortone
ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMAZIONE ANNUALE A.S. 2014/2015 Classe IV C Informatica Proff. Fabio Ciao e Raffaele Bortone Libro di testo: Cloud
DettagliFONDAMENTI di INFORMATICA L. Mezzalira
FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software
DettagliSottoprogrammi: astrazione procedurale
Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliOBIETTIVI SPECIFICI DI APPRENDIMENTO
Disciplina:... Anno scolastico: 20.../20... Classe/i :... Docente:... DI APPRENDIMENTO SEZIONE 1 Premesse matematiche Nozioni fondamentali sui sistemi di numerazione Sistemi di numerazione in base diversa
DettagliAlgebra Booleana ed Espressioni Booleane
Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale
DettagliCorso di Laurea in Matematica
Corso di Laurea in Matematica Laboratorio di Informatica (a.a. 2002-03) Esercizi 1 Docente: Monica Nesi 1. Scrivere un programma in C che, dati in ingresso due numeri naturali, calcola il loro prodotto
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliPresentazione. Teoria della Concorrenza Modulo di Semantica. Approcci alla semantica
Presentazione Modulo di 6 crediti (48 ore), Teoria della Concorrenza Modulo di Semantica Pietro Di Gianantonio corso di laurea in informatica Argomento principale Semantica dei linguaggi di programmazione
DettagliAlgoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità
DettagliLa programmazione con vincoli in breve. La programmazione con vincoli in breve
Obbiettivi Introdurre la nozione di equivalenza di CSP. Dare una introduzione intuitiva dei metodi generali per la programmazione con vincoli. Introdurre il framework di base per la programmazione con
DettagliPuntatori Passaggio di parametri per indirizzo
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Puntatori Passaggio di parametri per indirizzo Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica
Dettagli4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste
4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1
Dettagli3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
DettagliNomi e Ambiente. Nicola Fanizzi. Linguaggi di Programmazione [010194] 20 apr, 2016. Dipartimento di Informatica Università degli Studi di Bari
Nomi e Ambiente Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 20 apr, 2016 Sommario 1 Nomi Definizione Astrazione Elementare Progettazione
DettagliI tipi di dato astratti
I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato
DettagliElaborato di Fondamenti di Informatica 2007/08. Claudio Guidi cguidi@cs.unibo.it
Elaborato di Fondamenti di Informatica 2007/08 Claudio Guidi cguidi@cs.unibo.it Perché e quando. Consente di comprendere come i risultati teorici della teoria dei linguaggi formali possano avere un impatto
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliRicapitoliamo. Ricapitoliamo
Ricapitoliamo Finora ci siamo concentrati sui processi computazionali e sul ruolo che giocano le procedure nella progettazione dei programmi In particolare, abbiamo visto: Come usare dati primitivi (numeri)
DettagliI metodi formali nel processo di sviluppo del software
I metodi formali nel processo di sviluppo del software I metodi formali consentono di creare una specifica più completa, uniforme e non ambigua di quelle prodotte usando i metodi convenzionali ed orientati
DettagliPIANO DI LAVORO. a.s. 2015 / 2016
PIANO DI LAVORO a.s. 2015 / 2016 Materia: INFORMATICA Classe: terza informatica- sez. A Data di presentazione: 15/10/2015 DOCENTI FIRMA Cerri Marta Bergamasco Alessandra Posta elettronica: itisleon@tin.it
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 2 - Funzioni Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2.
DettagliSQL/OLAP. Estensioni OLAP in SQL
SQL/OLAP Estensioni OLAP in SQL 1 Definizione e calcolo delle misure Definire una misura significa specificare gli operatori di aggregazione rispetto a tutte le dimensioni del fatto Ipotesi: per ogni misura,
DettagliGli 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
DettagliAlgoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
DettagliTipi di Dato Ricorsivi
Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi
DettagliIntroduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
Dettagli12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
DettagliPRINCIPI DI SISTEMI OPERATIVI
PRINCIPI DI SISTEMI OPERATIVI ESERCIZIO del 28 NOVEMBRE 2003 Un distributore di benzina ha a disposizione P pompe e una cisterna da L litri. Le automobili arrivano al distributore e richiedono un certo
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
DettagliRisolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati
Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari
DettagliIntroduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali
a Visual Basic Lezione 1 Concetti base e istruzioni condizionali Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Un esempio:
DettagliIl software e la programmazione
Il software e la programmazione Concetti base sul software Elementi di programmazione Cenni sul linguaggio Pascal Che cosa è il software Determina ciò che un computer può fare Include istruzioni memorizzate
DettagliNascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti
Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del
DettagliDAL DIAGRAMMA AL CODICE
DAL DIAGRAMMA AL CODICE Un diagramma di flusso Appare, come un insieme di blocchi di forme diverse che contengono le istruzioni da eseguire, collegati fra loro da linee orientate che specificano la sequenza
DettagliSeconda Prova di Ricerca Operativa. Cognome Nome Numero Matricola A 1/12 A 2/12
A / A / Seconda Prova di Ricerca Operativa Cognome Nome Numero Matricola Nota: LA RISOLUZIONE CORRETTA DEGLI ESERCIZI CONTRADDISTINTI DA UN ASTERISCO È CONDIZIONE NECESSARIA PER IL RAGGIUNGIMENTO DELLA
DettagliCapitolo 5: Algol 60, Pascal e C
Capitolo 5: Algol 60, Pascal e C Algol 60 (58-63) -Backus, McCarthy -fino al Pascal (70) è stato lo standard accademico punti positivi -BNF!! -block structure (begin-end), recursion, higher order functions,
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliSTRINGHE di un ALFABETO. Consideriamo un alfabeto di simboli V V è un insieme finito e non vuoto. Alfabeto della lingua inglese I={a,b,c,..
STRINGHE di un ALFABETO Consideriamo un alfabeto di simboli V V è un insieme finito e non vuoto Alfabeto binario A={0,1} Alfabeto della lingua inglese I={a,b,c,..z} Stringhe o parole Gli elementi di V
DettagliEsempi di domande della seconda provetta
Esempi di domande della seconda provetta Data la seguente stringa di riferimenti a pagine virtuali: S = 1, 7, 5, 1, 2, 1, 7, 1, 5, 7, 2, 1, 5 valutare la percentuale di Page Fault se il rimpiazzamento
DettagliDescrizione di un algoritmo
Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica
DettagliApplicazioni grafiche
Applicazioni grafiche I grafici all interno di un form sono realizzati attraverso gli oggetti del namespace System.Drawing. Graphics. Il namespace è incluso automaticamente nel progetto, quindi non è necessaria
DettagliTesti di Esercizi e Quesiti 1
Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica
DettagliIl descrittore di processo (PCB)
Il descrittore di processo (PC) Il S.O. gestisce i processi associando a ciascuno di essi un struttura dati di tipo record detta descrittore di processo o Process Control lock (PC) Il PC contiene tutte
DettagliUniversità degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso
Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture
DettagliNORMALIZZAZIONE DI SCHEMI RELAZIONALI. Prof.ssa Rosalba Giugno
NORMALIZZAZIONE DI SCHEMI RELAZIONALI Prof.ssa Rosalba Giugno PROBLEMA GENERALE La progettazione concettuale e logica produce uno schema relazionale che rappresenta la realta dei dati nella nostra applicazione.
DettagliProssime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1
Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 18 19 gennaio
Dettaglicostruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
DettagliAA 2006-07 LA RICORSIONE
PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella
DettagliUML Diagrammi delle classi. UML Diagramma classi 1
UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio
DettagliDispensa 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(1) (2) (3) (4) 11 nessuno/a 9 10. (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B
Compito: Domanda 1 Per l'algoritmo fornito di seguito, qual è il valore assunto dalla variabile contatore quando l'algoritmo termina: Passo 1 Poni il valore di contatore a 1 Passo 2 Ripeti i passi da 3
DettagliAA 2014-2015. 20. Nomi, binding
AA 2014-2015 20. Nomi, binding 1 Nomi Un nome in un linguaggio di programmazione è esa;amente quello che immaginate o la maggior parte dei nomi sono definia dal programma (gli idenaficatori) o ma anche
DettagliML for Dummies. Luca Abeni September 3, 2015
ML for Dummies Luca Abeni September 3, 2015 1 Introduzione Mentre un linguaggio di tipo imperativo rispecchia l architettura di Von Neumann, descrivendo i programmi come sequenze di istruzioni che modificano
DettagliAnalizzatore 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,
DettagliIstruzioni condizionali. Istruzioni condizionali IF-THEN- ELSE IF-THEN-ELSE. Statistica computazionale Carla Rampichini a.a.
Istruzioni condizionali Istruzioni condizionali Statistica computazionale Carla Rampichini a.a. 2008/09 Subsetting I I espressione; I-THEN-ELSE I espress THEN istr; [ELSE istr;] DO WHILE DO UNTIL I-THEN-
DettagliProgrammazione Funzionale
Programmazione Funzionale LP imperativi: apparenza simile modello di progettazione = macchina fisica Famiglia dei LP imperativi = progressivo miglioramento del FORTRAN Obiezione: pesante aderenza dei LP
DettagliProf. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:
LA STRUTTURA DI RIPETIZIONE La ripetizione POST-condizionale La ripetizione PRE-condizionale INTRODUZIONE (1/3) Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
DettagliMonitor. Introduzione. Struttura di un TDA Monitor
Monitor Domenico Cotroneo Dipartimento di Informatica e Sistemistica Introduzione E stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l assegnazione
DettagliGrammatica di base: Pointers
Grammatica di base: Pointers Esistono I puntatori a funzioni. Bisogna esplicitare esattamente il tipo di ritorno e il tipo di argomento. Per evitare ambiguità con il prefisso * nel declarator, il nome
DettagliFondamenti di Programmazione
Fondamenti di Programmazione Capitolo 2 Variabili, Espressioni e Comandi Prof. Mauro Gaspari: gaspari@cs.unibo.it Valori e Tipi Un valore (= value) è una delle entità fondamentali che i programmi sono
DettagliProgetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012
Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Concetti importanti da (ri)vedere Programmazione imperativa Strutture di
DettagliLaboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Ordinamenti: mergesort e quicksort
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Ordinamenti: mergesort e quicksort Marco Antoniotti Mergesort e Quicksort Due importantissimi algoritmi di ordinamento La conoscenza completa
DettagliFondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)
Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni
DettagliVisibilità dei Membri di una Classe
Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce
DettagliSemantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma.
Semantica dei programmi La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma. Semantica operazionale: associa ad ogni programma la sequenza delle sue
DettagliCAPITOLO 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
DettagliAppunti del corso di Informatica 1. 6 Introduzione al linguaggio C
Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)
DettagliIntroduzione ai tipi di dato astratti: applicazione alle liste
Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione
DettagliLinguaggi di programmazione
Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore
DettagliAppunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C
Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliRiconoscere 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
DettagliUnità 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
Dettagli2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
DettagliDATABASE PER IL WEB. Programmazione Web 1
DATABASE PER IL WEB Programmazione Web 1 Archite3ura web con database Client Tier Web/App Tier DB Tier Client Web / App Server Database Il server web comunica con un altro server che con8ene il la banca
DettagliEVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO
EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi
DettagliTipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi
TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,
DettagliLa Macchina RAM Shepherdson e Sturgis (1963)
La Macchina RAM Shepherdson e Sturgis (963) Nastro di ingresso.......... PROGRAM COUNTER Nastro di uscita PROGRAMMA ACCUMULATORE UNITA' ARITMETICA............... 2 3 4 M E M O R I A Formato delle Istruzioni
DettagliLaboratorio di architettura degli elaboratori Progetto finale AA 2005/2006
Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006 Esercizio 1 - Heapsort Si consideri la seguente struttura dati, chiamata heap. Essa è un albero binario semi-completo (ossia un
Dettagli