Академический Документы
Профессиональный Документы
Культура Документы
J falei sobre arrays mas relacionados com a linguagem VB .NET. O conceito em si o mesmo mas a sintaxe em C# diferente por isso vou comear do incio para apresentar os Arrays e como us-los na linguagem C#. Vou comear com a definio de array da wikipdia (http://pt.wikipedia.org/wiki/Array) resumida: Um Array um conjunto de elementos de um mesmo tipo de dados onde cada elemento do conjunto acessado pela posio no array que dada atravs de um ndice (uma sequncia de nmeros inteiros). Um array de uma dimenso tambm conhecido como vetor,e , um array de mais de uma dimenso e conhecido como uma matriz. Agora uma definio mais geral: Um array uma estrutura de dados que contm uma srie de dados ordenados, chamados "elementos". Os elementos so referenciados por nmero ordinal (ndice), primeiro elemento 1, segundo 2, etc. Os elementos podem ser de qualquer tipo, string, caractere, numrico, data, etc. Se voc no fugiu da escola vai lembrar do conceito de Matriz em matemtica. Lembra ??? a mesma coisa...
Uma matriz real (ou complexa) uma funo que a cada par ordenado (i,j) no conjunto Smn associa um nmero real (ou complexo). Uma forma comum e prtica para representar uma matriz definida na forma acima atravs de uma tabela contendo mn nmeros reais (ou complexos).
http://twixar.com/6v9
Fonte :
Declarando Arrays em C#
Na linguagem C# os arrays possuem o ndice com base zero, ou seja, o primeiro elemento do array possui o ndice zero (0). Um array de uma dimenso declarado informando o tipo de dados do array seguido do nome do array, lembrando que devemos colocar colchetes ([]) depois do tipo do array e no aps o seu nome: Ex: int[] tabela; ==> correto
Na linguagem C# o tamanho do arrray no parte do seu tipo, isso permite declarar uma array e em seguida atribuir qualquer array de objetos int a ele, sem considerar o seu tamanho:
//declara numeros como um array de inteiros de // numeros agora um array de 10 elementos // numeros agora um array de 20 elementos
- Arrays com mais de uma dimenso : string[,] names; int[,] array = new int[2, 2]; - Array-of-arrays (jagged): byte[][] resultados; int[][] numArray = new int[][] { new int[] {1,3,5}, new int[] {2,4,6,8,10} };
string[] nomes;
= = = = =
Observe o ndice indicando a posio do elemento no array. O primeiro elemento o zero e o ltimo 4. Assim temos 5 elementos no array com posies : 0,1,2,3 e 4. Para um array de mais de uma dimenso a sintaxe usada pode ser:
string[,] names = new string[5,4]; //declara um array bidimensional com 5 linhas e 4 colunas
int[] numeros = new int[5] {1, 2, 3, 4, 5}; string[] nomes = new string[3] {"Mac", "Jessica", "MiMi"};
definindo o tamanho e o operador new
int[] numeros = new int[] {1, 2, 3, 4, 5}; string[] nomes = new string[] {Mac", "Jessica", "MiMi"};
omitindo o tamanho do array
int[,] numeros = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} }; string[,] amigos = new string[2, 2] { {"Mac","Jan"}, {"Mimi","Jeff"} }; int[,] numeros = new int[, ] { {1, 2}, {3, 4}, {5, 6} }; string[,] amigos = new string[, ] { {"Mac","Jan"}, {"Mimi","Jeff"} }; int[,] numeros = { {1, 2}, {3, 4}, {5, 6} };
Omitindo o operador new omitindo o tamanho do array definindo o tamanho e o operador new
int[][] numeros = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
int[][] numeros = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; omitindo o tamanho do array ou int[][] numeros = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
private void Form1_Load(object sender, EventArgs e) { int[] numeros = { 10, 9, 8, 7, 6 }; listBox1.Items.Add("Primeiro elemento: " + numeros[0]); listBox1.Items.Add("Segundo elemento: " + numeros[1]); listBox1.Items.Add("Terceiro elemento: " + numeros[2]); listBox1.Items.Add("Quarto elemento: " + numeros[3]); listBox1.Items.Add("Quinto elemento: " + numeros[4]); }
Note que para acessar um elemento eu utilizei o seu ndice, e como em C# os arrays so base zero, o primeiro elemento tem o ndice igual a zero (0). Ento para acessar um elemento em um array unidimensional eu uso a sintaxe:
nome_do_array[numero_do_indice]
Para um array de mais de uma dimenso somente temos que definir os demais ndices do array. No exemplo a seguir eu declaro um array bidimensional chamado numeros2 e a seguir crio e inicio o array com 5 elementos:
int[,] numeros2 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 }, { 9, 10 } }; listBox2.Items.Add("numeros2[0,0] = " + numeros2[0, 0]); listBox2.Items.Add("numeros2[0,1] = " + numeros2[0, 1]); listBox2.Items.Add("numeros2[1,0] = " + numeros2[1, 0]); listBox2.Items.Add("numeros2[1,1] = " + numeros2[1, 1]); listBox2.Items.Add("numeros2[2,0] = " + numeros2[2, 0]); listBox2.Items.Add("numeros2[2,1] = " + numeros2[2, 1]); listBox2.Items.Add("numeros2[3,0] = " + numeros2[3, 0]); listBox2.Items.Add("numeros2[3,1] = " + numeros2[3, 1]); listBox2.Items.Add("numeros2[4,0] = " + numeros2[4, 0]); listBox2.Items.Add("numeros2[4,1] = " + numeros2[4, 1]);
Observe que para acessar os elementos do array eu tive que usar os dois ndices que indicam a posio do elemento no array. Para voc visualizar e entender melhor o conceito veja abaixo uma ilustrao do array definido acima e a sua matriz correspondente: Matriz 2 x 5 int[,] numeros2 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 }, { 9, 10 } }; numeros2[0, numeros2[0, numeros2[1, numeros2[1, numeros2[2, numeros2[2, numeros2[3, numeros2[3, numeros2[4, numeros2[4, 0] 1] 0] 1] 0] 1] 0] 1] 0] 1] = = = = = = = = = = 1 2 3 4 5 6 7 8 9 10
Para atribuir valores a uma posio do array eu tambm uso os ndices. Assim temos:
Outro exemplo de array bidimensional: string[,] livros = { {"Macbeth", "Shakespear", "ID12341"}, {"1984", "George Owell", "ID234234"}, {"ASP - Internet ", "Macoratti", "ID3422134"} }; numeros[4] = 100 numeros [1,1] = 200
Este array contm 3 linhas e 3 colunas. Para cada livro temos uma linha e cada livro contm 3 colunas : titulo, autor e ID do livro.
//atribuindo o valor ao quarto elemento do array //atribuindo o valor 200 ao elemento de posio [1,1] do array
Percorrendo Arrays
Deu para perceber que acessar e percorrer arrays com muitos elementos pode dar um trabalho danado. para isso que servem os laos (loops), para percorrer arrays sem fazer esforo. Vejamos alguns dos principais laos usados: O lao for usado para ser executado um determinado nmero de vezes usando uma varivel com um valor determinado e incrementando esta varivel at o valor determinado. No exemplo abaixo a varivel i recebe o valor inicial zero e a incrementa (I++) at que o seu valor seja menor que 10. for (int i = 0; i < 10; i++) { // codigo a ser executado } Assim podemos usar um lao for para percorrer um array existente ou atribuir valores a um array que foi declarado. a) Exemplo: Percorrer o array numeros declarado a seguir e exibir os seus valores em um controle ListBox: int[] numeros = { 10, 9, 8, 7, 6, 5 };
listBox1.Items.Clear(); for (int i = 0; i < 6 ; i++) { listBox1.Items.Add("Elemento [" + i +"] = " + numeros[i]); }
O lao for usado inicia a partir do ndice zero; Percorre o array at que o valor de i seja menor que 6 , pois o array possui seis elementos mas comeamos contar a partir de zero: (0,1,2,3,4,5) numeros[i] representa o array e i o ndice atribudo a cada elemento
b) Exemplo: Atribuir valores o array inteiros declarado a seguir e exibir os valores em um controle ListBox. int[] inteiros = new int[10]; A atribuio esta sendo feita na declarao: inteiros[i] = i; O resultado obtido visto na figura abaixo:
int[] inteiros = new int[10]; listBox1.Items.Clear(); listBox1.Items.Add("Array inteiros => int[] inteiros = new int[10]"); for (int i = 0; i < 10; i++) { inteiros[i] = i; listBox1.Items.Add("Elemento [" + i + "] = " + i ); }
Podemos usar laos while e do-while para fazer a mesma operao lembrando que esses laos so executados enquanto certa condio esta sendo atendida. Exemplo: Estrutura do lao while e do-while;
O lao Foreach
O lao foreach pode ser usado para acessar cada elemento do vetor ou coleo. A sintaxe usada :
A classe Array fornece propriedades e mtodos para criar, manipular, procurar e ordenar arrays. Abaixo temos os mais importantes: 1- Propriedades IsFixedSize IsReadOnly Retorna um valor indicando se um array possui um
tamanho fixo ou no. Retorna um a valor indicando se um array somente-leitura ou no. array thread-safe ou no.
IsSynchronized Retorna um a valor que indica se o acesso a um Length Rank SyncRoot 2- Mtodos BinarySearch
Procura em um array unidimensional ordenado por um valor usando o algoritmo de busca binrio. Retorna o nmero total de itens em todas as dimenses de um array Retorna o nmero de dimenses de um array Retorna um objeto que pode ser usado para sincronizar o acesso a um array.
Remove todos os itens de um array e define um intervalo de itens no array com valor zero. Cria uma cpia do Array. Copia uma seo de um array para outro array e realiza a converso de tipos e boxing requeridas. Copia todos os elementos do array unidimensional atual para o array unidimensional especificado iniciando no ndice de destino especificado do array.
CreateInstance Inicializa uma nova instncia da classe Array. GetEnumerator Retorna um IEnumerator para o Array.
Retorna o nmero de itens de um Array. GetLength GetLowerBoun Retorna o primeiro item de um Array. d GetUpperBound Retorna o ltimo item de um Array.
Retorna o valor do item especificado no Array. Retorna o ndice da primeira ocorrncia de um valor em um array de uma dimenso ou em uma poro do Array. Retorna o ndice da ltima ocorrncia de um valor em um array unidimensional ou em uma poro do Array. Reverte a ordem de um item em um array de uma dimenso ou parte do array. Define o item especificado em um array atual para o valor definido. Ordena os itens de um array.
A seguir temos alguns exemplos de utilizao das propriedades e mtodos: Array usado nos exemplos:
Array.Sort(Cores)
Array.Reverse(Cores)
for( int j = Cores.GetLowerBound(0); j <= Cores.GetUpperBound(0); j++) Usar { GetLowerBound/GetUpperBound listBox2.Items.Add("Cores[0] = " + j + " " + Cores[j]); } if (Cores.IsFixedSize) {
listBox2.Items.Add("O array e fixo"); listBox2.Items.Add(" tamanho => (Cores.Lenght) = " + Cores.Length); listBox2.Items.Add(" intervalo => (Cores.Rank) = " + Cores.Rank); } object oCor = "verde";
Realizando uma busca binria no int retorno = Array.BinarySearch(Cores, oCor); Array if(retorno >=0) listBox2.Items.Add("Indice do Item " + retorno.ToString()); else listBox2.Items.Add("Item no localizado"); Obtendo o ndice de um item do int ind = Array.IndexOf(Cores, "verde"); listBox2.Items.Add("O ndice do item 'verde' e " + ind); Array E com isso creio que dei uma viso geral sobre os Arrays na linguagem C#. Consulte a documentao para mais exemplos e mais detalhes.