Interpretazione astratta in praticaun analizzatore generico per Ja

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Interpretazione astratta in praticaun analizzatore generico per Ja"

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!

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

Dettagli

La selezione binaria

La 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

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

Analisi e Verifica di Programmi Laboratorio di AVP

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

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona.

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione di Utilizzo ricorsione per processare dati in java vs. multipla

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso 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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso 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

Dettagli

Complessità computazionale

Complessità computazionale 1 Introduzione alla complessità computazionale Un problema spesso può essere risolto utilizzando algoritmi diversi Come scegliere il migliore? La bontà o efficienza di un algoritmo si misura in base alla

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

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

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

Dettagli

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

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

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

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

Verifica del codice con Interpretazione Astratta

Verifica del codice con Interpretazione Astratta Verifica del codice con Interpretazione Astratta Daniele Grasso grasso@dsi.unifi.it grasso.dan@gmail.com Università di Firenze, D.S.I., Firenze, Italy December 15, 2009 D.Grasso (Università di Firenze)

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

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

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008

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

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

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

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it 18 marzo 2011 Problema basato su 10.5 del libro di testo La CINA (Compagnia Italiana per il Noleggio di Automobili) dispone di

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

Programmazione 1 A.A. 2015/2016

Programmazione 1 A.A. 2015/2016 Cognome e Nome Matricola (se disponibile) Programmazione 1 A.A. 2015/2016 Parziale del 4 Novembre 2015 Compito n 1 Esercizio 1 (4 punti) Convertire da base 16 a base 2 il numero FA1 Convertire da base

Dettagli

Politecnico di Milano. Ingegneria del Software a.a. 2006/07. Appello del 14 settembre 2007 Cognome Nome Matricola

Politecnico di Milano. Ingegneria del Software a.a. 2006/07. Appello del 14 settembre 2007 Cognome Nome Matricola Politecnico di Milano Ingegneria del Software a.a. 2006/07 Appello del 14 settembre 2007 Cognome Nome Matricola Sezione (segnarne una) Baresi, Ghezzi, Morzenti, SanPietro Istruzioni 1. La mancata indicazione

Dettagli

Corso di Tecniche di Programmazione

Corso di Tecniche di Programmazione Corso di Tecniche di Programmazione Corsi di Laurea in Ingegneria Informatica ed Automatica Anno Accedemico 003/004 Proff. Giuseppe De Giacomo, Luca Iocchi, Domenico Lembo Dispensa : Algoritmi di Ordinamento

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 2 Rappresentazione delle informazioni: numeri e caratteri 1 Codice La relazione che associa ad ogni successione ben formata di simboli di

Dettagli

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

Dettagli

06 Livello di micro architettura

06 Livello di micro architettura Livello di micro architettura Pagina 2 Introduzione il livello di micro architettura implementa le funzioni del livello sovrastante (ISA) come livello ISA di riferimento si sceglie una parte della JVM

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

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

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006

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

Dettagli

10 - Programmare con gli Array

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

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

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

Cinc. Linguaggio ed Implementazione. Claudia Strazzari. Fabio G. Strozzi. Matteo Benevelli. http://www.cs.unibo.it/ fstrozzi/cinc.

Cinc. Linguaggio ed Implementazione. Claudia Strazzari. Fabio G. Strozzi. Matteo Benevelli. http://www.cs.unibo.it/ fstrozzi/cinc. Cinc Linguaggio ed Implementazione Claudia Strazzari Fabio G. Strozzi Matteo Benevelli http://www.cs.unibo.it/ fstrozzi/cinc.html 1 Prefazione Cinc è un linguaggio di programmazione imperativo, fortemente

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

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Informatica Generale (Prof. Luca A. Ludovico) Presentazione 5.1 Operazioni aritmetiche nel sistema binario

Informatica Generale (Prof. Luca A. Ludovico) Presentazione 5.1 Operazioni aritmetiche nel sistema binario Operazioni aritmetiche nel sistema binario Operazioni aritmetiche basilari Le regole da imparare nel caso di una base b sono relative alle b 2 possibili combinazioni delle cifre da 0 a b- 1. Ad esempio,

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

Laboratorio di Informatica Lezione 2

Laboratorio di Informatica Lezione 2 Laboratorio di Informatica Lezione 2 Cristian Consonni 30 settembre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 2 1 / 42 Outline 1 Commenti e Stampa a schermo 2 Strutture di controllo 3

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

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

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

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti

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

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti 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

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Rappresentazione delle informazioni L informatica si occupa di rappresentare ed elaborare informazioni diverse: numeri caratteri audio immagini video I caratteri: ASCII

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

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso 1 Introduzione all informatica: algoritmi, linguaggi e programmi Indice 1. Introduzione 2. Risoluzione automatica di problemi - Algoritmi

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

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

Un esercizio d esame. Flavio De Paoli

Un esercizio d esame. Flavio De Paoli Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso 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

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 Appello dell 8 Febbraio 2005 Esercizio 1 (ASD) 1. Dire quale delle seguenti affermazioni è vera giustificando la risposta. (a) lg

Dettagli

Esercizi su. Funzioni

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

Dettagli

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort Due algoritmi di ordinamento basati sulla tecnica Divide et Impera: Mergesort e Quicksort (13 ottobre 2009, 2 novembre 2010) Ordinamento INPUT: un insieme di n oggetti a 1, a 2,, a n presi da un dominio

Dettagli

String, Array e Main. Lezione 7

String, Array e Main. Lezione 7 String, Array e Main Lezione 7 Scopo della Lezione Presentare la classe String ed il tipo Stringa; Presentare ed imparare ad usare gli array in Java; Approfondire la conoscenza con il metodo speciale main.

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione 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

Dettagli

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 12 ADT: Lista, Pila, Coda A. Miola Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti!Tipo

Dettagli

Semplici Algoritmi di Ordinamento

Semplici Algoritmi di Ordinamento Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 19 Ricorsione A. Miola Marzo 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti q Funzioni e domini definiti

Dettagli

Java. Linguaggi di Programmazione Linguaggi Speciali & Tecnologie dei Linguaggi di Programmazione: Scritto del 30 Giugno 2006

Java. Linguaggi di Programmazione Linguaggi Speciali & Tecnologie dei Linguaggi di Programmazione: Scritto del 30 Giugno 2006 Linguaggi di Programmazione Linguaggi Speciali & Tecnologie dei Linguaggi di Programmazione: Scritto del 30 Giugno 2006 Java Nome e Cognome: Matricola: Corso di Laurea: Date le classi seguenti: class Point

Dettagli

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

Dettagli

If a cascata, switch, boolean

If a cascata, switch, boolean If a cascata, switch, boolean If a cascata Switch Il tipo boolean Operatori logici, valutazione pigra 1 If a cascata Consideriamo una semplice classe che deve descrivere con una stringa gli effetti di

Dettagli

Esercizi Capitolo 5 - Alberi

Esercizi Capitolo 5 - Alberi Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File 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

Dettagli

Java Virtual Machine

Java 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

Dettagli

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008 Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 6 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi

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

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

Cicli, Array e Programmazione su Sequenze

Cicli, Array e Programmazione su Sequenze Cicli, Array e Programmazione su Sequenze Luca Tesei Università di Camerino luca.tesei at unicam.it Università di Camerino - Corso di Laurea in Informatica - Programmazione + Laboratorio di Programmazione

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

Esercitazione 2 di verifica

Esercitazione 2 di verifica Architettura degli Elaboratori, 27-8 Esercitazione 2 di verifica Soluzione: mercoledì 24 ottobre Una unità di elaborazione U è così definita: Domanda 1 i) possiede al suo interno due componenti logici

Dettagli

E una notazione per descrivere gli algoritmi.

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

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo 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

Dettagli

Iterazione e ricorsione. Cicli, Array e Programmazione su Sequenze. Ciclo while. Cicli

Iterazione e ricorsione. Cicli, Array e Programmazione su Sequenze. Ciclo while. Cicli Iterazione e ricorsione Dal punto di vista della teoria della computazione, affinché un linguaggio di programmazione imperativo (C, Pascal, codice nei metodi del Java, ecc.) raggiunga la potenza di calcolo

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SOMMARIO 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

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

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

Tecniche automatiche di offuscamento in java

Tecniche automatiche di offuscamento in java Tecniche automatiche di offuscamento in java Sommario Introduzione al problema Corso di sicurezza su reti Prof. Alfredo De Santis Anno accademico 2005-2006 A cura di: Boccardo Alberto 056/101841 Camodeca

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

COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002. Soluzione degli Esercizi

COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002. Soluzione degli Esercizi COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002 degli Esercizi ESERCIZIO 1. Si consideri il seguente frammento di codice in linguaggio Java: int i=0, j=0; int[][] a=b; boolean trovato=false;

Dettagli

Corso di Esercitazioni di Programmazione

Corso di Esercitazioni di Programmazione Corso di Esercitazioni di Programmazione Introduzione Dott.ssa Sabina Rossi Informazioni Pagina web del corso: News Orari Mailing list Lezioni Esercitazioni Date esami Risultati esami.. http://www.dsi.unive.it/~prog1

Dettagli

Corso di Calcolo Numerico

Corso 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

Dettagli

Appunti introduttivi sulla progettazione degli algoritmi

Appunti introduttivi sulla progettazione degli algoritmi Appunti introduttivi sulla progettazione degli algoritmi Marco Liverani Ottobre 2007 Nelle pagine seguenti sono riportati alcuni problemi e le relative soluzioni costituite da semplici algoritmi espressi

Dettagli

Struttura di un programma Java

Struttura 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

Dettagli

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori Programmazione ad oggetti in Java Daniela Micucci Outline La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori 2 Programmazione ad oggetti in Java 1 OOP Java

Dettagli

7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE

7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE 7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE TIPO DI DATO Un tipo di dato è una entità caratterizzata dai seguenti elementi: un insieme X di valori che raprresenta il dominio del tipo di dato; un

Dettagli

Esempi di esercizi d esame

Esempi di esercizi d esame Esempi di esercizi d esame Fondamenti di Informatica L-B 1 Cellulare Testo esercizio: 1.Specifiche Si richiede di realizzare una classe che implementa il funzionamento di un telefono cellulare Tale classe

Dettagli

PROGRAMMAZIONE AVANZATA JAVA E C. Massimiliano Redolfi. Lezione 7: Code, Stack, Liste PAJC. Ricerca. prof. Massimiliano Redolfi PAJC

PROGRAMMAZIONE AVANZATA JAVA E C. Massimiliano Redolfi. Lezione 7: Code, Stack, Liste PAJC. Ricerca. prof. Massimiliano Redolfi PAJC PROGRAMMAZIONE AVANZATA JAVA E C Massimiliano Redolfi Lezione 7: Code, Stack, Liste Ricerca 2 Ricerca Se dobbiamo cercare un elemento in un array possiamo trovarci in due situazioni Elementi non ordinati

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra 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

Dettagli

Introduzione al Corso di Algoritmi

Introduzione al Corso di Algoritmi Università di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Accademico 2014/15 p. 1/36 Introduzione al Corso di Algoritmi Di cosa parliamo oggi: Una discussione generale su cosa studieremo, perchè

Dettagli

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4]; ARRAY BIDIMENSIONALI Si possono definire array di qualunque tipo di dato, quindi anche di altre array float [][] mx = new float[3][4]; ovvero.. (float []) [] mx = new float[3][4]; La loro motivazione (storica)

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le

Dettagli