Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl.

Slides:



Advertisements
Presentazioni simili
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Advertisements

Oggetti Java.
Package Utilizzo classi.
Array multidimensionali
Universita di Camerino
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Iterazione Capitolo 17 febbraio 2004 Iterazione.
Array di array Capitolo 20 febbraio 2004 Array di array.
Istruzioni condizionali e blocco
Capitolo 13 Verifica e debug Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Vettori e matrici algebrici
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 2 Copyright © The McGraw.
Fondamenti di Informatica
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Process synchronization
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Usa la tecnica del.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Soluzione Esercizio - Classe Vettore
Selezione (=scelta) con “if-else”
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Strutture di controllo in C -- Flow Chart --
Le funzioni.
Java base III: Array e Stringhe
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
Programmazione in Java Claudia Raibulet
Elementi di Informatica di base
30 ottobre Mergesort F. Bombi 30 ottobre 2002.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Lezione n° 07 - Esercitazione
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
Una "vera" classe.. ..un esempio pratico: la calcolatrice
Definizione di classi Capitolo 18 febbraio 2004 Definizione di classi.
Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
Variabili e assegnazione
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Capitolo 12 Thread Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Gestione dei thread in Java
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
Operatori di incremento e decremento
Primo Compitino Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe.
Esercitazione sull’ ordinamento 20 maggio 2003
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
6/11/01Ordinamento 1 Un esempio di algoritmi: ordinamento.
Transcript della presentazione:

Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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());

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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());

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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());

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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());

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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());

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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());

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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]); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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);

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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);

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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);

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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(); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Creazione di una copia approfondita

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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]; }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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);

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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);

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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);

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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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)... }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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(); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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; }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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]

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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()); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Esempio Segmento int c[][] = 1, 2, 3, 4, 5, 6, 7, 8, 9}}; Produce

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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; }