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

Slides:



Advertisements
Presentazioni simili
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Advertisements

1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Programmazione in Java Claudia Raibulet
CODIFICA Da flow-chart a C++.
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Introduzione a Javascript
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Fondamenti di Informatica A - Massimo Bertozzi LE FUNZIONI.
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Maurizio Cozzetto, Francesco Sarasini
Java: concetti e costrutti base
Introduzione al linguaggio C
PROGRAMMAZIONE SHELL -
7. Strutture di controllo Ing. Simona Colucci
Condizioni decisionali
IL CONCETTO DI ALGORITMO
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
TIPI PRIMITIVI TIPI STRUTTURATI
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Java World Cicli e Array.
Strutture di controllo
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso Java Cicli e Array.
Linguaggio C++ Selezione.
iterazione o ricorsione nel pensare per OGGETTI
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Programmazione e Laboratorio di Programmazione
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Ricorsione 16/01/2019 package.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Algoritmi e strutture dati APPUNTI SUL LINGUAGGIO C
La struttura dei primi programma in C
Lucidi della Pof.ssa Pazienza
Condizioni decisionali
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
APPUNTI SUL LINGUAGGIO C
Le variabili Tipo Valori ammissibili
Fondamenti di Informatica
Unità 1 Programmi base.
Condizioni decisionali
Lezione Terza Primi passi di programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
Ricerca 01/08/2019 package.
La programmazione strutturata
Ese 1 (del 31 Marzo 2004).
Programmazione e Laboratorio di Programmazione
Programmazione Procedurale
Transcript della presentazione:

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

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

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

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

Operatori

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;

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

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

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>

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

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

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 1 + 2 / 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

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;

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 }

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

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: }

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 )

Decision Making Statements

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

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

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

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

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 ;