Você está em: Principal › Tutoriais › Herbertgois : Programandovbnet017
Imagine que você tem que armazenar as faltas cometidas por cada jogador de um time em uma partida de futebol. Você precisaria armazenar o nome e o número de faltas que cada jogador cometeu. Como faria para armazenar isso em variáveis? Provavelmente você teria que declarar duas variáveis para cada jogador, uma para armazenar o nome e outra o número de faltas, chagando facilmente a 22 variáveis, isso, se não houver nenhuma substituição. Neste tutorial vamos aprender como gerenciar esse tipo de informação.
Arrays são usados para gerenciar grande quantidade de informação. Como variáveis, você precisa declarar seus arrays antes de usá-los. Os arrays também respeitam as mesmas regras de escopo que as variáveis, ou seja se declaradas dentro de procedimentos, ficam disponíveis apenas para o procedimento em questão.
3 - Altere a propriedade Text do Button1 para Inserir Jogadores.
4 - Altere a propriedade Text do Form1 para Arrays.
5 - Organize-os como a figura abaixo:
6 - Na janela Solution Explorer clique no botão View Code para ir para o Painel de código.
7 - Digite dentro da classe do Form1 o seguinte código:
Dim Jogadores(10) As String
Nesta linha declaramos um Array de tamanho fixo. Perceba que a declaração é bem semelhante a de uma variável, com exeção do (10). O array que criamos é como uma tabela com 11 linhas, isso porque o array começa sempre no 0 e acaba no número que especificamos, no caso 10, o suficiente para armazenar o nome do time inteiro, 11 jogadores.
8 - Na janela Solution Explorer clique em View Designer para voltar para o Form1 no modo Design, você pode também clicar na aba Form1.vb[Design] ao lado da aba Start Page, à essa altura do curso você ja deve estar familiarizado com o Visual Studio.
9 - De um clique duplo sobre o Button1 e digite o seguinte código:
Jogadores(0) = "Marcos"
Isso insere "Marcos" na primeira linha do Array, se colocassemos 6 ao invés de 0, por exemplo, seria na linha 7.
10 - Mude a propriedade Text do Button2 para Visualizar.
11 - De um clique duplo sobre o Button2 e digite o seguinte código:
ListBox1.Items.Add(Jogadores(0))
Isso insere na ListBox1 o conteúdo da primeira linha do array Jogadores, se colocassemos 6, exibiria o conteúdo da linha 7, lembre-se que de que todo array começa com 0, obrigatoriamente.
TextBox1.Text = Jogadores(0)
12 - Volte para o código do procedimento do Button1.
13 - Substitua o código pelo seguinte:
Dim Mensagem, Jogador As String
Mensagem = "Digite o nome do jogador"
For i = 0 To UBound(Jogadores)
Jogador = "Jogador " & (i + 1)
Jogadores(i) = InputBox(Mensagem, Jogador)
Com este código vamos solicitar ao usuário que digite o nome dos 11 jogadores. Para isso fazemos um loop que vai de 0 até o total de itens no array.
Como sabemos que o Array possui 11 linhas poderia ter usado o seguinte código, que seria mais simples:
No entando a técnica que utilizamos é mais flexivel por prever que o array pode aumentar.
Agora temos que mudar o código que exibe os dados também, para que possa exibir todos os dados cadastrados.
14 - Mude o código do Button2 pelo seguinte:
ListBox1.Items.Add(Jogadores(i))
Aqui usamos o loop For também para passar por cada item do Array e adicioná-lo no ListBox1.
Lembrando que a cada passada pelo For o i assume de uma linha do array até chegar ao final.
15 - Execute a aplicação.
16 - Clique no botão Inserir Jogadores.
Aparece uma caixa pedindo para que digite o nome do Jogador 1.
17 - Digite um nome para o Jogador 1 e clique em OK.
Ele pede para inserir o nome do Jogador 2.
18 - Digite um nome para o Jogador 2 e clique em OK. Faça isso para os 11 jogadores.
19 - Clique no botão Visualizar.
Jogadores(10) = "Robinho"
20 - Altere o código que declar o Array para o seguinte:
Dim Jogadores(10, 1) As String
Isso cria um Array com 11 linhas e 2 colunas. Um Array pode ter várias colunas.
21 - Localize no procedimento do evento do Button1, o seguinte código:
22 - Mude-o para o seguinte:
Jogadores(i, 0) = InputBox(Mensagem, Jogador)
Isso apenas indica que vamos adicionar o nome na linha que o loop indicar, na coluna 1, lembrando que os Arrays sempre iniciam com indice 0.
23 - Mude a propriedade Text do Button3 para Adicionar Faltas.
24 - Dê um clique duplo sobre o Button3 e digite o seguinte código:
Mensagem = "Digite as faltas do " & Jogadores(i, 0)
Jogadores(i, 1) = InputBox(Mensagem, "Faltas")
Isso é semelhante ao código do Button1, com algumas modificações, como as mensagens que serão inseridas, a cada loop vamos exibir o nome do jogador que esta recebendo os dados das faltas, a linha de código responsável por isso pe a seguinte:
Note que agora atribuimos os valores à segunda coluna, como mostra o código:
Agora precisamos mudar o código do button2, que exibe os dados.
25 - Mude o código do Button2 para o seguinte:
ListBox1.Items.Add(Jogadores(i, 0) & " - Total de faltas: " & Jogadores(i, 1))
O que fizemos foi concatenar os dados da coluna 1 com os da 2.
26 - Execute sua aplicação:
27 - Clique no botão Inserir Jogadore e adicione o nome dos 11 jogadores.
28 - Clique no botão Adicionar Falta e adicione um número de faltas para cada jogador.
29 - Clique no botão Visualizar.
Como você sabe bem, tanto em um jogo de futebol, como em muitas outras situações, nós não sabemos com certeza o número de linhas que iremos precisar no nosso Array. Em um jogo de futebol podem haver até 3 substituições, o que aumentaria em 3 o número de linhas no nosso Array. No entanto, não é certeza que o treinador fará as 3 substituições que lhe cabem por direito.
Para esse tipo de situações, o Visual Basic oferece um Array especial, conhecido como Array Dinâmico. Um Array Dinâmico pode ser redimencionado durante a execução do programa.
Para se criar um Array Dinâmico você precisa de alguns cuidados extras.
1 - Declare o Array Dinâmico sem especificar o número de elementos, como no seguinte exemplo:
Dim Jogadores() As String
2 - Antes de inserir dados no seu Array Dinâmico você precisa saber qual será o tamanho dele, você deve implementar código para isso, como por exemplo, uma caixa de diálogo que pergunta ao usuário quantos jogadores participaram da partida.
3 - Use o comando Redim para redimencionar seu Array em tempo de execução, usando para isso a informação do número de elementos que descobriu.
ReDim Jogadores(13)
Você não pode usar o Redim para mudar o tipo de dados do seu array, isso não é possível.
Atenção quando usar o Redim. Lembre-se que o Array começa com 0.
Agora você já pode usar normalmente seu Array.
Vamos implementar um Array Dinâmico no nosso exemplo.
30 - Mude a declaração do Array Jogadores para o seguinte:
Dim Jogadores(,) As String
Usamos a virgula porque nosso Array possui duas colunas. Perceba que não especificamos o número de linhas, nem o número de colunas. Com isso atendemos a regra 1 sobre os Arrays Dinâmicos.
31 - Para atender a regra 2, descobrindo quantas linhas serão necessárias vamos implementar no nosso programa mais uma caixa de diálogo que pergunta quantos jogadores participaram do jogo, para isso altere o código do Button1 para o seguinte:
Dim NumeroJogadores As Integer
NumeroJogadores = InputBox("Digite o número de jogadores que participou da partida", "Jogadores")
ReDim Jogadores(NumeroJogadores - 1, 1)
Tudo que fizemos foi criar uma variável do tipo integer que armazena o número de jogadores que participaram da partida. Adicionamos a essa variável o número digitado na caixa de diálogo através da seguinte linha de código:
Neste ponto sabemos o número de jogadores então usamos o Redim para redimencionar o array. Perceba que passamos como número de linhas o número de jogadores menos 1, isso porque a primeira linha do array é sempre 0, se não fizessemos isso e o usuário digitasse 2 por exemplo, teriamos 3 linhas no array, a 0, 1, 2. Como sabemos que o número de colunas desejado é 2, colocamos 1 no Redim.
32 - Execute sua aplicação.
33 - Clique em Inserir Jogadores.
Agora, antes de exibir a caixa que pergunta o nome dos jogadores, aparece a seguinte caixa perguntando a quantidade. Digite a quantidade e clique em OK.
O restante da aplicação funciona normalmente, só que agora com o número de jogadores informado.
Uma observação importante, é que quando você executa o Redim o que estiver armazenado no seu array é perdido. Dependendo das necessidades do seu programa isso pode lhe trazer muitas dores de cabeça. Para solucionar esse problema, você pode usar o Redim Preserve, que mantém os dados do array mesmo depois do seu redimensionamento.
O seguinte exemplo ilustra o uso do Redim Preserve:
Declaramos um array que pode armazenar 11 jogadores, no entando agora precisamos armazenar 13, só que sem perder o nome dos jogadores que já estão armazenados. Para isso usamos o Redim Preserve como se segue:
ReDim Preserve Jogadores(12)
O problema com o Redim Preserve é que se temos um Array com duas dimensões, como o seguinte exemplo:
Dim Jogadores(10,1) As String
Só podemos redimencionar o tamanho da última dimensão, ou seja, só podemos mudar o número de colunas.
Para finalizar o assunto Arrays, vamos apenas enteder o que é LBound e UBound.
Lembre-se que durante nossos exemplos usamos o UBound, junto com o Loop For, como se segue:
O Ubound como você pode perceber sempre retorna o número máximo de registros que podem ser armazenados no Array iniciando em 0. O LBound retorna o número mínimo, geralmente 0. A sintaxe dos dois são:
UBound(NomedoArray)
LBound(NomedoArray)
Lembre-se que Arrays são usados para gerenciar grande quantidade de informação, como variáveis, você precisa declarar seus arrays antes de usá-los. Os arrays também respeitam as mesmas regras de escopo que as variáveis, ou seja, se declaradas dentro de procedimentos, ficam disponíveis apenas para o procedimento em questão.