La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Array Un array è un contenitore “contiene” al massimo un numero predefinito di oggetti dello stesso tipo. Ogni oggetto dell'array è detto “elemento” Ad.

Presentazioni simili


Presentazione sul tema: "Array Un array è un contenitore “contiene” al massimo un numero predefinito di oggetti dello stesso tipo. Ogni oggetto dell'array è detto “elemento” Ad."— Transcript della presentazione:

1 Array Un array è un contenitore “contiene” al massimo un numero predefinito di oggetti dello stesso tipo. Ogni oggetto dell'array è detto “elemento” Ad ogni elemento si accede tramite l'indice della sua posizione La numerazione inizia da 0

2 Dichiarazione La dichiarazione di un array è composta da due parti :
il tipo dell'array e il nome dell'array Il tipo dell'array si dichiara tipo[] dove “tipo” è il tipo di dato che l'array deve contenere La dimensione dell'array non fà parte della dichiarazione es. byte[] anArrayOfBytes; short[] anArrayOfShorts; long[] anArrayOfLongs; String[] anArrayOfStrings; String anArrayOfStrings [] ; <- funziona ma è scoraggiato

3 Creazione iniializzazione e accesso
I modi di creare un' array sono due con l'operatore new int[] array = new int[10]; con il literal int[] array = {1,2,3,4,5,6,7,8,9,10}; Il fatto che un array possa contenere, in generale, oggetti permette la creazione di “array di array” o “array multidimensionali” Ogni elemento dell'array viene identificato dalle sue “coordinate” o indici es : String[][] nomi = {{“Sig.”,”Sig.ra”}{“Rossi”,”Verdi”}}; System.out.println(nomi[0][0] + names[1][0]); //Sig. Rossi System.out.println(nomi[0][1] + names[1][1]); //Sig.ra Verdi

4 Copia di Array La classe System ha un metodo arraycopy che può essere utilizzato per copiare array in maniera efficente public static void arraycopy(Object src,int srcPos, Object dest,int destPos,int length) I due oggetti sono gli array da cui copiare e su cui copiare I tre argomenti interi sono l'indice da cui copiare, l'indice su cui cominciare a copiare e il numero di elementi da copiare

5 Operatori

6 Operatori Assegnamento : int cadenza = 0; int velocita = 0;
int marcia = 1; Operatori aritmetici + addizione (usato anche per la concatenzaione di stringhe ) - sottrazione * moltiplicazione / divisione % modulo Gli operatori aritmetici posso essere combinati con gli operatori di assegnamento : int a = 0; a = a +1 ; // a = 1; E uguale a int a = 0 ; a+=1; // a = 1;

7 Operatori Operatori unari + indica valori positivi
- nega una espressione ++ operatore di incremento operatore di decremento ! Complemento logico; inverte il valore di un boleano Gli operatori di incremento e decremento possono essere sia prefissi che postfissi, la differenza è che l'operatore prefisso viene valutato il valore incrementato, con quello postfisso viene valutato il valore originale : int a = 1; System.out.println(++a); // 2 System.out.println(a++); // 2 System.out.println(a); // 3

8 Operatori Operatori di uguaglianza e relazionali == uguale a
!= diverso da > maggiore di >= maggiore o uguale a < minore di <= minore o uguale di Il risultato di queste operazioni è un valore booleano

9 Operatori Operatori condizionali && AND || OR
Operano su valori o espressioni booleane Sono operatori “lazy” : il secondo operando viene valutato solo se necessario ? inline if Anche conosciuto come “operatore ternario” perchè accetta tre operandi [condizione]?<valore1>:<valore2> se [condizione] viene valutata true viene restituito <valore1> altrimenti <valore2>

10 Operatori Operatore di comparazione tra tipi ( instanceof )
Confronta un oggetto con un tipo specificato Si usa per verificare che un oggetto sia una istanza di una classe, sottoclasse o classe che implementa una interfaccia ATTENZIONE !!! null non è istanza di niente

11 Operatori Operatori “bitwise” e shift di bit ~ complemento al bit
<< shift a sinistra con segno >> shift a destra con segno <<< shift a sinistra senza segno >>> shift a destra senza segno & AND bit a bit ^ OR bit a bit esclusivo | OR bit a bit inclusivo

12 Espressioni Una espressione è un costrutto fatto di variabili, operatori, invocazioni di metodi, costruiti in conformità con la sintassi del linguaggio, che vengono risolti in un valore Il tipo di dato ritornato da una espressione dipende dai tipi di dato usati nell'espressione In Java è possibile costruire espressioni complesse : 1*2*3 In questo esempio l'ordine in cui vengono presi gli operatori non ha importazna / 3 <- espressione ambigua !! se l'ordine degli operandi non viene esplicitato con parentesi bilanciate, viene data precedenza agli operandi con maggior peso (1+2)/3 <- espressione corretta 1+2/3 == 1+(2/3) <- espressione raccomandata perchè non ambigua

13 Statements Forma una completa unità di esecuizione
Gli statements sono, a spanne, equivalenti a una frase nel liguaggio naturale. Utilizzando il “;” si possono trasformare in statements i seguenti tipi di espressione : Espressioni di assegnamento incremento/decremento ( ++ , -- ) invocazioni di metodi espressioni di creazione di oggetti es. intero = 44; intero++; System.out.println(“il valore è “ + intero ) ; Integer oggettoIntero = new Integer(intero); Oltre agli statements “di espressione” esistono gli statements di dichiarazione e di controllo di flusso int intero = 0;

14 Blocchi Un blocco è un insieme di zero o più statements racchiusi tra parentesi graffe ( { } ) e può essere usato in qualsiasi parte del codice dove è permesso usare uno statement es : class Test { public static void main(String[] args) { boolean booleano = true; if (booleano) { // inizio blocco 1 System.out.println("Condizione true."); } // fine blocco1 else { // inizio blocco 2 System.out.println("Condizione false."); } // fine blocco 2 }

15 Control Flow Statements
Gli statements in un sorgente Java vengono normalmente eseguiti dall'alto verso il basso nell'ordine in cui compaiono Gli statements di controllo del flusso “rompono” il flusso di esecuzione utilizzando statements “decisionali”, loop e salti permettendo ai programmi di eseguire “in maniera condizionata” particolari blocchi di codice DECISION MAKING : if-then, if-then-else, switch LOOPING : for, while, do-while BRANCHING : break, continue, return

16 Decision Making Statements
if (condizione) then ( blocco ) al verificarsi di condizione viene eseguito blocco if (condizione) then (blocco 1) else (blocco 2) al verificarsi di condizione viene eseuito blocco1 al non verificarsi di condizione viene eseguito blocco2 if-then e if-then-else danno vita al massimo a due percorsi del flusso di esecuzione switch numero arbritrario di percorsi di esecuzione lavora su byte,short,char e int switch ( variabile ) { case valore1: blocco1; break; ... case valoren: }

17 Decision Making Statements
Ancora su switch : il corpo dello statement è chiamato “blocco switch” Ogni statement all'interno del blocco può avere iniziare solo per case o per default Ogni blocco case deve essere chiuso con break ( quasi )

18 Decision Making Statements

19 Loop Statements While while ( espressione ) blocco
Viene valutata l'espressione ( booleana ) Se l'espressione è valutata true viene eseguito il blocco il blocco continua ad essere eseguito finchè espressione non viene valutata false Do While do { } while ( espressione ) Viene eseguito il blocco Viene valutato espressione Finchè espressione è valutata true viene eseguito blocco

20 Loop Statements For for ( inizializzazione; termine; incremento )
blocco l'espressione di inizializzazione viene eseguita una volta Quando l'espressione termine viene valutata false il loop termina l'espressione incremento viene valutata ad ogni iterazione è legale, in “incremento”, sia incrementare che decrementare le espressioni sono opzionali for ( ; ; ) { blocco }è un ciclo infinito !!!! si possono usare espressioni di dichiarazione : for ( int i = 0; i < 10 ; ++i ) { blocco } i ha visibilità all'interno di blocco

21 Branching Statements break Ha due forme :
“unlabelled” : usato per terminare loop for ( int i = 0; i < array.lenght; ++i ) { if ( array[i] = 100 ) break; “labelled” : termina un determinato blocco ( label ) search: for (i = 0; i < arrayOfInts.length; i++) { for (j = 0; j < arrayOfInts[i].length; j++) { if (arrayOfInts[i][j] == searchfor) { foundIt = true; break search; } break non ritorna il flusso a search ma allo statement immediatamente successivo al blocco search

22 Branching Statements continue
“Salta” l'iterazione corrente e ritorna il controllo al loop come per break esiste la versione “labelled” e “unlabelled” : unlabelled : salta l'iterazione corrente del ciclo + interno del blocco in cui si trova labelled : salta l'iterazione del ciclo identificato da label

23 Branching Statements return
Conclude la chiamata del metodo e ritorna il controllo del flusso al punto in cui era stato invocato il metodo concluso Deve ritornare un valore ( o un espressione che viene valutata in un valore ) dello stesso tipo dichiarato nel metodo ( es. return ++intero; ) Se il metodo era stato dichiarato void non si aggiunge nessun valore o espressione dopo return : return ;


Scaricare ppt "Array Un array è un contenitore “contiene” al massimo un numero predefinito di oggetti dello stesso tipo. Ogni oggetto dell'array è detto “elemento” Ad."

Presentazioni simili


Annunci Google