Registros são estruturas de dados heterogêneas, ou seja, permitem o armazenamento de valores de tipos diferentes. Assim, cada informação armazenada nesta estrutura é chamada de campo e possui um nome e um tipo. Após definido o registro, variáveis podem ser criadas com tipo associado a ele. Dado o seguinte registro: coordenada = registro X : inteiro Y : inteiro fimregistro Assinale a alternativa referente à forma correta de declarar um vetor chamado posicoes com 10 elementos deste registro.
Soluções para a tarefa
Resposta:
Até o momento, vimos apenas variáveis que são utilizadas para o armazenamento de dados simples.
Entretanto, as variáveis podem ser compostas, formadas por uma ou mais posições (campos ou entradas),
podendo armazenar um ou mais dados. As variáveis compostas são classificadas em homogêneas
(vetoriais) ou heterogêneas (registros). Em função de sua capacidade de armazenar diferentes valores, este
tipo de variável pode ser encarado como uma “estrutura” de armazenamento. Entretanto, não deve ser
confundido com as “estruturas de dados” que veremos mais adiante neste livro. O conceito estruturas de
dados envolve não somente a estrutura de armazenamento, mas também regras de formação e
manipulação, além de funções próprias de acesso.
4.1 Variáveis Vetoriais Unidimensionais
As variáveis vetoriais unidimensionais, chamadas muitas vezes simplesmente de variáveis vetoriais, são
variáveis compostas homogêneas indexadas, as quais contêm um ou mais campos de mesmo tipo, onde
cada campo é acessado pelo seu índice (posição). Sua declaração geral é definida da seguinte forma:
var <nome>:array[<inicio>..<fim>] of <tipo_da_variavel>;
Exemplo 1: Declaração de uma variável chamada A que pode armazenar 10 números inteiros.
var A:array[1..10] of integer;
Neste exemplo, a variável A será armazenada na memória do computador em uma área equivalente a 10
vezes o que é armazenado para uma única variável inteira. Esta variável é representada pela figura 9. Nela,
os números 1, 2, 3...10 são os índices (posição ou localização) de cada número inteiro que pode ser
armazenado. O índice serve para localizar qual elemento do vetor estará sendo referido em determinado
instante. Por exemplo, o elemento A[5] é localizado no campo de índice 5 do vetor A e, no exemplo da
figura, vale -12.
-4
1
20
2
15
3
0
4
-12
5
-8
6
30
7
11
8
-3
9
5
10
A[5] = dado armazenado
índice do dado no vetor
A
Figura 9 – Representação de uma Variável Vetorial
Para atribuir um valor qualquer para um campo de posição i faz-se o seguinte:
A[i]:=<valor_qualquer>;
Neste caso, diz-se que a posição i-ésima do vetor A foi indexada.
Exemplo 2: Algumas operações que podem ser realizadas com vetores.
B[3]:=´flor´;
A[6]:=A[8];
read(B[2]);
write(B[i]);
A[i]:=A[i+1]-C[j];
Exemplo 3: Trecho de programa que inicializa todos os campos de um vetor A com o valor 0 (zero). Dizse “inicializar o vetor com zeros” ou simplesmente “zerar o vetor”.
Primeira Opção: atribui-se 0 (zero) a todos os campos, um a um, da seguinte forma:
A[1]:=0;
A[2]:=0;
A[3]:=0;
A[4]:=0;
A[5]:=0;
A[6]:=0;
A[7]:=0;
A[8]:=0;
A[9]:=0;
A[10]:=0;
Segunda Opção: utiliza-se uma variável para indexar as 10 posições com um comando de repetição. A
idéia aqui é usar a própria variável de contagem do comando for para indexar o vetor todo, da seguinte
forma:
for i:=1 to 10 do
A[i]:=0;
Neste exemplo dizemos que o vetor A foi completamente indexado (percorrido, visitado, pesquisado,
varrido, ...) em todas as suas entradas e para cada uma um valor zero foi inserido. Dizemos que para cada
iteração do for, ou seja, para cada valor de i, o elemento i-ésimo (elemento da vez, elemento corrente,
elemento atual etc...) é zerado. A figura 10 mostra uma possível representação gráfica da indexação com
comando de repetição.
A
1 2 3 4 5 6 7 8
3 20 12 2 -12 -5 1 11
i
9 10
4 8
Figura 10 – Representação Gráfica da Indexação Vetorial com Repetição
Entretanto, esta varredura pode ser feita com os comandos de repetição repeat e while, conforme
os modelos que seguem.
i:=0;
repeat
inc(i);
A[i]:=0;
until (i=10);
Explicação: