Armazenamento de dados
Digamos que você desenvolveu um jogo de computador chamado "User Hostile" no qual os jogadores competem contra uma interface de computador intrincada e hostil. Agora você precisa escrever um programa que rastreie as vendas mensais deste jogo durante um período de cinco anos. Ou digamos que você precise inventariar as Cartas Colecionáveis do Herói Hacker.
Muito em breve você chegará à conclusão de que precisa de mais do que simples tipos básicos de dados para armazenar e processar informações.
Matrizes (listas). Introdução
Para facilitar o trabalho com uma grande quantidade de dados, um grupo de células recebe um nome comum. Esse grupo de células é chamado de
array
Array – é um grupo de células de memória do mesmo tipo, localizadas lado a lado e com um nome comum. Cada célula do grupo tem um número único.
Ao trabalhar com arrays, você precisa
aprender a resolver três tarefas:
x alocar memória do tamanho necessário para um array
x gravar dados na célula desejada
x ler dados da célula
Matrizes em Pascal
Tradicionalmente, Pascal usa arrays estáticos como
var a: array [1..10] de inteiro;
Os limites de uma matriz devem ser definidos por constantes e você não pode alterar o tamanho de uma matriz durante a operação do programa. Mas você pode criar um índice não apenas de um número inteiro, mas também, digamos, de um caractere ou tipo enumerado. Por exemplo, para contar a ocorrência de cada letra, você pode usar um array
var LettersCount: array ['a'..'z'] de inteiro;
e trabalhe com ele o quanto quiser:
Contagem de Letras['z'] := 1;
LettersCount['d'] := LettersCount['d'] + 1;
As desvantagens de tais arrays são conhecidas: se não se sabe com antecedência quantos elementos precisarão ser usados, então o tamanho máximo de memória é alocado para o array. Como resultado, na maioria dos casos, "estocamos para o futuro" e, às vezes, essa "reserva" acaba por não ser suficiente. É por isso que tais arrays são chamados estáticos: seu tamanho é estático e deve ser definido na fase de compilação do programa. No entanto, em Pascal existem arrays dinâmicos, cujo tamanho pode não apenas ser definido, mas também alterado no decorrer do programa. São essas matrizes e as vantagens de usá-las que serão discutidas mais adiante.
Criando uma matriz
Ao criar uma matriz, o espaço é alocado na memória (um certo número de células)
1) Matrizes podem ser criado simplesmente listando os elementos:
var a: array de inteiro;
SetLength(a, 3);
a[0] := 1;
a[1] := 2;
a[2] := 3;
2) As matrizes podem ser compostas por dados de qualquer tipo - números inteiros ou reais, cadeias de caracteres
var a: array de char;
SetLength(a, 3);
a[0] := 'a';
a[1] := 'b';
a[2] := 'c';
3) Uma matriz sempre "sabe" seu tamanho. A função length
é usada para determinar o tamanho de uma matriz. Freqüentemente, o tamanho da matriz é armazenado em uma variável separada para que o programa possa ser facilmente alterado para funcionar com um tamanho de matriz diferente. Exemplo:
N:= 10; // na variável N armazenamos o tamanho do array
SetLength(a, N); // define array e tamanho N
writeln(comprimento(a)); //exibe o tamanho do array
O tamanho de uma matriz pode ser definido no teclado.