Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73"

Transcript

1 Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73

2 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe Enum Constant-specific methods Tipi enumerativi: campi e costruttori 2 Definizione di classi generiche 3 Definizione di un interfaccia 4 Uso del supertipo definito da un interfaccia Ordinamento Ricerca dicotomica c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 2 / 73

3 Estensione di una classe Vengono definiti come le classi mediante la parola riservata enum c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 4 / 73

4 Estensione di una classe Esempio Vengono definiti come le classi mediante la parola riservata enum Valori del tipo enumerativo sono definiti all inizio del corpo del tipo enumerativo separati da una virgola (,) la dichiarazione è conclusa dal carattere punto e virgola public enum MeseDellAnno { // COSTANTI ENUMERATIVE GENNAIO, FEBBRAIO, MARZO, APRILE, MAGGIO, GIUGNO, LUGLIO, AGOSTO, SETTEMBRE, OTTOBRE, NOVEMBRE, DICEMBRE; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 4 / 73

5 Estensione di una classe Esempio Vengono definiti come le classi mediante la parola riservata enum Valori del tipo enumerativo sono definiti all inizio del corpo del tipo enumerativo separati da una virgola (,) la dichiarazione è conclusa dal carattere punto e virgola public enum MeseDellAnno { // COSTANTI ENUMERATIVE GENNAIO, FEBBRAIO, MARZO, APRILE, MAGGIO, GIUGNO, LUGLIO, AGOSTO, SETTEMBRE, OTTOBRE, NOVEMBRE, DICEMBRE; L ordine di dichiarazione è rilevante, determina: l ordinamento fra i valori del tipo enumerativo (compareto) l ordine in cui compaiono nell array restituito da values c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 4 / 73

6 MeseDellAnno Esempio public enum MeseDellAnno { // COSTANTI ENUMERATIVE GENNAIO, FEBBRAIO, MARZO, APRILE, MAGGIO, GIUGNO, LUGLIO, AGOSTO, SETTEMBRE, OTTOBRE, NOVEMBRE, DICEMBRE; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 6 / 73

7 MeseDellAnno Esempio public enum MeseDellAnno { // COSTANTI ENUMERATIVE GENNAIO, FEBBRAIO, MARZO, APRILE, MAGGIO, GIUGNO, LUGLIO, AGOSTO, SETTEMBRE, OTTOBRE, NOVEMBRE, DICEMBRE; Fase di esecuzione La JVM crea un oggetto per ogni identificatore indicato e ne memorizza il riferimento nella costante corrispondente c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 6 / 73

8 La classe Enum Ogni tipo enumerativo è una classe che estende la classe generica Enum<E extends Enum<E>> (java.lang) c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 8 / 73

9 La classe Enum Ogni tipo enumerativo è una classe che estende la classe generica Enum<E extends Enum<E>> (java.lang) Metodi definiti in Enum public String name() public int ordinal() public int compareto(e o) Confronta l oggetto di tipo enumerativo che esegue il metodo con quello fornito come argomento. Restituisce un valore negativo, zero o un valore positivo a seconda che l oggetto che esegue il metodo preceda, sia uguale o segua quello fornito come argomento, sulla base dell ordine in cui sono dichiarate le costanti nel tipo enumerativo. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 8 / 73

10 La classe Enum Ogni tipo enumerativo è una classe che estende la classe generica Enum<E extends Enum<E>> (java.lang) Metodi definiti in Enum public String name() public int ordinal() public int compareto(e o) Confronta l oggetto di tipo enumerativo che esegue il metodo con quello fornito come argomento. Restituisce un valore negativo, zero o un valore positivo a seconda che l oggetto che esegue il metodo preceda, sia uguale o segua quello fornito come argomento, sulla base dell ordine in cui sono dichiarate le costanti nel tipo enumerativo. Il metodo compareto è final e dunque non può essere sovrascritto c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 8 / 73

11 Il metodo statico values di Enum E extends Enum E public static E[] values() Restituisce l array array contenente le costanti del tipo enumerativo nell ordine in cui sono dichiarate. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 10 / 73

12 Il metodo statico values di Enum E extends Enum E public static E[] values() Restituisce l array array contenente le costanti del tipo enumerativo nell ordine in cui sono dichiarate. Esempio Il tipo enumerativo MeseDellAnno dispone automaticamente del metodo statico MeseDellAnno.values() che restituisce un array di 12 posizioni contenente i riferimenti ai 12 valori del tipo. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 10 / 73

13 Metodi: ridefinizione di tostring public String tostring() { switch (this) { case GENNAIO: return "Gennaio"; case FEBBRAIO: return "Febbraio"; case MARZO: return "Marzo"; case APRILE: return "Aprile"; case MAGGIO: return "Maggio";... default: return ""; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 12 / 73

14 Nuovi metodi public MeseDellAnno precedente() Restituisce il riferimento all oggetto che rappresenta il mese precedente a quello che esegue il metodo. L oggetto precedente a GENNAIO è quello corrispondente a DICEMBRE. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 14 / 73

15 Nuovi metodi public MeseDellAnno precedente() Restituisce il riferimento all oggetto che rappresenta il mese precedente a quello che esegue il metodo. L oggetto precedente a GENNAIO è quello corrispondente a DICEMBRE. public MeseDellAnno successivo() Restituisce il riferimento all oggetto che rappresenta il mese successivo a quello che esegue il metodo. L oggetto successivo a DICEMBRE è quello corrispondente a GENNAIO. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 14 / 73

16 Implementazione public MeseDellAnno successivo() { return MeseDellAnno.values()[(this.ordinal() + 1) % 12]; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 16 / 73

17 Implementazione public MeseDellAnno successivo() { return MeseDellAnno.values()[(this.ordinal() + 1) % 12]; public MeseDellAnno precedente() { int prec = this.ordinal() - 1 < 0? 11 : this.ordinal() - 1; return MeseDellAnno.values()[prec]; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 16 / 73

18 I metodi numerogiorni public int numerogiorni() Restituisce il numero dei giorni del mese (28 se l oggetto che esegue il metodo è FEBBRAIO). c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 18 / 73

19 I metodi numerogiorni public int numerogiorni() Restituisce il numero dei giorni del mese (28 se l oggetto che esegue il metodo è FEBBRAIO). public int numerogiorni(boolean bisestile) Restituisce il numero dei giorni del mese; nel caso di febbraio, se l argomento è true restituisce 29, se è false restituisce 28. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 18 / 73

20 I metodi numerogiorni public int numerogiorni() Restituisce il numero dei giorni del mese (28 se l oggetto che esegue il metodo è FEBBRAIO). public int numerogiorni(boolean bisestile) Restituisce il numero dei giorni del mese; nel caso di febbraio, se l argomento è true restituisce 29, se è false restituisce 28. public int numerogiorni(int anno) Restituisce il numero dei giorni del mese, relativamente all anno specificato come argomento. Pertanto, nel caso degli anni bisestili, per il FEBBRAIO restituisce 29. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 18 / 73

21 Constant-specific methods public enum MeseDellAnno { GENNAIO { public int numerogiorni() { return 31;, FEBBRAIO { public int numerogiorni() { return 28;, MARZO { public int numerogiorni() { return 31;,... public abstract int numerogiorni();... c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 20 / 73

22 Constant-specific methods Tali metodi devono essere dichiarati (eventualmente astratti) nel tipo enumerativo c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 22 / 73

23 Constant-specific methods Tali metodi devono essere dichiarati (eventualmente astratti) nel tipo enumerativo Esempio numerogiorni è stato dichiarato astratto nel corpo del tipo enumerativo MeseDellAnno. Senza tale dichiarazione MeseDellAnno m;... m.numerogiorni() non verrebbe compilato. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 22 / 73

24 Tipi enumerativi: campi e costruttori È possibile associare ad ogni oggetto del tipo enumerativo dei campi c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 24 / 73

25 Tipi enumerativi: campi e costruttori È possibile associare ad ogni oggetto del tipo enumerativo dei campi È possibile definire dei costruttori: non sono utilizzabili dal programmatore per costruire istanze c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 24 / 73

26 Tipi enumerativi: campi e costruttori È possibile associare ad ogni oggetto del tipo enumerativo dei campi È possibile definire dei costruttori: non sono utilizzabili dal programmatore per costruire istanze vengono utilizzate dalla JVM per costruire le istanze corrispondenti alle costanti c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 24 / 73

27 MeseDellAnno: un implementazione più elegante public enum MeseDellAnno { // COSTANTI ENUMERATIVE // CAMPI private String nome; private int numgiorni; // COSTRUTTORI private MeseDellAnno(String nome, int numgiorni) { this.nome = nome; this.numgiorni = numgiorni;... c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 26 / 73

28 MeseDellAnno: un implementazione più elegante public enum MeseDellAnno { GENNAIO("Gennaio", 31), FEBBRAIO("Febbraio", 28), MARZO("Marzo", 31), APRILE("Aprile", 30), MAGGIO("Maggio", 31), GIUGNO("Giugno", 30), LUGLIO("Luglio", 31), AGOSTO("Agosto", 31), SETTEMBRE("Settembre", 30), OTTOBRE("Ottobre", 31), NOVEMBRE("Novembre", 30), DICEMBRE("Dicembre",31); // CAMPI private String nome; private int numgiorni; // COSTRUTTORI private MeseDellAnno(String nome, int numgiorni) { this.nome = nome; this.numgiorni = numgiorni;... c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 28 / 73

29 I metodi numerogiorni e tostring public enum MeseDellAnno { GENNAIO("Gennaio", 31), FEBBRAIO("Febbraio", 28), MARZO("Marzo", 31), APRILE("Aprile", 30),... // CAMPI private String nome; private int numgiorni;... public int numerogiorni() { return this.numgiorni; public String tostring() { return this.nome; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 30 / 73

30 I metodi numerogiorni public enum MeseDellAnno { GENNAIO("Gennaio", 31), FEBBRAIO("Febbraio", 28){ public int numerogiorni(boolean bisestile) { return bisestile? 29 : 28;, MARZO("Marzo", 31),... public int numerogiorni() { return this.numgiorni; public int numerogiorni(boolean bisestile) { return this.numerogiorni();... c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 32 / 73

31 I metodi numerogiorni public enum MeseDellAnno { GENNAIO("Gennaio", 31), FEBBRAIO("Febbraio", 28){ public int numerogiorni(boolean bisestile) { return bisestile? 29 : 28;, MARZO("Marzo", 31),... public int numerogiorni(boolean bisestile) { return this.numerogiorni(); public int numerogiorni(int anno) { Data d = new Data(1, 1, anno); return this.numerogiorni(d.isinannobisestile()); c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 34 / 73

32 La classe generica Coppia<E, F> Contratto Le istanze di Coppia<E, F> sono coppie di oggetti, il primo di tipo E ed il secondo di tipo F. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 36 / 73

33 La classe generica Coppia<E, F> Contratto Le istanze di Coppia<E, F> sono coppie di oggetti, il primo di tipo E ed il secondo di tipo F. Esempio Data d = new Data(22, 1, 2005); Orario o = new Orario(23, 33); Coppia<Data, Orario> tempo = new Coppia<Data, Orario>(d, o); Coppia<Data, Orario> adesso = new Coppia<Data, Orario>(new Data(), new Orario()); c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 36 / 73

34 I metodi public E getsinistro() Restituisce il primo elemento della coppia, cioè quello di sinistra. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 38 / 73

35 I metodi public E getsinistro() Restituisce il primo elemento della coppia, cioè quello di sinistra. public F getdestro() Restituisce il secondo elemento della coppia, cioè quello di destra. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 38 / 73

36 I metodi public E getsinistro() Restituisce il primo elemento della coppia, cioè quello di sinistra. public F getdestro() Restituisce il secondo elemento della coppia, cioè quello di destra. public String tostring() Restituisce una stringa contenente le stringhe associate ai due oggetti che costituiscono la coppia. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 38 / 73

37 I metodi public E getsinistro() Restituisce il primo elemento della coppia, cioè quello di sinistra. public F getdestro() Restituisce il secondo elemento della coppia, cioè quello di destra. public String tostring() Restituisce una stringa contenente le stringhe associate ai due oggetti che costituiscono la coppia. public static int numerocoppie() Restituisce il numero totale di istanze della classe costruite. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 38 / 73

38 Implementazione public class Coppia<E, F> { //CAMPI private E sinistro; private F destro; private static int ncoppie = 0;... c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 40 / 73

39 Implementazione public class Coppia<E, F> { //CAMPI private E sinistro; private F destro; private static int ncoppie = 0; //COSTRUTTORI public Coppia(E e, F f) { sinistro = e; destro = f; ncoppie++;... c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 42 / 73

40 Implementazione public class Coppia<E, F> { //CAMPI private E sinistro; private F destro; private static int ncoppie = 0;... //METODI public E getsinistro() { return sinistro; public F getdestro() { return destro; public String tostring() { return "(" + sinistro + ", " + destro + ")";... c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 44 / 73

41 Implementazione public class Coppia<E, F> { //CAMPI private E sinistro; private F destro; private static int ncoppie = 0;... //METODI STATICI public static int numerocoppie() { return ncoppie; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 46 / 73

42 Definizione di un interfaccia Le interfacce sono definite mediante la parola chiave interface c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 48 / 73

43 Definizione di un interfaccia Le interfacce sono definite mediante la parola chiave interface Nel corpo è possibile specificare solo: prototipi di metodi costanti statiche (cioè dei campi definiti static e final) c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 48 / 73

44 Definizione di un interfaccia Le interfacce sono definite mediante la parola chiave interface Nel corpo è possibile specificare solo: prototipi di metodi costanti statiche (cioè dei campi definiti static e final) Tutti i metodi di un interfaccia sono automaticamente public anche se non viene indicato c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 48 / 73

45 Definizione di un interfaccia Le interfacce sono definite mediante la parola chiave interface Nel corpo è possibile specificare solo: prototipi di metodi costanti statiche (cioè dei campi definiti static e final) Tutti i metodi di un interfaccia sono automaticamente public anche se non viene indicato Esempio public interface Comparable<T> { int compareto(t o); c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 48 / 73

46 Estensione di un interfaccia Si può definire un interfaccia estendendo interfacce già definite c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 50 / 73

47 Estensione di un interfaccia Si può definire un interfaccia estendendo interfacce già definite È possibile estendere più interfacce c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 50 / 73

48 Estensione di un interfaccia Si può definire un interfaccia estendendo interfacce già definite È possibile estendere più interfacce Esempio public interface I extends I1, I2 {... c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 50 / 73

49 Estensione di un interfaccia Si può definire un interfaccia estendendo interfacce già definite È possibile estendere più interfacce Esempio public interface I extends I1, I2 {... Un oggetto di una classe che implementa I può essere visto: come un oggetto di tipo I come un oggetto di tipo I1 come un oggetto di tipo I2 c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 50 / 73

50 Ordinare un array di interi: bubblesort Iterativamente: confrontiamo coppie di elementi adiacenti c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 51 / 73

51 Ordinare un array di interi: bubblesort Iterativamente: confrontiamo coppie di elementi adiacenti se non sono nell ordine giusto scambiamo gli elementi della coppia. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 51 / 73

52 Ordinare un array di interi: bubblesort Iterativamente: confrontiamo coppie di elementi adiacenti se non sono nell ordine giusto scambiamo gli elementi della coppia. Prima iterazione c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 51 / 73

53 Bubblesort Seconda iterazione c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 53 / 73

54 Bubblesort Seconda iterazione Se l array è ordinato non vengono effettuati scambi: questa è la condizione per concludere le iterazioni. c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 53 / 73

55 Bubblesort: lo schema do { scambiato = false; for (... ) // effettua una scansione if (gli elementi di posto i - 1 e i NON sono in ordine) { scambiali; scambiato = true; while (scambiato); c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 55 / 73

56 Bubblesort: implementazione public static void ordina(int[] a) { int temp; boolean scambiato; do { scambiato = false; for (int i = 1; i < a.length; i++) if (a[i - 1] > a[i]) { temp = a[i - 1]; a[i - 1] = a[i]; a[i] = temp; scambiato = true; while (scambiato); c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 57 / 73

57 Ordinare un array di String: bubblesort public static void ordina(string[] a) { String temp; boolean scambiato; do { scambiato = false; for (int i = 1; i < a.length; i++) if (a[i - 1].compareTo(a[i]) > 0) { temp = a[i - 1]; a[i - 1] = a[i]; a[i] = temp; scambiato = true; while (scambiato); c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 59 / 73

58 Ordinare un array di Comparable: bubblesort public static <T extends Comparable<? super T>> void ordina(t[] a) { T temp; boolean scambiato; do { scambiato = false; for (int i = 1; i < a.length; i++) if (a[i - 1].compareTo(a[i]) > 0) { temp = a[i - 1]; a[i - 1] = a[i]; a[i] = temp; scambiato = true; while (scambiato); c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 61 / 73

59 Ricerca in un array di interi public static int cerca(int[] a, int chiave) { boolean trovato = false; int i; for (i = 0; i < a.length &&!trovato; i++) if (chiave == a[i]) trovato = true; if (trovato) return i - 1; else return -1; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 63 / 73

60 Osservazioni Il tempo impiegato dal ciclo è proporzionale al numero di confronti (chiave == a[i]) effettuati c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 65 / 73

61 Osservazioni Il tempo impiegato dal ciclo è proporzionale al numero di confronti (chiave == a[i]) effettuati Caso peggiore Se l elemento cercato non appartiene all array: il tempo impiegato è proporzionale alla lunghezza dell array c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 65 / 73

62 Osservazioni Il tempo impiegato dal ciclo è proporzionale al numero di confronti (chiave == a[i]) effettuati Caso peggiore Se l elemento cercato non appartiene all array: il tempo impiegato è proporzionale alla lunghezza dell array Se l array è ordinato possiamo fare meglio Un array, privo di ripetizioni int[] a = new int[n]; è ordinato se, per ogni i = 0,..., N 2, a[i]<a[i+1] c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 65 / 73

63 Ricerca dicotomica Consideriamo l array ordinato a = c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 66 / 73

64 Ricerca dicotomica Consideriamo l array ordinato a = Supponiamo di cercare c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 66 / 73

65 Ricerca dicotomica Consideriamo l array ordinato a = Supponiamo di cercare 8 Possiamo pensare a come composto da 3 parti Confrontiamo l elemento da cercare (8) con l elemento di mezzo (9) c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 66 / 73

66 Ricerca dicotomica Consideriamo l array ordinato a = Supponiamo di cercare Possiamo pensare a come composto da 3 parti Confrontiamo l elemento da cercare (8) con l elemento di mezzo (9) Con due confronti (8==9? e 8<9?) siamo in grado di stabilire che l elemento da cercare, se è nell array, deve stare nella parte a sinistra c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 66 / 73

67 Ricerca dicotomica Consideriamo l array ordinato a = Supponiamo di cercare Possiamo pensare a come composto da 3 parti Confrontiamo l elemento da cercare (8) con l elemento di mezzo (9) Con due confronti (8==9? e 8<9?) siamo in grado di stabilire che l elemento da cercare, se è nell array, deve stare nella parte a sinistra Possiamo tralasciare di considerare gli elementi nella parte destra c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 66 / 73

68 Ricerca dicotomica Iteriamo il procedimento: c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 67 / 73

69 Ricerca dicotomica Iteriamo il procedimento: Confrontiamo (8) con l elemento di mezzo (7) c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 67 / 73

70 Ricerca dicotomica Iteriamo il procedimento: Confrontiamo (8) con l elemento di mezzo (7) l elemento da cercare, se appartiene all array, deve stare nella parte destra c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 67 / 73

71 Ricerca dicotomica Iteriamo il procedimento: Confrontiamo (8) con l elemento di mezzo (7) l elemento da cercare, se appartiene all array, deve stare nella parte destra Iteriamo di nuovo: c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 67 / 73

72 Ricerca dicotomica Iteriamo il procedimento: Confrontiamo (8) con l elemento di mezzo (7) l elemento da cercare, se appartiene all array, deve stare nella parte destra Iteriamo di nuovo: abbiamo un unico elemento, con un confronto stabiliamo che l elemento sta nell array c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 67 / 73

73 Quanti confronti? Ad ogni confronto dimezziamo la dimensione dell array da analizzare c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 68 / 73

74 Quanti confronti? Ad ogni confronto dimezziamo la dimensione dell array da analizzare Il caso peggiore si ha quando l elemento da cercare non sta nell array c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 68 / 73

75 Quanti confronti? Ad ogni confronto dimezziamo la dimensione dell array da analizzare Il caso peggiore si ha quando l elemento da cercare non sta nell array Esempio Array con elementi 1 confronto elementi 2 confronto elementi... c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 68 / 73

76 Quanti confronti? Ad ogni confronto dimezziamo la dimensione dell array da analizzare Il caso peggiore si ha quando l elemento da cercare non sta nell array Esempio Array con elementi 1 confronto elementi 2 confronto elementi... In questo caso il massimo numero di confronti che possiamo fare è dato dal minimo k tale che k < 1 c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 68 / 73

77 Quanti confronti? Per un array di N elementi il massimo numero di confronti necessari per decidere se un numero x appartiene all array e per determinarne la posizione è dato dal minimo k tale che: N 2 k 1 c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 69 / 73

78 Quanti confronti? Per un array di N elementi il massimo numero di confronti necessari per decidere se un numero x appartiene all array e per determinarne la posizione è dato dal minimo k tale che: N 2 k 1 Da cui: N 2 k c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 69 / 73

79 Quanti confronti? Per un array di N elementi il massimo numero di confronti necessari per decidere se un numero x appartiene all array e per determinarne la posizione è dato dal minimo k tale che: N 2 k 1 Da cui: N 2 k Quindi il numero di confronti necessari é dato dal piú piccolo numero intero k tale che k log 2 N c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 69 / 73

80 Ricerca binaria public static int cercabinaria(int[] a, int chiave) { boolean trovato = false; // a array ordinato int i = 0, j = a.length - 1, m = -1; while(i <= j &&!trovato) { m = (i + j) / 2; if (chiave < a[m]) // prosegui nella prima meta j = m - 1; else if (chiave > a[m]) // prosegui nella seconda meta i = m + 1; else trovato = true; // TROVATO return trovato? m : -1; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 71 / 73

81 Ricerca dicotomica su un array di Comparable public static <T extends Comparable<? super T>> int cerca(t[] a, T chiave) { int sx = 0, dx = a.length - 1, m; while (sx < dx) { m = (sx + dx) / 2; if (a[m].compareto(chiave) < 0) sx = m + 1; else if (a[m].compareto(chiave) > 0) dx = m - 1; else sx = dx = m; if (a[sx].compareto(chiave) == 0) return sx; else return -1; c 2005 Pearson Education Italia Capitolo 9 - Tipi enumerativi, tipi generici e interfacce 73 / 73

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125 Capitolo 6 Uso della gerarchia c 2005 Pearson Education Italia Capitolo 6-1 / 125 Sommario: Uso della gerarchia 1 Notazione UML per le classi 2 Introduzione alla gerarchia 3 Gerarchia e tipi La gerarchia

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

Dettagli

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Enumerativi Finora abbiamo creato enumerativi

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

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

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Classi e array Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Si vuole definire una classe Polinomio per la rappresentazione di polinomi a

Dettagli

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5 Ricerca e ordinamento su array di oggetti Corso di Programmazione 2 Esercitazione 5 Sommario Ricercare in array di oggetti Interfaccia comparable Ordinare array di oggetti Problema Come ordinare, ricercare

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

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

Alberi Binario in Java

Alberi Binario in Java Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un

Dettagli

Il Linguaggio Java. Le interfacce

Il Linguaggio Java. Le interfacce Il Linguaggio Java Le interfacce Ordinamento dei conti PROBLEMA: si vogliono ordinare i libretti di risparmio (SavingsAccount) in base al loro tasso di interesse REQUISITO: La classe dovrebbe essere ordinabile,

Dettagli

Calcolare x n = x x x (n volte)

Calcolare x n = x x x (n volte) Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile

Dettagli

Implementazione dell albero binario in linguaggio C++

Implementazione dell albero binario in linguaggio C++ Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve

Dettagli

Algoritmi di ordinamento e ricerca. Classe SelSort.java

Algoritmi di ordinamento e ricerca. Classe SelSort.java Classe SelSort.java public class SelSort Trova l elemento più piccolo nella porzione finale di un array. @param a l array da esplorare @param from la posizione iniziale dell intervallo @return la posizione

Dettagli

Programmazione II Compitino (Vers. B)

Programmazione II Compitino (Vers. B) Programmazione II Compitino (Vers. B) 17 dicembre 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi

Dettagli

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; } Il Linguaggio Java Le interfacce La classe BankAccount public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Esempi in Java di program.ne O-O

Esempi in Java di program.ne O-O Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico

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

Tipi di dato strutturati: Array

Tipi di dato strutturati: Array Tipi di dato strutturati: Array I dati visti finora sono: numeri (interi o razionali), booleani le stringhe (sequenze di caratteri) ma i dati manipolati nelle applicazioni reali sono spesso complessi (o

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 Prova Intermedia Marzo 2011 http://www.dia.uniroma3.it/~java/fondinf/ Prova Intermedia 1 Modalità della Prova Intermedia La Prova Intermedia

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

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 E04 Esercizi sui problemi di ordinamento C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Algoritmi di Ordinamento

Dettagli

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso; Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso

Dettagli

Ricerca binaria (o dicotomica) di un elemento in un vettore

Ricerca binaria (o dicotomica) di un elemento in un vettore Ricerca binaria (o dicotomica) di un elemento in un La ricerca binaria o dicotomica è utilizzata per ricercare i dati in un ORDNATO. L algoritmo di ricerca binaria, dopo ogni confronto, scarta metà degli

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione

Dettagli

Informatica 3 secondo recupero 13 Settembre 2002

Informatica 3 secondo recupero 13 Settembre 2002 Informatica 3 secondo recupero 13 Settembre 2002 Nome (stampatello) Cognome (stampatello) Matr Recupero: Prima prova in itinere Seconda prova in itinere spazio per il docente Punteggi recupero prima prova

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Domanda n. 1 Argomento: Rappresentazione dell'informazione Domanda: Il numero binario

Dettagli

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzione condizionale switch Istruzioni di salto break e continue Uso di variabili di tipo boolean Variabili di tipo array (monodimensionali)

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Insieme.java. Printed by Paolo. Feb 24, 04 16:44 Page 1/1 class Insieme { private int[] elementi; Tuesday February 24, /10

Insieme.java. Printed by Paolo. Feb 24, 04 16:44 Page 1/1 class Insieme { private int[] elementi; Tuesday February 24, /10 Feb 24, 04 16:44 Page 1/1 class Insieme { private int[] elementi; public Insieme() { elementi = new int[0]; public static boolean vuoto(insieme i) { return i.elementi.length == 0; Insieme.java public static

Dettagli

Programmazione ad Oggetti. Java Parte II

Programmazione ad Oggetti. Java Parte II Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una

Dettagli

Ereditarietà (ultima)

Ereditarietà (ultima) Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...

Dettagli

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 8 SE PROGRAMMER

Dettagli

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un giocatore, ogni giocatore una scheda Ci vengono già fornite le classi necessarie

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni 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

Dettagli

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011 13 aprile 2011 Cos è una collezione? Gerarchia delle collezioni Introduzione Una collezione è semplicemente un oggetto che raggruppa più oggetti (detti elementi della collezione) in una singola unità.

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe

Dettagli

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli

Dettagli

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato Interfacce 1 Interfacce Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato costituito dall intestazione senza il corpo della definizione

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Uguaglianza e copia di oggetti

Uguaglianza e copia di oggetti Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La

Dettagli

Programmazione II Compitino (Vers. B)

Programmazione II Compitino (Vers. B) Programmazione II Compitino (Vers. B) 15 gennaio 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi

Dettagli

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo. Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40

Dettagli

Il linguaggio Java Istruzioni di Controllo

Il linguaggio Java Istruzioni di Controllo Il linguaggio Java Istruzioni di Controllo Istruzioni per il controllo di flusso Istruzioni di selezione if switch Istruzioni di iterazione while do-while for Istruzioni di salto break continue return

Dettagli

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010 Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1

Dettagli

16 - Ereditarietà, tipi e gerarchie

16 - Ereditarietà, tipi e gerarchie 16 - Ereditarietà, tipi e gerarchie 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

Dettagli

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori 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

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) : PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:

Dettagli

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)

Dettagli

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca Interval Tree un albero binario di ricerca le

Dettagli

C espressioni condizionali

C espressioni condizionali C espressioni condizionali Esiste un particolare operatore, detto operatore condizionale, che rappresenta un istruzione if else. estremamente compattata?: Supponiamo di voler inserire nella variabile intera

Dettagli

Programmazione 1 A.A. 2015/2016

Programmazione 1 A.A. 2015/2016 Cognome e Nome Matricola Programmazione 1 A.A. 2015/2016 Appello del 16 Dicembre 2015 Compito n 1 Prima parte Esercizio 1 (10 punti) Cosa stampa il seguente frammento di codice Java? int[] A = {3, 8, 91,

Dettagli

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici

Dettagli

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3 Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali

Dettagli

Le eccezioni in Java

Le eccezioni in Java Eccezioni 1 Le eccezioni in Java i tipi di eccezione sono particolari classi che contengono solo il costruttore ci possono essere più costruttori overloaded sono definite in moduli separati da quelli che

Dettagli

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità.

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. Linguaggio C Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. 1 Complessità degli Algoritmi Si definisce Complessità di un Algoritmo C(A) la funzione dei parametri rilevanti per A che determina

Dettagli

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1 Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)

Dettagli

Ordinamento. Scoperta guidata di tipici algoritmi: selection sort, bubble sort

Ordinamento. Scoperta guidata di tipici algoritmi: selection sort, bubble sort Ordinamento Scoperta guidata di tipici algoritmi: selection sort, bubble sort. Problema stimolo Si possiede una bilancia a due piatti ed N sacchi di iuta pieni di caffè. Ciascun sacco è identificato da

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Introduzione all'algoritmica per i Licei (C++). 3 Ricerca binaria o dicotomica. versione 1 febbraio 2015

Introduzione all'algoritmica per i Licei (C++). 3 Ricerca binaria o dicotomica. versione 1 febbraio 2015 Introduzione all'algoritmica per i Licei (C++). 3 Ricerca binaria o dicotomica. versione 1 febbraio 2015 Elio Giovannetti Dipartimento di Informatica Università di Torino Quest'opera è distribuita con

Dettagli

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010 Quicksort e qsort() Alessio Orlandi 28 marzo 2010 Intro Quicksort è l algoritmo di ordinamento più implementato, insieme con Mergesort. Tutte le librerie standard UNIX ne prevedono una implementazione.

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi di ordinamento! Selection Sort! Quick Sort! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 1 Selection Sort SelectionSort(dati[]) { for (i=0; idati.length-1; i++) { min

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Ω (grande omega) Diciamo che T(n) = Ω (f(n)), - leggiamo T(n) ha complessità

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 15 Algoritmi su array: selection sort, insertion sort, fusione

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di

Dettagli

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002. INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002 Esercizio 4) import fiji.io.simplereader; class Programma{ public static

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

Dettagli

Fondamenti di Informatica T1 Mappe

Fondamenti di Informatica T1 Mappe Fondamenti di Informatica T1 Mappe Tutor Melissa Licciardello melissa.licciardell2@unibo.it Melissa Licciardello Fondamenti di Informatica T1 1 / 16 Mappe Matrice N x 2 : Gli elementi della prima colonna,

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

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: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2011-12 17 settembre 2012 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

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

GESTIONE DEGLI ERRORI

GESTIONE DEGLI ERRORI GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi.. 2010/2011 Sommario Conversione di tipo:casting Tipo enumerativo lgebra Booleana Esercizi Conversione di tipo:casting Il casting o conversione di tipo avviene

Dettagli

Esercitazione 12. Esercizi di Ricapitolazione

Esercitazione 12. Esercizi di Ricapitolazione Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,

Dettagli

Java: Definire Classi e Creare Oggetti

Java: Definire Classi e Creare Oggetti Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 21 marzo 2014 Introduzione Programmare con gli Oggetti Un programma Java è costituito

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

Linguaggio Java: compendio sintattico

Linguaggio Java: compendio sintattico H Linguaggio Java: compendio sintattico Come nel resto del libro, in questo compendio sintattico usiamo un tipo di carattere equispaziato per le parole riservate del linguaggio Java, come while, e per

Dettagli

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto Argomenti della lezione Introduzione agli Algoritmi e alle Strutture Dati Operazioni su Liste Dr. Emanuela Merelli Tipi di Dato Astratto Lista Lineare Pila Coda Concetto di Struttura dati dinamiche Lista

Dettagli

Programmazione II Compitino (Vers. A)

Programmazione II Compitino (Vers. A) Programmazione II Compitino (Vers. A) 17 dicembre 2015 Cognome... Nome... Matricola... Anno di corso... Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi al corpo del

Dettagli

Laboratorio di Programmazione 1 [Java]

Laboratorio di Programmazione 1 [Java] Laboratorio di Programmazione 1 [Java] Prova di esame - 26 Gennaio 2011 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Pizzeria. La classe Tavolo ha i seguenti attributi: nome (una

Dettagli