Array in C. Emilio Di Giacomo
|
|
- Massimo Costanzo
- 5 anni fa
- Visualizzazioni
Transcript
1 Array in C Emilio Di Giacomo
2 Limite delle variabili L utilizzo di variabili semplici come quelle viste fino ad ora non è sufficiente per risolvere problemi in cui si debbano gestire collezioni di dati di dimensione non nota a priori Consideriamo ad esempio il seguente problema: vogliamo far inserire all utente una sequenza di interi e poi un numero intero positivo n vogliamo visualizzare all utente i soli interi inserite che sono divisibili per n
3 Limite delle variabili Il problema può avere due varianti: la lunghezza della sequenza da fare inserire all utente è fissata prima di scrivere il programma la lunghezza della sequenza da fare inserire all utente è scelta dall utente stesso (e quindi non nota all atto della scrittura del codice) Consideriamo inizialmente la prima variante e supponiamo che la lunghezza della sequenza sia quattro: in questo caso potremmo risolvere il problema con gli strumenti che conosciamo
4 Soluzione 1 #include <stdio.h> int main(){ int a1, a2, a3, a4; printf("inserisci quattro numeri interi\n"); scanf("%d%d%d%d",&a1,&a2,&a3,&a4); int n; printf("inserisci un intero\n"); scanf("%d",&n); } printf("numeri divisibili per %d\n", n); if (a1%n==0) printf("%d ",a1); if (a2%n==0) printf("%d ",a2); if (a3%n==0) printf("%d ",a3); if (a4%n==0) printf("%d ",a4); printf("\n");
5 Limiti della soluzione vista La soluzione illustrata necessita di definire 4 variabili distinte per memorizzare le stringhe della sequenza Inoltre, la soluzione illustrata deve ripetere le stesse cose (lettura, verifica lunghezza e stampa) per ognuna delle stringhe inserite Cosa succede se voglio fissare la lunghezza della sequenza a 100, o addirittura a ? è molto dispendioso scrivere un codice in cui definisco esplicitamente variabili ed in cui ripeto istruzioni quasi uguali!!
6 Variante con lunghezza non fissata Nel caso in cui la lunghezza della sequenza non fosse fissata nel programma, ma decisa dall utente, sarebbe addirittura impossibile scrivere il programma usando i soli strumenti che abbiamo non sappiamo quante variabili bisogna usare non sappiamo quante volte ripetere le operazioni di lettura, verifica della lunghezza e stampa
7 Gli array Per risolvere problemi come quello precedente, i linguaggi di programmazione forniscono una struttura dati nota come array Un array è una sequenza di variabili: tutte le variabili di un array hanno lo stesso tipo di dato (il tipo dell array), e si chiamano anche elementi dell array ogni variabile ha associato un indice (numero intero non negativo) la dimensione (o lunghezza) dell array è il numero delle sue variabili
8 Array in C In C per definire un array di un certo tipo T la sintassi è Esempio: T nome [ dimensione ] creazione di un array a di tipo int di dimensione 5: int a[5]; creazione di un array b di tipo double di dimensione 10: double b[10];
9 Accesso agli elementi di un array Un array di tipo T di dimensione n è costituito da n variabili di tipo T Ognuna di tali variabili può memorizzare un dato di tipo T e può essere acceduta (in lettura o scrittura) indipendentemente dalle altre L accesso ad una certa variabile avviene specificando un indice Ogni elemento di un array è infatti associato ad un indice compreso tra 0 e n-1 nome array [ espressione ]
10 Accesso agli elementi di un array Esempio: int a[5]; 0 2 a[0] = 2; 1-15 a[1] = -15; 2 78 a[2] = 78; 3 4 a[3] = 4; 4 0 a[4] = 0; Il brano precedente crea un array di interi di dimensione 5 e assegna ad ogni elemento di tale array un valore
11 Riconsideriamo il nostro problema Utilizzando gli array possiamo risolvere il problema della sequenza di interi Creiamo un array di dimensione opportuna per memorizzare la sequenza di interi Sia la lettura dei valori che la valutazione della loro divisibilità per n (con eventuale stampa) avviene scandendo gli elementi dell array
12 Soluzione 2 #include <stdio.h> # define DIM 4 int main(){ int a[dim]; printf("inserisci %d numeri interi\n",dim); for(int i=0;i<dim;i++) scanf("%d",&a[i]); int n; printf("inserisci un intero\n"); scanf("%d",&n); } printf("numeri divisibili per %d\n", n); for(int i=0;i<dim;i++) if (a[i]%n==0) printf("%d ",a[i]); printf("\n");
13 Soluzione 2: commenti La soluzione 2 è più compatta della soluzione 1 non c è bisogno di ripetere più volte le stesse istruzioni Il codice inoltre è facilmente modificabile nel caso la lunghezza della sequenza cambi: per passare da 4 a 100 stringhe è sufficiente cambiare il valore della costante DIM È inoltre possibile adattare facilmente il codice al caso in cui la lunghezza della sequenza viene scelta dall utente
14 Soluzione 3 #include <stdio.h> int main(){ printf("quanti interi vuoi inserire?\n"); int dim; scanf("%d",&dim); int a[dim]; printf("inserisci %d numeri interi\n",dim); for(int i=0;i<dim;i++) scanf("%d",&a[i]); int n; printf("inserisci un intero\n"); scanf("%d",&n); } printf("numeri divisibili per %d\n", n); for(int i=0;i<dim;i++) if (a[i]%n==0) printf("%d ",a[i]); printf("\n");
15 Ancora sugli indici Abbiamo visto che gli elementi di un array di lunghezza n a sono associati agli indici da 0 ad n-1 Che cosa succede se tentiamo di accedere ad una posizione non valida, cioè ad un indice minore di 0 o maggiore di n-1? In fase di compilazione non si ha nessun problema l espressione usata come indice non viene valutata ma ne viene soltanto controllato il tipo In fase di esecuzione l'istruzione viene eseguita e si accede ad una cella memoria che non fa parte dell'array l'esito dell'operazione è impredicibile
16 Come funzionano gli indici Che cosa succede? Quando scriviamo int a[10]; viene riservata una quantità di memoria in celle consecutive sufficiente a contenere 10 int 40 byte se sizeof(int) è pari a 4 nella variabile a viene memorizzato l'indirizzo di memoria della prima cella riservata per l'array
17 Come funzionano gli indici int a[10]; a 1000 a[0] a[1] a[2] a[9]
18 Come funzionano gli indici Quando accediamo ad un elemento dell'array si determina l'indirizzo cui accedere calcolando un offset rispetto all'indirizzo memorizzato in a l'offset dipende dall'indice Esempio, se scriviamo a[2]=7; l'offset è pari all'indice (2) per sizeof(int) (4 nel nostro esempio), cioè 8 l'indirizzo cui si accede è l'indirizzo memorizzato in a più l'offset, cioè 1008
19 Come funzionano gli indici a 1000 a[0] a[1] a[2] a[9]
20 Come funzionano gli indici Se usiamo un indice non valido si procede allo steso modo: si calcola l'offset e si somma all'indirizzo memorizzato in a Esempio, se scriviamo: a[12]=7 //indice non valido l'offset è 12*4=48 e si accede all'indirizzo 1048 la cella 1048 non è una di quelle riservate per l'array non sappiamo che cosa contenga essa viene però scritta ugualmente con effetti imprevedibili
21 Inizializzazione di Array In C quando un array viene creato il contenuto dei suoi elementi non è noto le celle di memoria riservate per l'array contengono dati che sono il risultato di precedenti elaborazioni È pertanto necessario inizializzare gli elementi di un array prima di utilizzarli int a[10]; for(int i=0;i<10;i++) a[i]=0;
22 Inizializzazione di Array In C è anche possibile inizializzare gli elementi di un array contestualmente alla sua creazione Esempio int a [5] = {2, 17, -4, -10, 35}; {2, 17, -4, -10, 35} è detta lista di inizializzazione o letterale array L inizializzazione con un letterale array deve avvenire contestualmente alla definizione dell'array int[] a={1,2,3} //OK int[] b; b={4,5,6} // Errore!!
23 Inizializzazione di Array Diversi casi nell'uso dei letterali array int a[5] = {2, 17, -4, -10, 35}; il numero di elementi nella lista è uguale alla dimensione int a[5] = {2, 17}; il numero di elementi nella lista è minore della dimensione gli elementi mancanti vengono inizializzati a 0 int a[5] = {2, 17, -4, -10, 35, 56}; il numero di elementi nella lista è maggiore della dimensione errore in fase di compilazione
24 Inizializzazione di Array Diversi casi nell'uso dei letterali array int a[] = {2, 17, -4, -10, 35}; la dimensione non viene indicata essa viene posta pari al numero di elementi nella lista
25 Inizializzazione di Array Diversi casi nell'uso dei letterali array int a[] = {2, 17, -4, -10, 35}; la dimensione non viene indicata essa viene posta pari al numero di elementi nella lista
26 Copia di array Molto spesso nei programmi che usano array è necessario copiare un array in un altro Non è possibile copiare a in b tramite un assegnazione diretta: b=a; // errore in fase di compilazione È necessario copiare elemento per elemento
27 Copia di array Esempio: int a[5];... // popola l'array a int b[5]; for(int i=0;i<10;i++) b[i]=a[i];
28 Passare gli array alle funzioni Immaginiamo di voler scrivere una funzione che stampi gli elementi di un array Tale funzione deve ricevere un array come parametro È possibile definire un parametro formale di tipo array Esempio: void stampaarray(int a[])
29 Passare gli array alle funzioni Se provassimo a scrivere la funzione stampaarray ci troveremmo di fronte ad un problema: void stampaarray(int a[]){ } for(int i=0; i<?????; i++) printf("%d",a[i]); Quanto è lungo l'array?
30 Passare gli array alle funzioni Per questo motivo quando una funzione riceve un parametro di tipo array di solito riceve un secondo parametro che ne indica la dimensione void stampaarray(int a[], int size){ for(int i=0; i<size; i++) printf("%d",a[i]); }
31 Passare gli array alle funzioni Nota: nella definizione del parametro formale di tipo array si può anche indicare una dimensione, essa però viene ignorata void stampaarray(int a[5], int size){ for(int i=0; i<size; i++) printf("%d",a[i]); }
32 Passare gli array alle funzioni L'invocazione della funzione stampaarray avviene nel seguente modo: int a[10]={1,2,3,4,5,6,7,8,9,0}; stampaarray(a,10); Nota: nell'invocazione l'array viene passato senza parentesi quadre
33 Ancora sul passaggio di array Supponiamo di definire la seguente funzione: void mistero(int a[], int dim){ for(int i=0; i<dim; i++) a[i]=0; } e scriviamo: int b[5]={3,6,7,8,-2}; mistero(b,5); for(int i=0; i<5; i++) printf("%d\n",b[i]); che cosa verrà stampato?
34 Ancora sul passaggio di array Si potrebbe pensare che l'array b passato come parametro alla funzione mistero non venga da essa modificato abbiamo visto che il passaggio dei parametri avviene sempre per valore In realtà il codice precedente stampa tutti 0, cioè l'array b viene modificato dalla funzione mistero di fatto abbiamo un passaggio per riferimento Perché?
35 Ancora sul passaggio di array Ricordiamo che b memorizza semplicemente un indirizzo di memoria l'indirizzo della prima cella di memoria dell'array Pertanto passando b come parametro viene copiato il suo valore (cioè l'indirizzo) nel parametro formale a Quando accediamo all'elemento a[i] si calcola l'indirizzo cui accedere calcolando l'offset rispetto al valore memorizzato in a che è lo stesso memorizzato in b
36 Ancora sul passaggio di array Se si vuole impedire la modifica di un array passato per parametro ad una funzione si può usare la parola chiave const Esempio: void prova(const int a[], int dim){...} Qualunque tentativo di modificare l'array a all'interno della funzione prova darà un errore in fase di compilazione
37 Esempi sull'uso di array Scrivere le seguenti funzioni. int massimo(int a[], int size): riceve come parametri un array di interi e la sua dimensione e restituisce l'elemento di valore massimo nell'array int contiene(int a[], int size, int k): riceve come parametri un array di interi, la sua dimensione e un valore k e restituisce 1 (vero) se k è contenuto nell'array, 0 (falso) in caso contrario int uguali(int a[], int sizea, int b[], int sizeb): riceve come parametri due array di interi con le rispettive dimensioni e restituisce 1 (vero) se i due array sono uguali, 0 (falso) in caso contrario
38 Esempi sull'uso di array Scrivere poi un programma che fa inserire all'utente un array di interi a dice all'utente qual è l'elemento massimo in a fa inserire all'utente un intero k dice all'utente se l'intero k è presente in a fa inserire all'utente un secondo array b dice all'utente se a e b sono uguali
39 Funzione massimo(...) int massimo(int a[], int size){ int massimo=a[0]; for (int i = 1; i<size; i++) if(a[i]>massimo) massimo=a[i]; return massimo; }
40 Funzione contiene(...) int contiene(int a[], int size, int k){ int presente=0; int i=0; while(i<size &&!presente){ if(a[i]==k) presente=1; i++; } return presente; }
41 Funzione uguali(...) int uguali(int a[], int sizea, int b[], int sizeb){ int uguali; if(sizea!=sizeb) uguali=0; else{ uguali=1; int i=0; while(i<sizea && uguali){ if(a[i]!=b[i]) uguali=0; i++; } } return uguali; }
42 Funzione uguali(...) int main(){ int sizea; printf("quanti elementi nel primo array?\n"); scanf("%d",&sizea); int a[sizea]; for(int i=0;i<sizea;i++){ printf("inserisci l'elemento in posizione %d\n",i); scanf("%d",&a[i]); } } int max=massimo(a,sizea); printf("il massimo elemento dell'array è: %d\n", max);...
43 Funzione uguali(...) int main(){... int k; printf("inserisci un elemento da cercare nell'array\n"); scanf("%d",&k); if(contiene(a,sizea,k)) printf("il numero %d è presente nell'array\n",k); else printf("il numero %d non è presente nell'array\n",k); } int sizeb; printf("quanti elementi nel secondo array?\n"); scanf("%d",&sizeb);...
44 Funzione uguali(...) int main(){... int b[sizeb]; for(int i=0;i<sizeb;i++){ printf("inserisci l'elemento in posizione %d\n",i); scanf("%d",&b[i]); } } if(uguali(a,sizea,b,sizeb)) printf("i due array sono uguali\n"); else printf("i due array non sono uguali\n");
45 Array multidimensionali Gli array che abbiamo visto finora sono caratterizzati dall utilizzo di un solo indice per far riferimento agli elementi dell array Questo tipo di array si chiamano anche array unidimensionali È possibile definire array i cui elementi sono riferiti per mezzo di più indici Si parla in questo caso di array multidimensionali
46 Array bidimensionali In particolare un array i cui elementi sono accessibili tramite due indici sono detti array bidimensionali Gli array bidimensionali vengono usati prevalentemente per modellare matrici La sintassi per la creazione di un array bidimensionale di tipo T è la seguente Esempio T nome [ num. righe ][ num. colonne ] int m[2][3];
47 Accesso agli elementi Per accedere agli elementi di un array bidimensionale sono necessari due indici detti rispettivamente indice di riga e indice di colonna Ad esempio con m[i][j] si denota l elemento di riga i e colonna j dell array bidimensionale m
48 Esempio int m[2][3]; a[0][0] = 10; a[0][1] = 71; a[0][2] = -3; a[1][0] = 1; a[1][1] = -7; a[1][2] = 21;
49 Letterali array bidimensionale Anche gli array bidimensionali possono essere inizializzati attraverso letterali array Esempio: int a [3][2]={{10, 3}, {2, 71}, {-3, 1}}; Gli elementi all'interno della lista sono a loro volta letterali array, uno per riga È anche possibile scrivere: int a [3][2]={10, 3, 2, 71, -3, 1};
50 Letterali array bidimensionale Come nel caso unidimensionale se gli elementi nella lista sono meno del necessario quelli mancanti vengono impostati a 0 Esempi: int a [3][2]={{10}, {2, 71}, {-3, 1}}; int a [3][2]={10, 2, 71, -3, 1};
51 Passare gli array alle funzioni Immaginiamo di voler scrivere una funzione che stampi gli elementi di un array bidimensionali Tale funzione deve ricevere come parametro un array bidimensionale
52 Passare gli array alle funzioni Si potrebbe pensare che il parametro possa essere specificato così void stampaarray(int a[][], int rows, int cols) In realtà è necessario indicare il numero di colonne void stampaarray(int a[][5], int rows, int cols) chiaramente questo codice funzionerà soltanto con matrici con 5 colonne In generale con un array multidimensionale bisogna specificare tutti le dimensioni tranne al più la prima
53 Passare gli array alle funzioni È possibile specificare il numero di righe e colonne tramite un espressione valutata a tempo di esecuzione nel seguente modo void stampaarray(int rows, int cols, int a[][cols]) questo codice funzionerà con qualunque numero di colonne nota: il parametro che indica il numero delle colonne deve venire prima del parametro array
54 Visitare gli elem. di un array bidim. Gli elementi di un array monodimensionale vengono tipicamente scanditi uno dopo l altro tramite un ciclo Come possiamo scandire gli elementi di un array bidimensionale? Tipicamente essi vengono scandite per righe (dalla prima all ultima) e all interno di ogni riga per colonne (dalla prima all ultima) ciò può essere fatto con due cicli annidati
55 Esempio void stampaarray(int rows, int cols, int a[][cols]){ for (int i = 0; i<rows; i++){ for (int j = 0; j<cols; j++) printf("%d", a[i][j]); printf("\n"); } }
56 Es. di uso di array bidimensionali Vediamo ora un esempio d uso di array bidimensionali Realizziamo un programma che: fa inserire all utente una matrice di numeri interi; l utente deve scegliere sia le dimensioni (righe colonne) che i singoli elementi della matrice; per ogni riga della matrice inserita, visualizza all utente la somma degli elementi di tale riga.
57 Es. di uso di array bidimensionali Se la matrice inserita dall utente fosse: il programma dovrebbe stampare: Somma elementi di riga 0 = 15 Somma elementi di riga 1 = 12 Somma elementi di riga 2 = 3
58 Codice #include<stdio.h> int main(){ // definisce una matrice di dimensioni specificate int m, n; printf("inserisci le dimensioni della matrice"); scanf("%d%d",&n,&m); int matrice[m][n]; } // fa inserire all'utente gli elementi della matrice for (int i = 0; i<m; i++) for (int j = 0; n; j++){ printf("elemento (%d,%d)?",i,j); scanf("%d",&matrice[i][j]); }...
59 Codice #include<stdio.h> int main(){ }... // visualizza le somme degli elementi di ogni riga int somma; for (int i = 0; i<m; i++){ // calcola la somma sulla riga i somma = 0; for (int j = 0; n; j++) somma += matrice[i][j]; // visualizza la somma sulla riga i printf("somma riga %d = %d", i, somma); }
Array. Emilio Di Giacomo e Walter Didimo
Array Emilio Di Giacomo e Walter Didimo Limite delle variabili L utilizzo di variabili semplici come quelle viste fino ad ora non è sufficiente per risolvere problemi in cui si debbano gestire collezioni
Introduzione al C. Unità 7 Array. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 7 Array S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Sommario Unità
Linguaggio C: Array Valeria Cardellini
Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione
E8 Esercizi sugli array in C
E8 Esercizi sugli array in C Esercizio 1. Scrivere una funzione C che riceve come parametro un array di double e la sua dimensione e restituisce la media degli elementi presenti nell'array. Esercizio 2.
Gli array Libro cap. 6 Moreno Marzol a Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna
Gli array Libro cap. 6 Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Array 2 Ringraziamenti prof. Stefano Mizzaro, Università
Istruzioni di Controllo in C. Emilio Di Giacomo
Istruzioni di Controllo in C Emilio Di Giacomo Limite delle istruzioni viste L insieme delle istruzioni che abbiamo visto fino ad ora consiste per lo più di: dichiarazioni e assegnazioni di variabili espressioni
Puntatori (in C) Emilio Di Giacomo
Puntatori (in C) Emilio Di Giacomo Puntatori In questa lezione parleremo di uno dei costrutti più potenti del C: i puntatori I puntatori vengono utilizzati per realizzare il passaggio di parametri per
Array di array. Walter Didimo
Array di array Walter Didimo Array di array Abbiamo visto che il tipo di dato degli elementi di un array può essere qualsiasi tipo valido Il tipo di dato degli elementi di un array può dunque anche essere
Array. Aggragati di variabili omogenee...
Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno
Matrici. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
definisce un vettore di 4 puntatori a carattere (allocata memoria per 4 puntatori)!
" Non ci sono vincoli sul tipo degli elementi di un vettore " Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere (allocata
Gli Array. Dichiarazione di un array
Gli Array Un array rappresenta una variabile indicizzata (ovvero contenente un indice) che viene utilizzata per contenere più elementi dello stesso tipo. Ogni array ha un nome al quale viene associato
ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
Esercizio 1: media di numeri reali (uso funzioni e struct)
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le
Concetti chiave. Gli Array o Vettori. Array Elementi dell array Indici e lunghezza dell array Inizializzazione di vettori Array multidimensionali
Concetti chiave Gli Array o Vettori Array Elementi dell array Indici e lunghezza dell array Inizializzazione di vettori Array multidimensionali Fino ad ora abbiamo utilizzato variabili scalari, ossia riferite
ESERCIZIO: SHIFT ARRAY (1)
ARRAY E STRINGHE ARRAY ESERCIZIO: SHIFT ARRAY (1) Utilizzando le funzioni scrivere un programma che: genera una sequenza di N = 20 numeri interi e li memorizza in un array ( riempi_array( )) visualizza
Esercitazione di Reti degli elaboratori
Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
Array in Java. Emilio Di Giacomo e Walter Didimo
Array in Java Emilio Di Giacomo e Walter Didimo Gli array Anche in Java, come in C, esistono gli array Un array è una sequenza di variabili: tutte le variabili di un array hanno lo stesso tipo di dato
Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Array Array monodimensionali Array bidimensionali Esercizi 16/01/2013 2 ARRAY Gli array sono oggetti utilizzati in Java per memorizzare
Tipi derivati: Array
Tipi derivati: Array Array Gli array (o vettori) sono composti da elementi omogenei (cioè hanno tutti lo stesso tipo base) ogni elemento è identificato all'interno dell'array da un numero d ordine detto
Definizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
Array multidimensionali e stringhe
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi
Esercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione
Array Tipi di dato semplici e strutturati i tipi di dato visti finora erano tutti semplici: int, char, float,... i dati manipolati sono spesso complessi (o strutturati) con componenti elementari o strutturate
IEIM Esercitazione II Elementi di programmazione C. Alessandro A. Nacci -
IEIM 2017-2018 Esercitazione II Elementi di programmazione C Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Esercizio 4 Dati un numero, stampare il primo numero successivo pari
C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.
Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Non sappiamo a priori quante variabili dobbiamo definire per contenere gli interi.
I puntatori. Il C ci permette di conoscere tale indirizzo, ovvero di determinare dove la variabile sia stata effettivamente memorizzata.
I puntatori La memoria RAM del calcolatore è formata da un insieme di celle di memoria; per poter localizzare ciascuna cella, ad ognuna di esse è associato un numero, ovvero il suo indirizzo, che viene
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio
RICORSIONE, PUNTATORI E ARRAY Quarto Laboratorio 16 DICEMBRE 2011 SCADENZA TERZA ESERCITAZIONE FUNZIONI RICORSIVE ESERCIZIO Scrivere una funzione ricorsiva che, assegnati due interi N1 ed N2, restituisca
Introduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017
Laboratorio di Informatica I
Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci
Programmazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
Lezione 6: Array e puntatori
Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci
Esercizio 1. (trasformazioni tra matrici) Pseudocodice
Esercizio 1. (trasformazioni tra matrici) Scrivere un programma che: (a) Generi una matrice m NxN inserendo dei numeri progressivi in ogni cella e poi la stampi (b) Ruoti la matrice di 90' 1 2 3 7 4 1
Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.
Operatori di incremento e decremento ++ e -- Esempi y=x++ il contenuto della variabile x viene inizialmente usata per l assegnazione y, e solo dopo incrementata y=--x il contenuto della variabile x viene
Il linguaggio C Puntatori
Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - puntatori 2 Ringraziamenti Questi
Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61
Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli
Problema. Vettori e matrici. Vettori. Vettori
e matrici Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Problema Si vuole un programma che chieda 10 numeri dalla tastiera e li visualizzi dall ultimo al primo Soluzione attuale (con le
INFORMATICA. Vettori e matrici in C++ A cura dell Ing. Claudio Traini
INFORMATICA Vettori e matrici in C++ A cura dell Ing. Claudio Traini Vettori Il vettore è una collezione di variabili tutte dello stesso tipo (detto appunto tipo) di lunghezza prefissata. Questa collezione
Esercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
Gli array. slides credit M. Poneti
Gli array slides credit M. Poneti Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome e lo
Il linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
I tipi strutturati e i record in C++
I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi
Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione
9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
Dati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
Le strutture /2. Iniziamo ora a progettare il codice per la gestione del database. Quali sono le funzionalità da implementare?
Le strutture /2 Iniziamo ora a progettare il codice per la gestione del database. Quali sono le funzionalità da implementare? Per ora è possibile gestire l'elenco dei libri (e quindi delle strutture) mediante
Array e Matrici. Perchè usare gli array?
Array e Matrici Perchè usare gli array? 2 float venditegennaio, venditefebbraio, venditemarzo, venditeaprile, venditemaggio, venditegiugno, venditeluglio, venditeagosto, venditesettembre, venditeottobre,
Cicli annidati ed Array multidimensionali
Linguaggio C Cicli annidati ed Array multidimensionali Cicli Annidati In C abbiamo 3 tipi di cicli: while(exp) { do { while(exp); for(exp;exp;exp3) { Cicli annidati: un ciclo all interno del corpo di un
Cicli annidati e matrici di variabili
Linguaggio C Cicli annidati e matrici di variabili 1 Cicli annidati! 2 cicli FOR annidati richiedono 2 differenti variabili contatori! Il contatore del ciclo interno può dipendere dal contatore del ciclo
giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL
Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie
Il linguaggio C Puntatori
Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright Mirko Viroli Copyright 2016 2018 Moreno
Associazione Variabile-Indirizzo
I puntatori Associazione Variabile-Indirizzo Tutte le volte che in un programma si dichiarano delle variabili, l'esecutore associa alla variabile un indirizzo. Es. Dato il programma #include
Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Array. Anno Accademico 2010/2011 Francesco Tortorella
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
Stringhe in C. Emilio Di Giacomo
Stringhe in C Emilio Di Giacomo Stringhe Una stringa è una sequenza finita di caratteri Le stringhe sono un tipo di dati talmente importante e utile che fanno parte di quasi tutti i linguaggi di programmazione
Esercizi C su array e matrici
Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]
Elementi di Informatica A. A. 2016/2017
Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 2
Esercizio 1 - Soluzione (array)
Esercizio 1 Creare un programma che legga da input un numero non noto a priori di interi (al più 10) terminati da 0. Tale sequenza può eventualmente contenere numeri ripetuti. Si memorizzi tale sequenza
Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali
Istruzioni iterative (o cicliche)
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Istruzioni iterative (o cicliche) Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria
IEIM Esercitazione 1I Array. Alessandro A. Nacci -
IEIM 2018-2019 Esercitazione 1I Array Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Esercizio 1 Leggere 3 numeri, A, B e C. Dire quale di essi é maggiore. #include
Esercizio 1: calcolo insieme intersezione
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 3 Esercitazione: 19 ottobre 2005 Esercizi su array e matrici Esercizio 1: calcolo insieme intersezione Problema: *******************************************************************
ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C
A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C Es typedef ; typedef char stringa[10]; dichiara che il tipo stringa è un array
Verso i puntatori: Cosa è una variabile?
Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per
Corso di Informatica
Corso di Informatica Modulo T -Struttura vettore 0/08/0 Prerequisiti Programmazione elementare Passaggio parametri per indirizzo 0/08/0 Introduzione I dati di tipo semplice (Intero, Reale, Carattere, Booleano)
Matrici. Unità 7. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
Corso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 10 Lezione 10 1 Inside C : Puntatori Puntatori Referenziazione e Dereferenziazione Pointers: Puntatori Le variabili finora incontrate sono caratterizzate da
Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin
Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso
Fondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura
Array k-dimensionali
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per
Primo programma in C
Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file
Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere
Introduzione al linguaggio C Dati aggregati
Introduzione al linguaggio C Dati aggregati Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 5 ottobre
Corso di Informatica Medica Esercitazione 1I 2013-2014.! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com
Corso di Informatica Medica Esercitazione 1I 2013-2014! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com 1 2 Esercizio 1 Scrivere un programma che legga due array di interi da tastiera dica
Capitolo 11. Puntatori
1 Capitolo 11 Puntatori 2 Variabili puntatore Cerchiamo di capire come le informazioni sono memorizzate nella memoria del computer La memoria è un sequenza di byte Ogni byte è composto da 8 bit: Ogni byte
Variabili e input/ Alessandra Giordani Lunedì 18 marzo
Variabili e input/ output da tastiera Alessandra Giordani agiordani@disi.unitn.it Lunedì 18 marzo 2013 http://disi.unitn.it/~agiordani/ Es. compilazione helloworld.c 2 Variabili e valori Una variabile
Fondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture iterative e selettive Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 AlgoBuild: Strutture iterative
Lezione 12: Allocazione Dinamica della Memoria
Lezione 12: Allocazione Dinamica della Memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 17 Aprile 2013 Puntatori e vettori Puntatori ed indirizzi Semplificando, la memoria di un computer
Tipi di dato strutturati: Array
Tipi di dato strutturati: Array I tipi di dato visti finora sono tutti semplici: int, char, float,... ma i dati manipolati nelle applicazioni reali sono spesso complessi (o strutturati) Gli array sono
Università degli Studi di Ferrara
Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018 2019 Programmazione Lezione 8 Esercizi in C Docente: Michele Ferrari - michele.ferrari@unife.it Informazioni Docente di supporto
Strategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
Strutture, Unioni, Enumerazioni in C. Emilio Di Giacomo
Strutture, Unioni, Enumerazioni in C Emilio Di Giacomo Strutture Una struttura è una collezione di variabili raggruppate sotto uno stesso nome da questo punto di vista è simile a un array Le variabili
Esercizio 1 Soluzione
Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2010/2011 Lab 06 Array Lab06 1 Esercizio 1 Creare
Lo scopo. Il primo esperimento. Soluzione informale. Le variabili
Lo scopo 2 Il primo esperimento Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video Ver. 2.4
Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
Formato dei file. Definizione del formato immagine pbm. Il formato immagine pbm
Formato dei file Il formato immagine pbm Il formato immagine pbm consente di rappresentare immagini in bianco e nero. Ogni file rappresenta una immagine come un file testo. Definizione del formato immagine
E9 Esercizi sul Capitolo 9 Array
E9 Esercizi sul Capitolo 9 Array Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce
Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C
Ripasso R1 Dati strutturati Aggregazione di dati omogenei: gli array Spesso gli algoritmi lavorano su insiemi di dati omogenei. o l insieme dei valori reali che rappresentano le temperature medie delle
E17 Esercizi sugli Array in Java
E17 Esercizi sugli Array in Java Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce