Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73
|
|
- Antonina Antonini
- 6 anni fa
- Visualizzazioni
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 Sommario: Uso della gerarchia 1 Notazione UML per le classi 2 Introduzione alla gerarchia 3 Gerarchia e tipi La gerarchia
DettagliProgrammazione. 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
Dettaglipublic 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
DettagliFondamenti 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
DettagliOCA 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
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliClassi 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
DettagliRicerca 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
DettagliProgrammazione. 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
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliAlberi 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
DettagliIl 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,
DettagliCalcolare 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
DettagliImplementazione 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
DettagliAlgoritmi 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
DettagliProgrammazione 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
Dettaglipublic 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
DettagliEsonero 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
DettagliFondamenti 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
DettagliEsonero 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
DettagliLe 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
DettagliEsempi 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
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliTipi 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
DettagliCorso 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
DettagliProgrammazione 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
DettagliCorso 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
Dettagli3. 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
DettagliRicerca 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
DettagliEsercizi 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
DettagliLE 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
DettagliInformatica 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
DettagliElementi 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
DettagliCorso 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
DettagliCorso: 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
DettagliA. 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),
DettagliEsercitazione 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
DettagliFondamenti 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)
Dettagli18 - 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/
DettagliEsercitazione 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
DettagliInsieme.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
DettagliProgrammazione 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
DettagliEreditarietà (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...
DettagliOCA 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
DettagliEsempio: 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
Dettagli19 - 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
DettagliIntroduzione 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à.
DettagliNell 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
DettagliEreditarietà. 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
DettagliArray 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
DettagliInterfacce. 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
DettagliAlgebra 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
DettagliUguaglianza 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
DettagliProgrammazione 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
Dettaglipublic 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
DettagliIl 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
DettagliCorso 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
Dettagli16 - 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
Dettagli14 - 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
DettagliCognome 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:
DettagliInformatica 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)
DettagliLa 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
DettagliDati 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
DettagliC 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
DettagliProgrammazione 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,
DettagliEsercizi 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
DettagliIl 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
DettagliLe 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
DettagliLinguaggio 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
Dettagliosservazione: 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)
DettagliOrdinamento. 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
DettagliProgrammazione 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
DettagliIntroduzione 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
DettagliQuicksort 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.
DettagliUtilizza 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
DettagliAlgoritmi 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
DettagliLaboratorio 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[]
DettagliCOMPLESSITÀ 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à
DettagliTipi 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
DettagliProgrammazione 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
Dettagli18 - 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
DettagliINFORMATICA 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
DettagliEccezioni 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
DettagliFondamenti 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,
DettagliIndice. 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
DettagliArray. 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
DettagliVariabili 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
DettagliEsercizi 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
DettagliCorso 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.
DettagliEsercizi 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
DettagliGESTIONE 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
DettagliFondamenti 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
DettagliEsercitazione 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,
DettagliJava: 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
DettagliEsempio 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
DettagliStrutture 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
DettagliLinguaggio 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
DettagliArgomenti 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
DettagliProgrammazione 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
DettagliLaboratorio 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