ARRAY, FOR E FOREACH

Oltre alle istruzioni già viste nei precedenti articoli, un buon programmatore deve anche conoscere e saper usare le principali raccolte di oggetti, le collections. Tra questi uno dei più importanti e più storico è l’array, cioè un insieme indicizzato di elementi, e più esattamente può essere definito come una struttura sequenziale di oggetti. Proprio per questo motivo, è importante sapere che gli array sono considerati di tipo reference type. Un’altra caratteristica fondamentale è che il primo valore dell’array ha indice 0, perciò se nell’array sono presente n valori, l’ultimo avrà indice n-1. Ciò potrebbe creare confusione quando si inizializza l’array all’interno del programma, infatti VB.NET richiede che sia indicato l’ultimo indice, perciò n-1, mentre il linguaggio C# richiede che sia indicato il numero di elementi presenti nell’array, perciò n. La sintassi dell’inizializzazione però non è molto differente, vediamo ora degli esempi

// VB.NET

Dim Lunghezza As Integer = 100
Dim ListaNumeri (Lunghezza - 1) As Integer

// C#

int Lunghezza = 100;
int[] ListaNumeri = new int[Lunghezza];

Grazie a questo codice sono stati creati i due array che possono contenere 100 valori, ma tali valori ancora non sono stati allocati. L’array, al momento vuoto, deve essere riempito. Per farlo è possibile utilizzare un’istruzione di ciclo come il Do Loop vista nei precedenti articoli. Come abbiamo detto però, il Do Loop nonostante sia molto versatile, non sempre risulta essere l’istruzione più corretta da usare. Per il riempimento dell’array infatti risulta essere più veloce e semplice l’istruzione For. Vediamo ora gli esempi nei due codici

// VB.NET

Dim Indice = 0
For i As Integer = 1 To 100
 ListaNumeri(Indice) = i
 Indice += 1
Next

// C#

int Indice = 0;
for (int i = 1; i <= 100; i++)
{
  ListaNumeri[Indice] = i;
  Indice += 1;
}

Entrambi i codici riempiono gli array con i primi 100 numeri interi. In entrambi i linguaggi, quando si inizializza questa istruzione si deve specificare qual è il valore di partenza e il valore finale. Fino a quando quest’ultimo valore non viene raggiunto, le operazioni all’interno dell’istruzione saranno eseguite iterativamente. Inoltre il linguaggio C# richiede anche di specificare da subito il passo di incremento dell’indice dell’istruzione, mentre in VB.NET tale passo è di default 1 (ovviamente anche in questo caso si può modificare la lunghezza dell’incremento).

A questo punto l’ultima cosa da fare è visualizzare gli elementi presenti all’interno dell’array. Per fare ciò si utilizza un’altra istruzione, il For Each, che permette di eseguire iterativamente delle istruzioni per ogni valore presente in una collection. Anche in questo caso la sintassi dei due linguaggi non è molto differente:

// VB.NET

Dim Indice As Integer = 0
For Each Valore As Integer In ListaNumeri
 Me.RichTextBox1.AppendText("Indice corrente: " & Indice & ", valore: " & Valore & Environment.NewLine)
 Indice +=1
Next

// C#

int Indice = 0;
foreach (int Valore in ListaNumeri)
{
  this.richTextBox1.AppendText("Indice corrente: " + Indice + ", valore: " + Valore + 
Environment.NewLine);
  Indice += 1;
}

Come già detto la sintassi di queste due istruzioni è molto simile, infatti in entrambi i casi è richiesto di specificare il tipo dell’indice che scorrerà all’interno della collection.

N.B. Unendo i programmi usati come esempio in questo articolo, sarà possibile creare un’applicazione che permette di calcolare la media dei primi 100 numeri interi. L’applicazione però deve essere completata con un’altra istruzione foreach che permette di calcolare la vera e propria media. Si ricorda che a questo scopo è preferibile utilizzare l’algoritmo di Knuth illustrato in un precedente articolo.

Lascia un commento

Progetta un sito come questo con WordPress.com
Comincia ora