Você está na página 1de 9

Definio

Um array, tambm conhecido outrora como estrutura homognea de


dados, alm dos nomes: vetor, matriz, arranjo; um conjunto de
variveis de mesmo tipo que atendem todas pelo mesmo nome.
O array uma estrutura complexa de dados formadas por variveis
de tipos simples (ou escalares) que podem ser: int, long, float, double,
boolean ou por variveis de tipos complexos: string, array e classes.
De uma forma geral, as linguagens de programao implementam o
array como blocos contguos de memria com as variveis sendo
endereveis individualmente por seus ndices. Os ndices comeam
sempre pelo ndice 0. Por isso, quando um array tem 10 elementos,
seus ndices vo de 0 a 9. Generalizando, se um array tem n elementos,
o primeiro elemento tem ndice 0 e o ltimo elemento tem ndice n -1. A
figura 1 mostra um diagrama representativo de um array.
0

1
0

2
0

3
0

4
0

5
0

6
0

7
0

8
0

9
0

IdadesDasPessoas
10 elementos
Figura 1. Representao de um array
O diagrama da figura 1 mostra um array chamado IdadesDasPessoas
que possui 10 variveis (ou 10 posies). Esse array formado por
variveis do tipo inteiro que guardam as idades de pessoas. Ele comea
pelo ndice 0 e vai at o ndice 9 (10 -1).

Arrays no C#
No C#, os arrays podem ser estticos ou dinmicos (que veremos
mais adiante).
Um array esttico um array que deve ter um nmero de variveis
internas definido e no pode mudar esse nmero ao longo do programa.

Para criarmos arrays estticos no C# precisamos primeiramente


declar-los e depois devemos defini-los.
A definio de um array esttico se d da seguinte forma:
<<tipo>>[] <<nome>>;
Por exemplo, o array da figura 1:
int[] IdadesDasPessoas;
Repare nos colchetes logo aps o tipo int. Eles indicam que no ser
criada uma varivel inteira, mas sim um array de variveis inteiras.
Para definir um array devemos criar um objeto de array utilizando a
palavra reservada new e indicando o tamanho (quantidade de
elementos do array). Veja:
<<nome>> = new <<tipo>>[<<tamanho>>];
Por exemplo, para o array da figura 1:
IdadesDasPessoas = new int[10];
O que fizemos foi associar um novo (new) array de inteiros, formados
por 10 variveis (tamanho) e associ-lo varivel IdadesDasPessoas.
Agora podemos utilizar esse array para guardar as idades das pessoas.

Utilizao de um array esttico


Vamos criar um programinha bem simples para exemplificar o uso do
array esttico.
Abra o Visual Studio e crie um novo projeto do tipo Windows
Application. Vamos chamar esse projeto de ExemploArray1. A figura 2
mostra o criao do projeto.
Vamos criar uma interface com usurio para o nosso projeto que
mostrada na figura 3. Veja que utilizamos controles bem simples:
botes (buttons), rtulos (labels), caixas de textos (textbox) e um
agrupador (groupbox).

Figura 2. Criao do projeto ExemploArray1

Figura 3. A interface do ExemploArray1


Vamos entender o que o aplicativo ExemploArray1 faz para depois
podermos implement-lo.

1. Em primeiro lugar, precisamos, antes de utilizar um array,


declar-lo e defini-lo.
2. Criado o array, importante limp-lo, ou seja, inicializar suas
variveis internas com algum valor (em geral 0).
3. Depois podemos preencher cada posio (varivel) do array com
um valor de idade.
4. A qualquer momento podemos visualizar o array.
Para declarar e definir o array faremos o seguinte. Pea a visualizao
de cdigo do form1.cs (boto View Code da seo Solution Explorer). O
cdigo abaixo mostra as modificaes feitas para declarar e definir o
array.
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Text;
System.Windows.Forms;

namespace ExemploArray1
{
public partial class Form1 : Form
{
private int[] IdadesDasPessoas;
public Form1()
{
InitializeComponent();
IdadesDasPessoas = new int[10];
}

Observe que a declarao foi feita dentro da classe Form1. O que


significa que o array um atributo da classe Form1. A definio foi feita
dentro do mtodo construtor da classe Form1. Esse um timo lugar
para colocar comandos de criao de objetos para atributos da classe,
que o caso da definio do array.
Com isso j atingimos o objetivo 1 do nosso programa. Agora como
devemos proceder para limpar o array? Para cada varivel dentro do
array devemos preench-la com o valor 0. E como se faz isso?

Acesso a elementos do array


Vimos que um array um conjunto de variveis que possuem um nico
nome. Mas se todos tm o mesmo nome, como podemos acessar uma
posio (varivel interna) do array?
Para isso utilizamos o ndice da varivel interna. Veja os exemplos:
//escreve um valor na posio 7
IdadesDasPessoas[7] = 0;
//l um valor da posio 3
MessageBox.Show(IdadesDasPessoas[3]);
Moral da estria. Para acessar a posio interna de um array utilizamos
o nome do array seguido da posio da varivel interna entre colchetes.
E o que melhor: podemos escrever ou ler nessa varivel!
Agora para escrever o valor 0 em 10 variveis (mesmo sendo um
array). Isso parece ser bastante trabalhoso:
//inicializa as variveis do array com o valor 0
IdadesDasPessoas[0]
IdadesDasPessoas[1]
...
IdadesDasPessoas[8]
IdadesDasPessoas[9]

= 0;
= 0;
= 0;
= 0;

Afinal, ser que no existe um modo mais fcil? Existe sim.


Podemos utilizar o fato de que as variveis so indexadas e fazer uso da
estrutura de controle for para passear pelos elementos do array. Veja:
private void button1_Click(object sender, EventArgs e)
{
//inicializa as variveis do array com o valor 0
int intContador;
for (intContador = 0; intContador < IdadesDasPessoas.Length;
intContador++)
{
IdadesDasPessoas[intContador] = 0;
}
}

Em primeiro lugar, repare que utilizamos o mtodo button1_Click que


o mtodo tratador de eventos (event handler) do clique do boto limpar.
Dentro do mtodo codificamos o seguinte: criao de uma varivel
inteira que serve de contador para o for.
O for por sua vez montado da
recebe o valor inicial de 0. Ela
(intContador++) a cada rodada.
condio de parada (intContador
mais verdadeira.

seguinte forma: a varivel contadora


ser incrementada de uma unidade
As rodadas devem parar quando a
< IdadesDasPessoas.Length) no for

Mas afinal o que significa IdadesDasPessoas.Length? Um array um


objeto. Como todo objeto o array possui mtodos e propriedades. Uma
das propriedades do objeto do tipo array a propriedade Length. Essa
propriedade retorna o tamanho do array, ou seja, a quantidade de
variveis internas, ou posies, do array.
Ento a varivel intContador variar de 0 at tamanho do array (Length)
menos um (porque ela no pode ser igual a, tem que ser menor) e ser
incrementada de uma unidade a cada rodada do for. Com isso
conseguimos que intContador assuma todos os valores dos ndices do
array. Ou seja: 0 a 9.
Dentro do for, fizemos o acesso a cada varivel interna do array
utilizando intContador como ndice. Isso faz sentido, j que a cada
rodada intContador representar um ndice do array. O acesso que
fizemos s variveis internas do array foi de escrita, escrevendo em
todas elas o valor 0.
Dessa forma,
programa.

conseguimos

cumprir

segunda

etapa

do

nosso

Para permitir que o usurio insira valores no array, precisamos controlar


o ndice da posio onde o valor de idade ser inserido. Para isso
utilizaremos o rtulo, a caixa de texto, o boto preencher e tambm
mais um atributo da classe Form1 para controlar a posio atual do
array. Veja a criao desse atributo abaixo.
public partial class Form1 : Form
{
private int[] IdadesDasPessoas;
private int PosicaoAtual;
public Form1()
{

InitializeComponent();
IdadesDasPessoas = new int[10];

private void button1_Click(object sender, EventArgs e)


{
//inicializa as variveis do array com o valor 0
int intContador;
for (intContador = 0; intContador < IdadesDasPessoas.Length;
intContador++)
{
IdadesDasPessoas[intContador] = 0;
}
}
}

Alm disso, ser necessrio fazer uma pequena modificao no mtodo


button1_Click. Toda vez que o array for limpo a posio atual do array
dever voltar a ser 0. Veja como fica:
public partial class Form1 : Form
{
private int[] IdadesDasPessoas;
private int PosicaoAtual;
public Form1()
{
InitializeComponent();
IdadesDasPessoas = new int[10];
}
private void button1_Click(object sender, EventArgs e)
{
//inicializa as variveis do array com o valor 0
int intContador;
for (intContador = 0; intContador < IdadesDasPessoas.Length;
intContador++)
{
IdadesDasPessoas[intContador] = 0;
}
PosicaoAtual = 0;
label1.Text = "ndice: " + PosicaoAtual;
}

Fizemos isso para que o atributo PosicaoAtual torne a ser igual a 0 e


para que o rtulo label1 tenha seu valor igual a ndice: +
PosicaoAtual. Esse rtulo mostra ao usurio qual a posio atual do
array que est sendo acessada.

No mtodo que trata o evento clique do boto button2 (Preenche)


vamos inserir na posio atual do array o valor que o usurio inserir na
caixa de texto. Vejamos:
private void button2_Click(object sender, EventArgs e)
{
IdadesDasPessoas[PosicaoAtual] =
Convert.ToInt32(textBox1.Text);
PosicaoAtual++;
label1.Text = "ndice: " + PosicaoAtual;
}

Observe o que fizemos. Guardamos na posio atual do array o valor


inserido pelo usurio na caixa de texto. Para isso foi necessrio
converter o valor inserido para inteiro (utilizando o mtodo de classe
Convert.ToInt32). Incrementados a varivel PosicalAtual e escrevemos
o novo texto no rtulo.
Finalmente vamos criar o cdigo para mostrar o estado do array. D um
duplo clique no boto button3 (Mostra). Observe o cdigo abaixo:
private void button3_Click(object sender, EventArgs e)
{
int intContador;
string strSaida="";
for (intContador = 0; intContador <= 9; intContador++)
{
strSaida += intContador + " -> " +
IdadesDasPessoas[intContador] + "\n";
}
}

MessageBox.Show(strSaida, "Array");

Repare que mais uma vez utilizamos a boa afinidade entre os arrays e a
estrutura for para construir visualizao dos valores do array.
Dentro do for, utilizamos a varivel strSaida. Essa varivel, acumula a
cada iterao (rodada) uma linha de texto que diz o ndice do array
(fornecido atravs de intContador e o valor contido naquela posio do
array: IdadesDasPessoas[intContador].
Cada linha terminada com o caractere de escape \n que significa
quebra de linha e retorno de carro (equivalente a pressionar a tecla
Enter).

muito interessante observar que a varivel strSaida est funcionando


como um acumulador j que a cada iterao do array ela acumula
mais uma nova linha de informao.
Terminado o for, o mtodo Show da classe MessageBox utilizado
para mostrar o texto contido em strSaida. O segundo parmetro do
mtodo Show serve para informar o texto que aparecer na barra de
ttulo da caixa de dilogo.

Você também pode gostar