Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Array. Anno Accademico 2010/2011 Francesco Tortorella

Documenti analoghi
Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Strutture dati e loro organizzazione. Gabriella Trucco

Gli Array. Dichiarazione di un array

Elementi di Informatica A. A. 2016/2017

Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico 2008/2009 Francesco Tortorella

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione

Programmazione Procedurale in Linguaggio C++

Array multidimensionali e stringhe

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria

Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C

Funzioni, Stack e Visibilità delle Variabili in C

4 GLI ARRAY E LE STRINGHE

Array k-dimensionali

Strutture dati complesse. Vettori. Tipi di dato strutturati. Strutture dati complesse nome fulvio. Esigenze. Esigenze. dato

Programmazione Procedurale in Linguaggio C++

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Linguaggio C: le funzioni. Introduzione e sintassi

Università degli Studi di Brescia. Vettori di variabili. ! Sono variabili aggregate in grado di memorizzare una collezione (organizzata) di oggetti

Parametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi

Università degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili

Programmazione Procedurale in Linguaggio C++

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

I Vettori (Array) Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Corso sul linguaggio Java

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore.

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

Funzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x)

Linguaggio C: le funzioni. Introduzione e sintassi

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Capitolo 10 - Strutture

POINTERS. Una variabile pointer è una variabile che ha come valore un indirizzo di memoria.

Multidimensionali. Array Multidimensionali. Tipi di array. Matrice: array bidimensionale. Array multidimensionale. Dichiarazione di una matrice

Passare argomenti al programma

Laboratorio di programmazione

Introduzione a Matlab

Fondamenti di Informatica

Aggregati di dati eterogenei: il tipo struct. Esercizi risolti

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Laboratorio di Informatica

IEIM Esercitazione X Ripasso: array, puntatori, ricorsione. Alessandro A. Nacci -

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Università di Roma Tor Vergata L12-1

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Problema. Vettori e matrici. Vettori. Vettori

Laboratorio di informatica Ingegneria meccanica

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Elementi di C++ di base

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Cicli annidati ed Array multidimensionali

Fondamenti di Informatica T-1. Classi e array

Informatica 3. LEZIONE 2: Sintassi e semantica

L Allocazione Dinamica della Memoria

Informatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Modulo 2: Strutture fondamentali della programmazione Java

Vettori Algoritmi elementari di ordinamento

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Corso di Programmazione a oggetti

Costanti e Variabili

Strategie di programmazione

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Lezione 6 programmazione in Java

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Introduzione alla Programmazione in Java attraverso un esempio commentato

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Istruzioni semplici e strutturate

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Puntatori. Fondamenti di Programmazione

IL TEOREMA DI BOEHM-JACOPINI

Programmazione Procedurale in Linguaggio C++

Concetto di Funzione e Procedura METODI in Java

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Allocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()

<Nome Tabella>.<attributo>

Definizione di metodi in Java

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

a.a Codice corso: 21012, 22010

Cicli annidati e matrici di variabili

Array mono- e bi-dimensionali Cicli while e do-while

Introduzione al linguaggio C Gli array

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

Array e puntatori in C

Dati aggregati. Violetta Lonati

Informatica! Appunti dal laboratorio 1!

Programmazione Procedurale in Linguaggio C++

(A) CONOSCENZA TERMINOLOGICA (B) CONOSCENZA E COMPETENZA (C) ESERCIZI DI COMPRENSIONE

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Esercizi. La funzione swapint() primo tentativo

Il C nel C++: Funzioni

I/O FILE. Sommario I/O FILE. I/O FILE LETTURA DA FILE DI TESTO oggetto di tipo ifstream. I/O FILE: lettura e scrittura su file di testo

Transcript:

Corso di Informatica Tipi strutturati: Array Anno Accademico 2010/2011 Francesco Tortorella

Gli array In alcuni casi, l informazione che bisogna elaborare consiste di un aggregazione di valori, piuttosto che di un valore solo. Questo significa che sarebbe conveniente indicare l insieme di valori di interesse con una sola variabile piuttosto che con tante variabili quante sono i valori da considerare: una variabile di tipo strutturato. In C++ (come nella maggior parte dei linguaggi), questa possibilità è offerta dagli array.

Gli array Un array è un insieme di variabili, tutte dello stesso tipo, identificato da un nome unico. Gli elementi dell array sono disposti in memoria in posizioni consecutive. 10 6-5 7 24 38 10 2 v

Definizione di un array Per definire una variabile array, è necessario specificare: il nome della variabile array il tipo degli elementi il numero degli elementi presenti (cardinalità dell array)

Esempio Definizione di una variabile array v contenente 20 interi: int v[20]; Definizione di una variabile array w contenente 10 float: float w[10];

Accesso agli elementi dell array Per accedere ai singoli elementi di un array, è necessario specificare il nome della variabile array e la posizione dell elemento di interesse tramite un valore intero (variabile o costante) che si definisce indice. v[0]... v[1]v[2] v[7] 10 6-5 7 24 38 10 2 v

Accesso agli elementi dell array Si noti che l indice parte da 0; quindi v[0] sarà il primo valore dell array, mentre l N-mo sarà v[n-1]. Va quindi ricordato che, se si definisce un array con N elementi, l indice dovrà essere limitato tra 0 ed N-1. Questo controllo è a cura dell utente, in quanto non ci sono controlli automatici della correttezza dell indice. Nel caso si considera un indice errato (es. v[n]), sarà effettuato un accesso ad una zone della memoria che non appartiene all array, con effetti imprevedibili a runtime.

Accesso agli elementi dell array Ogni elemento di un array è, a tutti gli effetti, una variabile del tipo costituente l array e quindi può essere impiegato come tale int a,b,i; int v[10]; v[2]=3; v[7]=0; cout << Valore: << v[7]; i=2; a=v[i]*4+6; b=v[i+5];

Assegnazione tra array Diversamente dalle variabili di tipo atomico, non è possibile fare assegnazioni dirette tra array. L unica possibilità per assegnare i valori degli elementi di un array agli elementi di un altro array è quindi fare una serie di assegnazioni tra elementi corrispondenti: int a[]={7,9,6,3}; int b[4]; b=a; b[0]=a[0]; b[1]=a[1]; b[2]=a[2]; b[3]=a[3]; errata

Inizializzazione di un array Un array può essere inizializzato in fase di definizione: int numeri[6] = {10,20,30,40,50,60}; La dimensione dell array può essere anche implicita: int numeri[] = {10,20,30,40,50,60};

Lettura e stampa degli elementi di un array Per inizializzare da input una variabile array, è necessario realizzare un operazione di input per ciascuno degli elementi Analogamente, per stampare il contenuto di un array, è necessario fare la stampa di ognuno degli elementi. Qual è il costrutto da utilizzare? Problema: leggere da input la dimensione e gli elementi di un array e stampare il risultato della lettura

Array come parametri Gli array sono passati unicamente per riferimento (perché?). Come parametro formale, un array si indica con tipo, identificatore e parentesi quadre: int vet[]. Non si inserisce l &. Come parametro effettivo va fornito il nome dell array, senza specificare altro.

Array come parametri void stamparray (int vet[], int num) { for (int i=0; i<num; i++) cout << vet[i] << " "; cout << "\n"; } int main () { int vet1[] = {5, 10, 15}; int vet2[] = {2, 4, 6, 8, 10}; stamparray(vet1,3); stamparray(vet2,5); } return (EXIT_SUCCESS);

Array come parametri: errori frequenti void stamparray (int vet[], int num) { for (int i=0; i<num; i++) cout << vet[i] << " "; cout << "\n"; } ACHTUNG!! int main () { int vet1[] = {5, 10, 15}; int vet2[] = {2, 4, 6, 8, 10}; stamparray(vet1[3],3); stamparray(vet2,5); Si passa un intero e non un array } return (EXIT_SUCCESS); korrekt!!

Problema: ricerca del massimo Leggere da input la dimensione e gli elementi di un array; fornire in uscita valore e posizione dell elemento di valore massimo. Definire opportuni sottoprogrammi.

Problema: ricerca del massimo e del minimo Leggere da input la dimensione e gli elementi di un array; fornire in uscita valori e posizioni dell elemento di valore massimo e dell elemento di valore minimo. Definire opportuni sottoprogrammi: Quanti? Quali?

Problema: calcolo della media e della deviazione standard Leggere da input la dimensione e gli elementi di un array; fornire in uscita la media µ e la deviazione standard σ degli elementi presenti nell array, dove: σ = 1 N ( v i ) 2 µ N 1 i=

Array bidimensionali Finora abbiamo considerato array monodimensionali, i quali richiedono un solo indice per l individuazione di un elemento. Il C++ permette di definire anche array bidimensionali, in cui l organizzazione degli elementi è di tipo matriciale. In questo caso, sono necessari due indici per identificare un elemento nell array. Questo tipo strutturato permette di affrontare tutte quelle situazioni in cui è necessario lavorare con matrici, tabelle, ecc.

Definizione di un array bidimensionale Per definire un array bidimensionale, è necessario specificare: il nome della variabile array il tipo degli elementi il numero degli elementi presenti nelle due dimensioni (cardinalità di riga e cardinalità di colonna dell array)

Esempio Definizione di una variabile array mat contenente 10x10 elementi double: double mat[10][10]; Che differenza c è rispetto ad un array monodimensionale di 100 elementi?

Organizzazione di un array bidimensionale mat[0][1] 0 1 0 1 2 7 8 9 mat[1][8] mat[9][2] 9

Accesso agli elementi dell array Per accedere ai singoli elementi di un array bidimensionale, è necessario specificare il nome della variabile array e gli indici di riga e di colonna che individuano l elemento desiderato. Esempi: mat[2][1]=3; cout<< il valore è: << mat[2][7]; i=3; j=5; x=mat[i][j]*4+6;

Inizializzazione di un array bidimensionale Un array bidimensionale può essere inizializzato in fase di definizione: int mat[2][3] = {{10,20,30},{40,50,60}}; Altre inizializzazioni equivalenti: int mat[2][3] = {10,20,30,40,50,60}; int mat[][3] = {{10,20,30},{40,50,60}};

Lettura e stampa degli elementi di un array bidimensionale Anche nel caso bidimensionale, l inizializzazione da input di una variabile array va realizzata realizzare tramite un operazione di input per ciascuno degli elementi Analogamente, per stampare il contenuto di un array, è necessario fare la stampa di ognuno degli elementi. Qual è il costrutto da utilizzare? Esempio: leggere da input le dimensioni e gli elementi di un array bidimensionale e stampare il risultato della lettura

Array multidimensionali Il C++ permette la definizione di array multidimensionali con più di due indici: int mat3[5][10][5]; Con le dovute modifiche valgono le considerazioni sulla definizione, inizializzazione, assegnazione, accesso fatte per gli array monodimensionali e bidimensionali.

Array multidimensionali come parametri A differenza degli array monodimensionali, nella definizione come parametro formale di un array N-dimensionale vanno specificate almeno N-1 dimensioni (dalla seconda in poi). Esempio (array bidimensionale): float det(float mat[][20], int rig, int col); d=det(matrix,num_rig,num_col);