Colocamos como um dos objetivos desta disciplina construir programas de média complexibilidade, o que normalmente implicará construir programas com um maior número de variáveis e valores.
A utilização de vetores e arquivos nos deram um horizonte maior, nos possibilitando trabalhar com um número maior de variáveis e valores.
Em PASCAL ainda existe um outro método.
Já vamos dizer qual é este método, e o que êle propõe, mas antes vamos revisar nossos conteúdos sobre vetores e arquivos.
Uma lista sequencial é um conjunto de dados onde o próximo dado está em uma posição imediatamente seguinte ao seu anterior.
Pode ser expressa através de um vetor ou de um arquivo.
O exemplo mais comum de uma lista é a lista telefônica, ou lista de chamada dos alunos ou etc...
Na linguagem PASCAL quando declaramos uma lista, ou seja, quando declaramos um vetor temos que atribuir um limite a este vetor.
Nesta declaração da lista telefônica que nós vemos está imposto um limite de 50.000 telefones.
Se esta definição fosse utilizada para cidade de Santa Maria, estaria bem dimensionada (...mesmo os telefones não funcionando direito...), mas para a cidade de AGUDO, estaria super dimensionado.
Ou seja, a alocação da memória principal feita através de vetores é uma alocação estática.
Mesmo não tendo todos os números de telefones, 50.000 espaços da lista estariam sendo reservados em memória.
Claro que isto só em hipótese porque necessitariamos ter um equipamento com (30+35+4) * 50000 = 3.450.000 bytes = 3.369 Kbytes = 3.29 Mbytes de memória RAM convencional e também um sistema operacional que o administrasse ( a máxima memória utilizada pelo sistema operacional DOS é 640Kbytes, até a versão 6.2 - memória convencional).
Como todos estes telefones não caberiam nesta memória, resta a nós passar a utilizar as memórias auxiliares( arquivos) mantendo em memória principal somente um elemento desta lista, o registro.
Algumas linguagens como ADA, MÓDULA-2, PL/I e linguagens tipo interpretadas implementam uma alocação dinâminca que permitem diminuir e aumentar o tamanho de um vetor durante a execução de um programa.
O PASCAL assim com a linguagem C não poderia ficar para trás, e implementa o que chamamos de variáveis dinâmicas, ou apontadores.
Podemos dizer que variáveis dinâmicas poderão ser criadas e destruídas durante a execução de um programa.
Ela não será declarada como variável, não terá tampouco nome, porque ela não existirá antes do tempo de execução.
Para referência-la, usaremos um apontador (pointer, variável apontadora).
A denominação variável apontadora, decorre do fato que o valor armazenado no pointer será o endereço da nossa variável dinâmica.
Veja o seguinte exemplo:
O exemplo diz a computador que foram criados mais dois outros tipos em PASCAL.
Buffer é um tipo que poderá conter 256 caracteres e apont é um pointer para o buffer.
Quem manterá o endereço da variável dinâmica será ^C. Cujo conteúdo estará em C^.
Para que uma variável dinâmica seja criada usaremos o comando NEW(var).
Somente após executado este comando está variável existirá.
Quando quizermos reaver estas posições de memória usaremos o comando DISPOSE(var).
Veja o seguinte exemplo:
Neste exemplo primeiramente o programa imprimirá o total de memória disponível, utilizando para tal a função MEMAVAIL.
Quando da criação da variável dinâmica, através do comando NEW(C), ficaremos com 256 bytes a menos na memória, que serão novamente resgatados quando da utilização do comando DISPOSE(C).
Se você rodar este programa verá que o endereço mostrado será um coração.
É que este é uma valor hexadecimal.
Veja agora os comandos em PASCAL que poderão ajudar na utilização deste tipos de variáveis: