Analisi semantica. Type Assignment System

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Analisi semantica. Type Assignment System"

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 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

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

Progetto 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-- 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

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi 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

Dettagli

Definizione di nuovi tipi

Definizione 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.

Dettagli

Abstract Data Type (ADT)

Abstract 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

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

DEFINIZIONE DI NUOVI TIPI Un tipo è un insieme di valori.

DEFINIZIONE 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

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero 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

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI 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

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

INFORMATICA 1 L. Mezzalira

INFORMATICA 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

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

strutturare dati e codice

strutturare 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) ;

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE 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

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

Corso di Laurea in INFORMATICA

Corso 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

Dettagli

Gestione di files Motivazioni

Gestione 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)

Dettagli

Proff. Fabio Ciao e Raffaele Bortone

Proff. 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

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI 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

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione 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)

Dettagli

OBIETTIVI SPECIFICI DI APPRENDIMENTO

OBIETTIVI 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

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra 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

Dettagli

Corso di Laurea in Matematica

Corso 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

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli 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

Dettagli

Presentazione. Teoria della Concorrenza Modulo di Semantica. Approcci alla semantica

Presentazione. 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

Dettagli

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi 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à

Dettagli

La programmazione con vincoli in breve. La programmazione con vincoli in breve

La 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

Dettagli

Puntatori Passaggio di parametri per indirizzo

Puntatori 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

Dettagli

4 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. 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

Dettagli

3. La sintassi di Java

3. 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

Dettagli

Nomi e Ambiente. Nicola Fanizzi. Linguaggi di Programmazione [010194] 20 apr, 2016. Dipartimento di Informatica Università degli Studi di Bari

Nomi 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

Dettagli

I tipi di dato astratti

I 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

Dettagli

Elaborato 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 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

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi 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

Dettagli

Ricapitoliamo. Ricapitoliamo

Ricapitoliamo. 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)

Dettagli

I metodi formali nel processo di sviluppo del software

I 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

Dettagli

PIANO DI LAVORO. a.s. 2015 / 2016

PIANO 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

Dettagli

Programmazione I - Laboratorio

Programmazione 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.

Dettagli

SQL/OLAP. Estensioni OLAP in SQL

SQL/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,

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

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. 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

Dettagli

Tipi di Dato Ricorsivi

Tipi 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

Dettagli

Introduzione al linguaggio C Gli array

Introduzione 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

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - 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,

Dettagli

PRINCIPI DI SISTEMI OPERATIVI

PRINCIPI 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

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Università 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)

Dettagli

Variabili e tipi di dato

Variabili 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

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere 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

Dettagli

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Introduzione 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:

Dettagli

Il software e la programmazione

Il 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

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita 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

Dettagli

DAL DIAGRAMMA AL CODICE

DAL 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

Dettagli

Seconda Prova di Ricerca Operativa. Cognome Nome Numero Matricola A 1/12 A 2/12

Seconda 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

Dettagli

Capitolo 5: Algol 60, Pascal e C

Capitolo 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,

Dettagli

Introduzione alla programmazione in C

Introduzione 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

Dettagli

STRINGHE 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 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

Dettagli

Esempi di domande della seconda provetta

Esempi 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

Dettagli

Descrizione di un algoritmo

Descrizione 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

Dettagli

Applicazioni grafiche

Applicazioni 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

Dettagli

Testi di Esercizi e Quesiti 1

Testi 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

Dettagli

Il descrittore di processo (PCB)

Il 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

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università 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

Dettagli

NORMALIZZAZIONE DI SCHEMI RELAZIONALI. Prof.ssa Rosalba Giugno

NORMALIZZAZIONE 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.

Dettagli

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Prossime 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

Dettagli

costruttori e distruttori

costruttori 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,

Dettagli

AA 2006-07 LA RICORSIONE

AA 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

Dettagli

UML Diagrammi delle classi. UML Diagramma classi 1

UML 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

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

(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

(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

Dettagli

AA 2014-2015. 20. Nomi, binding

AA 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

Dettagli

ML for Dummies. Luca Abeni September 3, 2015

ML 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

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

Istruzioni condizionali. Istruzioni condizionali IF-THEN- ELSE IF-THEN-ELSE. Statistica computazionale Carla Rampichini a.a.

Istruzioni 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-

Dettagli

Programmazione Funzionale

Programmazione 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

Dettagli

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Prof. 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

Dettagli

La struttura dati ad albero binario

La 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,

Dettagli

Monitor. Introduzione. Struttura di un TDA Monitor

Monitor. 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

Dettagli

Grammatica di base: Pointers

Grammatica 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

Dettagli

Fondamenti di Programmazione

Fondamenti 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

Dettagli

Progetto 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 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

Dettagli

Laboratorio 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 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

Dettagli

Fondamenti 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) 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

Dettagli

Visibilità dei Membri di una Classe

Visibilità 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

Dettagli

Semantica 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 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

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

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti 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)

Dettagli

Introduzione ai tipi di dato astratti: applicazione alle liste

Introduzione 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

Dettagli

Linguaggi di programmazione

Linguaggi 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

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti 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)

Dettagli

dall argomento argomento della malloc()

dall 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 È

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

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

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

2. 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

Dettagli

DATABASE PER IL WEB. Programmazione Web 1

DATABASE 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

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE 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

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente 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,

Dettagli

La Macchina RAM Shepherdson e Sturgis (1963)

La 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

Dettagli

Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006

Laboratorio 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