PROGRAMMIAMO
VB - Vettori e funzioni

Passaggio di un vettore come parametro di una funzione

In VB si può passare un intero vettore come parametro di una subroutine o di una funzione. Il passaggio avviene sempre per riferimento, cioè il sottoprogramma riceve in ogni caso il vettore originale e non una sua copia (qualsiasi modifica effettuata sul parametro della funzione si ripercuote sul contenuto del vettore originale).

Si consideri ad esempio la seguente funzione che trova il valore più grande fra quelli contenuti in un vettore di interi. Si noti come viene dichiarato il parametro A: si tratta di un vettore e non di una semplice variabile e dunque bisogna accompagnarne il nome con le parentesi tonde vuote.

Function Trovamax (A() As Integer) As Integer

Dim Max as Integer, I as Integer

For I=Lbound(A) to Ubound(A)

If A(I) < Max Then
Max = A(I)
End IF

Next I

Trovamax = Max

End Function

Naturalmente la funzione lavora correttamente solo se il vettore è completamente "pieno". Se invece non tutti gli elementi contengono valori validi, bisogna passare alla funzione anche il valore dell'indice massimo del vettore.

 

Vettori come valori di ritorno di una funzione

In VB una funzione può restituire come risultato un intero vettore. Per esempio la seguente funzione Lettere torna un vettore di stringhe contenente le lettere dell'alfabeto in ordine crescente (il numero di lettere è specificato dal parametro QuanteLettere).

Function Lettere(QuanteLettere As Integer) As String()

Redim Ris(QuanteLettere-1) As String
Dim Cnt as Integer

For Cnt = 0 to QuanteLettere-1

Ris(Cnt) = Chr(Asc("A")+Cnt)

Next Cnt

End Function

Si noti la dichiarazione di Lettere come As String() con le parentesi tonde: significa appunto che il risultato della funzione è un vettore di stringhe. La funzione Asc restituisce il codice Ascii di un dato carattere; la funzione Chr, al contrario, converte un codice Ascii in un carattere.

La funzione Lettere dev'essere chiamata per esempio così:

Dim Caratteri() as String

Caratteri() = Lettere(21)

Si noti che Caratteri è stato dichiarato come vettore dinamico: viene ridimensionato automaticamente alla chiamata della funzione (in questo caso con 21 elementi, numerati da 0 a 20).

 

precedente

Sito realizzato in base al template offerto da

http://www.graphixmania.it