Desenvolvimento - Visual Basic .NET
Usando Array no VB.net
Este artigo mostra as vantagens e a utilização de array em VB.net.
por Jonas ChavesO que são arrays?
As arrays são variaveis que armazenam suas informações em uma ou mais dimensões, cada coleção recebe um inteiro como identificador no qual mostrara o valor da array maquela posição. Isso é muito parecido com Matriz, seja ela uni-dimensional ou bi-dimensional.
As arrays são tambem conhecidas como de vetor ou lista caso seja uni-dimensional, ou Matriz quando a mesma for bi-dimensional.
Ao contrario da linguagem C em que a mesma aparece sendo usada como Lista, Pilha e Fila. Usamos em VB.net como Lista, não que não possamos usar como na linguagem C, uma vez que a funcionalidade se mantem, mais a forma como é tratada em nosso codigo é diferente visto que seguem uma estrutura diferente em cada situação.
Pilha
O primeiro que entra é o ultimo que sai, conhecido como FILO (first in last out) ou o ultimo que entra é o primeiro que sai LIFO (last in first out)
Fila
O primeiro que entra é o primeiro que sai, conhecido como FIFO (first in first out)
Lista
Pode ser retirado e inserido em qualquer posição não sendo necessario retirar os elementos de suas posições
Caso deseje usar estas estruturas como em C utilize as classes Stack e Queue
Queue = Quando desejamos trabalhar com Fila
Stack = Quando se deseja trabalhar com Pilha
Além das classes acima podemos usar as classes CollectionBase. Usada para se retornar um nome mediante a um Indice ou Chave. Alem de muitas outras classes que veremos mais a fundo em outra oportunidade.
Neste tutorial estaremos trabalhando com as Arrays como Lista, assim denominada quando a temos de forma uni-dimensional.
Para criarmos um array é simples:
Dim Nome(tamanho) as TextBox
Onde:
Tamanho = Quantidade de espaço alocado, ou seja o numero de elementos que formarão nossa array.
Nome = Nome da variavel. Pode ser Maria(tamanho), Jose(tamanho) etc...
Algumas pessoas em muitos sites citam as arrays como um mal desnecessario. Muitos chegam a dizer que não encontram utilidades na sua utilização.
Um exemplo bastante simples de ser mostrado e funcional seria na utilização das arrays quando trabalhamos com BD.
Imagine ter que ficar setando os controles, um por um, ninguem merece. Acho que por isso a medida que descobrimos os codigos acabamos querendo fazer tudo por ele, pois setar componentes do form alem de demorado é chato não acha ?
Uma alternativa para esse sofrimento seria utilizar um pequeno trecho de codigo que com certeza fara com que sua produtividade aumente bastante.
Uma vez feito podera adapta-lo em uma classe e adeus dor de cabeça.
Veja o seguinte trecho de codigo abaixo:
txtCelular.Text = vbNullString
txtCidade.Text = vbNullString
txtEndereco.Text = vbNullString
txtEmail.Text = vbNullString
txtCodID.Text = vbNullString
txtNome.Text = vbNullString
Não acha que seria mais facil utilizar a array e fazer da forma abaixo:
Dim txt(5) As TextBox = {txtCelular, txtCidade, txtEndereco, txtEmail, txtCodID, txtNome}
For i=0 to 5
txt(i).Text = vbNullString
Next
Agora imagine umas 30 caixinhas de texto. Se estivermos utilizando codigo puro a tendencia é usarmos esse loop para inserirmos dados, excluirmos dados, alterarmos dados de forma pratica e rapida. Sem contar que economizamos varias linhas de codigo.
Veja um exemplo de uma Rotina para mostrar os dados em nossos forms:
Private Sub Mostrar()
For i=0 to 30
Txt(i).Text = DataS.Tables(“Tbl_Cliente”).Rows(p)(i).ToString
Next
End Sub
Private Sub cmdPrimeiro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrimeiro.Click
p = 0
Call Mostrar()
End Sub
Array Dinamica
Um dos grandes problemas em se trabalhar com Arrays com tamanhos definidos é que a mesma passa a ser limitada, visto que o usuario não tem como exceder esse limite. Com isso utilizamos o ReDim que altera o tamanho da array em RunTime, mais não altera usa dimensão.
Para usarmos o ReDim procedemos da seguinte maneira:
Dim P As Integer = 0
Dim n() As String
Private Sub BtnArray_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
ReDim n(P)
n(P) = P "Atibui a array o valor do contador P
TextBox1.Text = n.Length "Mostra o tamanho de nossa array
P += 1 "Contador
End Sub
Ao utilizar o ReDim é muito comum utilizar Preserve após seu nome, isso porque cada vez que o ReDim é acionado nossa lista de array é apagada, e isso causara um erro ao nosso sistema.
Teste o exemplo abaixo em seu computador:
Dim n() As String
Dim p As Integer = 0
Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
ReDim Preserve n(p)
n(p) = "Jonas Chaves " & p
For i = LBound(n) To UBound(n)
ListBox1.Items.Add(n(i))
Next
p += 1
End Sub
Se voce retirar o Preserve e rodar sua aplicação vera que causara um erro.
Por este motivo que se faz necessario o uso do Preserve, exatamente para preservar o valor de nossos dados salvos em nossa array.
Array bi-dimensional
Alem de trabalharmos com array uni-dimensionais temos a necessidades de utilizarmos arrays com mais dimensões, seja ela com 1,2,3,4...n dimensões.
Sua utilização é bastante semelhante as arrays uni-dimensionais. Vejamos um exemplo de array bi-dimensionais
n(0, 0) = "Jonas"
n(0, 1) = "Joel"
n(1, 0) = "Joas"
n(1, 1) = "Joabe"
For Me.i = 0 To 1
For Me.p = 0 To 1
ListBox1.Items.Add(n(i, p))
Next
Next
As arrays uni-dimensional são muito semelhantes a forma como trabalhamos com o Excel. Sua posição é identica ao modo como localizamos a posição de um valor na cedula.
|
0 |
1 |
2 |
0 |
Jonas |
Joas |
Joel |
1 |
Jorge |
Joana |
Joelma |
0,0 = Jonas 0,1 = Joas 1,0 = Jorge 1,2 = Joelma
Se fossemos trabalhar com array tri-dimensionais usariamos o mesmo sistema, porem teriamos uma posição a mais.
Array dentro de Array
Uma outra possibilidade de se usar array seria a de ter uma array de array. Imagine que tivessemos duas arrays, uma de Nome Pessoa que contem o nome de 2 pessoas e outra de nome Idade que contem as idades dessas pessoas.
Em seguida imagine que seja necessario juntar as informações das 2 arrays numa so. Nesse caso não sera necessario criar um novo codigo ou fazer magica no mesmo. Basta apenas criarmos uma nova array bi-dimensional como no exemplo abaixo e atribuir a ela o valor das arrays Pessoa e Idade como abaixo.
Dim Pessoa() As String = {"Jonas", "Joel"}
Dim Idade() As String = {"10 anos", "30 anos"}
Dim NomeCompleto()() As String = {Pessoa, Idade}
Dim i, p As Integer
For i = 0 To 1
For p = 0 To 1
ListBox1.Items.Add(NomeCompleto(i)(p))
Next
Next
Ubound e Lbound
Além do ReDim um complemento utilizado na utilização das arrays é o Lbound e Ubound
O Lbound mostra o primeiro indice da array ou seja o menor indice que se encontra na mesma, ao contrario do Ubound que nos mostra o maior indice.
Com isso poderiamos utilizalos em um loop no qual saberiamos qual seria o indice inicial e final de nossa array
For i=Lbound(array) to Ubound(n)
ListBox1.Items.Add(n(i))
Next
Length
O length por sua vez nos voltara o tamanho de nossa array. Isso funciona da mesma forma que utlizamos para saber o tamanho do nome de uma pessoa.
Ex: Me.text = n.lenght
GetValue
O GetValue nos informa mediante ao índice passado qual o valor que aquela posição guarda.
Me.Text = n.GetValue(0)
Rank
Nos mostra o numero de dimensões de nossa array
Ex: Me.text = n.Rank
Clear
Usamos o clear para limpar nossa array o que por sinal deve ser feito para limparmos nossa memoria, após o uso do nosso aplicativo ou quando necessario.
Para que uso aconteça utilizamos a classe Array para executar esta tarefa.
Array.Clear(N,T,Y)
Onde:
N= Nossa array
T= Posição de onde ira começar
Y = Tamanho de nossa array
Veja que nos valores que deverão ser passados em T e Y poderiamos usar Ubound e Lbound.
Array.Clear(n, Lbound(n), Ubound(n))
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET