Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
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

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93