*Fonte Arquivo de Códigos
Em programação de computadores, um array, também conhecido como vector (para arrays uni-dimensionais) ou matriz (para arrays bi-dimensionais), é uma das mais simples estruturas de dados. Os arrays mantêm uma série de elementos de dados, geralmente do mesmo tamanho e tipo de dados. Elementos individuais são acessados por sua posição no array. A posição é dada por um índice, também chamado de subscrição. O índice geralmente utiliza uma seqüência de números inteiros, (ao contrário de um array associativo) mas o índex pode ter qualquer valor ordinal. Alguns arrays são multi-dimensionais, significando que eles são indexados por um número fixo de números inteiros, por exemplo, por um seqüência (ou sucessão) finita de quatro números inteiros. Geralmente, arrays uni- e bi-dimensionais são os mais comuns.
Os arrays podem ser considerados como as estruturas de dado mais simples que é possível imaginar. Têm a vantagem de que os seus elementos são acessíveis de forma rápida, mas têm uma notável limitação: são de tamanho fixo, mas podem ser incrementados ou diminuídos com determinados algoritmos, geralmente envolvendo a cópia de elementos de um array para outro e reinicializando o original com a nova dimensão. Os vetores podem ser implementados desta forma.
Em Delphi um array é declarado da seguinte forma:
var
valores: array[1..10] of Integer;
Aqui nós temos um array chamado valores que contém 10 elementos do tipo Integer. Estes elementos podem ser acessados por índices que variarão de 1 a 10, ou seja, podemos acessar o 5º elemento da seguinte forma:
procedure TForm1.Button1Click(Sender: TObject);
var
valores: array[1..10] of Integer;
begin
valores[5] := 20;
end;
Este tipo de array que ora criamos é chamado de array estático, em contraposição aos arrays dinâmicos, os quais podem ter seus tamanhos redimensionados durante a execução do programa.
A forma mais prática de se trabalhar com arrays em Delphi é usando laços. Veja:
procedure TForm1.Button1Click(Sender: TObject);
var
valores: array[1..5] of Integer;
i, soma: Integer;
begin
// vamos preencher o array com os valores de 1 a 5
for i := 1 to 5 do
begin
valores[i] := i;
end;
// vamos percorrer o array novamente e obter a soma dos
// valores de seus elementos
soma := 0;
for i := 1 to 5 do
begin
soma := soma + valores[i];
end;
// vamos exibir o resultado
ShowMessage('A soma dos valores é: ' + IntToStr(soma));
end;
Aqui nós declaramos um array de 5 elementos do tipo Integer e inicializamos seus elementos com os valores de 1 a 5. Em seguida percorremos todo o array novamente para obter a soma dos valores dos elementos.
É possível também declarar e já inicializar um array. Veja:
procedure TForm1.Button1Click(Sender: TObject);
const
valores: array[1..5] of Integer = (3, 2, 6, 12, 9);
var
i, soma: Integer;
begin
// vamos percorrer o array novamente e obter a soma dos
// valores de seus elementos
soma := 0;
for i := 1 to 5 do
begin
soma := soma + valores[i];
end;
// vamos exibir o resultado
ShowMessage('A soma dos valores é: ' + IntToStr(soma));
end;
Note que aqui eu declarei o array como uma constante. Isso aconteceu porque o Delphi não permite que inicializemos variáveis locais ([DCC Error] Unit1.pas(32): E2195 Cannot initialize local variables). Caso você realmente precise do array como variável e não constante, e deseje inicializá-lo juntamente com a declaração, mova-o para a seção interface do formulário ou classe.
Para finalizar, veja que é possível criar arrays de todos os tipos em Delphi. Veja no trecho de código abaixo como usamos um array de Char para guardar uma palavra e exibí-la normal e depois invertida:
procedure TForm1.Button1Click(Sender: TObject);
const
letras: array[1..5] of Char = ('O', 's', 'm', 'a', 'r');
var
i: Integer;
resultado: String;
begin
resultado := '';
// vamos exibir a palavra na forma normal
for i := 1 to 5 do
resultado := resultado + letras[i];
// exibe o resultado
ShowMessage(resultado);
// vamos exibir a palavra invertida
resultado := '';
for i := 5 downto 1 do
resultado := resultado + letras[i];
// exibe o resultado
ShowMessage(resultado);
end;
Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.
Nenhum comentário:
Postar um comentário