Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Scienze Matematiche Fisiche e Naturali
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Silvia Rossi » 7.Array monodimensionali


C++ array

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.
  • Una soluzione (non scalabile) consiste nel dichiarare un numero m di variabli x1, x2, … xm con m sufficientemente grande.

Per risolvere un problema molto semplice occorrerebbe scrivere un programma lunghissimo anche nel caso che n fosse dell’ordine delle centinaia.

Algoritmo

Algoritmo


C++ array

Per manipolare molti elementi dello stesso tipo, linguaggi imperativi permettono l’uso della struttura dati array

Un array è un insieme ordinato di elementi dello stesso tipo.

Gli elementi di un array sono detti componenti ed il loro tipo è chiamato componente-tipo dell’array.

I componenti di un array sono immagazzinati in posizioni consecutive di memoria.

L’intero array é identificato da un nome specificato secondo le regole generali degli identificatori.

C++ array

La definizione di una variabile array monodimensionale è:
tipo-componente identificatore [espressione]
Dove:

  • tipo-componente è il tipo dei componenti
  • identificatore è il nome dell’array
  • il valore dell’espressione racchiusa tra parentesi quadre ne rappresenta la dimensione (numero massimo di componenti)
  • Si noti che la dimensione dell’array deve essere calcolata durante la fase di compilazione
  • … pertanto in espressione possono essere presenti solo valori letterali o costanti.

C++ array

  • Un array (o vettore) può anche essere inizializzato in fase di definizione, nel qual caso la dimensione può essere omessa perché calcolata implicitamente dal compilatore.

Esempio in foto.

Esempio

Esempio


C++ array

Per accedere ai componenti dell’array si usa l’operatore binario [ ]:
nome[espressione]
Dove:

  • nome è il nome di un array (operando sinistro)
  • espressione (operando destro) è una qualunque espressione con risultato intero (indice dell’array)

L’operatore [] applicato ad un nome e un indice, definisce una variabile (r-value)
il cui indirizzo è dato dalla somma dell’indirizzo della variabile nome dell’array, sommato all’indice posto tra parentesi quadre:

float b[]={1.5,0.4,15};
b[0], b[1] e b[2] sono tre variabili reali

C++ array

Come variabile nome[espressione] può essere usato:

  • per assegnare un valore ad un componentedell’array
    • nel lato sinistro di un’istruzione di assegnazione
  • per ricavare il valore di un componentedell’array
    • lato destro di un’assegnazione o come operando di espressione

Esempio in foto.

Esempio

Esempio


C++ array

In generale dunque se la variabile A è stata definita come un array, A[espressione] è a tutti gli effetti una variabile il cui tipo è quello dei componenti dell’array.

C++ array

Se il valore dell’espressione è maggiore o uguale alla dimensione dell’array si ha un errore logico.

  • L’istruzione Vet[10]=2 non ha senso poiché si attribuisce un valore ad una variabile che non rappresenta una componente dell’array Vet.
  • Lo stesso può accadere se l’espressione risulta maggiore o uguale al numero di elementi effettivamente presenti nell’array.
  • E’ pertanto compito del programmatore assicurarsi che situazioni di questo genere non si verifichino perché esse possono dar luogo ad errori difficilmente rintracciabili.

C++ array

Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.
esercizio 7.1

Esercizio

Esercizio


C++ array

A è stato definito come un array di interi di dimensione 300.

Non è detto che questo array sia sempre pieno n<m.

Non bisogna dunque confondere tra la dimensione dell’array ed il numero di elementi effettivamente presenti nell’array.

C++ array

  • Si osservi inoltre che se A e B sono due array è errato scrivere A=B.
  • Per copiare un array in un altro occorre scrivere un for che copi ogni elemento di B in A. Cioè:
    for(int i=0;i<n;i++)
    A[i]=B[i];
  • Una variabile di tipo array non può comparire da sola in un enunciato di assegnazione o in una espressione booleana

C++ array

Esercizi:

  • Calcolo della Conversione da decimale a Binario;
  • Letti da tastiera n numeri reali positivi, stampare il piu’ grande e il piu’ piccolo.

C++ array

Mostra codice

Sia V=[3,5,10,34,2,12,23,5] un vettore di interi.
Tenendo presente l'esempio,scrivere ciò che si ritiene che apparirà sul monitor

Mostra codice

Sia V=[3,5,10,34,2,12,23,5] un vettore di interi.
Tenendo presente l'esempio, scrivere ciò che si ritiene che apparirà sul monitor

C++ array

Mostra codice

Sia V=[3, 5, -10, -34, 2, 12 , 23, 5] un vettore di interi.
Inserire dei termini opportuni affinché sul monitor siano stampati solo i valori positivi

Mostra codice

Sia V=[3,5,-10,-34,2,12,23,5] un vettore di interi.
Inserire dei termini opportuni affinché sul monitor siano stampati in ordine inverso solo gli elementi di posto pari

C++ array

Mostra codice

Sia V=[3,5,-10,-34,2,12,23,5] un vettore di interi.
Inserire dei valori opportuni affinché sul monitor siano stampati solo i valori negativi scritti in ordine inverso

C++ array

Esercizi:

  1. Assegnato un vettore a di n interi, verificare che tutti i suoi elementi sono positivi
  2. Assegnato un vettore a di n interi, verificare che tutti i suoi elementi sono nulli
  3. Scrivere un programma che scriva tutti i numeri interi multipli di 3 e non di 7 inclusi tra 15 e 100 (utilizzare il ciclo while)
  4. Scrivere un programma che calcoli la somma di tutti i numeri interi pari inclusi tra 5 e 100 escludendo i multipli di 3 e 5 (utilizzare il ciclo while)
  5. Scrivere un programma che esegua la somma di tutti i numeri interi inseriti da tastiera finché tale somma non superi il valore di 150; dalla somma vanno esclusi i numeri che contengono la cifra 1
  6. Scrivere un programma che esegua il prodotto di tutti i numeri interi inseriti da tastiera finché tale prodotto non superi il valore di 15000; dal prodotto vanno esclusi i numeri che sono multipli di 3

I materiali di supporto della lezione

Esercizio 7.1

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion