Uma array (vetor) é uma potente ferramenta que armazena dados do mesmo tipo (real, integer, string, etc). É como pequenas caixas enfileiradas, numeradas e guardando valores. O tamanho declarado no início do programa não pode ser alterado, sendo assim, uma array tem um tamanho fixo, mas podemos usá-la por inteiro ou não.
Cada uma dessas "caixas" recebem um número para diferenciar uma da outra.
Uma array é declarada assim:
var
nomedaarray
(onde nomedaarray
Exemplo:
var
vetor1 : array [1..10] of integer;
Nesse caso, a array chama-se vetor1, seu índice começa em 1 e termina em 10 (ou seja, temos dez caixas enfileiradas, com números para identificá-las), podendo receber apenas valores inteiros (integer).
Para colocar um valor dentro de cada caixa, temos que abrir (chamar pelo nome e número) e colocar o valor dentro, desse modo:
vetor1[4]:=10;
Isso quer dizer que dentro da caixa número 4, foi colocado o valor 10.
Então, o comando fica assim:
nomedovetor[índice]:=valor
Desse modo, para colocar qualquer valor em alguma caixa, precisamos abrir essa caixa que tem um nome e um número, ou seja, um endereço.
De acordo com o exemplo, podemos recuperar um valor (já armazenado) chamando pelo nome (como se fosse uma variável comum).
No exemplo abaixo, quero somar 12 ao valor da caixa 4:
vetor1[4]:=vetor1[4]+12;
Ou seja, o novo valor da caixa 4 (vetor1[4]) é a soma do valor antigo (vetor1[4])) com 12, o que resultará em 22.
A partir de agora, vamos fazer as operações do mesmo modo como fazíamos com variáveis normais, mas com um detalhe: temos que usar um índice para cada parte (caixa) desse vetor.
Assim, ao trabalhar com o vetor, o índice (número da caixa) vai variar de um em um (de acordo com a necessidade), o que nos permite usar um "FOR".
Por exemplo, quero imprimir na tela todos os valores do vetor:
Supondo que:
Comandos:
for ind:=1 to 10 do
writeln(vetor1[ind]);
Explicação: o comando "FOR" é um comando de repetição que, inicialmente, dá ao "ind" o valor 1 e a cada execução aumenta seu valor em 1 unidade.
Seguindo a sequência, o writeln imprime na tela o valor do vetor1[1], que vale 3.
Na sequência, a execução volta e altera o valor de "ind" para 2, fazendo com que o valor a ser impresso seja o que está contido em vetor1[2], que é 5.
Veja que o valor do índice varia de 1 até 10, ou seja, todos os valores do vetor serão impressos.
Lembre-se que toda operação a ser feita com um vetor, obrigatoriamente devemos chamá-lo pelo nome e índice.
2.Matriz
Uma matriz diferencia-se de uma array por ter dois índices.
Exemplo:
Declaração:
var
mat1: array [1..3,1..10] of integer;
Nossa matriz chama-se "mat1", com o primeiro índice variando de 1 a 3 e o segundo índice variando de 1 a 10, podendo armazenar valores inteiros. (Obs: é possível declarar uma matriz ou mesmo vetor para outros tipos de variáveis, inclusive letras e caracteres especiais)
Todas as operações com uma matriz são semelhantes às operações com vetores, porém, devemos utilizar dois comandos "for". O primeiro varia a linha da matriz e o segundo varia a coluna:
for lin:=1 to 3 do
for col:=1 to 10 do
...
Supondo que queremos ler do teclado todos os valores dessa matriz, temos:
for lin:=1 to 3 do
for col:=1 to 10 do
readln(mat1[lin,col]);
Assim, na primeira execução, lin=1 e col=1, ou seja, estamos trabalhando em mat1[1,1], em azul:
Depois da coluna variar até 10, ela volta a valer 1, mas com a linha valendo 2:
Até que linha=3 e coluna=10 (lin:=3 e col:=10):
Portando, foram armazenados valores em todos as "caixas" da matriz.
Para imprimir na tela usamos os comandos:
for lin:=1 to 3 do
for col:=1 to 10 do
writeln(mat1[lin,col]);
Conclusão: com o exemplo do vetor, economizamos tempo declarando 10 variáves de uma só vez. Com a matriz, declaramos trinta variáveis de uma só vez também.
Exemplos:
Vetor
01 program vetor;
02 uses crt;
03 var
04 vet1: array [1..10] of integer;
05 ind: integer;
06 begin
07 writeln('Leitura do vetor:');
08 for ind:=1 to 10 do
09 readln(vet1[ind]);
10 clrscr;
11 writeln('Impressão do vetor:');
12 for ind:=1 to 10 do
13 writeln(vet1[ind]);
14 end.
Explicação:
Linha 4: Declaração do vetor (o vetor tem nome vet1, com índice mínimo 1 e máximo 10, e receberá valores inteiros).
Linha 5: Declaração do índice que deve ser inteiro.
Linha 6: Início do programa.
Linha 8: Início do laço de repetição, onde o primeiro valor de ind é 1, que será acrescido de 1 unidade a cada volta desse laço, com o valor de ind na ultima execução igual a 10.
Linha 9: Leitura do valor que será armazenado dentro da "caixa" ind (ind começa valendo 1 e vai até 10).
Linha 10: Limpeza da tela (é sempre bom ser organizado).
Linha 12: Novamente, início do laço que inicialmente coloca ind=1 e a cada execução aumenta 1 unidade em seu valor que vai até 10.
Linha 13: Impressão do valor contido na "caixa" de número ind (o ind vai variar de 1 até 10 de acordo com o comando "FOR" da linha acima).
Linha 14: Fim do programa.
Esse programa leu e armazenou os 10 valores nas caixas numeradas, um a um (abre a caixa 1 e armazena um valor, abre a caixa 2 e armazena outro valor...). Depois, o programa reabriu cada "caixa" e jogou o valor na tela.
Matriz
01 program matriz;
02 uses crt;
03 var
04 mat1: array [1..3,1..10] of integer;
05 lin,col: integer;
06 begin
07 writeln('Leitura da matriz:');
08 for lin:=1 to 3 do
09 for col:=1 to 10 do
10 readln(mat1[lin,col]);
11 clrscr;
12 writeln('Impressão da matriz:');
13 for lin:=1 to 3 do
14 for col:=1 to 10 do
15 writeln(mat1[lin,col]);
16 end.
Explicação:
Linha 4: Declaração da matriz, que tem nome mat1, com o primeiro índice valendo de 1 até 3 e o segundo índice valendo de 1 até 10, e que receberá valores inteiros (dentro de cada "caixa").
Linha 5: Declaração dos índices lin e col como inteiros (obrigatório que sejam inteiros).
Linha 8: Início do laço que vai variar a linha de 1 até 3 (valor inicial de lin=1, que será acrescido de 1 unidade a cada volta desse laço)
Linha 9: Início do laço que vai variar a coluna de 1 até 10 (valor inicial de col=1, que será acrescido de 1 unidade a cada volta desse laço). Com a linha valendo 1(do primeiro laço (FOR)), a coluna varia de 1 até dez (do segundo laço), fazendo a leitura de um valor (pelo readln) e armazenando na "caixa lin,col". Isso é feito 10 vezes e daí volta ao laço 1, muda o valor da linha (lin) para 2 e entra novamente no segundo laço com a coluna (col) valendo 1 novamente e fazendo todas as leituras de valores (10 leituras). Isso é feito até que lin=3 (linha) e col=10 (coluna), com um total de 30 valores lidos.
Linha 11: limpa a tela.
Linha 13: Início de um novo laço para variar a linha (lin) de 1 até 3.
Linha 14: Início de outro laço para variar a coluna (col) de 1 até 10. Esses valores de lin e col são usados para identificar a "caixa" a ser aberta, onde o programa pega o valor contido e joga na tela (pelo writeln na linha 15).
Linha 16: fim do programa.
Portanto, esse programa precisa identificar a caixa a ser aberta (pela lin e col), para aí sim jogar um valor dentro. Repare que em três linhas de comando foi possível lar e armazenar trinta valores. Seria como se colocássemos um rótulo em cada caixa, com dois índices impressos nesses rótulos, abríssemos a caixa (devidamente identificada) e jogássemos um valor lá dentro. A única diferença para um vetor, é que temos duas ou mais linhas, ao invés de uma única linha.