Trabalhando com Arrays

Neste artigo abordaremos Arrays, que é uma estrutura de dados muito importante dentro do conceito de qualquer linguagem de programação, por isso é fundamental ter os conceitos de arrays bem claros. Além disso, saber declara-los, manipula-los entre outras coisas fundamentais para o uso de arrays se torna bastante importante, e isso é o que veremos no artigo de hoje.

Introdução

O tipo array é uma matriz de valores, tudo do mesmo tipo, portanto seria como se tivéssemos vários elementos dentro de uma variável, que pode ser apenas de um tipo. O array é sempre declarado pelo programador, escolhendo seu tipo e o número máximo de elementos que podem caber dentro de um array. O array pode ser acessado através de um índice, permitindo assim a sua manipulação.

Devemos salientar que em c# o primeiro elemento de um array é sempre zero.

Nosso contato inicial com array já se dá logo no inicio de um programa em c#. Os argumentos que são passados pela linha de comando que chama o programa podem ser armazenados em um array do tipo String. Como exemplificamos abaixo:


using System;
 public class ArrayExemplo
 {
  public static void Main(string[] args) //repare o uso de arrays
  {
  Console.WriteLine(“teste”);
  }
 }
Listagem 01. Uso de arrays na função Main()

Declarando e Atribuindo Valores

A declaração de um array é muito simples. Existem diversas formas de declarar arrays em c#, a primeira delas exemplificamos abaixo usando colchetes antes do nome da variável e atribuindo de maneira imediata os valor que esse array conterá. Como podemos ver abaixo:


using System;
 public class ArrayExemplo
 {
  public static void Main(string[] args) //repare o uso de arrays
  {
  Console.WriteLine(“teste”);
  string[] Linguagens = {“C#”,”C”,”Pascal”,”Python”};
  for (int i=0;i 
 Console.WriteLine(“Linguagens[{0}] = {1}”,i,Linguagens[i]);
  }
  }
 }
Listagem 02. Declarando arrays

Note que no exemplo acima o nosso array possui tamanho 3, ou seja, de 0 até 3, com C# valendo zero, C valendo um, Pascal valendo dois e Python valendo três.

Para atribuir valores a um array, fazemos de duas formas: a primeira delas atribuímos um valor especifico a cada elemento do array, e uma outra possibilidade, e mais usada, é atribuir valor a um array usando-se um loop.

Atribuindo-se um valor especifico a cada elemento do array pode ser usado o método apresentado no exemplo da Listagem 2. Em que se atribui de modo imediato o valor para cada índice do Array.

Para fazermos a atribuição de valores a um array através de um loop, poderíamos usar o for, por exemplo, como podemos ver no exemplo abaixo:


using System;
 public class ArrayExemplo
 {
  public static void Main(string[] args) //repare o uso de arrays
  {
  int[] numeros = new numeros[3];
  for (int i=0;i<3;i++) {
  numeros[i] = i+1;
  }
  }
 }
Listagem 03. Atribuindo valores através de um loop

Ainda neste exemplo podemos ver mais uma forma de declaração de um array, onde precisamos especificar o tamanho total do array, sempre lembrando que o primeiro elemento é sempre zero no índice do array.

Arrays Multidimensionais

Arrays multidimensionais são apenas uma extensão de arrays que possui uma única dimensão. Permite-se nos arrays multidimensionais o armazenamento de informações através de mais de um índice. A declaração de um array multidimensional é bastante simples, como podemos observar no exemplo abaixo:


int [,] ArrayMulti;
 ArrayMulti = new int[5,3];
Listagem 04. Declarando um array Multidimensional

Observamos agora que temos uma matriz, com os valores na linha indo de 0 a 5 e os valores na coluna indo de 0 a 3. Poderíamos então armazenar elementos nas posição [0,0], [0,1], [0,2], [0,3], [1,0], [1,1]... e assim sucessivamente.

Salientamos também que em arrays multidimensionais também podemos inicializa-lo de forma imedianta como fazíamos com arrays de uma única dimensão. Para uma melhor compreensão vejamos o exemplo abaixo:


int [,] ArrayMulti = new int[,] {{1,2,3}, {4,5,6}};
Listagem 06. Atribuindo valores a um array Multidimensional

Tevemos ter em mente de que todo array para ser usado deve ser incializado. No entanto podemos apenas especificar o tamanho de um array, ou então atribuir valores. Veja abaixo o que é permitido com arrays em c#.


 int[] array1 = new int[] {1,2,3};
 int[,] array2 = new int[,] {{1,2,3},{4,5,6}};
 int[,,] array3 = new int[10,20,30];
 int[][] j2 = new int[3][];
 j2[0] = new int[] {1,2,3};
 j2[1] = new int[] {1,2,3,4,5,6};
 j2[3] = new int[] {1,2,3,4,5,6,7,8,9};
 int[] array1 = new int[] {1,2,3};
 int[] array1 = {1,2,3};

Vale ressaltar que a faixa dos arrays é verificada em tempo de execução. Se você indexar um array fora da faixa do array, uma exceção será disparada.

Métodos Utilizados em Arrays

Todos os array são derivados da classe System.Array que oferece diversos membros estáticos e instanciados. A tabela a seguir descreve alguns métodos oferecidos pela classe System.Array.

Rank Retorna o número de dimensões do array.
GetLength Retorna o número de elementos da dimensão específica do array.
Length Retorna o total de elementos do array.
GetLowerBound Retorna limite baixo da dimensão especificada.
GetupperBound Retorna o limite alto da dimensão especificada.
IsReadOnly Indica se o array é apenas para leitura.
IsSynchronized Indica se o acesso ao array é thread-safe.
SyncRoot Retorna um objeto que pode ser usado para sincronizar o acesso para o array.
IsFixedSize Indica se o array tem um tamanho fixo.
GetValue Retorna a referência para o elemento localizado em uma posição especifica no array.
GetEnumerator Retorna o IEnumerator para o array, permitindo o uso da instrução foreach.
Sort Ordena os elementos de um array.
IndexOf Retorna o índice da primeira ocorrência do valor em um array unidimensional ou em uma parte dele.
LastIndexOf Retorna o índice da última ocorrência do valor do array unidimensional ou em uma parte dele.
Reverse Reverte a ordem dos elementos em um array unidimensional ou em uma parte dele.
Clone Cria um novo array que é uma copia superficial do array de origem.
CopyTo Copia os elementos de um array para outro.
Copy Copia a seção de um array para outro, executando qualquer modelagem requerida.
Clear Configura a faixa de elementos no array para 0 ou null.

Como podemos notar esta classe oferece diversos recursos de programação que facilitam a nossa vida.

Conclusão

Tentou-se abranger de uma forma geral os arrays que são utilizados em C#. Arrays em qualquer linguagem de programação é uma estrutura de dados muito importante e muito usada. Até mesmo estruturas de dados mais avançadas utilizam esse importante conceito que existe em praticamente todas as linguagens de programação, e como não poderia ser diferente C# também a utiliza.

Além disso, C# lhe proporciona vários métodos para manipular arrays, alguns desses métodos explicamos neste artigo, é importante ressaltar que esse métodos fazem parte da classe System.Array na qual são derivados todos os arrays.

Envie suas sugestões, críticas, elogios ou pedido de novos e futuros artigos que continuarei atendendo a todos e também respondendo. Agradeço novamente aos visitantes pelos pedidos e até a próxima.

Confira também