Problem

1/10

Matrizes (listas). Introdução

Theory Click to read/hide

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.

Problem

Modifique o programa de forma que na quinta linha o valor da variável N seja inserido no teclado e na sexta linha seja criada uma matriz de tamanho N (os valores dos elementos da matriz podem ser quaisquer)