Esempio. public class Purse { public Purse() { nickels = 0; dimes = 0; quarters = 0; } public double gettotal() {
|
|
- Ilario Marchi
- 5 anni fa
- Visualizzazioni
Transcript
1 Vettori e Array
2 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 = dimes + count; public void addquarters(int count) { quarters = quarters + count; public double gettotal() { return nickels * NICKEL_VALUE + dimes * DIME_VALUE + quarters * QUARTER_VALUE; private static final double NICKEL_VALUE = 0.05; private static final double DIME_VALUE = 0.1; private static final double QUARTER_VALUE = 0.25; private int nickels; private int dimes; private int quarters;
3 Collezione di oggetti La classe Purse non tiene traccia delle monete (come entità), ma memorizza solo il numero di monete di ogni tipo In Java, una collezione di oggetti è a sua volta un oggetto Java fornisce per le collezioni di dati Array ArrayList (pacchetto java.util)
4 Collezione di oggetti: Array Sequenza di lunghezza prefissata di valori dello stesso tipo (classe o tipo primitivo) Ogni posizione è individuata da un indice La prima posizione ha indice 0 E un oggetto Deve essere creato con new I valori sono inizializzati a 0 (per int o double), false (per boolean) o null (per oggetti) Accesso attraverso variabili di riferimento
5 Riferimento ad array array
6 Dichiarare un array Tipo array = tipo seguito da parentesi quadre: int[ ] unsaccodinumeri; String[ ] vincitori; BankAccount[ ] conticorrenti; Esempio: public static void main(string[] args) args è un array di stringhe (gli argomenti della linea di comando) java MyProgram d file.txt args[0] = -d args[1]= file.txt
7 Creare un istanza di un array Per creare un istanza di un array si usa new seguito dal tipo e quindi dalla grandezza in parentesi quadre: int[] unsaccodinumeri; unsaccodinumeri = new int[10000]; //un array di int
8 Usare gli array Ogni elememento è una variabile: int[] unsaccodinumeri; unsaccodinumeri = new int[10000]; for (int i = 0;i < unsaccodinumeri.length;i++) { unsaccodinumeri[i] = i; System.out.println(unSaccoDiNumeri[0]); Range degli indici di a: 0,1,,a.length-1 (length variabile di istanza che contiene numero elementi array) Se si usa un indice fuori dal range, viene sollevata a runtime l eccezione: ArrayIndexOutOfBoundsException (java.lang)
9 Esempio: Stampiamo gli argomenti della linea di comando class PrintArgs { public static void main(string[] args) { for (int i = 0; i < args.length; i++) { System.out.println (args[i]);
10 Collezione di oggetti: ArrayList La classe ArrayList (pacchetto java.util) gestisce una sequenza di oggetti Può crescere e decrescere a piacimento La classe ArrayList implementa nei suoi metodi le operazioni più comuni su collezioni di elementi inserimento cancellazione modifica accesso ai dati
11 File: Coin.java public class Coin { //Una semplice classe Coin public Coin(double unvalore, String unnome) { nome = unnome; valore = unvalore; public String dainome() { return nome; public double daivalore(){ return valore; public boolean equals(coin moneta){ return nome.equals(moneta.dainome()); private String nome; private double valore;
12 File: BankAccount.java 01: /** 02: A bank account has a balance that can be changed by 03: deposits and withdrawals. 04: */ 05: public class BankAccount 06: { 07: /** 08: Constructs a bank account with a zero balance anaccountnumber the account number for this account 10: */ 11: public BankAccount(int anaccountnumber) 12: { 13: accountnumber = anaccountnumber; 14: balance = 0; 15: 16:
13 File: BankAccount.java 17: /** 18: Constructs a bank account with a given balance anaccountnumber the account number for this account initialbalance the initial balance 21: */ 22: public BankAccount(int anaccountnumber, double initialbalance) 23: { 24: accountnumber = anaccountnumber; 25: balance = initialbalance; 26: 27: 28: /** 29: Gets the account number of this bank account. the account number 31: */ 32: public int getaccountnumber() 33: { 34: return accountnumber; 35:
14 File: BankAccount.java 36: 37: /** 38: Deposits money into the bank account. amount the amount to deposit 40: */ 41: public void deposit(double amount) 42: { 43: double newbalance = balance + amount; 44: balance = newbalance; 45: 46: 47: /** 48: Withdraws money from the bank account. amount the amount to withdraw 50: */ 51: public void withdraw(double amount) 52: { 53: double newbalance = balance - amount; 54: balance = newbalance;
15 File: BankAccount.java 55: 56: 57: /** 58: Gets the current balance of the bank account. the current balance 60: */ 61: public double getbalance() 62: { 63: return balance; 64: 65: 66: private int accountnumber; 67: private double balance; 68:
16 ArrayList La classe ArrayList è generica contiene elementi di tipo Object (Vettori parametrici) La classe ArrayList<T> contiene oggetti di tipo T (introdotta a partire da Java 5.0): 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 della collezione
17 Aggiungere un elemento Per aggiungere l elemento alla fine della collezione si usa il metodo add(obj obj): ArrayList coins = new ArrayList(); coins.add(new Coin(0.1, dime )); coins.add(new Coin(0.25, quarter ); Dopo l inserimento, la dimensione della collezione aumenta di uno
18 Aggiungere un elemento Per aggiungere l elemento in una certa posizione, facendo slittare in avanti gli altri, si usa il metodo add(i,obj): ArrayList coins = new ArrayList (); coins.add(new Coin(0.1, dime )); coins.add(new Coin(0.25, quarter )); Coin anickel = new Coin(0.05, nickel ); coins.add(1, anickel); //quarter ora è il terzo oggetto della lista
19 Aggiungere un elemento c alla posizione i: invocazione add(i, c)
20 Accedere agli elementi Bisogna usare il metodo get(indice) coins.get(2); get(indice) Nel caso generale ArrayList gestisce oggetti di tipo Object Possiamo passare qualsiasi oggetto al metodo add ArrayList coins = new ArrayList(); coins.add(new Rectangle(5, 10, 20, 30)); //nessun problema Se definito con tipo <T> possiamo passare solo oggetti di tipo compatibile con T
21 Accedere agli elementi Se si usa ArrayList di tipo Object per utilizzare i metodi dell oggetto inserito occorre fare il casting, altrimenti si possono solo usare i metodi di Object Rectangle acoin = (Rectangle) coins.get(i); acoin.translate(x,y); Il casting ha successo solo se si usa il tipo corretto per l oggetto considerato //ERRORE Coin acoin = (Coin) coins.get(i); //un Rectangle non può essere convertito in un Coin!
22 Accedere agli elementi Se si usa ArrayList di tipo T, il cast non è necessario ArrayList<BankAccount> accounts = new ArrayList<BankAccount>(); BankAccount anaccount = accounts.get(i); anaccount.getbalance(); Preferibile usare ArrayList parametrici
23 Rimuovere un elemento Per rimuovere un elemento da una collezione si usa il metodo remove(indice) Restituisce l oggetto rimosso Gli elementi che seguono slittano di una posizione all indietro ArrayList<Coin> coins = new ArrayList<Coin>( ); coins.add(new Coin(0.1, dime )); coins.add(new Coin(0.25, quarter ); Coin anickel = new Coin(0.05, nickel ); coins.add(1, anickel); coins.remove(0); //il vettore ora ha due elementi: // quarter e nickel
24 Eliminare l elemento alla i-esima posizione: invocare metodo remove(i)
25 Modificare un elemento Si usa il metodo set(indice, obj) Restituisce l oggetto rimpiazzato ArrayList coins = new ArrayList(); coins.add(new new Coin(0.1, "dime")); coins.add(new new Coin(0.25, quarter )); Coin anickel = new Coin(0.05, nickel ); Coin previouscoin = coins.set(0, anickel); //la posizione 0 viene sovrascritta
26 File: ArrayListTester.java 01: import java.util.arraylist; 02: 03: /** 04: This program tests the ArrayList class. 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);
27 File: ArrayListTester.java 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: Output size=3 first account number=1008 last account number=1729
28 Nuova classe Purse import java.util.arraylist; public class Purse{ public Purse(){ coins = new ArrayList<Coin>(); public void add(coin acoin){ coins.add(acoin); public doublegettotal(){ double total = 0; for (int i = 0; i < coins.size(); i++){ Coin acoin = coins.get(i); total = total + acoin.getvalue(); return total; private ArrayList<Coin> coins;
29 Classe Purse: gettotal( ) efficiente import java.util.arraylist; public class Purse{ public Purse(){ coins = new ArrayList<Coin>(); total = 0; public void add(coin acoin){ coins.add(acoin); total += acoin.getvalue(); public doublegettotal(){ return total; private ArrayList<Coin> coins; private doubletotal = 0;
30 Range degli indici per ArrayList Gli indici ammissibili per i metodi che fanno riferimento ad oggetti memorizzati (get, remove, set,..) sono: 0,1,, size()-1 Gli indici ammissibili per i metodi che inseriscono nuove posizioni (add) sono: 0,1,, size() Se si specifica un indice fuori da questi domini viene generata a runtime l eccezione: IndexOutOfBoundsException (java.lang)
31 Memorizzare dati primitivi in vettori ArrayList memorizza oggetti Per i dati primitivi si utilizzano classi wrapper (involucro)
32 Auto-boxing Auto-boxing: a partire da Java 5.0, la conversione tra i tipi primitivi e le corrispondenti classi wrapper è automatica. Double d = 29.95; // auto-boxing; // versioni precedenti Java 5.0: // Double d = new Double(29.95); double x = d; // auto-unboxing; // versioni precedenti Java 5.0: x = d.doublevalue();
33 Auto-boxing Conversioni per auto-boxing avvengono anche all interno di espressioni Double e = d + 1; Significa: converti d in un double (unbox) aggiungi 1 Impacchetta il risultato in un nuovo Double Memorizza in e il riferimento all oggetto appena creato
34 Il ciclo forgenerico (Java 5.0) Scandisce tutti gli elementi di una collezione: double[] data =...; double sum = 0; for (double e : data) // va letto come per ogni e in data" { sum = sum + e; Alternativa tradizionale: double[] data =...; double sum = 0; for (int i = 0; i < data.length; i++) { sum = sum + data[i];
35 Esempio For generico: ArrayList<BankAccount> accounts =... ; double sum = 0; for (BankAccount a : accounts) { sum = sum + a.getbalance(); Alternativa tradizionale: double sum = 0; for (int i = 0; i < accounts.size(); i++) { BankAccount a = accounts.get(i); sum = sum + a.getbalance();
36 Ricerca Lineare public class Purse { public boolean hascoin(coin acoin) { for (Coin c: coins) { if (c.equals(acoin))... return true; //trovato return false; //non trovato
37 Contare elementi di un certo tipo public class Purse { public int count(coin acoin) { int matches = 0; for (Coin c: coins) { if (c.equals(acoin)) matches++; //found a match return matches;...
38 Trovare il massimo public class Purse { public Coin getmaximum() { //inizializza il max al primo valore Coin max = coins.get(0); for (Coin c: coins) { if (c.daivalore() > max.daivalore()) max =c; return max;...
39 Trovare il minimo public class Purse { public Coin getminimum() { //inizializza il min al primo valore Coin min =(Coin) coins.get(0); for (Coin c: coins) { if (c.daivalore() < min.daivalore()) min =c; return min;...
40 File Bank.java 01: import java.util.arraylist; 02: 03: /** 04: This bank contains a collection of bank accounts. 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: Adds an account to this bank. a the account to add 19: */
41 File Bank.java 20: public void addaccount(bankaccount a) 21: { 22: accounts.add(a); 23: 24: 25: /** 26: Gets the sum of the balances of all accounts in this bank. the sum of the balances 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 File Bank.java 39: /** 40: Counts the number of bank accounts whose balance is at 41: least a given value. atleast the balance required to count an account the number of accounts having least the given balance 44: */ 45: public int count(double atleast) 46: { 47: int matches = 0; 48: for (BankAccount a : accounts) 49: { 50: if (a.getbalance() >= atleast) matches++; // Found a match 51: 52: return matches; 53: 54:
43 File Bank.java 55: /** 56: Finds a bank account with a given number. accountnumber the number to find the account with the given number, or null 59: if there is no such account 60: */ 61: public BankAccount find(int accountnumber) 62: { 63: for (BankAccount a : accounts) 64: { 65: if (a.getaccountnumber() == accountnumber)// Found a match 66: return a; 67: 68: return null; // No match in the entire array list 69: 70:
44 File Bank.java 71: /** 72: Gets the bank account with the largest balance. the account with the largest balance, or 74: null if the bank has no accounts 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 File BankTester.java 01: /** 02: This program tests the Bank class. 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 File BankTester.java 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 File BankTester.java Output 2 accounts with balance >= Account with number 1015 has balance Account with number 1001 has the largest balance.
48 Array a due dimensioni Tabella con righe e colonne Esempio: la scacchiera del gioco Tris String[][] board = new String[3][3]; //array di 3 righe e 3 colonne board[i][j] = x ; // accedi all elemento della riga // i e colonna j
49 Classe Tris /** Una scacchiera 3x3 per il gioco Tris. */ public class Tris{ /** Costruisce una scacchiera vuota. */ public Tris(){ board = new String[ROWS][COLUMNS]; // riempi di spazi for (int i = 0; i < ROWS; i++) for (int j = 0; j < COLUMNS; j++) board[i][j] = ;
50 /** */ Crea una rappresentazione della scacchiera in una stringa, come ad esempio x o x la stringa rappresentativa public String tostring() { String r = ""; for (int i = 0; i < ROWS; i++) { r = r + " "; for (int j = 0; j < COLUMNS; j++) r = r + board[i][j]; r = r + " \n"; return r;
51 /** Imposta un settore della scacchiera. Il settore deve essere i l indice di j l indice di player il giocatore ('x' o 'o') */ public void set(int i, int j, String player) { if (board[i][j].equals( )) board[i][j] = player; private String[ ][ ] board; private static final int ROWS = 3; private static final int COLUMNS = 3;
52 File TrisTester.java import java.util.scanner; /** Questo programma collauda la classe Tris chiedendo all utente di selezionare posizioni sulla scacchiera e visualizzando il risultato. */ public class TrisTester { public static void main(string[] args) { String player = x ; Tris game = new Tris(); Scanner in = new Scanner(System.in);
53 while (true) { System.out.println(game.toString()); System.out.println( Inserisci riga per + player + (-1 per uscire): ); int riga = in.nextint(); if (riga < 0) return; System.out.println( Inserisci colonna per +player : ); int colonna = in.nexint(); game.set(row, column, player); if (player == x ) player = o ; else player = x ;
54 For generico con array bidimensionali Array bidimensionale = array di array monodimensionali Es: int[][] a = new int[2][2]; for(int[] r: a) for (int x: r) System.out.println(x);
55 Copiare Array Una variabile array memorizza un riferimento all array Copiando la variabile otteniamo un secondo riferimento allo stesso array double[] data = new double[10]; // riempi array... double[] prices = data;
56 Copiare Array Per fare una vera copia occorre invocare il metodo clone double[] prices = (double[]) data.clone();
57 Copiare elementi da un array all altro System.arraycopy(from, fromstart, to, tostart, count);
58 Uso di System.arraycopy Posso aggiungere un elemento in posizione i Sposto di una posizione in avanti tutti gli elementi a partire da i System.arraycopy(data, i, data, i+1, data.length-i-1); data[i]=x;
59 Uso di System.arraycopy Posso eliminare un elemento in posizione i Sposto di una posizione in indietro tutti gli elementi a partire da i+1 System.arraycopy(data, i+1, data, i, data.length-i-1);
60 Array riempiti solo in parte Il max numero di elementi nell array è prefissato Se non riempiamo tutto l array dobbiamo tenere traccia del numero di elementi final int DATA_LENGTH = 100; double[] data = new double[data_length]; int datasize = 0; //variabile complementare //data.length è la capacità dell array //datasize è la dimensione reale Se inseriamo elementi dobbiamo incrementare la dimensione Data[dataSize] = x; datasize++;
61 Array riempiti solo in parte
62 Array riempiti solo in parte In un ciclo, fermarsi a datasize e non a data.length for (int i = 0; i < datasize; i++) sum = sum + data[i]; Non riempire l array oltre i suoi limiti if (datasize >= data.length) System.out.println( Mi dispiace, l array è pieno"); Oppure creare un nuovo array più grande, copiare gli elementi e assegnare il nuovo array alla variabile vecchia double[] newdata = new double[2 * data.length]; System.arraycopy(data, 0, newdata, 0, data.length); data = newdata;
63 Esempio class StringArray { private String[] stringhe; private int stringhesize; public StringArray () { stringhe = new String[100]; stringhesize = 0; public void addstring (String s) { stringhe[stringhesize] = s; stringhesize++; public String tostring() { String s= ; for (int i = 0; i < stringhesize; i++) s = s + stringhe[i]; return s;
64 Far crescere un array Apogeo
65 File: ExtendibleTable.java (1) public class ExtendibleTable{ public ExtendibleTable(){ data = new double[data_length]; datasize = 0; public double get(int i) { if (i < 0 i >= datasize) throw new IndexOutOfBoundsException(); return data[i]; public void set(int i, double x) { if (i < 0 i >= datasize) throw new IndexOutOfBoundsException(); data[i] = x;
66 File: ExtendibleTable.java (2) public void add(double x){ if (datasize >= data.length){ double[ ] newd = new double[2 * data.length]; System.arraycopy(data, 0, newd, 0, data.length); data = newd; data[datasize] = x; datasize++; final static int DATA_LENGTH = 100; private double[ ] data; private int datasize;
67 Array paralleli Non utilizzate array paralleli String[] names; double[] salaries;
68 Array di oggetti Riorganizzate i dati in array di oggetti Employee[] staff;
Collezione 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
Vettori 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
Capitolo 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
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
Array. C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo
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 Obiettivi
Questi 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
Capitolo 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
Capitolo 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
Array 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
Arrays 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
Array. 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
Tipi 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
Tipi 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
Esempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
Esempio 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
Esempio 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.
Tipi 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
18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
Esempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
Problema 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
Interfacce. Organizzazione di una classe. Organizzazione di una classe. Classi di un progetto. Classi di un progetto
come strumento di progetto Scelta delle classi di un progetto Criteri di coesione e accoppiamento e riuso di codice Organizzazione di una classe Organizzazione di una classe public class ClassTemplate
Tipi 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
Tipi numerici di base - Costanti
Tipi numerici di base - Costanti Interi e decimali Definizione di costanti 9/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Una classe Borsellino /** Realizza un borsellino per le monete. Registra
Una classe Borsellino. Tipi numerici di base - Costanti. Esempio d uso. Classe Borsellino cont d. Primi passi per l implementazione di Purse
Una classe Borsellino Tipi numerici di base - Interi e decimali Definizione di costanti /** Realizza un borsellino per le monete. Registra il numero di monete e calcola il valore totale public class Purse
Livelli di astrazione
Realizzare Classi Astrazione Perdita di dettaglio Utile nella descrizione, progettazione, implementazione e utilizzo di sistemi complessi Dettagli trascurabili vengono incapsulati in sottosistemi più semplici
Rectangle BankAccount Purse
Rectangle BankAccount Purse StringTokenizer RandomNumberGenerator GestoreNuoviConti Math main CalcolaBustaPaga PogrammaPerIlPagamento Purse public class Purse { public Purse() {...} public void addnickels(int
ArrayList. 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
Collezioni, 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
Capitolo 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
Programmazione 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
Capitolo 13: Gestione delle eccezioni. Capitolo 13. Gestione delle eccezioni Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2
Capitolo 13 Gestione delle eccezioni 1 Figura 1 La gerarchia delle classi di eccezioni 2 Figura 2 Eccezioni controllate e non controllate 3 File PurseTest.java import javax.swing.joptionpane; import java.io.ioexception;
STRUTTURE 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
Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento
Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate
Java Gli array. Array
Java Gli array 1 Gli array In generale un array è una sequenza di locazioni di memoria, che contengono entità dello stesso tipo, e a cui si può fare riferimento con un nome comune Le entità che compongono
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come
TIPI 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
Fondamenti 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
Purse mypurse = new Purse(); mypurse.addnickels(3); mypurse.adddimes(1); mypurse.addquarters(2); double totalvalue = mypurse.
/** Realizza un borsellino per le monete. Registra il numero di monete e calcola il valore totale */ public class Purse { /** Costruisce un borsellino vuoto */ public Purse() { /** Aggiunge monete di tipo
9 - 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
Conoscere 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
Cenni su programmazione con tipi generici (generics)
Cenni su programmazione con tipi generici (generics) Tipi generici (generics) Programmazione generica: Creazione di costrutti che possono essere utilizzati con tipi di dati diversi Es. ArrayList,
Laboratorio 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
Bank. 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)
Esercitazione 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
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come
Oggetti. 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!
Array. 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];
Richiami 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
Ereditarietà (ancora)
Ereditarietà (ancora) Costruttori di sottoclasse Il costruttore di una sottoclasse provvede ad inizializzare la struttura delle istanze della sottoclasse Come abbiamo visto, questa include la parte definita
Ereditarietà (ancora)
Ereditarietà (ancora) Costruttori di sottoclasse Il costruttore di una sottoclasse provvede ad inizializzare la struttura delle istanze della sottoclasse Come abbiamo visto, questa include la parte definita
Bank account. private double balance; 11/2/2011
Il Linguaggio Java Ereditarietà Bank account class BankAccount { public BankAccount() { balance = 0; } public void deposit(double amount) { balance += amount; } public void withdraw(double amount) { balance
L 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)
Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione
Capitolo 4 Tipi di dati fondamentali Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Convenzioni per i nomi ContoCorrente: nome di una classe contocorrente: può essere una
Scelte. 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
DataSet. ... public BankAccount getmaximum() { return x; }... private BankAccount maximum;... } DataSet
DataSet DataSetadd DataSet BankAccount public class DataSetBankAccount { public void add(bankaccount x) { sum = sum + x.getbalance(); if (count == 0 maximum.getbalance() < x.getbalance()) maximum = x;
public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
Esercizio: la classe CashRegister
Esercizio: la classe CashRegister Si veda anche il libro di testo: Consigli pratici 3.1 Sezione 4.2 Sezione 8.2 Esercizi 8.1 e 8.2 1 Problema Si chiede di realizzare una classe CashRegister che simuli
Fondamenti 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
Capitolo 9 Interfacce e polimorfismo
Capitolo 9 Interfacce e polimorfismo Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Conoscere le interfacce Saper effettuare conversioni tra riferimenti
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
Array 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
Interfacce e polimorfismo
Interfacce e polimorfismo La classe DataSet Serve a computare la media di un insieme di valori numerici public class DataSet Costruisce un insiemevuoto public DataSet() sum = 0; count = 0; minimum = 0;
Corso 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
Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010
Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1
E17 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
Fondamenti 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
Linguaggi di Programmazione I Lezione 10
Linguaggi di Programmazione I Lezione 10 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 8 maggio 2008 Array 3 Dichiarazione...........................................................
Metodi 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
L 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
Lezione 4 Casting, stringhe e caratteri, operatori relazionali, espressioni e variabili booleane
Lezione 4 Casting, stringhe e caratteri, operatori relazionali, espressioni e variabili booleane Barbara Rita Barricelli Corso di Laboratorio di Programmazione -Turno B (Cognomi M-Z) CdL in Informatica
Fondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array
Fondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Interfaccia Comparable L altra volta abbiamo
Esercizi 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
Esercizio: Lista Circolare
Esercizio: Lista Circolare Si realizzi in Java un gestore di una lista circolare. La dimensione minima della lista è 2 elementi (ed è anche la dimensione iniziale). La dimensione massima è 20 elementi.
Tipi di dati fondamentali
Tipi di dati fondamentali Tipi primitivi: interi Java fornisce otto tipi primitivi indipendenti dall implementazione e dalla piattaforma Interi Tipo byte (8 bit) Interi con segno tra -128 e 127, valore
Capitolo 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
E9 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
Array in Java. Emilio Di Giacomo e Walter Didimo
Array in Java Emilio Di Giacomo e Walter Didimo Gli array Anche in Java, come in C, esistono gli array Un array è una sequenza di variabili: tutte le variabili di un array hanno lo stesso tipo di dato
Tipi 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
Progetto 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
Liste. Introduzione alle strutture dati. Capitolo 17 Introduzione alle strutture dati
Liste Introduzione alle strutture dati 1 Una lista concatenata di stringhe 2 public class LList /** Metodi per manipolare le liste /** Una lista e un riferimento ad un oggetto della classe Link private
Progettazione di classi
Progettazione di classi Scegliere una classe Una classe rappresenta un singolo concetto Esempi: Una classe puo` rappresentare un concetto matematico Point Rectangle Ellipse Una classe puo` rappresentare
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Collezioni di oggetti (in Java) Michele Tomaiuolo Framework Framework
Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.
Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. public abstract class FiguraPiana2{ private double base; public FiguraPiana2(double
Implementare 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
Capitolo 17. Introduzione alle strutture di dati. Capitolo 17 Introduzione alle strutture di dati
Capitolo 17 Introduzione alle strutture di dati 1 Figura 1 Inserire un elemento in una lista concatenata 2 Figura 2 Un iteratore di lista 3 Figura 3 Una visione astratta dell iteratore di lista 4 File
Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12
Laboratorio LP2 Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12 ventre@dia.unisa.it Esercizio P14.8 Scrivete un programma Find che cerchi in tutti i file specificati sulla riga di comando una
Ereditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...
Ereditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction
A. 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
I L IN I GU G AGG G I G O
JAVA IL LINGUAGGIO Tipi e variabili Ogni valore nel linguaggio ha un tipo Ogni variabile deve essere dichiarata ed associata ad un tipo: String greeting = "Hello, World!"; PrintStream printer = System.out;
Fondamenti 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
Tipi di dati fondamentali
Tipi di dati fondamentali Anno Accademico 2003/04 Docente modulo 1: Tipi Primitivi -1 Java fornisce otto tipi primitivi indipendenti dall implementazione e dalla piattaforma Interi (esprimibili anche in
Fondamenti 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
Programmazione ad Oggetti Modulo A (Esame del 9/1/2015)
Programmazione ad Oggetti Modulo A (Esame del 9/1/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A public void m( int x ) System.out.println("A.m:" + x); public void m( double x )
L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto
Usare e costruire oggetti Variabili e Oggetti Lo spazio di memoria di Java Le API di Java Gli oggetti sono entità di un programma che si possono manipolare invocando i metodi System.out oggetto della classe
Collezioni ALBERTO FERRARI
Collezioni ALBERTO FERRARI Le collezioni di oggetti Una collezione può memorizzare un numero arbitrario di oggetti Il numero di elementi di una collezione è variabile: È possibile inserire nuovi oggetti
Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei
Input Il tipo char Alcune modalità di acquisizione di input 1 Lettura di dati in input Vediamo due modi per acquisire dei dati di input dall utente: 1. Tramite una finestra grafica di dialogo 2. Tramite
Metodi statici. Dichiarazione e chiamata di metodi statici
Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un