Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2010-11 prof. Viviana Bono Blocco 7 – Array.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Tipi strutturati
Argomenti della lezione
Puntatori in C e C++.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Dati strutturati A. Ferrari.
Stringhe di caratteri In linguaggio C.
Costruttori e Distruttori
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità G1 Dati strutturati.
Ripasso R1 Dati strutturati.
Array (vettori) In linguaggio C / C++.
Universita di Camerino
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
Algoritmi e Programmazione
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Liste.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Process synchronization
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Allocazione dinamica della memoria
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Argomenti della lezione
Introduzione alla programmazione lll
Corso di Informatica Applicata Lezione 6
Array Struttura numerate di dati. Memorizzare molti dati In informatica cè spesso bisogno di memorizzare ed elaborare un insieme costituito da molti dati.
1 laboratorio di calcolo II AA 2003/04 seconda settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Il Linguaggio C.
Algoritmi e Programmazione Avanzata
Java base III: Array e Stringhe
AN FI Array Array in Java. AN FI Array Dichiarazione di array in Java [ ]; //oppure u [] ; int a[]; int[] a; u La dimensione non è specificata.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 6 (Deitel) I vettori Sommario Introduzione Vettori Dichiarazione di vettori 6.4.
Algoritmi e strutture dati
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Strutture dati elementari
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Variabili e assegnazione
1. 2 Variabili statiche e dinamiche Un programma è un processo in esecuzione a cui il sistema operativo assegna una certa zona di memoria. Tale zona può.
1 novembre I nomi in Java F. Bombi 1 novembre 2002.
Vettori (a una dimensione)
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Strutture di controllo Esercizi!. Utilizzare i metodi: I modi per poter richiamare un metodo, di una classe (ad esempio SavitchIn) sono due. 1) E’ sempre.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Il linguaggio C Puntatori e dintorni. 2 Puntatori : idea di base In C è possibile conoscere e denotare l’indirizzo della cella di memoria in cui è memorizzata.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
© Piero Demichelis Tipi strutturati I tipi considerati finora hanno la caratteristica comune di non essere strutturati: ogni elemento è una singola entità.
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.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
Relazione sulle strutture dati Svolta da: Buccella Simone Strutture di dati Aree di memoria Puntatore numericibooleani alfabetici Statici dinamici Puntatori.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Fondamenti di informatica T-A Esercitazione 5 : Stringhe ed array AA 2012/2013 Tutor : Domenico Di Carlo.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 6 – Invariante.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Transcript della presentazione:

Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array

Programmazione I B - a.a Array Un array è una sequenza di celle di memoria consecutive (cioè poste a indirizzi consecutivi); in senso più astratto, è un contenitore composto, costituito da un numero prefissato di contenitori più semplici etichettati da numeri interi consecutivi (l'indice); un array è tale che la lettura e modifica dell' i-esimo componente può avvenire con i calcolabile dinamicamente, e in tempo costante indipendente da i; in Java, come in Pascal e in C, gli elementi di un array devono essere tutti dello stesso tipo, in modo da evitare errori di tipo durante l'esecuzione (perché?); in Java, a differenza che in Pascal o in C, gli array sono "oggetti" nel senso della programmazione a oggetti, e inoltre possono risiedere solo nell'area logica di memoria detta heap (cioè mucchio); gli array sono il primo esempio di oggetto Java che vediamo in questo corso. in Java tutti gli oggetti risiedono nello heap; non vi possono essere oggetti nello stack; nello stack vi possono invece essere, come vedremo, dei riferimenti a oggetti, cioè degli indirizzi di oggetti.

Programmazione I B - a.a Array in Java non esistono, in senso proprio, variabili di tipo array, e più in generale non esistono variabili di tipo oggetto; esistono solo variabili di tipo riferimento ad array o riferimento a oggetto; cioè variabili che possono contenere l'indirizzo di un array o di un oggetto, che “punta” a una cella della heap; per brevità si dirà ugualmente "una variabile di tipo array", intendendo una variabile di tipo riferimento ad array il tipo "riferimento ad array" non specifica il numero di elementi che l'array deve avere: una variabile di tipo int[] (cioè array di interi) può contenere l'indirizzo di un array di interi di lunghezza arbitraria la dichiarazione int[] a; di una variabile di tipo (riferimento ad) array NON crea l'array, ma soltanto una cella che PUÒ contenere un INDIRIZZO di array; l'oggetto-array, come qualunque oggetto, viene creato con una istruzione new (vedi esempi successivi, e libri di testo).

Programmazione I B - a.a int[] a; //crea cella in stack Stack a: a = new int[5]; //alloca spazio in heap Ogni oggetto-array possiede un campo length contenente sempre il numero di elementi che compongono l’array; tale campo non può venire modificato. Nell’esempio, il valore di a.length è length: Heap Attenzion e!

Programmazione I B - a.a Inizializzare un array Nel caso di array di tipi elementari, all’atto della creazione vengono assegnati valori di default –0 per i numeri (interi e reali) –false per i valori logici –‘\000’ per i caratteri Nel caso di array di tipi oggetto (es. String, Scanner,…, ma anche array stesso!), il valore di default è null

Programmazione I B - a.a Creazione di un array con inizializzazione Un array può essere contemporaneamente creato e inizializ- zato con una sequenza di espressioni, come nell'esempio seguente: int[] arr = {3, 5, 15, 9}; è una scrittura concisa che equivale a: int[] arr = new int[4]; arr[0]= 3; arr[1]= 5; arr[2]= 15; arr[3]= 9; Tale forma di creazione con inizializzazione non è possibile come assegnazione a variabili di tipo array già dichiarate: int[] arr; arr = {3, 5, 15, 9}; ERRORE DI COMPILAZIONE! Attenzione: si può invece scrivere: arr = new int[] {3, 5, 15, 9};

Programmazione I B - a.a Attenzione! La lunghezza di un array può non essere nota staticamente; ad esempio:... int n = tastiera.nextInt(); double[] a = new double[n]; Ma attenzione: un array, una volta creato, non può più variare la sua lunghezza. Non si può fare: double[] a = {3.14, 2.71, 0.25} a[5] = 3.14; (errore all'esecuzione) oppure qualcosa come allunga(a) o accorcia(a). È invece possibile memorizzare nella variabile-riferimento l'indirizzo di un diverso array di diversa lunghezza, ad es.: a = {5, 4.6, 2.7, 4, 9, 26, 41};

Programmazione I B - a.a Percorrere un array Gli elementi di un array di lunghezza N hanno indici da 0 a N –1; il tipico ciclo per percorrere interamente un array ha pertanto la forma:... n = a.length; for(int i = 0; i < n; i++) { // accedi ad a[i] e fa' le azioni opportune } NB Essendo i un intero, le espressioni i < n e i <= n-1 sono equivalenti; tuttavia in Java, come in C, si preferisce la prima perché piú concisa.

Programmazione I B - a.a Esempio

Programmazione I B - a.a Esempio (cont.)

Programmazione I B - a.a Esempio: costruzione di un array con immissione dei suoi elementi da tastiera public static void main(String args) { int[] unArray; out.print("lunghezza dell'array: "); Scanner input = new Scanner(System.in); int n = input.nextInt(); unArray = new int[n]; for(int i=0; i<n; i++) { out.println("immetti elemento n. " + i + ": "); unArray[i] = input.nextInt("elemento n. " + i + ": "); }... } Nota In questa versione elementare non viene effettuato nessun controllo sull'input.

Programmazione I B - a.a Visualizzazione di un array su video... double[] a;... int n = a.length; for(int i=0; i < n; i++) System.out.print(a[i] + " "); System.out.println(); Nota: memorizzare la lunghezza del vettore in una variabile locale n è leggermente più efficiente che andarsela a reperire ogni volta nell'oggetto array, come nella versione seguente: for(int i=0; i < a.length; i++) System.out.print(a[i] + " ");

Programmazione I B - a.a Advanced topic: nuova forma di for in Java 1.5 double[] arr = {3.14, 2.71, 32, 0.75}; for(double x:arr) System.out.print(x + " "); si legge: for each double x in arr... cioè: per ciascun double x in arr... NB Con questa nuova forma non si ha il controllo dell'indice; ad esempio non è possibile visualizzare un array mostrando anche l'indice di ogni elemento: a questo fine occorre usare la forma tradizionale, ad es.: int n = a.length; for(int i = 0; i < n; i++) System.out.println("n. " + i + ": " + a[i]);