Array. C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo
|
|
- Giustino Pepe
- 6 anni fa
- Visualizzazioni
Transcript
1 Array C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di Bari
2 Obiettivi 2 Prender familiarità con l'uso di array e array-list Conoscere le classi involucro, l'auto-boxing e il ciclo for generalizzato Studiare gli algoritmi di base su array Imparare l'uso di array bidimensionali Imparare quando scegliere gli array-list e quando gli array nei propri programmi Implementare array riempiti parzialmente
3 Array 3 Array: : Sequenza di valori dello stesso tipo Costruire un array: new double[10] Immagazzinare dati in una variabile di tipo double[] double[] data = new double[10];
4 Array 4 Quando si crea un array, tutti i valori sono inizializzati a seconda del tipo di array: numeri: 0 boolean: false Riferimenti ad oggetti: null
5 Array 5 Array e Riferimento ad Array
6 Array 6 Si usa l'operatore [ ] per accedere ad un elemento data[2] = 29.95; Figure 2: Storing a Value in an Array
7 Array 7 Uso del valore immagazzinato: System.out.println("The value of this data item is " + data[4]); Si ottiene la lunghezza dell'array con data.length (NB: non è un metodo!) I valori degli indici vanno da 0 a length - 1
8 Array 8 L'accesso ad un elemento non esistente provoca un errore di limiti double[] data = new double[10]; data[10] = 29.95; // ERRORE Limitazione: gli array hanno lunghezza fissata
9 Sintassi 8.1: Costruzione di Array 9 new typename[length length] Esempio: new double[10] Scopo: Costruire un array di un dato numero di elementi
10 Sintassi 8.2: Accesso ad un 10 Elemento di un Array arrayreference[index index] Esempio: data[2] Scopo: : Accedere ad un elemento in un array
11 Array List 11 La classe ArrayList gestisce una sequenza di oggetti Può crescere e restringersi secondo le necessità La classe ArrayList fornisce metodi per molti compiti comuni come l'inserimento e la rimozione di elementi
12 Array List 12 La classe ArrayList è generica: ArrayList<T> raccoglie oggetti di tipo T: ArrayList<BankAccount> accounts = new ArrayList<BankAccount>(); accounts.add(new BankAccount(1001)); accounts.add(new BankAccount(1015)); accounts.add(new BankAccount(1022)); Il metodo size() restituisce il numero di elementi
13 Ritrovamento di Elementi in 13 Si usa il metodo get L'indice comincia da 0 Array List BankAccount anaccount = accounts.get(2); // ottiene il terzo elemento dell'array list Errore di limiti se l'indice è fuori dell'intervallo
14 Ritrovamento di Elementi in 14 Array List Errori di limiti più comuni: int i = accounts.size(); anaccount = accounts.get(i); // Errore // valori leciti per gli indici: 0...i-1
15 Aggiunta di Elementi 15 set sovrascrive un valore esistente: BankAccount anaccount = new BankAccount(1729); accounts.set(2, anaccount); add aggiunge un nuovo valore nella posizione precedente all'indice indicato accounts.add(i, a)
16 Aggiunta di Elementi 16 Figure 3: Adding an Element in the Middle of an Array List
17 Cancellazione di Elementi 17 remove removes an element at an index Accounts.remove(i)
18 Cancellazione di Elementi 18 Figure 4: Removing an Element in the Middle of an Array List
19 ArrayListTester.java 19 01: import java.util.arraylist; 02: 03: /** 04: Programma che testa la classe ArrayList. 05: */ 06: public class ArrayListTester 07: { 08: public static void main(string[] args) 09: { 10: ArrayList<BankAccount> accounts 11: = new ArrayList<BankAccount>(); 12: accounts.add(new BankAccount(1001)); 13: accounts.add(new BankAccount(1015)); 14: accounts.add(new BankAccount(1729)); 15: accounts.add(1, new BankAccount(1008)); 16: accounts.remove(0);
20 ArrayListTester.java 20 17: 18: System.out.println("size=" + accounts.size()); 19: BankAccount first = accounts.get(0); 20: System.out.println("first account number=" 21: + first.getaccountnumber()); 22: BankAccount last = accounts.get(accounts.size() - 1); 23: System.out.println("last account number=" 24: + last.getaccountnumber()); 25: } 26: }
21 BankAccount.java 21 01: /** 02: Un conto corrente ha un saldo che può essere cambiato da 03: depositi e prelievi. 04: */ 05: public class BankAccount 06: { 07: /** 08: Costruisce un conto con saldo zero anaccountnumber il numero di questo conto 10: */ 11: public BankAccount(int anaccountnumber) 12: { 13: accountnumber = anaccountnumber; 14: balance = 0; 15: } 16:
22 BankAccount.java 22 17: /** 18: Costruisce un conto con un dato saldo iniziale anaccountnumber il numero del conto initialbalance il saldo iniziale 21: */ 22: public BankAccount (int anaccountnumber, double initialbalance) 23: { 24: accountnumber = anaccountnumber; 25: balance = initialbalance; 26: } 27: 28: /** 29: ottiene il numero di questo conto corrente. numero di conto 31: */ 32: public int getaccountnumber() 33: { 34: return accountnumber; 35: }
23 BankAccount.java 23 36: 37: /** 38: Deposita denaro sul conto. amount l'ammontare del deposito 40: */ 41: public void deposit(double amount) 42: { 43: double newbalance = balance + amount; 44: balance = newbalance; 45: } 46: 47: /** 48: Preleva denaro dal conto. amount ammontare del prelievo 50: */ 51: public void withdraw(double amount) 52: { 53: double newbalance = balance - amount; 54: balance = newbalance;
24 BankAccount.java 24 55: } 56: 57: /** 58: Ottiene il saldo corrente del conto. il saldo corrente 60: */ 61: public double getbalance() 62: { 63: return balance; 64: } 65: 66: private int accountnumber; 67: private double balance; 68: } Output: size=3 first account number=1008 last account number=1729
25 Wrapper 25 Non si possono inserire tipi primitivi direttamente nelle array list Per trattare i valori di tipi primitivi come oggetti, si usano le classi involucro (wrapper): ArrayList<Double> data = new ArrayList<Double>(); data.add(29.95); double x = data.get(0);
26 Wrapper 26 Figure 5: An Object of a Wrapper Class
27 Wrapper 27 Ci sono classi involucro per tutti gli otto tipi primitivi:
28 Auto-boxing 28 Auto-boxing: : da Java 5.0, la conversione tra tipi primitivi e classi involucro corrispondenti è automatica Double d = 29.95; // auto-boxing: analogo a Double d = new Double(29.95); double x = d; // auto-unboxing: analogo a double x = d.doublevalue();
29 Auto-boxing 29 L'auto-boxing funziona anche all'interno di espressioni aritmetiche: Double e = d + 1; significa: Fai l'auto-unbox di d in un double Aggiungi 1 Fai l'auto-box del risultato in un nuovo Double Immagazzina in e un riferimento all'oggetto involucro appena creato
30 Ciclo for Generalizzato 30 Cicla su tutti gli elementi di una collezione: double[] data =...; double sum = 0; for (double e : data) // da leggersi: "per ogni e in data" { sum = sum + e; }
31 Ciclo for Generalizzato 31 Alternativa tradizionale: double[] data =...;. double sum = 0; for (int i = 0; i < data.length; i++) { double e = data[i]; sum = sum + e; }
32 Ciclo for Generalizzato 32 Funziona anche per le ArrayLists: ArrayList<BankAccount> accounts =... ; double sum = 0; for (BankAccount a : accounts) { sum = sum + a.getbalance(); }
33 Ciclo for Generalizzato 33 Equivalente al seguente ciclo for normale: double sum = 0; for (int i = 0; i < accounts.size(); i++) { BankAccount a = accounts.get(i); sum = sum + a.getbalance(); }
34 Sintassi 8.3: Ciclo "Per Ogni" 34 for (Type variable : collection) statement Esempio: for (double e : data) sum = sum + e; Scopo: : eseguire un iterazione per ogni elemento della collezione. Ad ogni iterata, viene assegnato alla variabile il prossimo elemento della collezione per poi eseguire l'istruzione
35 Algoritmi Semplici su Array: 35 Conteggio delle Corrispodenze Controllare tutti gli elementi e contare le corrispondenze fino alla fine dell'array-list public class Bank { public int count(double atleast) { int matches = 0; for (BankAccount a : accounts) { if (a.getbalance() >= atleast) matches++; } // trovata una corrispondenza } return matches; }... private ArrayList<BankAccount> accounts;
36 Algoritmi Semplici su Array: 36 Trovare un Valore Controllare tutti gli elementi fino a trovare una corrispondenza: public class Bank { public BankAccount find(int accountnumber) } { }... for (BankAccount a : accounts) { if (a.getaccountnumber() == accountnumber) return a; // corrispondenza trovata } return null; // nessuna corrispondenza in tutto array list
37 Algoritmi Semplici su Array: 37 Trovare il Massimo/Minimo Inizializzare un candidato con l'elemento iniziale Confrontare il candidato con i restanti elementi Aggiornare se si trova un valore più grande/piccolo
38 Algoritmi Semplici su Array: 38 Esempio: Trovare il Massimo/Minimo BankAccount largestyet = accounts.get(0); for (int i = 1; i < accounts.size(); i++) { BankAccount a = accounts.get(i); if (a.getbalance() > largestyet.getbalance()) largestyet = a; } return largestyet;
39 Algoritmi Semplici su Array: 39 Trovare il Massimo/Minimo Funziona solo se c'è almeno un elemento nell'array list Se list è vuoto, restituisce null if (accounts.size() == 0) return null; BankAccount largestyet = accounts.get(0);...
40 Bank.java 40 01: import java.util.arraylist; 02: 03: /** 04: Questa banca contiene una collezione di conti correnti 05: */ 06: public class Bank 07: { 08: /** 09: Constructs a bank with no bank accounts. 10: */ 11: public Bank() 12: { 13: accounts = new ArrayList<BankAccount>(); 14: } 15: 16: /** 17: aggiunge un conto alla banca. a conto da aggiungere 19: */
41 Bank.java 41 20: public void addaccount(bankaccount a) 21: { 22: accounts.add(a); 23: } 24: 25: /** 26: ritorna la somma dei saldi dei conti della banca somma dei saldi 28: */ 29: public double gettotalbalance() 30: { 31: double total = 0; 32: for (BankAccount a : accounts) 33: { 34: total = total + a.getbalance(); 35: } 36: return total; 37: } 38:
42 Bank.java 42 39: /** 40: conta il numero dei conti il cui saldo sia pari 41: almeno ad un dato valore. atleast saldo minimo numero dei conti che hanno almeno un saldo // pari al valore dato 44: */ 45: public int count(double atleast) 46: { 47: int matches = 0; 48: for (BankAccount a : accounts) 49: { 50: if (a.getbalance() >= atleast) matches++; // trovato 51: } 52: return matches; 53: } 54:
43 Bank.java 43 55: /** 56: trova un conto con un dato numero. accountnumber numero da trovare il conto del dato numero, oppure null 59: se non è presente quel conto 60: */ 61: public BankAccount find(int accountnumber) 62: { 63: for (BankAccount a : accounts) 64: { 65: if (a.getaccountnumber() == accountnumber) // trovato 66: return a; 67: } 68: return null; // trovato nessun conto con quel numero 69: } 70:
44 Bank.java 44 71: /** 72: restituisce il conto con il saldo maggiore il conto con il saldo maggiore, oppure 74: null se la banca non ha conti aperti 75: */ 76: public BankAccount getmaximum() 77: { 78: if (accounts.size() == 0) return null; 79: BankAccount largestyet = accounts.get(0); 80: for (int i = 1; i < accounts.size(); i++) 81: { 82: BankAccount a = accounts.get(i); 83: if (a.getbalance() > largestyet.getbalance()) 84: largestyet = a; 85: } 86: return largestyet; 87: } 88: 89: private ArrayList<BankAccount> accounts; 90: }
45 BankTester.java 45 01: /** 02: Programma di test per la classe Bank. 03: */ 04: public class BankTester 05: { 06: public static void main(string[] args) 07: { 08: Bank firstbankofjava = new Bank(); 09: firstbankofjava.addaccount (new BankAccount(1001, 20000)); 10: firstbankofjava.addaccount (new BankAccount(1015, 10000)); 11: firstbankofjava.addaccount (new BankAccount(1729, 15000)); 12: 13: double threshold = 15000; 14: int c = firstbankofjava.count(threshold); 15: System.out.println (c + " accounts with balance >= " + threshold);
46 BankTester.java 46 16: 17: int accountnumber = 1015; 18: BankAccount a = firstbankofjava.find(accountnumber); 19: if (a == null) 20: System.out.println ("No account with number " + accountnumber); 21: else 22: System.out.println ("Account with number " + accountnumber 23: + " has balance " + a.getbalance()); 24: 25: BankAccount max = firstbankofjava.getmaximum(); 26: System.out.println("Account with number " 27: + max.getaccountnumber() 28: + " has the largest balance."); 29: } 30: }
47 BankTester.java 47 Output 2 accounts with balance >= Account with number 1015 has balance Account with number 1001 has the largest balance.
48 Array Bidimensionali 48 Nel costruire un array bidimensionale, si specifica di quante righe e colonne si ha bisogno: final int ROWS = 3; final int COLUMNS = 3; String[][] board = new String[ROWS][COLUMNS]; Si ha accesso agli elementi con una coppia di indici a[i][j]: board[i][j] = "x";
49 Tavola per il Filetto 49 Figure 6: A Tic-Tac-Toe Board
50 Attraversamento 50 di Array Bidimensionali È tipico usare due cicli nidificati nel riempimento o la ricerca: for (int i = 0; i < ROWS; i++) for (int j = 0; j < COLUMNS; j++) board[i][j] = " ";
51 TicTacToe.java 51 01: /** 02: Una tavola di Filetto 3 x 3. 03: */ 04: public class TicTacToe 05: { 06: /** 07: Costruisce la tavola vuota. 08: */ 09: public TicTacToe() 10: { 11: board = new String[ROWS][COLUMNS]; 12: // riempie con spazi 13: for (int i = 0; i < ROWS; i++) 14: for (int j = 0; j < COLUMNS; j++) 15: board[i][j] = " "; 16: } 17:
52 TicTacToe.java 52 18: /** 19: Imposta una casella (non deve essere occupata) i indice della riga j indice della colonna player il giocatore ("x" oppure "o") 23: */ 24: public void set(int i, int j, String player) 25: { 26: if (board[i][j].equals(" ")) 27: board[i][j] = player; 28: } 29: 30: /** 31: Crea una rappresentazione della tavola in forma di stringa come ad es.: 32: x o 33: x 34: o la rappresentazione in forma di stringa 36: */
53 TicTacToe.java 53 37: public String tostring() 38: { 39: String r = ""; 40: for (int i = 0; i < ROWS; i++) 41: { 42: r = r + " "; 43: for (int j = 0; j < COLUMNS; j++) 44: r = r + board[i][j]; 45: r = r + " \n"; 46: } 47: return r; 48: } 49: 50: private String[][] board; 51: private static final int ROWS = 3; 52: private static final int COLUMNS = 3; 53: }
54 TicTacToeTester.java 54 01: import java.util.scanner; 02: 03: /** 04: Programma di test della classe TicTacToe 05: che chiede all'utente di impostare le posizioni 06: sulla tavola e stampa il risultato. 07: */ 08: public class TicTacToeTester 09: { 10: public static void main(string[] args) 11: { 12: Scanner in = new Scanner(System.in); 13: String player = "x"; 14: TicTacToe game = new TicTacToe(); 15: boolean done = false; 16: while (!done) 17: {
55 TicTacToeTester.java 55 18: System.out.print(game.toString()); 19: System.out.print( 20: "Row for " + player + " (-1 to exit): "); 21: int row = in.nextint(); 22: if (row < 0) done = true; 23: else 24: { 25: System.out.print ("Column for " + player + ": "); 26: int column = in.nextint(); 27: game.set(row, column, player); 28: if (player.equals("x")) 29: player = "o"; 30: else 31: player = "x"; 32: } 33: } 34: } 35: }
56 Output 56 Row for x (-1 to exit): 1 Column for x: 2 x Row for o (-1 to exit): 0 Column for o: 0 o x Row for x (-1 to exit): -1
57 Copiare Array: 57 Copiare i Riferimenti Copiare una variabile array comporta un secondo riferimento allo stesso (oggetto) array double[] data = new double[10]; // riempie l'array... double[] prices = data;
58 Copiare Array: 58 Copiare i Riferimenti Figure 7: Two References to the Same Array
59 Copiare Array: 59 Clonare gli Array Si usa il metodo clone per farne una vera copia double[] prices = (double[]) data.clone();
60 Copiare Array: 60 Clonare gli Array Figure 8: Cloning an Array
61 Copiare Array: 61 Copiare Elementi di Array System.arraycopy(from, fromstart, to, tostart, count);
62 Copiare Array: 62 Copiare Elementi di Array Figure 9: The System.arraycopy Method
63 Aggiungere Elementi ad Array 63 System.arraycopy (data, i, data, i + 1, data.length - i - 1); data[i] = x;
64 Aggiungere Elementi ad Array 64 Figure 10: Inserting a New Element Into an Array
65 Eliminare un Elemento 65 System.arraycopy(data, i + 1, data, i, data.length - i - 1);
66 Rimuovere Elementi da Array 66 Figure 11 Removing an Element from an Array
67 Ampliare un Array 67 Se l'array è pieno e si ha bisogno di più spazio è possibile ampliare l'array: Creare un nuovo array più grande double[] newdata = new double[2 * data.length]; Copiare tutti gli elementi nel nuovo array System.arraycopy(data, 0, newdata, 0, data.length); Immagazzinare il riferimento al nuovo array nella precedente variabile array data = newdata;
68 Ampliare un Array 68 Figure 12: Growing an Array
69 Creare Array Paralleli 69 in Array di Oggetti // Da NON fare int[] accountnumbers; double[] balances; Figure 13: Avoid Parallel Arrays
70 Creare Array Paralleli 70 in Array di Oggetti Evitare l'uso di array paralleli trasformandoli in array di oggetti: BankAccount[] = accounts; Figure 14: Reorganizing Parallel Arrays into Arrays of Objects
71 Array Parzialmente Riempiti 71 Lunghezza di array = massimo numero di elementi nell'array Di solito è riempito solo parzialmente Serve una variabile d'appoggio per tener traccia della dimensione corrente Convenzione uniforme sui nomi: final int DATA_LENGTH = 100; double[] data = new double[data_length]; int datasize = 0;
72 Array Parzialmente Riempiti 72 Aggiornare datasize al riempimento dell'array: data[datasize] = x; datasize++;
73 Array Parzialmente Riempiti 73 Figure 15: A Partially Filled Array
74 Un Vecchio Worm su Internet 74 Figure 16: A "Buffer Overrun" Attack
Capitolo 8. Arrays e Array Lists
Capitolo 8 Arrays e Array Lists Obiettivi del capitolo Familiarizzarsi con l uso degli arrays e array lists Conoscere le cassi wrapper classes, autoboxing ed il ciclo for generalizzato Studiare algoritmi
DettagliCapitolo 7 array e array list
Capitolo 7 array e array list Obiettivi del capitolo Acquisire familiarità con l utilizzo di array e array list (vettori ) Studiare le classi involucro, la tecnica di autoimpacchettamento e il ciclo for
DettagliQuesti lucidi provengono dal Capitolo 7 del libro. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione
Questi lucidi provengono dal Capitolo 7 del libro Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Vettori La classe ArrayList (vettore o lista sequenziale) gestisce oggetti
DettagliCapitolo 7 Vettori e array. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione
Capitolo 7 Vettori e array Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Acquisire familiarità con l utilizzo di array e vettori Studiare le classi
DettagliArrays Array L ay ist
Arrays Array Lists Arrays Array: una sequenza di valori dello stesso tipo double[] data = new double[10]; Continua Arrays Al momento della allocazione, tutti i valori sono inizializzati ai valori di default
DettagliEsempio. public class Purse { public Purse() { nickels = 0; dimes = 0; quarters = 0; } public double gettotal() {
Vettori e Array Esempio public class Purse { public Purse() { nickels = 0; dimes = 0; quarters = 0; public void addnickels(int count) { nickels = nickels + count; public void adddimes(int count) { dimes
DettagliArray 1. Array: sequenza di valori omogenei (cioè dello stesso tipo). Costruire un array: new double[10]
Array 1 Array: sequenza di valori omogenei (cioè dello stesso tipo). Costruire un array: new double[10] Memorizzare in una variabile il riferimento all'array. Il tipo di una variabile che fa riferimento
DettagliGli Array Ing. Massimo Cossen.no Sistemi Informa.vi Aziendali a.a. 2008/2009
Lezione 12 Sistemi Informa.vi Aziendali a.a. 2008/2009 Array: sequenza di valori omogenei (cioè dello stesso 8po). Dichiarazione di una variabile array double[ ] double[] data; Istanziare un array: double[]
DettagliCapitolo 12: Vettori e array. Capitolo 12. Vettori e array Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2
Capitolo 12 Vettori e array 1 Figura 1 Aggiungere un elemento in una posizione intermedia di un vettore 2 Figura 2 Rimuovere un elemento da una posizione intermedia di un vettore 3 File Purse.java import
DettagliTipi di dato Fondamentali
Tipi di dato Fondamentali Tipi numerici int: interi, senza parte frazionaria 1, -4, 0 double: numeri in virgola mobile (precisione doppia) 0.5, -3.11111, 4.3E24, 1E-14 Tipi numerici Una computazione su
DettagliArray. In Java un array è un oggetto senza metodi, con attributo pubblico length che memorizza la dimensione dell array
Array Una matrice (array) è un insieme ordinato e omogeneo di dati: è una variabile che contiene uno o più valori in sequenza ordinata. Questi valori si chiamano "elementi" e devono avere lo stesso tipo
DettagliTipi di dato Fondamentali
Tipi numerici Tipi di dato Fondamentali int: interi, senza parte frazionaria 1, -4, 0 double: numeri in virgola mobile (precisione doppia) 0.5, -3.11111, 4.3E24, 1E-14 Tipi numerici Una computazione su
DettagliCollezione di oggetti: Array List
Vettori e Array Collezione di oggetti: Array List La classe Purse non tiene traccia deisingoli oggetti di tipo Coin, ma memorizza solo il valore totale Possiamo memorizzare una collezione di oggetti mediante
DettagliVettori e array. Collezione di oggetti: Array List
Collezione di oggetti: Array List Vettori e array Anno Accademico 2003/04 Docente modulo 2: Barbara Masucci Consideriamo la classe Purse non tiene traccia dei singoli oggetti di tipo Coin, ma memorizza
DettagliTipi di dato F n o d n am ent en ali
Tipi di dato Fondamentali Tipi numerici int: interi, senza parte frazionaria 1, -4, 0 double: numeri in virgola mobile (precisione doppia) 0.5, -3.11111, 4.3E24, 1E-14 Tipi numerici Una computazione su
DettagliTipi di dato Fondamentali
Tipi di dato Fondamentali Tipi numerici int: interi, senza parte frazionaria 1, -4, 0 double: numeri in virgola mobile (precisione doppia) 0.5, -3.11111, 4.3E24, 1E-14 Tipi numerici Una computazione su
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito
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
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Array Array monodimensionali Array bidimensionali Esercizi 16/01/2013 2 ARRAY Gli array sono oggetti utilizzati in Java per memorizzare
DettagliCorso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione
Corso: Fondamenti di Informatica (Gruppo 2) a.a. 2017-18 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab05 Domanda n. 1 Argomento: Iterazioni, array
DettagliImplementare le classi
Implementare le classi C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi
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
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
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.
DettagliEsercizi su array di array
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E10 C. Limongelli Gennaio 2010 1 Contenuti Fusione di due array ordinati, con eliminazione di duplicati Verifica array bidimensionale
DettagliCapitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61
Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli
DettagliConoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione
1 Conoscere l uso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali classi di Collection usare in casi specifici Conoscere
DettagliArrayList. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni
ArrayList Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni ArrayList Sotto diversi aspetti un ArrayList può essere considerato come un array migliore. I Miglioramenti sono
DettagliArray di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione
DettagliLaboratorio di Programmazione Lezione 3. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 3 Cristian Del Fabbro Prossima lezione GIOVEDÌ 12 NOVEMBRE ORE 14:00 Array a.k.a. vettore Un array è una collezione ordinata di dati omogenei (cioé sono tutti dello
DettagliScelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if
Scelte Costrutto condizionale Scelte, blocchi Fino ad ora il corpo dei metodi che abbiamo scritto aveva solo un modo di essere eseguito: in sequenza dalla prima istruzione all ultima In applicazioni non
DettagliCorso di Laurea Ingegneria Informatica. Dispensa E11. Esercizi su array e. Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E11 Esercizi su array e array di array C. Limongelli Gennaio 2012 1 Contenuti Fusione di due array ordinati, con eliminazione di
DettagliOggetti. Oggetti e classi. Utilizzo di classi. Classe
Oggetti Oggetti e classi Oggetto: entità che può essere manipolata nel programma mediante l invocazione di metodi Black box dotato di:! Interfaccia pubblica " Metodi visibili " Comportamento dell oggetto!
Dettagliarray in Java come disporre di un numero arbitrariamente alto di variabili omogenee
array in Java come disporre di un numero arbitrariamente alto di variabili omogenee variabili con pedice? per memorizzare i coefficienti di polinomio di grado N occorrono N+1 variabili polinomio di grado
DettagliArray. Definizione e utilizzo di vettori
Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];
DettagliL istruzione while. while (condition) istruzione
Iterazioni L istruzione while while (condition) istruzione Ripete l esecuzione di istruzione fino a che la condizione resta vera while (balance < targetbalance) { year++; double interest = balance * rate
DettagliProblema index index memorizzare tutti i valori della sequenza ma se i valori dovessero essere mille?
Array 1 Problema Scrivere un programma che legge dallo standard input una sequenza di dieci numeri in virgola mobile, uno per riga chiede all utente un numero intero index e visualizza il numero che nella
DettagliProgrammazione in Java Parte II
Programmazione in Java Parte II Lezione 7 Dott. Marco Faella Il Java Collection Framework Java Collection Framework (JCF) è una parte della libreria standard dedicata alle collezioni, intese come classi
DettagliProgetto di classi: Metodi Costruttori Documentazione e commenti Variabili di istanza (campi)
Classi Progetto di classi: Dalla specifica dell interfaccia, alla definizione dell implementazione Metodi Costruttori Documentazione e commenti Variabili di istanza (campi) Progetto di una classe Un conto
DettagliEsercitazione Fondamenti di informatica 2
Esercitazione Fondamenti di informatica 2 Array ed Oggetti JAVA 13 marzo 2006 L oggetto atrice Realizzare una classe oggetto atrice. Lo stato dell oggetto Vettore, è rappresentato da un array di array
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
DettagliE17 Esercizi sugli Array in Java
E17 Esercizi sugli Array in Java Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce
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[]
DettagliE9 Esercizi sul Capitolo 9 Array
E9 Esercizi sul Capitolo 9 Array Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce
DettagliArray e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 17. A. Miola Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 17 A. Miola Gennaio 2012 1 Contenuti q Array paralleli q Array e oggetti q Ricerca sequenziale q Ricerca binaria q Fusione di sequenze
DettagliL Array e un oggetto. L array puo contenere elementi che sono: tipi primitivi, o oggetti (in realta riferimenti ad oggetti!!!).
Arrays Idea Fornire il concetto di array presente nei piu comuni linguaggi di programmazione Un array e una struttura statica, una volta creato la sua dimensione (numero di elementi che lo compongono)
DettagliDecisioni. C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo
Decisioni C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di Bari 1
DettagliIterazione. C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo
Iterazione C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di Bari 1
DettagliCollezioni, mappe e iteratori (a cura del Prof. Marco Patella)
, mappe e iteratori (a cura del Prof. Marco Patella) 1 Introduzione al Java Collections Framework Una collezione (o contenitore) consente di organizzare e gestire un gruppo di oggetti collezioni (vere
DettagliBank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...
Bank BankAccount Bank Bank Bank BankAccount private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank Bank public Bank(String nome, String internationalcode, int dimensione)
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Variabili di tipo Array Array bidimensionali Metodi statici Metodi statici della classe Math Esercizi 13/04/2011 Corso di Fondamenti
DettagliFondamenti di Informatica T-1
Fondamenti di Informatica T-1 Interfaccia Comparable e Collezioni Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 22 Interfaccia
DettagliInformatica - Laboratorio gennaio 06. Laboratorio. Esercizio 1
Java Esercitazione Laboratorio Esercizio 1 Si crei la classe Esercizio1 che preveda: La generazione di 20 numeri interi casuali compresi tra 1 e 10 import java.util.*;.*; public class Esercizio1 { Random
DettagliFondamenti di Informatica T1 Interfaccia Comparable Collezioni
Fondamenti di Informatica T1 Interfaccia Comparable Collezioni Tutor Melissa Licciardello melissa.licciardell2@unibo.it Melissa Licciardello Fondamenti di Informatica T1 1 / 19 Interfaccia Comparable Fa
DettagliRicercaSequenziale import public class public static void throws new new new int int int char boolean true true false false out true out out else
Algoritmo di ricerca sequenziale o lineare, in una Tabella con LunghezzaTabella righe. L algoritmo restituisce il valore TRUE in Trovato se la chiave di ricerca C esiste nel campo Chiave (numerico) della
DettagliLeggere una sequenza di dati
Leggere una sequenza di dati Riprendiamo un problema già visto boolean done = false; while (!done) { String line = Console.readString(); if (line == null) done = true; else... // elabora line } Il ciclo
DettagliFondamenti di Informatica T-1
Fondamenti di Informatica T-1 Array Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2016/2017 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 14 ARRAY (1) Un vettore (array) è un insieme
DettagliA. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica
informatica Java basi del linguaggio Alberto Ferrari Informatica struttura di un programma Java /** * Classe EsempioProgramma * Un esempio di programmazione in Java * @author 4A Informatica */ public class
DettagliA. Ferrari. collezioni. Java. Object Oriented Programming
collezioni Java le collezioni di oggetti o una collezione può memorizzare un numero arbitrario di oggetti o il numero di elementi di una collezione è variabile: o è possibile inserire nuovi oggetti o è
DettagliTIPI PRIMITIVI E CLASSI WRAPPER
I tipi primitivi come oggetti Package java.lang In varie situazioni, può essere comodo poter trattare i tipi primitivi come oggetti per passarli per riferimento a una funzione quando una funzione pretende
DettagliSTRUTTURE DATI: OLTRE GLI ARRAY LISTE
STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi
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
DettagliCapitolo 2. Utilizzare oggetti
Capitolo 2 Utilizzare oggetti Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Oggetti e classi Gli oggetti sono entità di un programma che si possono manipolare invocando
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
DettagliFondamenti Teorici e Programmazione
Fondamenti Teorici e Programmazione Modulo A Elementi di Programmazione Claudio Gallicchio, Ph.D. Array 2 Dati Strutturati I tipi di dati visti finora sono numeri (interi o razionali) booleani (valori
DettagliFondamenti di informatica T-1 (A K) Esercitazione 8: classi e oggetti
Fondamenti di informatica T-1 (A K) Esercitazione 8: classi e oggetti AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Esercitazione 8 Introduzione al calcolatore e Java Linguaggio Java, basi e
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica Riferimenti versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliEsercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.
Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. public abstract class FiguraPiana2{ private double base; public FiguraPiana2(double
DettagliEsercizi su array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E08. C. Limongelli Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E08 Esercizi su Array C. Limongelli Gennaio 2012 1 Contenuti q Esercizi: Lettura e stampa di un array Massimo elemento di un array
DettagliSystem.out.print("\tATTENZIONE: hi inserito un valore non valido!\n");
Creare un applicazione console che dato l indice della borsa di Milano nel giorno precedente, calcola la variazione percentuale rispetto al valore dell indice del giorno corrente. import java.io.*; public
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
DettagliSi descriva il comportamento del metodo main della classe ES2: cosa viene stampato sul video? Giustificare la risposta.
Esame scritto di: Fondamenti di Informatica - corsi 4 e 5 Data: 12 dicembre 2001 Traccia: B Tempo disponibile: 3 ore Cognome Nome Matricola Corso CORSO DI LAUREA Esercizio 1. Si consideri la seguente classe:
DettagliArray. Walter Didimo
Array Walter Didimo Un problema ricorrente Gli strumenti di programmazione che abbiamo visto sin qui non sono ancora sufficienti per risolvere tutti i problemi di base Consideriamo ad esempio il seguente
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
DettagliARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];
ARRAY BIDIMENSIONALI Si possono definire array di qualunque tipo di dato, quindi anche di altre array float [][] mx = new float[3][4]; ovvero.. (float []) [] mx = new float[3][4]; La loro motivazione (storica)
DettagliUsare gli Oggetti. C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo
Usare gli Oggetti C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di
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
DettagliEsercizi su Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E09. C. Limongelli Novembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E09 Esercizi su Array C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esercizi su array 1 Contenuti Esercizi:
DettagliAnno Accademico 2003/04. Docente modulo 1: Annalisa De Bonis. Ripete l esecuzione di statement fino a che la condizione e` verificata
Iterazioni Anno Accademico 2003/04 Docente modulo 1: Lo statement while while (condition) statement; Ripete l esecuzione di statement fino a che la condizione e` verificata while (balance < targetbalance)
DettagliCenni sull'uso dei debugger
Cenni sull'uso dei debugger 1 1 Debugger La maggior parte dei programmatori usano un debugger per individuare e correggere un errore Debugger = un programma che esegue il programma sotto collaudo e analizza
DettagliAlgoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati
Passaggio dei parametri in Java Nel seguente esempio public class parametri2 public static void main(string args[]) int x = 1; int y; double d[] = new double[2]; d[0] = 25; y= metodo1(d, x); System.out.println("Il
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
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 8 luglio 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
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
Dettagliimport public static boolean int boolean false boolean false boolean false boolean false true false
import java.util.arraylist; * Classe pubblica con metodi statici di utilità generale per: * la ricerca delle parole "EXIT" o "ESCI" o delle lettere "EE", scritte in maiuscolo o minuscolo, in una stringa
DettagliProgramma... Autoboxing / unboxing Array Classe Rettangolo / classe Quadrato / Gerarchia e ereditarietà. Laboratorio di Programmazione - Esercitazio 1
Programma... Autoboxing / unboxing Array Classe Rettangolo / classe Quadrato / Gerarchia e ereditarietà. Laboratorio di Programmazione - Esercitazio 1 Unboxing e autoboxing (per la classe Integer) Unboxing
DettagliProge&are le Classi Ing. Massimo Cossen.no Sistemi Informa.vi Aziendali a.a. 2008/2009
Lezione 11 Sistemi Informa.vi Aziendali a.a. 2008/2009 Il sistema da proge/are deve realizzare le operazioni fondamentali di un conto bancario. Le operazioni richieste sono: Versare denaro Prelevare denaro
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
DettagliProgrammazione ad oggetti
DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Tipi di dato primitivo Tipo Descrizione Range bytes int interi 2147483648 2147483647 4 byte interi -128 127 1 short interi -32768
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
DettagliMetodi di una Collection
Java Collections Introduzione Una java collection (a volte chiamata anche container) è un oggetto che raggruppa più elementi dello stesso tipo in una singola unità. Tipicamente è utilizzata per raggruppare
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 14: ALGORITMI di ordinamento di array RICERCA sequenziale e binaria Array bidimensionali (matrici) Passaggio di argomenti al main Operazioni su array Un array
DettagliRichiami Java e Arrays
Richiami Java e Arrays concetti base G.T. 1 casting G.T. 1.3.3 e 2.5 uso array G.T. 3.1 lista semplice G.T. 3.2 1 Concetti base Oggetto istanza (di una classe) classe (tipo di un oggetto) variabili di
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 T-1. Variabili, costanti e operazioni Selezione
Variabili, costanti e operazioni Selezione 2 Variabili Dichiarazione di una variabile: ; Esempio: variabile numerica intera numauto: int numauto; Assegnare alla variabile
DettagliUn tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo
TIPI DI DATO ASTRATTO Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo implica un dominio, D un insieme di operazioni ammissibili su oggetti
Dettagli