Interpretazione astratta in praticaun analizzatore generico per Ja
|
|
- Claudia Boscolo
- 8 anni fa
- Visualizzazioni
Transcript
1 Riassunto puntate precedenti Control Flow Graph Proprietà Dominio numerico Approssimazione Interpretazione astratta in pratica Un analizzatore generico per Java Pietro Ferrara Università Ca Foscari di Venezia I Venezia (Italy) Ecole Polytechnique, Paris F Palaiseau (France) April 24, 2008 Pietro Ferrara Interpretazione astratta in praticaun analizzatore generico per Ja
2 Abbiamo visto Semantica concreta del bytecode di Java Dominio astratto Chiamate di metodo Letture e scritture sullo heap Attendo domande! pietro.ferrara@gmail.com
3 La traccia in astratto In concreto: Come rappresentiamo una singola esecuzione? Come una sequenza ordinata di stati! Facile perchè nel concreto in ogni momento possiamo valutare una condizione a true o false! Non esiste il dubbio! E in astratto??? i = read(); if(i > 0)... else...
4 Bytecode Non sappiamo quale dei due rami dobbiamo percorrere Lo stesso nei cicli: quante iterazioni? A livello bytecode ancora peggio Codice non strutturato Più di due frecce possono puntare sulla stessa istruzione Frecce staticamente determinate if... #index goto #index
5 Grafo di controllo In astratto costruiamo un grafo di controllo (control flow graph) Uguale agli schemi degli algoritmi entry point iload 1>=0 iload 1<0 15 getstatic #2 4 getstatic #2 18 ldc #5 < No > 7 ldc #3 < Ok > 20 invokevirtual #4 9 invokevirtual #4 23 return
6 In concreto Conosciamo il valore (intero) dell indice 1 dell array di variabili locali Supponendo che è uguale a 1 Output sullo schermo: Ok entry point iload 1>=0 iload 1<0 15 getstatic #2 4 getstatic #2 18 ldc #5 < No > 7 ldc #3 < Ok > 20 invokevirtual #4 9 invokevirtual #4 23 return
7 In astratto Non conosciamo il valore! Supponiamo (per essere sound) che è uguale a Non sappiamo se si va da una parte o dall altra! Output sullo schermo: Ok OPPURE No entry point iload 1>=0 iload 1<0 15 getstatic #2 4 getstatic #2 18 ldc #5 < No > 7 ldc #3 < Ok > 20 invokevirtual #4 9 invokevirtual #4 23 return
8 Riassumendo In concreto Ok Solo un valore??? se il valore è 1: Ok se il valore è 0: Ok se il valore è -1: No... In astratto Ok OPPURE No Upper bound tra ramo then e ramo else dell if entry point iload 1>=0 iload 1<0 15 getstatic #2 4 getstatic #2 18 ldc #5 < No > 7 ldc #3 < Ok > 20 invokevirtual #4 9 invokevirtual #4 23 return
9 Traccia concreta vs. CFG astratto In concreto: 0 iload 1 1 iflt 15 (+14) 4 getstatic #2 < java/lang/system.out > 7 ldc #3 < Ok > 9 invokevirtual #4 < java/io/printstream.println > 12 goto 23 (+11) 23 return 0 iload 1 1 iflt 15 (+14) 15 getstatic #2 < java/lang/system.out > 18 ldc #5 < No > 20 invokevirtual #4 < java/io/printstream.println > 23 return In astratto: entry point iload 1>=0 iload 1<0 15 getstatic #2 4 getstatic #2 18 ldc #5 < No > 7 ldc #3 < Ok > 20 invokevirtual #4 9 invokevirtual #4 23 return
10 Manca qualcosa Fin qui abbiamo visto Dominio e semantica concreta Dominio e semantica astratta Ma... perchè? Ovvero: qual è l obiettivo di un analisi??? Validare una proprietà
11 Proprietà? Cosa si intende per proprietà? In fin dei conti... qualsiasi cosa possa essere interessante Per chi? Per i programmatori... Accessi a puntatori a null Divisioni per zero Accesso a un array con un indice negativo o più grande della lunghezza dell array Tutti i file aperti devono essere chiusi prima della fine del programma...
12 Tipi di proprietà Proprietà semplici vs. proprietà difficili Semplici: Difficili: accesso a null, divisioni per zero,... Tutte quelle proprietà che possono essere validate guardando il singolo stato chiusura dei files,... Tutte quelle proprietà che per essere validate richiedono di vedere tutto il grafo di controllo Vedremo solo proprietà semplici...
13 Definizione formale in concreto Funzione che, dato uno stato, ritorna true o false Accesso a null: nullaccess : Σ {true, false} nullaccess(os) = false pop(os) = null Si applica tale funzione a tutti gli stati della traccia nullaccesstrace : Σ + {true, false} nullaccess(τ) = false σ τ : nullaccess(σ) = false
14 Definizione formale in astratto Funzione che, dato uno stato, ritorna true o false o...! Talvolta l errore potrebbe esserci ma non ne siamo sicuri Accesso a null... Insieme di indirizzi! Se uno è null, la proprietà POTREBBE non essere validata! nullaccess : Σ {true, false, } nullaccess(ôs) = null pop(ôs) nullaccess : Σ {true, false, } nullaccess(ôs) = true null pop(ôs) nullaccess : Σ {true, false, } nullaccess(ôs) = false pop(ôs) = { null}
15 Esempio in concreto 1 : Object a = null; 2 : public void foo(boolean init){ 3 : if(init) 4 : a = new Object(); 5 : a.compute(); 6 : } Supponiamo che init=false a=null Arriviamo a a.compute() a==null Proprietà non validata!
16 Esempio in concreto 1 : Object a = null; 2 : public void foo(boolean init){ 3 : if(init) 4 : a = new Object(); 5 : a.compute(); 6 : } Supponiamo che init=true a=null Arriviamo a a.compute() a!=null Proprietà validata!
17 Esempio in astratto 1 : Object a = null; 2 : public void foo(boolean init){ 3 : if(init) 4 : a = new Object(); 5 : a.compute(); 6 : } init= a={null, pc : 4} Arriviamo a a.compute() null êval(a) Proprietà=!
18 Concreto vs. Astratto In concreto consideriamo i valori interi tralasciamo arrotondamenti, floating point, etc etc... In astratto molti diversi modi di approssimare tale informazione (30 anni di letteratura scientifica sull argomento!) Non-relazionale (facile!) Relazionale (difficile!) - mantiene relazioni tra variabili come x < y Noi consideriamo solo il caso facile
19 Domini non-relazionali Segni γ(0) = {0} γ(+) = {i N : i 0} γ( ) = {i N : i 0} γ( ) = N γ( ) =
20 Domini non-relazionali Intervalli γ([a..b]) = {i N : a i b}
21 Domini non-relazionali Parità D P γ(d) = {i N : i%2 = 1} γ(p) = {i N : i%2 = 0} γ( ) = N γ( ) =
22 Domini non-relazionali Congruenze γ(n) = {i N : i%n = 0}
23 Operazioni con il dominio delle congruenze Siano c 1 e c 2 due valori interi che rappresentano due classi di congruenze (γ(c 1 ) = {i : i%c 1 = 0}) Upper bound: c 1 c 2 = MCD(c 1, c 2 ) (MCD=massimo comune divisore) Esempio: upper bound tra un numero divisilbe per 6 e uno divisible per 21. Siamo sicuri di avere numero divisibile per 3! Addizione: c 1 + c 2 = MCD(c 1, c 2 ) (c 1 x + c 2 y = k ((c 1 /k) x + (c 2 /k) y)), dove k = MCD(c 1, c 2 ) Se sommo un numero divisibile per 4 e uno divisibile per 6 ottengo un numero di sicuro divisibile per 2 Moltiplicazione: c 1 c 2 = c 1 c 2 Se un numero è pari e un altro è divisibile per 3 Li moltiplico Ottengo un numero che di sicuro è divisibile per 6!
24 Domini non-relazionali Insiemi di interi {1, 2} {2, 3} {1, 3}... {1} {2} {3}... γ({i 1, i 2,..., i n }) = {i j : j [1..n]}
25 Operatori e operazioni aritmetiche Operatore di ordinamento: Upper bound: Operatori aritmetici: applicano a tutte le possibili combinazioni gli operatori aritmetici su singoli valori interi {i 1, i 2 } + {i 1, i 2 } = {i 1 + i 1, i 1 + i 2, i 2 + i 1, i 2 + i 2 } Esplosione nel numero di valori Parametrizziamo il dominio su un valore k Se {i 1,...} > k allora astraiamo a
26 Domini relazionali Pentagoni Intervalli e x < y
27 Domini relazionali Ottagoni Intervalli e ±x ± y a
28 Domini relazionali Polyhedra Σa i x i b
29 Perchè facile? I domini relazionali devono gestire direttamente gli assegnamenti le variabili le espressioni aritmetiche le condizioni... I domini non-relazionali invece possono lavorare direttamente sui valori Perdendo (un po di) informazione Necessario definire la semantica delle operazioni aritmetiche intervalli: [a 1..b 1 ] + [a 2..b 2 ] = [a 1 + a 2..b 1 + b 2 ] valutare delle condizioni segni: s < 0 = true s = implementare ordinamento congruenze: i 1 i 2 i 2 %i 1 = 0 implementare upper bound, lower bound e widening p 1 if p 2 = p parità: p 1 p 2 = 2 if p 1 = if p 1 p 2 p 1 = p 2 = otherwise p 1
30 Perchè??? Tanti domini Intervalli più precisi del dominio dei segni Congruenze più precisi del dominio di parità Polyhedra più precisi di ottagoni, pentagoni... Ma... perchè? Tradeoff tra Precisione Velocità Caso per caso
31 Bound degli array public void prova(int[] arr) { for(int i = 0; i < arr.length; i + +) arr[i] = 0; } Con il dominio degli intervalli All interno del ciclo for : i [0.. + ] i 0? Sì! i < arr.length? Boh! Con il dominio degli upper bound (solo relazioni x < y) All interno del ciclo for : i < arr.length i 0? Boh! i < arr.length? Sì! Come usare insieme i due domini?
32 Prodotto cartesiano Si può fare il prodotto cartesiano dei due domini Siano D 1 e D 2 due domini astratti D 1 D 2 è il prodotto cartesiano Semplicemente si usano separatamente i due domini (d 1, d 2 ) (d 1, d 2) = (d 1 1 d 1, d 2 2 d 2 ) (d 1, d 2 ) (d 1, d 2) = (d 1 1 d 1, d 2 2 d 2 ) (d 1, d 2 ) (d 1, d 2) d 1 1 d 1 d 2 2 d 2...
33 Bound degli array public void prova(int[] arr) { for(int i = 0; i < arr.length; i + +) arr[i] = 0; } Prodotto cartesiano tra intervalli e upper bound All interno del ciclo for : (i [0.. + ], i < arr.length) i 0? Sì: i [0.. + ] i < arr.length? Sì: i < arr.length
34 Bound degli array public void prova(int[] arr, int j, int i) { if(i < j && i >= 0) if(arr.length >= 100) if(j < 100 && j >= 0) arr[i] = 0; } Prodotto cartesiano tra intervalli e upper bound All interno del ciclo for : (arr.length [ ], j [0..99], i [0.. + ], i < j) i 0? Sì: i [0.. + ] i < arr.length? Boh! Possiamo raffinare l informazione contenuta negli upper bound con quella contenuta dagli intervalli {arr.length [ ], j [0..99]} j < arr.length {i < j, j < arr.length} i < arr.length Stato ridotto: ({arr.length [ ], j [0..99], i [0.. + ]}, {i < j, j < arr.length, i < arr.length})
35 Prodotto ridotto Prodotto ridotto di due domini D 1 e D 2 astratti: Prodotto cartesiano D 1 D 2 Funzione di riduzione: reduce : (D 1 D 2 ) (D 1 D 2 ) tale che reduce(d 1, d 2 ) (d 1, d 2 ) La funzione di riduzione si può applicare quando si vuole Problema: Il prodotto della riduzione è più piccolo (ovvero preciso) dello stato iniziale
36 Perdita di informazione Ieri abbiamo visto altri approci per l astrazione di indirizzi Non esiste una soluzione perfetta ma varie soluzione adatte a diversi contesti Idem per i domini numerici Lo stesso accade per il nostro dominio astratto Stack di frame Heap Anche se non sembra, perdiamo informazione rispetto all esecuzione concreta E a ciò che si potrebbe inferire a livello di codice sorgente
37 Ordine delle operazioni x = (z + y) y; Dominio degli intervalli: z [2..4], y [ 1..1] Che valore viene assegnato a x? Degli operatori astratti di somma e addizione particolarmente precisi possono vedere che: Se y = 1 : ([2..4] + [ 1.. 1]) [ 1.. 1] = [ 3.. 1] Se y = 1 : ([2..4] + [1..1]) [1..1] = [3..5] Se y = 0 : ([2..4] + [0..0]) [0..0] = [0..0] Risultato: [ 3..5]
38 Ordine delle operazioni t = z + y; x = t y; A livello bytecode Dominio degli intervalli: z [2..4], y [ 1..1] Che valore viene assegnato a x? t = z + y : t [2..4] + [ 1..1] = [1..5] x = t y : t [1..5] [ 1..1] = [ 5..5] Risultato: [ 5..5] Prima avevamo ottenuto [ 3..5]!
39 Ricostruzione di espressioni Come ovviare a questa perdita di informazione? Ricostruendo le espressioni Il bytecode contiene esattamente le stesse informazioni del codice sorgente Ma spezzettate! Tutti i valori vengono letti e passati allo stack delle operazioni Questo lavoro solo tra due valori Ad esempio w = x + y + z è tradotto in t = x + y; w = t + z; (x + y) z < 0 è tradotto in t = x + y; t = t z; t < 0
40 Analisi delle condizioni Domini relazionali: Analizzare con precisione le condizioni Vengono dedotte constraint indispensabili per provare la correttezza di un programma Per definizione più variabili coinvolte in una constraint Bytecode spezzetta Valori delle variabili passati allo stack Operazioni solo tra due variabili (add, mult,...)
41 if(i + y < 5&&i y < 10)... 0 iload 1 1 iload 2 2 iadd 3 iconst 5 4 if icmpge 23 (+19) 7 iload 1 8 iload 2 9 isub 10 bipush if icmpge 23 (+11)... A livello di codice sorgente so che i + y < 5, i y < 10 per valutare a true la condizione Tale informazione può essere usato da un dominio relazionale (ottagoni, polyhedra) A livello bytecode... Un disastro!
42 Semplificando 0 iload 1 1 iload 2 2 iadd 3 iconst 5 4 if icmpge 23 (+19) 7 iload 1 8 iload 2 9 isub 10 bipush if icmpge 23 (+11)... t = i + y; if(!(t >= 5) {) t1 = i y; if(!(t1 >= 10)){...
43 Analizzando t = i + y; if(!(t >= 5) {) t1 = i y; if(!(t1 >= 10)){... Analizzando le condizioni con i polyhedra!(t >= 5) t < 5!(t1 >= 10) t1 < 10 Non sappiamo che t = i + y e t1 = i y! Non ce ne facciamo niente!
44 Un altro esempio boolean c = i + y < 5 && i y < if(c)... Quando assegnamo c Non sappiamo se la condizione è true o false c [0..1], ma nessuna informazione relazionale! Quando valutiamo la condizione c [0..1], può essere true o false Non riusciamo a valutare la condizione Ma non abbiamo nemmeno informazione relazionale!
45 Discussione Il nostro dominio sembrava perfetto! Astrazione lineare del dominio concreto Fa acqua da tutte le parti! Non è proprio così... Si può senza dubbio raffinare Anche raffinare ha un costo computazionale... e di implementazione Ribadisco: non esiste la soluzione perfetta Dipende dalle esigenze Tema di ricerca scientifica quantomai aperto Come l astrazione degli indirizzi, i domini numerici,...
JAIL: Javacard Abstract Interpretation-based Lifeguard
JAIL: Javacard Abstract Interpretation-based Lifeguard Pietro Ferrara Università Ca Foscari di Venezia Dipartimento di Informatica Ecole Polytechnique, Paris Pisa, 16 febbraio 2006 Obiettivi Abbiamo implementato
DettagliLa selezione binaria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per
DettagliEsercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
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
DettagliSiamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
DettagliUso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012
Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono
DettagliINTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI
INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.
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
DettagliEsempi di algoritmi. Lezione III
Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni
DettagliEsercitazione Informatica I AA 2012-2013. Nicola Paoletti
Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.
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
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
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
DettagliElementi 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
Dettagli13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliObiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico
M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p. 3/43 M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p.
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
Dettagli10 - Programmare con gli Array
10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliAPPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
Dettaglirisulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
DettagliCorso di Calcolo Numerico
Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Sistemi di Numerazione Sistema decimale La
DettagliFasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
DettagliAlgebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliComplemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno
Rappresentazione di numeri Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Un numero e un entità teorica,
DettagliCALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU
Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi
DettagliUna funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.
Ricorsione Funzioni ricorsive Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Un esempio di funzione ricorsiva
DettagliProcesso di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico
Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare
DettagliMetodologie di programmazione in Fortran 90
Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di
Dettagli3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di
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
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,
DettagliProva di Laboratorio di Programmazione
Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare
DettagliSchemi delle Lezioni di Matematica Generale. Pierpaolo Montana
Schemi delle Lezioni di Matematica Generale Pierpaolo Montana Al-giabr wa al-mukabalah di Al Khuwarizmi scritto approssimativamente nel 820 D.C. Manuale arabo da cui deriviamo due nomi: Algebra Algoritmo
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
DettagliMatlab: Strutture di Controllo. Informatica B
Matlab: Strutture di Controllo Informatica B Tipo di dato logico È un tipo di dato che può avere solo due valori true (vero) 1 false (falso) 0 I valori di questo tipo possono essere generati direttamente
DettagliAlcune nozioni di base di Logica Matematica
Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di
DettagliIntroduzione all Information Retrieval
Introduzione all Information Retrieval Argomenti della lezione Definizione di Information Retrieval. Information Retrieval vs Data Retrieval. Indicizzazione di collezioni e ricerca. Modelli per Information
DettagliStatistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi.
Iniziamo con definizione (capiremo fra poco la sua utilità): DEFINIZIONE DI VARIABILE ALEATORIA Una variabile aleatoria (in breve v.a.) X è funzione che ha come dominio Ω e come codominio R. In formule:
DettagliOrganizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
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)
DettagliAnalisi e Verifica di Programmi Laboratorio di AVP
Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA 2004-05 Tino Cortesi Analisi e Verifica Cosa Individuare proprietà interessanti dei nostri programmi: Valori prodotti,
DettagliConvertitori numerici in Excel
ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel
DettagliLe variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
DettagliProgrammazione in Java (I modulo) Lezione 3: Prime nozioni
Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per
DettagliProtezione. Protezione. Protezione. Obiettivi della protezione
Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in
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
DettagliCorso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile
Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione
DettagliStrutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
DettagliRISOLUTORE AUTOMATICO PER SUDOKU
RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU
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
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Novembre 2011 1 Contenuti q Somma di una sequenza di numeri interi
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
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
DettagliCodifica dei numeri negativi
E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione
DettagliOggetti Lezione 3. aspetti generali e definizione di classi I
Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione
DettagliLa gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
DettagliCOSTER. Import/Export su SWC701. SwcImportExport
SwcImportExport 1 Con SWC701 è possibile esportare ed importare degli impianti dal vostro database in modo da tenere aggiornati più Pc non in rete o non facente capo allo stesso DataBase. Il caso più comune
DettagliArduino: Programmazione
Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite
DettagliSistemi di Numerazione Binaria NB.1
Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato
DettagliESEMPIO 1: eseguire il complemento a 10 di 765
COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento
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
DettagliSOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
DettagliIntroduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione
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
DettagliStruttura di un programma Java
Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che
DettagliMisure finanziarie del rendimento: il Van
Misure finanziarie del rendimento: il Van 6.XI.2013 Il valore attuale netto Il valore attuale netto di un progetto si calcola per mezzo di un modello finanziario basato su stime circa i ricavi i costi
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
DettagliMisure finanziarie del rendimento: il Van
Misure finanziarie del rendimento: il Van 12.XI.2014 Il valore attuale netto Il valore attuale netto di un progetto si calcola l per mezzo di un modello finanziario basato su stime circa i ricavi i costi
DettagliCapitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali
Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali 1 Modelli imperativi: le RAM (Random Access Machine) I modelli di calcolo imperativi sono direttamente collegati al modello Von Neumann,
DettagliAlgoritmi e diagrammi di flusso
Algoritmi e diagrammi di flusso Un algoritmo può essere descritto come una sequenza finita ed ordinata di operazioni che descrivono la soluzione di un problema. Per sequenza finita si intende che un algoritmo
DettagliA intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.
Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio
DettagliRicerca binaria. Operazione dominante: confronto
procedure ordinaperfusioni(var a: nelements; n: integer); var b: nelements; procedure mergesort(var a,b: nelements; primo,ultimo:integer); var q: integer; procedure merge(var a,b: nelements; primo, ultimo,
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
Dettaglif(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da
Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede
DettagliNote su quicksort per ASD 2010-11 (DRAFT)
Note su quicksort per ASD 010-11 (DRAFT) Nicola Rebagliati 7 dicembre 010 1 Quicksort L algoritmo di quicksort è uno degli algoritmi più veloci in pratica per il riordinamento basato su confronti. L idea
DettagliSistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
DettagliMECCANISMI E POLITICHE DI PROTEZIONE 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
DettagliMatematica 1 - Corso di Laurea in Ingegneria Meccanica
Matematica 1 - Corso di Laurea in Ingegneria Meccanica Esercitazione su massimi e minimi vincolati 9 dicembre 005 Esercizio 1. Considerare l insieme C = {(x,y) R : (x + y ) = x } e dire se è una curva
DettagliStudente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
DettagliMatematica generale CTF
Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione
DettagliTipi di dato-prima parte
Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) Tipi di dato-prima parte Ing. Agnese Pinto 1 di 15 Tipi di dato Sommario Tipi di dato Classificazione dei tipi di dato Tipi
DettagliJava Virtual Machine
Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina
DettagliIntroduzione. Rappresentazione di numeri in macchina, condizion
Introduzione. Rappresentazione di numeri in macchina, condizionamento e stabilità Dipartimento di Matematica tel. 011 0907503 stefano.berrone@polito.it http://calvino.polito.it/~sberrone Laboratorio di
DettagliEXCEL FUNZIONI PRINCIPALI
EXCEL FUNZIONI PRINCIPALI Funzione SE() Sintassi: SE(VERIFICA, VALORE SE VERO, VALORE SE FALSO): verifica un valore e ritorna una risposta in base al risultato vero/falso Esempio: =SE(A2=15; "OK"; "NO")
DettagliFloating Point N = M BE. Notazione in virgola mobile. base. esempi 34.76 104 3.6891 106 = 36.891 105 =368.91 104 12.78 10-3 1.
Floating Point Notazione in virgola mobile N = M BE mantissa base esponente esempi 34.76 104 3.6891 106 = 36.891 105 =368.91 104 12.78 10-3 1.6273 102 forma normalizzata: la mantissa ha una sola cifra
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
DettagliStudente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide
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)
DettagliRappresentazione dei numeri in un calcolatore
Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri
DettagliElementi di Psicometria con Laboratorio di SPSS 1
Elementi di Psicometria con Laboratorio di SPSS 1 12-Il t-test per campioni appaiati vers. 1.2 (7 novembre 2014) Germano Rossi 1 germano.rossi@unimib.it 1 Dipartimento di Psicologia, Università di Milano-Bicocca
DettagliDocumentazione esterna al software matematico sviluppato con MatLab
Documentazione esterna al software matematico sviluppato con MatLab Algoritmi Metodo di Gauss-Seidel con sovrarilassamento Metodo delle Secanti Metodo di Newton Studente Amelio Francesco 556/00699 Anno
DettagliCarichiamo il segnale contenuto nel file ecg_es_20121128.mat
Esercitazione su analisi segnale ECG Carichiamo il segnale contenuto nel file ecg_es_20121128.mat Il file contiene due variabili - dt, che vale 0.004 - ecg, che è vettore lungo 6500 campioni La frequenza
Dettagli