Arrays
Arrays
Arrays
Um array (matriz) é uma lista de valores onde todos os valores no grupo são referenciados pelo nome da matriz e o índice atribuído ao valor
específico na matriz. Um valor individual de um array é chamado elemento. Os arrays são criados na memória do computador e por isto
possui um bom desempenho no seu tratamento.
Cada elemento possui um número relacionado que é utilizado como índice da matriz. A referência usa o nome da matriz e o número entre
parênteses. Assim:
NomedoVetor(NúmeroDoElemento) - Ex: Vetor(1) - refere-se ao elemento que possui o índice 1.
Nota : No VB.NET não existe mais "option base" que você podia usar para alterar o valor do índice inicial de um array.
Existem mais de uma maneira de declarar um vetor unidimensional em VB.NET. Abaixo alguns exemplos
Nota: Redim somente pode ser usado a nível de procedure. Não pode ser usado em módulo ou classe.
A utilização de arrays é muito importante e facilita em muito o trabalho de programação. Usando arrays podemos facilmente armazenar e
exibir dados em tabelas usando um laço FOR/NEXT.
Para criar um array na memória precisamos declarar o array como fazemos com qualquer outra variável. Geralmente usamos a declaração Dim
para declarar um array que é tem visibilidade local. Podemos usar os modificadores Private, Public e Friend e alterar o nível de escopo de
visibilidade do array.
Quando um array é declarado é alocado um espaço de armazenamento na memória e os elementos são iniciados. Elementos numéricos são
iniciados para zero e um array de elementos strings (alfanuméricos) são iniciados para uma string vazia.
Exemplo:
Dim strNomes(25) As
Declara um array do tipo String com 26 elementos
String
Private Quantidade(10)
Declara um array do tipo Integer com 11 elementos
As Integer
Você pode também declarar arrays e atribuir valores para os elementos. Assim :
Nesta declaração estou criando um array do tipo String com 5 elementos . Os valores de
cada elemento são incluídos entre Colchetes. Embora não tenhamos referenciado o
número de cada elemento, temos que Materias(0) refere-se a Matemática , e assim por
diante.
Se tentarmos acessar um elemento usando um número que não esta atribuído a nenhum elemento iremos obter um erro. No exemplo acima se
tentarmos acessar um suposto elemento com índice 6 : Materias(6) iremos obter a seguinte mensagem de erro :
Os arrays são processados usando laços (loops) e o laço FOR/NEXT , como já foi dito anteriormente pode ser usado com este intuito. Além do
laço FOR/NEXT o VB .NET fornece o laço - For Each/Next. A vantagem do deste laço é que você não precisa manipular o índice.
Embora o loop For Each...Next seja similar o loop For...Next ele executa um bloco de declaração para cada elemento na coleção ao invés
de especificar um número de vezes. A sintaxe é :
Module Module1
Sub Main()
Dim Materias() As String = {"Matematica",
"Geografia", "Física", "Química", "Inglês"}
Dim nome As String
For Each nome In Materias
Console.WriteLine(nome)
Next
Console.ReadLine()
End Sub
End Module
Para iniciar todos os elementos de um array com um valor podemos fazer como no código abaixo onde atribuímos o valor zero a todos os
elementos do array Quantidade.
Module Module1
Sub Main()
Dim Quatidade(25) As
Integer
Dim i as integer
For Each i In
Quantidade
i = 0
Next i
End Sub
End Module
A seguir irei relacionar as principais propriedades e métodos da classe array . Sua utilização permite um tratamento avançado e eficaz.
Propriedades
Métodos
Clear Define o intervalo dos elementos de um array para zero, para false ou para null.
Clone Cria uma copia do array.
Copy Copia a seção de um array para outro array e realiza o casting e o boxing requerido
CopyTo Copia todos os elementos de array de uma dimensão para outro array.
CreateInstance Inicializa uma nova instância da classe array.
Equals (herdado de Object) Determina se duas instâncias de objetos são iguais.
GetLength Obtém o numero de elementos de uma dimensão especificada de um array.
GetLowerBound Obtémo menor indice inferior da dimensão especificada em um array
GetType (herdado de Object) Obtémo tipo da instância atual
GetUpperBound (Equivale ao UBound do VB6) Obtémo indice superior da dimensão especificada em um array
GetValue Obtém o valor de um elemento definido no array.
IndexOf Retorna o indice da primeira ocorrência de um valor em um array de uma dimensão.
Initialize Inicia cada elemento de um array chamando o construtor padrão.
Reverse Reverte a ordem dos elementos de um array de uma dimensão.
SetValue Define o elemento especificado em um array para um valor definido.
Sort Ordena os elementos de um array de uma dimensão.
ToString (inherited from Object) Retorna uma string que representa o objeto atual.
Podemos comparar um array com a palavra-chave nothing para ter certeza de que o array não esta inicializado. O código é o seguinte:
Vejamos a seguir um exemplo de utilização de arrays para armazenar valores em um programa VB .NET.
1-) Inicie um novo projeto no VB.NET do tipo Windows Application e no formulário padrão insira os controles :
Try
Else
MessageBox.Show("Numero
atribuido a equipe esta incorreto
(Informe de 1 a 5).", _
"Dados informados inválidos", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
End If
Catch
MessageBox.Show("Informe o número da
equipe e o valor das vendas.", _
"Dados informados inválidos", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
End Try
End Sub
lstRelacao.Items.Clear()
Com este exemplo espero ter deixado claro como um array de uma dimensão é declarado e utilizado. E por falar em uma dimensão vamos
falar agora de arrays com mais de uma dimensão.
Arrays Multidimensionais
Um array com mais de uma dimensão pode ser representado por uma matriz com linhas e colunas. Abaixo temos uma figura que representa
uma matriz do tipo 3 por 3 ; três linhas e 3 colunas. A declaração de um array com mais de uma dimensão
Podemos usar um array com duas dimensões para representar a matriz acima. A declaração do array seria feita da seguinte forma:
Dim Vetor(2,2) para atribuir os valores para o array podemos fazer:
Dim values(,) As Integer = { {100, 200, 300}, {250, 180, 140} , {160, 80, 135}}
Dim values(,) As Integer = { _ Declara um array com três dimensões com 12 elementos :
{{1, 2, 3}, outra forma de ver o vetor seria:
_
{4, 5, 6}}, Dim values(,) As Integer = { {{1, 2, 3}, {4, 5, 6}}, {{7, 8, 9},
_ {10, 11, 12}}}
{{7, 8, 9},
A matriz que representaria o array é:
_
{10, 11, 1 2 3
12}} _
4 5 6
}
7 8 9
10 11 12
Dim Vetor(,,,) Declara um array de quatro dimensões
Dim Vetor(3,3,3,3) Declara um array de quatro dimensões
Abaixo temos a declaração de um array de três dimensões ;em seguida usamos a declaração Redim para declarar o tamanho do array e em
seguida atribuímos valores elementos do array usando laços For/Next:
Dim Vetor( , , ) as
Integer
ReDim Vetor(5,5,5)
For x = 0 to 4
For y = 0 to 4
For z = 0 to 4
Vetor(x,y,z)
=x+y+z
Next
Next
Next
Vou mostrar agora um exemplo de como podemos usar trabalhar com um array de mais de uma dimensão.
Vamos supor que você tenha uma tabela com os dados das vendas de produtos e que você gerou um array com duas dimensões de 2000 por
10.(Temos 2000 produtos e 10 regiões). Vou chamar este array de Produtos e a declaração para criar este vetor poderia ser feita assim:
O array contém o número de produtos vendidos ( uma linha para cada produto) por região (uma coluna por região).
Cada elemento do array - Produtos - irá representar a quantidade vendida do produto para uma região definida.
Nosso objetivo será calcular o Total de cada produto vendidos para todas as regiões e o total de produtos vendidos por região.
Para armazenar o valor total de produtos vendidos para todas as regiões eu vou criar o array - TotalProdutoRegiao . Cada elemento deste
array conterá a soma de cada produto para todas as 10 regiões.A declaração do array é feita assim:
Para armazenar o total de vendas de todos os produtos para cada região criarei o array - TotalProdutosPorRegiao . Cada elemento deste
array conterá a soma de todos os produtos vendidos para uma região.A declaração do array é feita assim:
A matriz que representará o array pode ser representada como abaixo. Representamos também dois vetores que vamos usar para fazer a
totalização de produtos e produtos vendidos por região.
Produtos TotalProdutoRegiao
1,1 1,2 ... ... 1,10 1
2,1 2
3,1 ...
... ...
2000,1 2000,10 2000
1 2 ... 10
TotalProdutosPorRegiao
'soma as colunas
TotalProdutosPorRegiao(intColuna) += Produtos(intLinha, intColuna)
Next
Next
O código acima leva em conta que o array Produtos tenha sido inicializado com os valores de uma tabela e pode ser usado para calcular os
totais alimentando os arrays declarados para este fim.
No caso cima temos 10 entradas , sendo que cada uma é um array de inteiros.
Podemos também inicializar um array de array quando o declaramos , embora isto seja um tanto mais complexo que iniciar um array comum.
Para isto precisamos criar um array de objetos para cada entrada.
Um exemplo prático para este tipo de array seria a possibilidade de criar um array dos meses do ano onde cada mês possui um número
diferente de dias. O código abaixo faz exatamente esta declaração:
For Mes = 0 To 11
Dias = DateTime.DaysInMonth(Year(Now), Mes) 'Pega o número de dias do mes.
Vendas(Mes) = New Double(Dias - 1) {} 'Atribui um array para o mes.
Next Mes
Arrays de objetos
A classe array não tem o seu próprio construtor de forma que você não pode criar um array de objetos do princípio. Você pode usar o método
CreateInstance para criar um array de um tipo específico. Este método possui muitas versões que podemos usar vejamos um exemplo:
A declaração acima cria um array de strings com três dimensões. A primeira dimensão tem 3 elementos , a segunda também 3 e a terceira 10
elementos. Totalizando 90 elementos com indice de (0,0,0) a (2,2,9).
Com isto podemos criar um array e preenchê-lo com outros arrays de diferentes tipos.
Por ora acabei, voltarei ao assunto array em outro artigo. Até lá...
Quer aprender C# ??
Referências: