Tecnologia do Blogger.

Localizar

sábado, 6 de março de 2010

Arrays no VB.Net


ARRAY 

INTRODUÇÃO
    Durante o desenvolvimento de um sistema, nos deparamos em alguns momentos com a necessidade de armazenar na memória do computador cadeias de valores para o processamento dos dados. 
    Um exemplo dessa necessidade seria: O calculo de tributação de notas fiscais, onde precisamos freqüentemente acessar no banco de dados os valores de tributação para calculo de ICMS de determinado estado (UF Unidade Federativa). Para executar essa operação poderíamos armazenar o valor da tributação de todos os estados na memória do computador evitando acesso excessivo ao banco de dados diminuindo o trafego da rede. Claro que para fazer este armazenamento não precisamos criar uma variável para cada UF e sim somente criar uma array. 



    O QUE É UM ARRAY

    Uma array ou matriz nada mais é do que uma lista de elementos (valores) que são armazenados na memória do computador (uso run time). Por serem armazenados na memória do computador possuem um bom desempenho no seu uso.
    Segundo o Wikipedia, uma matriz é uma tabela de m x n símbolos sobre um corpo F, representada sob a forma de um quadro com m linhas e n colunas e utilizado, entre outras coisas, para a resolução de sistemas de equações lineares e transformações lineares.



    Para fazer o acesso de um elemento de um array usa-se uma notação bem similar ao da matemática, onde é escrito o nome da matriz seguido do  índice numérico ao qual valor pertence.
    Ex.: Nome da Array (Índice Númerico)
    Obs.: vale lembrar que em VB.Net uma array é indexada sempre a partir de zero

    DECLARANDO UMA ARRAY

    A declaração de uma array é feita de forma similar a de uma objeto qualquer em VB.Net.
    Ex.: Dim NomeVariavel AS Type() = New Type(N) {Elemento1 .. ElementoN}
    Type é o tipo da array (Não se esqueça do parênteses, isso que caracteriza o tipo como sendo uma array). No modelo observe que a array foi instanciada no ato da declaração. Isso não precisa ser feito dessa maneira, mas a array deve sempre ser instanciada antes de ser usada.
    N é o tamanho da array. Se informar quatro indica que haverá cinco elementos. Isso acontece por que a array é indexada a partir de zero.

    Exemplo:


    Obs.: Uma variável tipada é quando seu valor tem de possuir uma característica bem definida. Ou seja quando uma variável declarada como Integer jamais poderá receber um Float. A maior vantagem de uma variável tipada é a prevenção de erros de visto que esta variável não poderá receber valores inválidos.

    PRINCIPAIS PROPRIEDADES DE UMA ARRAY

    Para acessar uma propriedade de uma array é preciso escrever o nome da array seguido do nome de sua propriedade.

    • Length : Obtém o número de elementos em todas as dimensões da array.
    • IsFixedSize : Quando True indica que o array terá um nome fixo.
    • IsReadOnly : Quando True indica que a array não poderá ter seu valor modificado.
    • IsSynchronized : Quando True indica se o acesso ao array é sincronizado.
    • Rank : Obtém o número de dimensões de uma array.
    • SyncRoot : Obetém um objeto que pode ser usado para sincronizar o acesso à array.

    PRINCIPAIS METODOS DE UMA ARRAY

    Os métodos usados são de declaração estática “shared”, isso indica que sua utilização deve ser feita a partir da declaração da classe e não da instancia do objeto. A seguir segue-se os métodos e suas utilizações.

    Clear
    Limpa o conteúdo de uma array atribuindo o valor nothing para todos os elementos indicados.
    Possui três parâmetros: Primeiro Array (Variavel do tipo básico array que se pretende limpar); Segundo Index (Valor do tipo inteiro que informa o indice inicial para se executar a limpeza) e Terceiro Length (Quantidade de elementos do array que serão zerados a partir do index)

    Exemplo:


    Observe que o array é criado contendo cinco elementos devidamente preenchidos. Na linha de baixo (linha 7) é executado o clear iniciando do elemento de índice dois como na instrução do segundo parâmetro e terminando no índice três limpando somente dois elementos como o solicitado no terceiro parâmetro.

    Clone

    Cria uma cópia do array não mantendo a referência ao objeto copiado.

    Exemplo:


    Na linha cinco é instanciada a primeira a array e na linha seguinte é somente feita a declaração da array que receberá a cópia daquela que foi instanciada. Observe que uma vez que o comando clone foi executado todos os valores são copiados para a segunda variável declarada. Na linha dez é executado um clear na array instanciada na linha cinco o que comprova a inexistência de uma referencia ao objeto.
    Obs.:Objetos por referência são aqueles que apesar de possuírem declarações distintas, ou seja nomes de variáveis diferentes, indicam uma mesma posição de memória. Isso acontece quando se usa uma variável para receber um objeto diretamente. Exemplo VarObject = txtEditNaTela.

    Copy

    Executa a cópia dos elementos de uma array para outra. Neste método é feita a cópia somente dos elementos.

    Exemplo:



    Primeira observação a ser feita neste exemplo é que a array de destino dos valores deve ser instanciada e dimensionado antes de ser usada no método. Os quatro parâmetros são: primeiro sourceArray (array onde estão os valores que se deseja copiar); segundo sourceIndex (índice inicial de onde serão retirados os valores); terceiro destinationArray (array para onde os dados dos elementos serão copiados); quarto destinationIndex (índice inicial para onde os elementos serão copiados) e quinto Length (quantidade de elementos que serão copiados a partir do índice indicado no segundo parâmetro).
    O parâmetro length não pode ser maior que a quantidade de elementos disponíveis na primeira e na segunda array menos o índice inicial.

    CopyTo

    Copia todos os elementos de uma array unidimensional para outro array. Funciona de forma similar ao tópico anterior.

    CreateInstance

    Função que retorna uma instancia de uma array com o tipo definido no parametro. Observe que esta função é uma maneira diferente de se instanciar uma array, outra maneira é usando new Type(Length) {} como o apresentado nos tópicos anteriores.


    Equals

    Determina se duas instancias de objeto são iguais.

    Exemplo:


    Observe que no primeiro exemplo apesar das variáveis serem instanciadas com o mesmo valor o resultado da operação equals é false enquanto no segundo exemplo a atribuição direta das variáveis faz com que o resultado seja true. Isso acontece por que é avaliada a referência do objeto e não os valores a ele atribuídos.

    GetLength

    Retorna o número de elementos de uma dimensão especificada no segundo parâmetro.

    Exemplo:


    GetLowerBound e GetUpperBound

    Obtém o menor e maior índice de uma dimensão especificada. GetUpperBound equivale a função UBound.

    Exemplo:


    GetValue e SetValue

    Obtém um valor de um índice definido do array. É o mesmo que executar a seguinte linha de comando.

    Exemplo:


    Observe que foram usadas duas maneiras para se atribuir e verificar o valor de um array.
    As maneiras mais comuns são as encontradas nas linhas onze e dezessete.

    IndexOf

    Retorna o índice da primeira ocorrência de um valor em uma array.

    Exemplo:



    Reverse e Sort

    São rotinas de ordenação de elementos da array.

    Exemplo:


    No momento da declaração da variável os elementos são atribuídos de forma desordenada, na sequência é feita uma ordenação de ordem crescente e depois em ordem decrescente.