Arrays [matrizes ou vetores] em Delphi

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.
Vamos começar com os array estático:
var wValores: array[1..10] of Integer;
Acima temos um array chamado wValores que contém 10 elementos do tipo Integer. Os elementos podem ser acessados por índices que variarão de 1 a 10;
procedure TFSistema.BtnAcrescentarValorClick(Sender: TObject); var wValores: array[1..10] of Integer; begin wValores[8] := 110; end;
Abaixo preenchemos um Array com valores de 1 a 10, depois percorremos novamente o array e fizemos a soma dos elementos. E por fim exibimos uma mensagem com o soma obtida.
procedure TFSistema.BtnAcrescentarValorClick(Sender: TObject); var wValores: array[1..10] of Integer; wCalculo, wCont: Integer; begin for wCont := 1 to 10 do begin wValores[i] := wCont; end; wCalculo := 0; for wCont := 1 to 10 do begin wCalculo := wCalculo + wValores[wCont]; end; ShowMessage('Valor: ' + IntToStr(wCalculo)); end;
Array com valores já iniciais:
procedure TFSistema.BtnAcrescentarValorClick(Sender: TObject); const wValores: array[1..10] of Integer = (15, 7, 14, 10, 2, 9, 25, 22, 3, 16); var wCalculo, wCont: Integer; begin wCalculo := 0; for wCont := 1 to 10 do begin wCalculo := wCalculo + wValores[wCont]; end; SowMessage('Valor: ' + IntToStr(wCalculo)); end;
Array dinâmicos:
procedure TFSistema.BtnAcrescentarValorClick(Sender: TObject); var wVetor :Array of Integer; wCont : Integer begin SetLength(wVetor, 5); // Tamanho do vetor for wCont := 0 to High(wVetor) do //Preenchendo wVetor[I] := wCont * 2 SetLength(Vetor,10) // Altera o tamanho do vetor for wCont := 0 to High(wVetor) do //Preenchendo novamente wVetor[wCont] := wCont *2 end;
Algumas funções que podem ser utilizadas com o array dinâmico:
SetLength(Array,Tamanho) { determina o número de elementos do array. Tendo em vista que o valor default para o primeiro elemento é 0 (zero).}
High(Vetor) : Integer { retorna o maior indice do array. Ex.: se o array tem tamanho 10 e começa em 0 o resultado seria 9..}
Low(Vetor) : Integer { Retorna 0 ou seja o menor elemento do array.}
Length(Vetor) { retorna o tamanho exato do array ou seja o valor que foi definido na função SetLength.}
Mais um exemplo simples de como usar o Array dinâmico
type TMeses = Array of Integer; var wMeses : TMeses; begin wMeses := TMeses.Create(31,28,31,30,31,30,31,31,30,31,30,31); { Isto inicializa o array com 12 elementos iniciais, cada um com o respectivo valor, pela ordem apresentada}
Ótimo, tem algum exemplo mais pratico?
ResponderExcluirGuria, tu é fodona, eu nunca ví criação de array dinâmico usando o método Create. Caiu o queixo...kkkk. Este eu não tinha explorado ainda.
ResponderExcluirObrigada :)
Excluir