Array di array Capitolo 20 febbraio 2004 Array di array.

Slides:



Advertisements
Presentazioni simili
Il problema della ricerca Algoritmi e Strutture Dati.
Advertisements

Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array, matrici Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
Algoritmi e Strutture Dati
Progettazione digitale 2/ed Franco Fummi, Maria Giovanna Sami, Cristina Silvano Copyright © 2007 – The McGraw-Hill Companies srl Progettazione Digitale.
Dati strutturati A. Ferrari.
Array multidimensionali
Array (vettori) In linguaggio C / C++.
PHP.
Universita di Camerino
Holes – Anatomia & Fisiologia per le professioni sanitarie Copyright © 2013 McGraw-Hill Education (Italy) srl Capitolo 10 Sistema nervoso I Struttura di.
Introduzione ai sistemi di basi di dati
Iterazione Capitolo 17 febbraio 2004 Iterazione.
Istruzioni condizionali e blocco
Segnali e sistemi per le telecomunicazioni - Claudio Prati Copyright © The McGraw-Hill Companies, srl.
Matematica I: Calcolo differenziale, Algebra lineare, Probabilità e statistica Giovanni Naldi, Lorenzo Pareschi, Giacomo Aletti Copyright © The.
Sintassi Commenti Istruzioni /*.. Commenti */
Copyright The McGraw-Hill Companies srl Lofferta di moneta Capitolo 9.
Vettori e matrici algebrici
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
Matematica I: Calcolo differenziale, Algebra lineare, Probabilità e statistica Giovanni Naldi, Lorenzo Pareschi, Giacomo Aletti Copyright © The.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Corso di Fondamenti di programmazione a.a.2009/2010
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Il problema della ricerca Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
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 Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)
Array bidimensionali Paragrafo5.
Argomenti della lezione
APPUNTI SUL LINGUAGGIO C
JavaScript: Array JavaScript: Array.
Strutture di controllo in C -- Flow Chart --
Java base III: Array e Stringhe
Information and Communication Technology CORSO DI LAUREA IN RELAZIONI PUBBLICHE E PUBBLICITA’ Andrea Carignani (7,5 crediti) Fondamenti 5 Crediti.
Information and Communication Technology (6 crediti) Andrea Carignani
ARRAY MULTIDIMENDIONALI
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XVIII Le matrici Programmazione di Calcolatori: le matrici 1.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Ricerca sequenziale in un array di interi
Definizione di classi Capitolo 18 febbraio 2004 Definizione di classi.
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.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Fondamenti di affidabilità - Paolo Citti, Gabriele Arcidiacono, Gianni Campatelli Copyright © The McGraw-Hill Companies, srl Capitolo 7 FTA.
Introduzione agli algoritmi e strutture dati 2/ed T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein Copyright © 2005 – The McGraw-Hill Companies srl.
Interfacce grafiche Capitolo 27 marzo 2004 Interfacce grafiche.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Capitolo 2 Architettura di un calcolatore
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Fondamenti di affidabilità - Paolo Citti, Gabriele Arcidiacono, Gianni Campatelli Copyright © The McGraw-Hill Companies, srl Capitolo 4 Affidabilità.
C. Comi, L.C. Dell’acqua – Introduzione alla meccanica strutturale 3/ed Copyright © 2012 The McGraw-Hill Companies srl Introduzione alla meccanica strutturale.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 1 Un’introduzione informale agli algoritmi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Transcript della presentazione:

Array di array Capitolo 20 febbraio 2004 Array di array

Array bidimensionali Un array bidimensionale è una collezione finita di variabili di uno stesso tipo, posto in corrispondenza biunivoca con il prodotto cartesiano di una coppia di insiemi finiti ciascun elemento di un array bidimensionale è individuato dal riferimento all’array e da una coppia di indici il primo indice è relativo alla riga in cui si trova l’elemento il secondo indice è relativo alla colonna in cui si trova l’elemento In Java, un array bidimensionale è una collezione finita di variabili di uno stesso tipo, posto in corrispondenza biunivoca con il prodotto cartesiano di una coppia di intervalli iniziali e finiti dei numeri naturali l’accesso agli elementi di un array bidimensionale avviene usando come indici una coppia di numeri naturali Array di array

Array bidimensionali 1 2 3 4 5 6 7 8 9 10 11 12 indici di colonna 2 3 4 5 6 7 8 9 10 11 12 indici di colonna indici di riga Array di array

Creazione e uso di array bidimensionali Per usare un array bidimensionale i cui elementi sono di un tipo T, bisogna dichiarare una variabile di tipo T[ ][ ] int[][] numeri; // un array bidimensionale di numeri Per creare un array bidimensionale composto da R righe e C colonne di elementi di tipo T bisogna usare l’espressione new T[R][C] /* creazione l’array bidimensionale numeri */ final int RIGHE = 4; final int COLONNE = 3; numeri = new int[RIGHE][COLONNE]; L’accesso a un elemento di un array bidimensionale il riferimento all’array una coppia di espressioni intere – indice di riga e indice di colonna – tra parentesi quadre [ e ] numeri[0][0] = 1; Array di array

Scansione per righe Di solito bisogna elaborare tutti gli elementi di un array bidimensionale scansione per righe prima tutti gli elementi della prima riga, poi quelli della seconda riga, e così via due variabili indice e due istruzioni ripetitive annidate int i, j; // indici per la scansione di numeri /* scansione per righe degli elementi di numeri */ for (i=0; i<RIGHE; i++) for (j=0; j<COLONNE; j++) ... elabora numeri[i][j] ... Array di array

Calcola gli elementi di numeri int i, j; // indici per la scansione di numeri /* assegna un valore agli elementi di numeri */ for (i=0; i<RIGHE; i++) for (j=0; j<COLONNE; j++) numeri[i][j] = i*COLONNE+j+1; 1 2 3 4 5 6 7 8 9 10 11 12 Array di array

Visualizzazione degli elementi di numeri int i, j; // indici per la scansione di numeri /* visualizza gli elementi di numeri */ for (i=0; i<RIGHE; i++) { /* visualizza la riga i-esima di numeri */ for (j=0; j<COLONNE; j++) System.out.print(numeri[i][j]+ " "); System.out.println(); } viene visualizzato 1 2 3 4 5 6 7 8 9 10 11 12 Array di array

Array di array Un array di array è un array i cui elementi sono a loro volta di tipo array gli array bidimensionali sono un caso particolare degli array di array 1 2 3 4 5 6 7 8 9 10 11 12 numeri Array di array

Gli array bidimensionali sono array di array Si consider l’array bidimensionale numeri numeri.length è la lunghezza dell’array numeri in un array bidimensionale M, l’espressione M.length denota il numero di righe di M numeri[0] è una espressione valida — che referenzia la prima riga di numeri, un array di interi numeri[0][1] è una espressione valida — che referenzia il secondo elemento di numeri[0], che vale 2 numeri[0].length è una espressione valida — è la lunghezza della prima riga di numeri, che vale 3 in un array bidimensionale M, l’espressione M[0].length denota il numero di colonne di M Array di array

Array di array frastagliati Un array di array che non è un array bidimensionale 1 2 3 null frastagliato 4 6 Array di array

Letterali array di array Un letterale array di array è la denotazione di un array di array costante ad esempio int[][] numeri; numeri = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } , { 10, 11, 12 } }; int[][] frastagliato; frastagliato = new int[][] { { 1, 1 }, { }, { 1, 0, 1 }, null, { 1, 4, 6, 4, 1 } }; Array di array

Gestione di array di array Vengono mostrate alcune tecniche per la gestione di array di array scansione per righe di array di array elaborazione delle righe delegata a un metodo di supporto Array di array

Visualizzazione di un array di array Visualizzazione per righe /* Visualizza gli elementi dell'array di array a. */ public static void visualizza(int[][] a) { // pre: a!=null && ogni riga di a è non nulla int i, j; // indici per la scansione di a /* visualizza gli elementi di a */ for (i=0; i<a.length; i++) { /* visualizza la riga i-esima di a */ for (j=0; j<a[i].length; j++) System.out.print(a[i][j] + " "); System.out.println(); } Array di array

Somma degli elementi di un array di array /* Calcola la somma degli elementi dell'array di array a. */ public static int somma(int[][] a) { // pre: a!=null && ogni riga di a è non nulla int i, j; // indici per la scansione di a int s; // somma degli elementi di a /* calcola la somma degli elementi di a */ s = 0; for (i=0; i<a.length; i++) /* somma a s gli elementi della riga i-esima di a */ for (j=0; j<a[i].length; j++) s += a[i][j]; return s; } Array di array

Somma degli elementi di un array di array /* Calcola la somma degli elementi dell'array di array a. */ public static int somma(int[][] a) { // pre: a!=null && ogni riga di a è non nulla int i; // indice per la scansione delle righe di a int s; // somma degli elementi di a /* calcola la somma degli elementi di a, * come somma delle somme degli elementi * delle righe di a */ s = 0; for (i=0; i<a.length; i++) s += somma( a[i] ); return s; } usa int somma(int[] a) come metodo di supporto Array di array

Uguaglianza tra array di array /* Verifica se gli array di array a e b sono uguali. */ public static boolean uguali(int[][] a, int[][] b) { // pre: a!=null && b!=null && // gli elementi di a e b sono non nulli int i; // indice per la scansione di a e b boolean uguali; // a e b sono uguali /* verifica se a e b sono uguali */ if (a.length!=b.length) // sono sicuramente diversi uguali = false; else { // sono uguali se lo sono riga per riga */ uguali = true; for (i=0; uguali && i<a.length; i++) if (!uguali(a[i],b[i])) } return uguali; usa boolean uguali(int[] a, int[] b) come metodo di supporto Array di array

Clonazione di array di array La clonazione di un array di array di reali può essere basata sull’uso del metodo di supporto double[] clona(double[] a) /* Crea una copia dell'array di array a. */ public static double[][] clona(double[][] a) { // pre: a!=null && le righe di a sono non nulle double[][] c; // clone di a int i; // indice per la scansione delle righe di a e c /* crea c, della stessa lunghezza di a */ c = new double[a.length][]; /* copia i cloni degli elementi di a in c */ for (i=0; i<a.length; i++) c[i] = clona(a[i]); /* restituisce il clone */ return c; } l’espressione new T[R][] crea un array di array composto da R righe di elementi di tipo T inizialmente non create (nulle) Array di array