La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Corso di laurea matematica indirizzo matematica per le applicazioni gestionali ed economiche.

Presentazioni simili


Presentazione sul tema: "Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Corso di laurea matematica indirizzo matematica per le applicazioni gestionali ed economiche."— Transcript della presentazione:

1 Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Corso di laurea matematica indirizzo matematica per le applicazioni gestionali ed economiche indirizzo matematica per le applicazioni tecnologiche e dellingegneria Corso di laurea specialistica in matematica e applicazioni indirizzo matematica Universita di Camerino

2 Informatica 2 Lezione 4 1 Arrays e vettori Arrays e vettori sono oggetti con cui organizziamo i dati –Dichiarazione e uso di array –Array di oggetti –Array passati come parametri a metodi –Ordinare elementi in un array –Array multidimensionali –La classe Vector –Uso di array per gestire oggetti grafici

3 Informatica 2 Lezione 4 1 Il tipo array Un array è una lista ordinata di elementi Un array di dimensione N ha lindice che varia tra 0 e N-1 punteggi Larray ha un nome Ogni valore è accessibile tramite un indice numerico Questo array contiene 10 valori che hanno indice tra 0 e 9

4 Informatica 2 Lezione 4 1 Array Un qualunque valore dellarray è referenziato mediante loperatore di selezione –Loperatore di selezione viene invocato con il nome dellarray e lindice tra le parentesi [ e ] –Lindice indica la posizione del valore –Lespressione punteggi[2] riporta il valore 94 che è il III nellarray Loperatore di selezione [] ha la precedenza più alta

5 Informatica 2 Lezione 4 1 Array Unespressione di selezione può essere usata ogni volta sia appropriato usare una variabile del tipo base dellarray lista[indice] = valore; valore = lista[indice] + termine somma = lista[indice] + lista[indice+1] –Anche lindice può essere unespressione, purchè di tipo adeguato lista[indice*2] += valore; valoreCasuale = lista[(int)Math.random()*scala];

6 Informatica 2 Lezione 4 1 Array Unarray contiene diversi elementi dello stesso tipo Il tipo degli elementi può essere sia primitivo sia riferimento a oggetti –array di interi, di caratteri, di stringhe della classe String o di oggetti definiti come Rectangle In Java, larray è un oggetto Quindi il nome delloggetto rappresenta una variabile riferimento e larray stesso può essere instanziato in un diverso momento

7 Informatica 2 Lezione 4 1 Dichiarazione di array Una variabile punteggi di tipo array può essere dichiarata: int[] punteggi = new int[10]; Notare che il tipo dellarray non specifica la sua dimensione, ma il tipo di ogni elemento dellarray Ogni oggetto del tipo dichiarato ha la sua dimensione che viene stabilita alla creazione Il tipo della variabile punteggi è int[] –Cioé un array di interi La variabile viene inizializzata con un nuovo array di 10 elementi di tipo intero BasicArray.java

8 Informatica 2 Lezione 4 1 Dichiarazione di array Esempi di dichiarazioni di array: float[] prezzi = new float[5]; boolean[] etichette; etichette = new boolean[20]; char[] codes = new char[26];

9 Informatica 2 Lezione 4 1 Controllo dei limiti Una volta creato larray ha una dimensione fissata Un indice usato in una espressione che referenzia quellarray deve indicare un elemento valido –Cioè lindice deve essere nei limiti da 0 a N-1 Linterprete Java solleva uneccezione se viene usato un indice di array al di fuori dei limiti –Questo processo si chiama controllo dei limiti

10 Informatica 2 Lezione 4 Controllo dei limiti L array prezzi contiene 5 valori, e lindice per selezionarne uno deve variare tra 0 e 4 lespressione di riferimento, in cui la variabile cont abbia valore 7, prezzi[cont], causa linvio delleccezione ArrayOutOfBoundsException Un errore molto comune consiste nellusare un indice non valido rispetto al limite for (int index=0; index <= 5; index++) prezzi[index] *= tasse; problema

11 Informatica 2 Lezione 4 1 Controllo dei limiti Ogni oggetto array ha lattributo length pubblico e costante che immagazzina la dimensione dellarray Viene chiamata tramite il nome dellarray prezzi.length Si noti ancora che length contiene il numero degli elementi non lindice più grande

12 Informatica 2 Lezione 4 1 Dichiarazione di array Le parentesi [] possono essere associate al tipo dellarray o al suo nome Le due dichiarazioni sono equivalenti: float[] prezzi; float prezzi[]; In genere si preferisce la prima dichiarazione

13 Informatica 2 Lezione 4 1 Lista di inizializzazione Per istanziare un array è possibile usare una lista per inizializzare larray in un passo I valori iniziali da attribuire agli elementi dellarray sono delimitati da { e } e separati da, int[] lista = {147, 323, 89, 933, 540, 269, 97, 114, 298, 476}; char[] sezioni = {'A', 'B', 'C', 'D', 'F'};

14 Informatica 2 Lezione 4 1 Lista di inizializzazione Quando si usa una lista dinizializzazione: –Loperatore new non viene usato per istanziare larray –La sua dimensione non viene esplicitamente dichiarata –Ma viene determninata dal numero degli elementi della lista La lista dinizializzazione può essere usata solo nella dichiarazione dellarray

15 Informatica 2 Lezione 4 1 Parametri di tipo array Un intero array può essere passato come parametro attuale ad un metodo Come per ogni altro oggetto, viene passato il riferimento allarray –il parametro formale e quello attuale diventano sinonimi Cambiare un elemento di un array in un metodo implica il cambiamento dellarray originale Anche un singolo elemento dellarray può essere passato come parametro attuale a un metodo e seguirà le regole del passaggio di valore al parametro a seconda del suo tipo

16 Informatica 2 Lezione 4 1 Array di oggetti Gli elementi di un array possono essere riferimenti a oggetti String[] words = new String[25]; Nella dichiarazione si reclama spazio per archiviare 25 riferimenti a oggetti di tipo String NON vengono creati gli oggetti di tipo String Ogni oggetto archiviato in un array deve essere istanziato separatamente

17 Informatica 2 Lezione 4 Argomenti sulla linea di comando La segnatura del metodo main indica che il metodo può avere come parametri un array di oggetti di tipo String Questi valori provengono dalla riga di comando e vengono passati quando viene chiamato linterprete > java DoIt pennsylvania texas california Allatto dellinvocazione linterprete passa al metodo main un array di tre oggetti String Le tre stringhe di caratteri sono passate come parametro e riferibili con indice 0-2

18 Informatica 2 Lezione 4 1 Array di oggetti Oggetti possono avere array come variabili dstanza Si possono così creare strutture complesse La struttura dei dati in array e oggetti è responsabilità del programmatore

19 Informatica 2 Lezione 4 1 Ordinamento Ordinamento è il processo con cui si sistemano gli elementi di una lista in un ordine particolare Gli elementi devono essere ordinabili secondo un dato criterio Esistono numerosi algoritmi di ordinamento, che variano in efficienza Due molto comuni: –Ordinamento per selezione –Ordinamento per inserzione

20 Informatica 2 Lezione 4 1 Ordinamento per selezione Seleziona un valore e collocalo nella sua destinazione finale –Ripetere per tutti gli elementi Precisamente: –Trovare il più piccolo valore della lista –Scambiare posizione con il primo elemento della lista –Trovare il successivo valore secondo il criterio di ordinamento scelto –Scambiarlo con la seconda posizione –Ripetere fino a che tutti gli elementi sono sistemati

21 Informatica 2 Lezione 4 1 Ordinamento per selezione Lista iniziale da ordinare in ordine crescente il valore più piccolo è 1: il successivo è 2: il succesivo è 3: il succesivo è 6:

22 Informatica 2 Lezione 4 1 Ordinamento per inserzione Selezionare un elemento e inserirlo nella posizione finale in una sotto lista ordinata –Ripetere fino a che tutti gli elementi sono stati inseriti Preciamente: –Il primo elemento sia appartenente a una sottolista oprdinata di lunghezza 1 –Inserire il secondo elemento nella sottolista, facendo scivolare se necessario gli elementi di una posizione per fare spazio per linserimento –Inserire il III elemento nella sottolista ordinata di lunghezza due, con slittamento degli elemenit se necessario –Ripetere fino a che tutti gli elementi sono stati inseriti nella posizione opportuna

23 Informatica 2 Lezione 4 1 Ordinamento per inserzione Lista iniziale: inserire 9 : inserire 6 e slittare: inserire 1 e slittare: inserire 2 e slittare:

24 Informatica 2 Lezione 4 1 Ordinare oggetti Gli interi hanno un ordinamneto intrinseco, ma lordine di un insieme di oggetti deve essere definito da chi definisce la classe Uninterfaccia Java può essere usata come nome di un tipo e garantisce che un determinato metodo sarà implementato type name and guarantees that a particular class has implemented particular methods Linterfaccia Comparable serve per implementare un generico ordinamento per un insieme di oggetti

25 Informatica 2 Lezione 4 1 Confronto tra gli ordinamenti Gli ordinamento per selezione e inserzione sono simili per efficienza Entrambi hanno un ciclo esterno che scandisce gli elementi e un ciclo interno che confronta il valore del ciclo esterno con quasi tutti i valori della lista Quindi eseguiamo approssimativamente n 2 confronti per ordinare una lista di dimensione n Sidice che questi due algoritmi di ordinamento sono di ordine n 2 Esistono algoritmi più efficienti, dellordine di n log 2 n

26 Informatica 2 Lezione 4 1 Array di due dimensioni Un array a 1 dimensione archivia una lista di valori Un array a 2 dimensioni costituisce un tavola di valori organizzata per righe e colonne Un elemento di un array a 2 dimensioni element è riferito con luso di due indici Precisamente, un array a 2 dimensioni in Java è un array di array

27 Informatica 2 Lezione 4 1 Array multidimensionali Un array può avere più dimensioni Ciascuna dimensione suddivide la precedente in un numero specificato di elementi Ciascuna dimensione dellarray ha la propria costante length Poiché ogni dimensione dellarray è a sua volta un array di riferimenti a oggetti, potrà avere lunghezza diversa

28 Informatica 2 Lezione 4 1 La classe Vector Un oggetto della classe Vector è simile a unarray perchè consente di archiviare diversi valori Ma un oggetto della classe Vector –Archivia solo oggetti –Non ha la sintassi di indicizzazione dellarray I metodi della classe Vector sono usati per interagire con gli elementi del vettore La classe Vector fa parte del pacchetto java.util

29 Informatica 2 Lezione 4 1 La classe Vector Differenza tra array e vettori: –Un vettore può dinamicamente cambiare la propria dimensione Per ogni vettore viene allocata una certa quantità di memoria iniziale per archiviare gli elementi elements Se un nuovo elemento viene aggiunto viene automaticamente acquisito nuovo spazio

30 Informatica 2 Lezione 4 1 La classe Vector La classe Vector è implementata mediante un array Quando serve nuovo spazio, viene creato un nuovo arrary di dimesioni maggiori e i valori del vecchio array vengono ricopiati nel nuovo Per inserire un elemento, dapprima vengono copiati i vecchi elementi uno ad uno nella nuova posizione del nuovo array Quindi, limplementazione di Vector non è molto efficiente per inserire elementi


Scaricare ppt "Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Corso di laurea matematica indirizzo matematica per le applicazioni gestionali ed economiche."

Presentazioni simili


Annunci Google