Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAdone Gagliardi Modificato 11 anni fa
1
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl
2
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Nozioni di base Spesso il programmatore deve poter rappresentare un gruppo di valori come elenco L'elenco può essere unidimensionale o multidimensionale Java fornisce le classi per array e insiemi Vediamo prima gli array
3
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Terminologia di base L'elenco è composto di elementi Gli elementi in un elenco hanno un nome comune L'elenco è referenziato attraverso il nome comune Gli elementi dell'elenco sono dello stesso tipo (il tipo di base) Gli elementi di un elenco sono referenziati indicizzando il nome comune
4
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Funzioni degli array Java Gli indici sono indicati come espressioni tra parentesi quadre: [ ] Il tipo di base può essere qualsiasi tipo La dimensione dell'array può essere specificata in fase di esecuzione Il tipo dell'indice è intero e l'intervallo deve essere 0 … n-1 Dove n è il numero di elementi Controllo automatico dei confini Assicura che qualsiasi riferimento a un elemento dell'array sia valido La lunghezza del campo dati specifica il numero di elementi nell'elenco L'array è un oggetto Presenta funzioni comuni a tutti gli altri oggetti
5
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Stili di definizione delle variabili array Senza inizializzazione Tipo dei valori dell'elenco Le parentesi quadre caratterizzano la definizione di una variabile array Nome dell'elenco
6
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Stili di definizione delle variabili array Con inizializzazione Espressione intera non negativa che specifica il numero di elementi dell'array Riferimento a un nuovo array di n elementi
7
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Esempio Definizioni char[] c; int[] value = new int[10]; Provoca La variabile oggetto c non è inizializzata La variabile oggetto array v fa riferimento a un nuovo elenco di dieci elementi interi Ogni intero è inizializzato per impostazione predefinita a 0
8
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare int[] v = new int[10]; int i = 7; int j = 2; int k = 4; v[0] = 1; v[i] = 5; v[j] = v[i] + 3; v[j+1] = v[i] + v[0]; v[v[j]] = 12; System.out.println(v[2]); v[k] = Integer.parseInt(stdin.readLine());
9
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare int[] v = new int[10]; int i = 7; int j = 2; int k = 4; v[0] = 1; v[i] = 5; v[j] = v[i] + 3; v[j+1] = v[i] + v[0]; v[v[j]] = 12; System.out.println(v[2]); v[k] = Integer.parseInt(stdin.readLine());
10
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare int[] v = new int[10]; int i = 7; int j = 2; int k = 4; v[0] = 1; v[i] = 5; v[j] = v[i] + 3; v[j+1] = v[i] + v[0]; v[v[j]] = 12; System.out.println(v[2]); v[k] = Integer.parseInt(stdin.readLine());
11
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare int[] v = new int[10]; int i = 7; int j = 2; int k = 4; v[0] = 1; v[i] = 5; v[j] = v[i] + 3; v[j+1] = v[i] + v[0]; v[v[j]] = 12; System.out.println(v[2]); v[k] = Integer.parseInt(stdin.readLine());
12
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare int[] v = new int[10]; int i = 7; int j = 2; int k = 4; v[0] = 1; v[i] = 5; v[j] = v[i] + 3; v[j+1] = v[i] + v[0]; v[v[j]] = 12; System.out.println(v[2]); v[k] = Integer.parseInt(stdin.readLine());
13
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare int[] v = new int[10]; int i = 7; int j = 2; int k = 4; v[0] = 1; v[i] = 5; v[j] = v[i] + 3; v[j+1] = v[i] + v[0]; v[v[j]] = 12; System.out.println(v[2]); v[k] = Integer.parseInt(stdin.readLine());
14
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare int[] v = new int[10]; int i = 7; int j = 2; int k = 4; v[0] = 1; v[i] = 5; v[j] = v[i] + 3; v[j+1] = v[i] + v[0]; v[v[j]] = 12; System.out.println(v[2]); v[k] = Integer.parseInt(stdin.readLine()); Viene visualizzato 8
15
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare int[] v = new int[10]; int i = 7; int j = 2; int k = 4; v[0] = 1; v[i] = 5; v[j] = v[i] + 3; v[j+1] = v[i] + v[0]; v[v[j]] = 12; System.out.println(v[2]); v[k] = Integer.parseInt(stdin.readLine()); Si supponga di estrarre 3
16
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare Segmento int[] b = new int[100]; b[-1] = 0; b[100] = 0; Provoca La variabile array fa riferimento a un nuovo elenco di 100 interi Ogni elemento è inizializzato a 0 Due eccezioni da lanciare -1 non è un indice valido (troppo piccolo) 100 non è un indice valido (troppo grande) IndexOutOfBoundsException
17
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare Point[] p = new Point[3]; p[0] = new Point(0, 0); p[1] = new Point(1, 1); p[2] = new Point(2, 2); p[0].setX(1); p[1].setY(p[2].getY()); Point vertex = new Point(4,4); p[1] = p[0]; p[2] = vertex;
18
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare Point[] p = new Point[3]; p[0] = new Point(0, 0); p[1] = new Point(1, 1); p[2] = new Point(2, 2); p[0].setX(1); p[1].setY(p[2].getY()); Point vertex = new Point(4,4); p[1] = p[0]; p[2] = vertex;
19
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare Point[] p = new Point[3]; p[0] = new Point(0, 0); p[1] = new Point(1, 1); p[2] = new Point(2, 2); p[0].setX(1); p[1].setY(p[2].getY()); Point vertex = new Point(4,4); p[1] = p[0]; p[2] = vertex;
20
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare Point[] p = new Point[3]; p[0] = new Point(0, 0); p[1] = new Point(1, 1); p[2] = new Point(2, 2); p[0].setX(1); p[1].setY(p[2].getY()); Point vertex = new Point(4,4); p[1] = p[0]; p[2] = vertex;
21
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare Point[] p = new Point[3]; p[0] = new Point(0, 0); p[1] = new Point(1, 1); p[2] = new Point(2, 2); p[0].setX(1); p[1].setY(p[2].getY()); Point vertex = new Point(4,4); p[1] = p[0]; p[2] = vertex;
22
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare Point[] p = new Point[3]; p[0] = new Point(0, 0); p[1] = new Point(1, 1); p[2] = new Point(2, 2); p[0].setX(1); p[1].setY(p[2].getY()); Point vertex = new Point(4,4); p[1] = p[0]; p[2] = vertex;
23
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Considerare Point[] p = new Point[3]; p[0] = new Point(0, 0); p[1] = new Point(1, 1); p[2] = new Point(2, 2); p[0].setX(1); p[1].setY(p[2].getY()); Point vertex = new Point(4,4); p[1] = p[0]; p[2] = vertex;
24
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Inizializzazione esplicita Sintassi id fa riferimento a un array di n elementi. id[0] ha valore exp 0, id[1] ha valore exp 1 e così via Ogni elemento exp è un'espressione che dà un risultato di tipo ElementType
25
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Inizializzazione esplicita Esempio String[] puppy = "nilla, darby, "galen", "panther" }; int[] unit = 1 }; Equivale a String[] puppy = new String[4]; puppy[0] = "nilla"; puppy[1] = darby"; puppy[2] = "galen"; puppy[4] = "panther"; int[] unit = new int[1]; unit[0] = 1;
26
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Membri dell'array Lunghezza del membro Dimensione dell'array for (int i = 0; i < puppy.length; ++i) { System.out.println(puppy[i]); }
27
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Membri dell'array Membro clone() Produce una copia Point[] u = new Point(0, 0), new Point(1, 1)}; Point[] v = u.clone(); v[1] = new Point(4, 30);
28
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Membri dell'array Membro clone() Produce una copia Point[] u = new Point(0, 0), new Point(1, 1)}; Point[] v = u.clone(); v[1] = new Point(4, 30);
29
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Membri dell'array Membro clone() Produce una copia Point[] u = new Point(0, 0), new Point(1, 1)}; Point[] v = u.clone(); v[1] = new Point(4, 30);
30
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Creazione di una copia approfondita Esempio Point[] w = new Point[u.length]; for (int i = 0; i < u.length; ++i) { w[i] = u[i].clone(); }
31
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Creazione di una copia approfondita
32
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else { System.out.println(key + " is not in the list"); }
33
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else{ System.out.println(key + " is not in the list"); }
34
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else { System.out.println(key + " is not in the list"); }
35
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else { System.out.println(key + " is not in the list"); }
36
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else { System.out.println(key + " is not in the list"); }
37
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else { System.out.println(key + " is not in the list"); }
38
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else{ System.out.println(key + " is not in the list"); }
39
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else{ System.out.println(key + " is not in the list"); }
40
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else{ System.out.println(key + " is not in the list"); }
41
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else{ System.out.println(key + " is not in the list"); }
42
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else{ System.out.println(key + " is not in the list"); }
43
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else{ System.out.println(key + " is not in the list"); }
44
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca di un valore System.out.println("Enter search value (number): "); int key = Integer.parseInt(stdin.readLine()); int i; for (i = 0; i < data.length; ++i) { if (key == data[i]) { break; } if (i != data.length) { System.out.println(key + " is the " + I + "-th element"); } else{ System.out.println(key + " is not in the list"); }
45
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ricerca del valore minimo Segmento int minimumSoFar = sample[0]; for (int i = 1; i < sample.length; ++i) { if (sample[i] < minimumSoFar) { minimumSoFar = sample[i]; }
46
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Method sequentialSearch() di ArrayTools.java public static int sequentialSearch(int[] data, int key) { for (int i = 0; i < data.length; ++i) if (data[i] == key) return i; } return -1; } Considerare int[] score = 6, 9, 82, 11, 29, 85, 11, 28, 91 }; int i1 = sequentialSearch(score, 11); int i2 = sequentialSearch(score, 30);
47
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Method sequentialSearch() di ArrayTools.java public static int sequentialSearch(int[] data, int key) { for (int i = 0; i < data.length; ++i) if (data[i] == key) return i; } return -1; } Considerare int[] score = 6, 9, 82, 11, 29, 85, 11, 28, 91 }; int i1 = sequentialSearch(score, 11); int i2 = sequentialSearch(score, 30);
48
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Method putList() di ArrayTools.java public static void putList(int[] data) for (int i = 0; i < data.length; ++i) System.out.println(data[i]); } Considerare int[] score = 6, 9, 82, 11, 29, 85, 11, 28, 91 }; putList(score);
49
public static int[] getList() throws IOException { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); int[] buffer = new int[MAX_LIST_SIZE]; int listSize = 0; for (int i = 0; i < MAX_LIST_SIZE; ++i) { String v = stdin.readLine(); if (v != null) { int number = Integer.parseInt(v); buffer[i] = number; ++listSize; } else{ break; } int[] data = new int[listSize]; for (int i = 0; i < listSize; ++i) { data[i] = buffer[i]; } return data; } Metodo getList() di ArrayTools.java
50
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl ArrayTools.java - struttura public class ArrayTools { // costante di classe private static final int MAX_LIST_SIZE = 1000; // sequentialSearch(): cerca una chiave in un elenco non ordinato public static int binarySearch(int[] data, int key)... // valueOf(): produce una rappresentazione stringa public static void putList(int[] data)... // getList(): estrae e restituisce fino a MAX_LIST_SIZE valori public static int[] getList() throws IOException... // reverse(): inverte l'ordine dei valori degli elementi public static void reverse(int[] list)... // binarySearch(): cerca una chiave in un elenco ordinato public static int binarySearch(char[] data, char key)... }
51
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Demo.java import java.io.*; public class Demo { // main(): punto di ingresso per l'applicazione public static void main(String[] args) throws IOException { System.out.println(""); System.out.println("Enter list of integers:"); int[] number = ArrayTools.getList(); System.out.println(""); System.out.println("Your list"); ArrayTools.putList(number); ArrayTools.reverse(number); System.out.println(""); System.out.println("Your list in reverse"); ArrayTools.putList(number); System.out.println(); }
53
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ordinamento Problema Disporre gli elementi in modo che siano ordinati secondo uno schema desiderato Lo standard è l'ordine non decrescente Perché non dire ordine crescente? Attività principali Confronto degli elementi Aggiornamento o spostamento degli elementi
54
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ordinamento per selezione Base dell'algoritmo All'iterazione i, un metodo di ordinamento per selezione Trova l'elemento contenente l'iesimo valore più piccolo del suo elenco v e scambia quell'elemento con v[i] Esempio - iterazione 0 Scambia l'elemento più piccolo con v[0] Provoca lo spostamento nella posizione corretta per un risultato ordinato del più piccolo elemento
55
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ordinamento per selezione Base dell'algoritmo All'iterazione i, un metodo di ordinamento per selezione Trova l'elemento contenente l'iesimo valore più piccolo del suo elenco v e scambia quell'elemento con v[i] Esempio - iterazione 0 Scambia l'elemento più piccolo con v[0] Provoca lo spostamento nella posizione corretta per un risultato ordinato del più piccolo elemento
56
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ordinamento per selezione Base dell'algoritmo All'iterazione i, un metodo di ordinamento per selezione Trova l'elemento contenente l'iesimo valore più piccolo del suo elenco v e scambia quell'elemento con v[i] Esempio - iterazione 1 Scambia il secondo elemento più piccolo con v[1] Provoca lo spostamento nella posizione corretta per un risultato ordinato del secondo elemento più piccolo
57
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ordinamento per selezione Base dell'algoritmo All'iterazione i, un metodo di ordinamento per selezione Trova l'elemento contenente l'iesimo valore più piccolo del suo elenco v e scambia quell'elemento con v[i] Esempio - iterazione 1 Scambia il secondo elemento più piccolo con v[1] Provoca lo spostamento nella posizione corretta per un risultato ordinato del secondo elemento più piccolo
58
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Ordinamento per selezione ArrayTools.java public static void selectionSort(char[] v) { for (int i = 0; i < v.length-1; ++i) { // intuisce la posizione dell'iesimo elemento più piccolo int guess = i; for (int j = i+1; j < v.length; ++j) { if (v[j] < v[guess]) // intuizione corretta? ? // aggiorna guess all'indice dell'elemento più piccolo guess = j; } // guess è corretto, quindi scambia gli elementi char rmbr = v[i]; v[i] = v[guess]; v[guess] = rmbr; }
59
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Iterazione i // intuisce la posizione dell'iesimo elemento più piccolo int guess = i; for (int j = i+1; j < v.length; ++j) { if (v[j] < v[guess]) // l'intuizione è giusta? // aggiorna guess all'indice dell'elemento più piccolo guess = j; } // ora guess è corretto, scambia gli elementi v[guess] e v[0]
60
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Array multidimensionali Molti problemi richiedono di organizzare le informazioni come elenco bidimensionale o multidimensionale Esempi Matrici Animazione grafica Modelli di previsione economica Rappresentazione di mappe Studi temporali sui cambiamenti della popolazione Progettazione di microprocessori
61
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Esempio Segmento int[][] m = new int[3][]; m[0] = new int[4]; m[1] = new int[4]; m[2] = new int[4]; Produce
62
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Esempio Segmento for (int r = 0; r < m.length; ++r) { for (int c = 0; c < m[r].length; ++c) { System.out.print("Enter a value: "); m[r][c] = Integer.parseInt(stdin.readLine()); }
63
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Esempio Segmento String[][] s = new String[4][]; s[0] = new String[2]; s[1] = new String[2]; s[2] = new String[4]; s[3] = new String[3]; Produce
64
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Esempio Segmento int c[][] = 1, 2, 3, 4, 5, 6, 7, 8, 9}}; Produce
65
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Matrici Un array bidimensionale a volte è conosciuto come matrice perché ricorda quel concetto matematico Una matrice con m righe e n colonne è rappresentata matematicamente nel modo seguente
66
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Somma di matrici Definizione C = A + B c ij = a 1i b 1j + a i2 b 2j +... + a in b nj c ij è la somma di termini prodotta dalla moltiplicazione degli elementi della riga i di a con quelli della colonna c di b
67
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Somma di matrici public static double[][] add(double[][] a, double[][] b) { // determina il numero di righe nella soluzione int m = a.length; // determina il numero di colonne nella soluzione int n = a[0].length; // crea l'array per contenere la somma double[][] c = new double[m][n]; // calcola la somma della matrice riga per riga for (int i = 0; i < m; ++i) { // produce la riga corrente for (int j = 0; j < n; ++j) { c[i][j] = a[i][j] + b[i][j]; } return c; }
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.