Esercizi di Algoritmi e Strutture Dati

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercizi di Algoritmi e Strutture Dati"

Transcript

1 Esercizi di Algoritmi e Strutture Dati Moreno Marzolla 18 marzo 2011 Problema basato su 10.5 del libro di testo La CINA (Compagnia Italiana per il Noleggio di Automobili) dispone di k automobili, tutte disponibili per n giorni. Una stessa automobile può avere costo di affitto diverso in giorni diversi: indicheremo con c(a, g) il costo per il noleggio dell automobile a nel giorno g, dove 1 a k e 1 g n. Un cliente si rivolge alla CINA per procurarsi un mezzo di locomozione per l intero periodo (giorni da 1 a n, estremi inclusi). Per risparmiare e sfruttare i prezzi di noleggio migliori in ogni giornata il cliente è disposto a cambiare macchina da un giorno all altro. Per ottenere un cambio, però, è costretto dalla CINA a pagare una penale P, che si aggiunge al costo di noleggio. Il costo di una sequenza di noleggio è quindi dato dalla somma dei costi di noleggio e delle penali pagate per i cambi. Dati k, n, i costi c(a, g) e la penale P : 1. Calcolare il numero di possibili sequenze di noleggio diverse. 2. Scrivere un algoritmo che elenchi tutte le possibili sequenze di noleggio. Una sequenza di noleggio è un vettore di n numeri (v 1, v 2,... v n ) tale che per ogni i 1,... n, 1 v i k rappresenta il numero dell auto noleggiata nel giorno i. 3. Scrivere un algoritmo che calcoli la sequenza di noleggio di costo minimo, nell ipotesi in cui la penale P sia pari a zero. 4. Proporre un algoritmo che in tempo O(nk 2 ) calcoli la spesa minima per il cliente tra tutte le possibili sequenze di noleggio, assumendo una penale P > 0 (Suggerimento: usare la programmazione dinamica); 5. Modificare l algoritmo proposto al punto precedente in modo da avere in output la sequenza di noleggio di costo minimo. La modifica deve avere costo additivo O(nk). Soluzione 1. Il numero delle possibili sequenze di noleggio è k n. Quindi un eventuale algoritmo risolutivo che operi di forza bruta non sarebbe praticabile. 2. (Vedi programma Java) 3. In questo caso è possibile sviluppare una soluzione semplice: per ogni giorno, è sufficiente scegliere l auto che ha costo di noleggio minimo in quello specifico giorno. 4. Supponiamo che Cost(i, j) sia il costo minimo tra tutte le sequenze di noleggio durante i primi j giorni, che al giorno j-esimo usino l auto i, con 1 j n, e 1 i k. Considerando i noleggi solo per il primo giorno (j = 1), possiamo scrivere: Cost(i, 1) = c(i, 1), per ogni i = 1, 2,... k Nel caso di sequenze di noleggio che durano fino al giorno j, per j > 1, l acquirente ha a disposizione le seguenti alternative: 1

2 Può noleggiare la stessa audo i noleggiata nel giorno j 1. Il costo ottimo fino al giorno j 1 è Cost(i, j 1), a cui si somma il costo di noleggio della vettura i per il giorno j senza pagare alcuna penale. In tal caso si avrebbe: Cost(i, j) = Cost(i, j 1) + c(i, j) Può noleggiare un auto l i nel giorno j 1, e cambiare scegliendo l auto i nel giorno j. In tal caso il costo di noleggio Cost(i, j) diventa Cost(i, j) = Cost(l, j 1) + c(i, j) + P Il costo della sequenza ottima di noleggio Cost(i, j) che al giorno j usa l auto i sarà quindi il minimo tra le alternative descritte sopra, ossia: Cost(i, j) = mincost(i, j 1)+c(i, j), Cost(l, j 1)+c(i, j)+p per ogni l = 1, 2,... k, l i Il risultato del nostro problema, ossia il costo minimo tra tutte le sequenze di noleggio per tutti gli n giorni, è dato dal valore minimo dell ultima colonna della matrice Cost, ossia min Cost(i, n) 1 i k 5. Per determinare la sequenza che minimizza il costo di noleggio, una soluzione efficiente consiste nell utilizzare una matrice ausiliaria di dimensione k n che chiameremo prev(i, j), tale che prev(i, j) è l auto utilizzata il giorno j 1 per ottenere il costo Cost(i, j) al giorno j. La sequenza ottima di noleggio si ottiene ripercorrendo all indietro la matrice prev a partire dalla posizione nell ultima colonna che rappresenta l ultima vettura noleggiata; ricordiamo che l indice dell ultima vettura noleggiata è il valore di i che minimizza Cost(i, n). La soluzione con costo additivo O(nk) invece fa uso della sola tabella Cost(i, j) per calcolare la sequenza di noleggio, ripercorrendo la tabella a ritroso per ricostruire le scelte fatte. Consideriamo un semplice esempio con penale P = 0.5, k = 3, n = 4 e matrice dei costi giornalieri c(a, g) come segue: c(a, g) = Applicando l algoritmo descritto sopra, si ottiene la seguente matrice dei costi Cost(i, j): Cost(i, j) = e la seguente matrice prev: prev(i, j) = Il seguente programma Java risolve l esercizio proposto: / CINA.java calcola la sequenza ottima di noleggio. Questo programma risolve il problema 10.5 p. 275 di Demetrescu, Finocchi, Italiano, Algoritmi e strutture dati (seconda edizione ), McGraw Hill, Version 0.1 del 2010/02/24 Autore: Moreno Marzolla (marzolla (at) cs.unibo. it ) 2

3 This file has been released by the author in the Public Domain public class CINA int k; // numero di auto int n; // lunghezza del periodo, in giorni double c [][]; // C[i ][ m] e il costo di noleggio dell auto i nel giorno m double P; // penale da pagare per i cambi // tabella di programmazione dinamica: cost[ i,m] e il costo // minimo di tutte le sequenze di noleggio, fino al giorno m // compreso, che hanno l auto i come auto prenotata per il giorno // m double cost [][]; int prev [][]; // Assumendo di scegliere l auto i al giorno j, // prev[ i ][ j ] indica il numero di auto noleggiata il // giorno j 1 che consente di ottenere il costo // cost [ i ][ j ] dell intera sequenza di noleggio public CINA( int k, int n, double c [][], double P ) this.k = k; this.n = n; this.c = c; this.p = P; cost = new double[k][n]; prev = new int[k][n ]; Stampa il contenuto delle tabelle di programmazione dinamica. public void stampatabella( ) int i, j ; System.out. println ( cost[ i ][ j ] ); for ( i=0; i<k; ++i ) for ( j=0; j<n; ++j ) System.out. print (cost [ i ][ j]+ ); System.out. println (); System.out. println ( prev[ i ][ j ] ); for ( i=0; i<k; ++i ) for ( j=0; j<n; ++j ) System.out. print (prev[ i ][ j]+ ); System.out. println (); Stampa le informazioni di una singola sequenza di noleggio protected void stampasequenza( int s [] ) double tot=0.0; for ( int i=0; i<n; ++i ) System.out. print ( g= +i+ /a= +s[i]+ /c= +c[s[i]][i]+ ); tot += c[s[i ]][ i ]; if ( i>0 ) if (s[ i ]!= s[ i 1]) tot+=p; System.out. println ( Totale= +tot); 3

4 Data una sequenza di noleggio s [], modifica s [] per restituire la successiva sequenza di noleggio. Ritorno false se s [] era l ultima sequenza della serie, true altrimenti. public boolean incrementasequenza(int s [] ) int i=0; while( i<n && s[i] == k 1 ) s[ i ] = 0; ++i; if ( i<n ) s[ i ] += 1; return true; else return false ; Stampa tutte le possibili sequenze di noleggio public void stampatuttesequenze( ) int [] s = new int[n]; // s[ i ] indica l auto da noleggiare il giorno i int i ; int c=0; // numero di sequenze di noleggio // Inizializziamo la sequenza iniziale (0, 0,... 0) for ( i=0; i<n; ++i ) s[ i ] = 0; do ++c; stampasequenza(s); while(incrementasequenza(s)); System.out. println ( Ci sono +c+ sequenze di noleggio ); Stampa la sequenza ottima di noleggio, Prima di invocare questa funzione, e necessario aver invocato l operazione CalcolaSequenzaOttima(). public void stampasequenzaottima( ) int [] s = new int[n]; int imin = 0; double cmin = cost [0][ n 1]; for ( int tmp=1; tmp<k; ++tmp) if ( cost [tmp][n 1] < cmin ) cmin = cost[tmp][n 1]; s[n 1] = imin; for ( int j=n 2; j>=0; j) imin=prev[imin][ j+1]; s[ j]=imin; stampasequenza(s); Questa funzione calcola la sequenza ottima di noleggio, e restituisce il costo ottimo. public double CalcolaSequenzaOttima( ) 4

5 int i, j ; // inizializziamo la tabella. I costi al giorno 1 sono noti, e // sono pari al costo di noleggio delle vetture // // Quindi: cost [ i ][0] = c[i ][0] per ogni i=0..k 1 for ( i=0; i<k; ++i) cost [ i ][0] = c[i ][0]; prev[ i ][0] = 1; // non ci sono auto precedenti al giorno 0 // calcoliamo ora i valori degli altri elementi della tabella // di programmazione dinamica, procedendo una colonna alla // volta, da sinistra verso destra. // // Il costo minimo di tutte le sequenze di noleggio fino al giorno // j, che noleggiano l auto i al giorno j e dato dal minimo // tra i costi seguenti : // Il costo delle sequenze di noleggio che hanno l auto i anche // al giorno precedente j 1 (cost[ i ][ j 1]), sommato al costo // dell auto i al giorno j (c[ i ][ j ]). In questo caso non c e // altro da aggiungere, perche non si pagano penali // Il costo minimo considerando le sequenze di noleggio che // al giorno ( j 1) noleggiano un auto diversa da i, pagando // quindi una penale. Tale costo minimo sara // min per ogni l!= i cost [ l ][ j 1] + c[i ][ j ] + P // // L equazione e // cost [ i ][ j ] = min cost[ i ][ j 1] + c[i ][ j ], // cost [ l ][ j 1] + c[i ][ j ] + P per ogni l!=i for ( j=1; j<n; ++j) for ( i=0; i<k; ++i) int imin = i; // auto al giorno j 1 che minimizza il // costo al giorno j double cmin = cost[i ][ j 1]+c[i][ j ]; // costo minimo al giorno j for ( int tmp=0; tmp<k; ++tmp) if ( tmp!= i ) // il caso tmp == i e gia // stato considerato con // l inizializzazione di imin e // cmin if ( cost [tmp][j 1] + P + c[i][ j ] < cmin ) cmin = cost[tmp][j 1] + P + c[i][ j ]; imin = tmp; // riempiamo la entry della tabella di programmazione // dinamica. cost [ i ][ j ] = cmin; prev[ i ][ j ] = imin; // Il risultato finale e il minimo valore dell ultima colonn // della tabella di programmazione dinamica double cmin = cost [0][ n 1]; for ( int tmp=1; tmp<k; ++tmp) if ( cost [tmp][n 1] < cmin ) cmin = cost[tmp][n 1]; return cmin; public static void main( String [] args ) 5

6 double [][] c = 1, 1, 1, 2, 0.5, 1, 7, 4, 0.9, 1.2, 0.1, 10 ; CINA solver = new CINA(3, 4, c, 0.5); System.out. println ( Elenco di tutte le sequenze di noleggio ); solver.stampatuttesequenze(); System.out. println ( \ncosto sequenza di noleggio ottima ); System.out. println ( solver.calcolasequenzaottima()); System.out. println ( \ntabelle di programmazione dinamica ); solver.stampatabella(); System.out. println ( \nsequenza di noleggio ottima ); solver.stampasequenzaottima(); Problema basato sul problema 10.7 del libro di testo Si supponga di avere n files F 1, F 2,... F n in cui il file i occupa w(f i ) MB. Supponiamo che tutti i w(f i ) siano interi (ossia, ciascun file occupa un multiplo intero di un MB). Vogliamo individuare, se esiste, un sottoinsieme S di F 1, F 2,... F n tale che la dimensione dei files presenti in questo sottoinsieme sia esattamente pari a 650MB: w(f ) = 650 F S In caso tale sottoinsieme S esista, vogliamo anche sapere quali sono i files che vi appartengono. Soluzione Consideriamo una matrice B(i, j) tale che ogni elemento della matrice sia un valore booleano (vero o falso). In particolare, B(i, j) è vero se e solo se esiste un sottoinsieme di files S di F 1, F 2,... F i la cui dimensione totale sia esattamente pari a j; ossia: w(f ) = j F S Per definizione si ha che B(1, w(f 1 )) = true e B(i, 0) = true per ogni i = 1, 2,... n (il sottoinsieme vuoto ha dimensione zero). Inoltre risulta B(i, j) = B(i 1, j) B (i 1, j w(f i )) La spiegazione è la seguente: esiste un sottoinsieme S di F 1, F 2,... F i la cui dimensione è j se vale una tra le seguenti proprietà esiste un sottoinsieme S di F 1, F 2,... F i 1 tale che F S w(f ) = j. In tal caso S = S è la soluzione e il file F i non ne fa parte. esiste un sottoinsieme S di F 1, F 2,... F i 1 tale che F S w(f ) = j w(f i). In tal caso la soluzione al nostro problema è S = S F i, e il file F i fa parte di S. Questo suggerisce di calcolare la matrice B utilizzando la programmazione dinamica. Si presti attenzione che l indice j w(f j ) potrebbe diventare negativo. In tal caso si assume che il corrispondente valore B (i 1, j w(f i )) sia falso. Una volta calcolata la matrice B(i, j) per ogni i = 1, 2,... n e j = 0, , possiamo concludere the esiste un sottoinsieme di files la cui dimensione totale è 650MB se e solo se B(n, 650) ha valore true. Per determinare anche quali sono i files che fanno parte della soluzione (se esiste), è necessario usare un altra matrice booleana P (i, j), tale che P (i, j) vale true se e solo se il file i-isimo appartiene ad un sottoinsieme S di F 1, F 2,... F i la cui dimensione totale è pari a j (cioè F S w(f ) = j). Durante la costruzione di B(i, j) è possibile costruire la matrice P (i, j). L elenco dei files che appartengono alla soluzione può essere visualizzata con il seguente pseudocodice: 6

7 d:=650; i:=n; while (d>0) do if ( P(i,d) ) then stampa i; d := d - w(f_i); endif i := i-1; endwhile / Copiatutto. java determina se un insieme di files la cui dimensione complessiva e 1300MB puo essere suddivisa in due CDRom da 650MB ciascuno, e in caso affermativo stampa la suddivisione. Questo programma risolve il problema 10.7 p. 275 di Demetrescu, Finocchi, Italiano, Algoritmi e strutture dati (seconda edizione ), McGraw Hill, Version 0.1 del 2010/02/24 Autore: Moreno Marzolla (marzolla (at) cs.unibo. it ) This file has been released by the author in the Public Domain public class Copiatutto int [] w; // w[i ] e la dimensione ( in MB) del file i esimo int n; // numero di files boolean [][] B; // B[i ][ j ] = true sse e possibile riempire j MB di // spazio usando un sottoinsieme dei files 0, //... i boolean [][] P; // P[i ][ j ] = true sse il file i e nell insieme di // files la cui dimensione complessiva e j public Copiatutto( int w[] ) this.w = w; this.n = w.length; B = new boolean[n][651]; P = new boolean[n][651]; Stampa la lista dei files la cui dimensione complessiva e pari a 650MB. public void stampasoluzione( ) if (!B[n 1][650] ) return ; // non esiste soluzione int d=650; int i=n 1; System.out. println ( I seguenti files sono sul primo CD ROM ); while( d>0 ) if ( P[i ][ d] ) System.out. print ( i+ (s= +w[i]+ ) ); d =w[i]; i=i 1; System.out. println (); Risolve il seguente problema: dati n files le cui dimensioni 7

8 sono w[0], w[1],... w[n 1], esiste un sottoinsieme di tali files la cui dimensione sia esattamente pari a 650? Notare che se la dimensione complessiva di tutti i files e 1300MB, allora se questa funzione restituisce true e possibile copiare i files su due CDRom da 650MB senza spezzare nessun file. public boolean solve( ) int i, j ; // Inizializza B a false for ( i=0; i<n; ++i ) for ( j=0; j<651; ++j ) B[i ][ j ] = false ; P[i ][ j ] = false ; B[i ][0] = true; // Inizializza B[0][ w[0]] a true B[0][w[0]] = true; P [0][ w[0]] = true; for ( i=1; i<n; ++i ) for ( j=0; j<651; ++j) if ( B[i 1][j ] ) B[i ][ j ] = true; else if ( j >= w[i] && B[i 1][j w[i]] ) B[i ][ j ] = true; P[i ][ j ] = true; // aggiungi il file i esimo // alla soluzione // Restituisce la risposta return B[n 1][650]; public static void main( String [] args ) // Attenzione, la somma delle dimensioni NON e 1300MB; // l implementazione restituisce comunque true, poiche // risolve il problema che consiste nel trovare un sottinsieme // di files la cui dimensione complessiva e 650MB. int w[] = 330, 100, 310, 10, 80, 10 ; Copiatutto problema = new Copiatutto(w); if ( problema.solve ()) problema.stampasoluzione(); else System.out. println ( Il problema non ammette soluzione ); 8

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

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera

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

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

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

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

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo

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

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

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il

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

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

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

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 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Definizione di classi con array di oggetti

Definizione di classi con array di oggetti Definizione di classi con array di oggetti 1. (Esame scritto del 18/9/2002, Esercizio 6.) La banca dati di un agenzia assicurativa per auto è caratterizzata da un insieme di polizze di assicurazioni per

Dettagli

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

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

Prova d Esame 07.04.2006 Compito A

Prova d Esame 07.04.2006 Compito A DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public

Dettagli

Prova d Esame 07.04.2006 Compito B

Prova d Esame 07.04.2006 Compito B DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public

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

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

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

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o

Dettagli

Sommario della lezione

Sommario della lezione Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/36 Sommario della lezione Ulteriori esempi di applicazione della Programmazione Dinamica Esempio di applicazione

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

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

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate

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

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

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

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

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

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

Introduzione alla tecnica di Programmazione Dinamica

Introduzione alla tecnica di Programmazione Dinamica Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/37 Sommario della lezione Introduzione alla tecnica di Programmazione Dinamica Esempio di applicazione n. 1:

Dettagli

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca) Ministero dell Istruzione, dell Università e della Ricerca Istituto Tecnico Industriale Statale Enrico Mattei Via Martiri di Cefalonia 46-20097 San Donato Milanese Tel. 0255691411 - Fax 025276676 itisando@tin.it

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

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

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. public abstract class FiguraPiana2{ private double base; public FiguraPiana2(double

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 Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

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

Dettagli

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza Il problema di flusso di costo minimo (MCF) Dati : grafo orientato G = ( N, A ) i N, deficit del nodo i : b i (i, j) A u ij, capacità superiore (max quantità di flusso che può transitare) c ij, costo di

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Elementi di Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Il problema La CMC produce automobili in uno stabilimento

Dettagli

Programmazione ad Oggetti: JAVA. Esercitazione

Programmazione ad Oggetti: JAVA. Esercitazione Programmazione ad Oggetti: JAVA Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore

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

Esercizi della lezione 5 di Java

Esercizi della lezione 5 di Java Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore

Dettagli

Programmazione dinamica

Programmazione dinamica Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)

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

SAPIENZA Università di Roma, Facoltà di Ingegneria

SAPIENZA Università di Roma, Facoltà di Ingegneria SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: Soluzioni Esercizi 13-23 Soluzione

Dettagli

Sottoprogrammi: astrazione procedurale

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

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

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

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi 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

Dettagli

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizio 1 Nella classe definita di seguito indicare quali sono le variabili di istanza, quali sono le variabili

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

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

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

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

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");

Dettagli

4.1 Modelli di calcolo analisi asintotica e ricorrenze

4.1 Modelli di calcolo analisi asintotica e ricorrenze 4 Esercizi Prima Parte 4.1 Modelli di calcolo analisi asintotica e ricorrenze Esercizio 4 1 Rispondere alle seguenti domande: 1. Come misuriamo l efficienza di un algoritmo?. Quali sono gli algoritmi più

Dettagli

Polinomio di secondo grado: Calcolo delle soluzioni di una equazione di secondo grado: import GraphicIO.*; public class Polinomio2 {

Polinomio di secondo grado: Calcolo delle soluzioni di una equazione di secondo grado: import GraphicIO.*; public class Polinomio2 { Polinomio di secondo grado: public class Polinomio2 GraphicConsole.println ("Inserisci i coefficienti interi del polinomio di secondo grado"); int a = GraphicConsole.readInt("a ="); int b = GraphicConsole.readInt("b

Dettagli

Livelli di astrazione

Livelli di astrazione Realizzare Classi Astrazione Perdita di dettaglio Utile nella descrizione, progettazione, implementazione e utilizzo di sistemi complessi Dettagli trascurabili vengono incapsulati in sottosistemi più semplici

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

ARRAY E STRINGHE. G. Frosini Slide 1

ARRAY E STRINGHE. G. Frosini Slide 1 ARRAY E STRINGHE G. Frosini Slide 1 Array: VARIABILI ARRAY struttura dati costituita da elementi (anche nessuno, array vuoto) dello stesso tipo; tipo array: tipo degli elementi, non numero degli elementi;

Dettagli

Introduzione a Classi e Oggetti

Introduzione a Classi e Oggetti Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto

Dettagli

Il tipo di dato astratto Pila

Il tipo di dato astratto Pila Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Prova di Laboratorio di Programmazione

Prova 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

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

Esercizi Capitolo 14 - Algoritmi Greedy

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

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

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

progam ponteasensounicoalaternato ; type dir = ( nord, sud );

progam ponteasensounicoalaternato ; type dir = ( nord, sud ); Esercizio di Sincronizzazione Tra Processi: Ponte a Senso Unico Alternato Un ponte contiene una sola csia di traffico consentendo così l'accesso a macchine provenienti da una sola direzione per volta,

Dettagli

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include

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

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

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari Algoritmi e Strutture Dati Tipo di dato astratto e Strutture dati elementari 1 Argomenti della lezione Tipi di dato astratto Strutture dati elementari Liste o Implementazione di liste in Java Stack Code

Dettagli

16.3.1 Alberi binari di ricerca

16.3.1 Alberi binari di ricerca 442 CAPITOLO 16. STRUTTURE DI DATI DINAMICHE root 7 5 11 2 8 13 10 Figura 16.11 Esempio di albero binario: ogni nodo contiene il dato da immagazzinare e tre puntatori che definiscono le sue relazioni di

Dettagli

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

Le variabili. Olga Scotti

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

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

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

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

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

Dettagli

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

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Ruoli e Responsabilità: C# versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G.

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Realizzazione di Liste Laboratorio di Algoritmi e Strutture Dati Domenico Redavid redavid@di.uniba.it Materiale di base gentilmente concesso dal dott. Nicola Di Mauro Ricercatore presso l'univ. di Bari

Dettagli

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, né in C++, etc. ). Di tutti gli algoritmi

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

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

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

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

Verifica della correttezza formale del numero di partita IVA

Verifica della correttezza formale del numero di partita IVA Verifica della correttezza formale del numero di partita IVA A tutti i soggetti che intraprendono un attività rilevante ai fini Iva (impresa, arte, professione), al momento della presentazione della dichiarazione

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

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java Fondamenti di Informatica Dichiarazione, creazione e gestione di array in Java Array in Java - creazione La creazione fa una inizializzazione implicita: num = new int[10]; con valore 0 per int e double,

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

Introduzione al MATLAB c Parte 2

Introduzione 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

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