Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Estrutura de dados: 
Registros
 
SST
DAURICIO, J. S.; FRANCISCO, L. F. C.
Estrutura de dados: Registros / Juliana Schiavetto Dauri-
cio; Luciano Furtado Correa Francisco 
Ano: 2020
nº de p.: 10 páginas
Copyright © 2020. Delinea Tecnologia Educacional. Todos os direitos reservados.
3
 Estrutura de dados: Registros
Apresentação
Os registros são estruturas de dados nos quais se alocam várias posições de 
memória, as quais podem armazenar valores de tipos diferentes.
Nesse sentido, vamos estudar as características dos registros, o que são arquivos 
de registros e o vetor de registros.
Registros
Suponhamos que uma empresa implemente um sistema para cadastrar os seus 
clientes. Em geral, os cadastros de clientes contêm informações como nome, 
endereço, CPF ou CNPJ, sexo, data de nascimento, RG etc. Uma maneira de 
cadastrar esses dados seria criar uma variável para cada informação do cliente. 
Ao utilizarmos a estrutura de dados de registros, podemos reunir todas essas 
informações em uma única variável. Muitos itens de nosso dia a dia se enquadram 
no conceito de registro: um cadastro em um formulário, filmes, dados de um 
cartão de crédito etc. Para ilustrar, vamos usar o exemplo de um bilhete de 
passagem de ônibus.
Se você observar uma passagem de ônibus intermunicipal, 
encontrará diversas. O nome do passageiro é um literal. A data de 
embarque é um tipo data. O preço é um tipo real. Horário é um tipo 
data-hora e assim sucessivamente.
Curiosidade
4
Como declaramos uma estrutura do tipo registro? De forma bem parecida com os 
vetores. Genericamente essa declaração pode ser como indicada a seguir:
tipo nome_da_variavel_registro = registro campo1 
: tipo campo2 : tipo campo3 : tipo
 ..... fim variavel nome_da_variavel : 
nome_da_variavel_registro 
Declaramos um novo tipo de dados nomeando-o e, em seguida, informando que 
será do tipo registro. Ao final, criamos uma variável para manusear esse registro, na 
última linha de nosso exemplo. Para ficar claro, veja como seria essa declaração da 
passagem de ônibus na figura abaixo:
Declaração de registro
Tipo passagem = 
REGISTRO nome : 
CARACTER [20] rg : 
CARACTER [20] 
tipoPassageiro : CARACTER 
[20] origem : CARACTER [20] 
destino : CARACTER [20] 
dataEmbarque : CARACTER 
[20] horarioEmbarque : 
CARACTER [20]
poltrona : INTEIRO 
plataforma : INTEIRO 
quilometragem : INTEIRO 
agencia : CARACTER [20] 
agente : CARACTER [20] 
tipoOnibus : CARACTER [20] 
dataEmissao : CARACTER [20] 
horaEmissao : CARACTER [20]
tarifa : REAL pedagio : 
REAL tarifaEmbarque : 
REAL valorPassagem : 
REAL linha : CARACTER 
[20] formaPagto : CARACTER [20]
FIM
Var pass : passagem
 
Fonte: Elaborada pelo autor (2020).
5
É importante relembrar que a sintaxe apresentada é genérica; cada linguagem de 
programação tem suas formas de declarar registros, mas serão parecidas com o que 
é exibido na figura.
O sistema informatizado que cadastra os dados de um passageiro para emitir a 
passagem faria uma operação similar ao do exemplo a seguir, levando em conta a 
estruturação do registro na figura acima: ‘Digite o nome do passageiro: João Silva => 
o programa irá gravar “João Silva’ na variável pass.nome.
Logo, podemos perceber que o registro é, por si só, um tipo de dado customizado, 
o que é bastante poderoso para o desenvolvimento de softwares, trazendo muitas 
vantagens. Uma dessas vantagens é persistir os dados, ou seja, não apenas 
mantê-los na memória do computador, mas também em arquivos em dispositivos 
permanentes como discos rígidos. Vamos ver como isso acontece.
Arquivos de registros
Pereira (2016, p. 122) menciona as características e vantagens do uso de arquivos 
de registros:
Um arquivo de registros é uma coleção de registros mantida em disco. 
Conceitualmente, um arquivo é similar a um vetor, porém seu tamanho 
não precisa ser definido a priori e pode aumentar enquanto houver espaço 
disponível em disco. A grande vantagem no uso de arquivos é que, como 
eles são mantidos em disco, os dados armazenados por eles não são 
perdidos quando o programa termina sua execução (diferentemente do 
que ocorre com vetores, que são mantidos na memória principal). 
Em contrapartida, o acesso a dispositivos como discos rígidos são mais lentos do 
que o acesso à memória da máquina, tornando mais lenta também a execução dos 
programas.
Os sistemas operacionais têm um recurso para contornar essa desvantagem. Eles 
usam uma área da memória do computador chamada buffer. Essa área gerencia a 
transferência de dados entre o disco e a memória e vice-versa. Quando o programa 
transfere dados para um arquivo, primeiramente ele vai para este buffer. Somente 
quando o buffer fica lotado, ele transfere esses dados para o disco. Essa operação 
pode ser vista na figura a seguir:
6
Gravação e leitura de arquivos usando um buffer
Fonte: Pereira (2016, p. 123).
Os campos de um registro podem ser de tipos de dados que não os dados 
primitivos. Podemos também ter vetores e matrizes como campos dentro de 
registros. Isso amplia enormemente a capacidade dos registros.
Veja este exemplo:
TIPO dias = vetor [1..6] inteiro
TIPO registroProduto = 
registro codigo : inteiro 
nome : caracter[50] preco : 
real baixa : dias; FIM; var
produto : registroProduto;
No exemplo citado, criamos um vetor de nome dias e utilizamos esse mesmo vetor 
dentro do registro como um de seus campos. Esse campo serve para gravar quanto 
foi vendido em um determinado dia da semana – este dia pode ser de segunda a 
sábado ou de 1 a 6.
Para manipular um campo específico desse vetor, fazemos como vimos em vetores, 
ou seja, fazemos algo como:
Produto.Baixa[3]
O comando acima irá acessar as vendas da quarta-feira.
7
Vetor de registros
Uma das situações computacionais mais frequentes é a necessidade de armazenar 
vários registros iguais.
Da mesma forma que temos os vetores que são usados para não termos que criar 
uma porção de variáveis idênticas, os vetores também podem ser usados para 
armazenar registros em suas posições.
Exemplo: contexto
Vamos voltar ao contexto do ônibus de viagem. Um ônibus desse tipo tem em 
geral quarenta e cinco poltronas. O sistema da companhia precisa armazenar 
os dados desses 45 passageiros. 
Registro
Se fôssemos fazer um registro para cada um dos 45 passageiros, teríamos 
uma grande quantidade de registros a serem declarados, além do fato de 
que teríamos de dar nomes diferentes para cada um – as linguagens de 
programação não permitem que se nomeiem variáveis com o mesmo nome 
no mesmo programa.
 
Um grande trabalho, não é mesmo? E como resolvemos? Com um vetor de registros.
A lógica é simples. Criamos um vetor no qual cada uma das 45 posições terá todas 
as informações do passageiro que irá ocupar a poltrona em questão. 
A figura a seguir ilustra esse cenário:
8
Vetor de registros
Fonte: Elaborada pelo autor (2020).
A declaração desse vetor é:
tipo nome_da_variavel_registro = registro campo1 : tipo campo2 : tipo campo3 : 
tipo
 .....
fim tipo nome_da_variavel_vetor = vetor[1..N] of nome_da_ variavel_registro; var 
nome_da_variavel : nome_da_variavel_vetor;
A penúltima linha cria o vetor de registros e N é a quantidade de registros a ser 
armazenada – o vetor deve ser do tipo de registro criado. A variável criada na última 
linha é para manipular o nosso vetor de registros.
Vejamos como fica o exemplo da passagem.
9
Tipo passagem = REGISTRO nome : 
CARACTER[20] rg : CARACTER[20] 
tipoPassageiro : CARACTER[20] origem : 
CARACTER[20] destino : 
CARACTER[20] dataEmbarque : 
CARACTER[20] horarioEmbarque :
CARACTER[20] poltrona : INTEIRO 
plataforma : INTEIRO quilometragem : 
INTEIRO agencia : CARACTER[20] 
agente : CARACTER[20] tipoOnibus : 
CARACTER[20] dataEmissao : CARACTER[20] horaEmissao : 
CARACTER[20] tarifa : REAL pedagio : 
REAL tarifaEmbarque : REAL 
valorPassagem : REAL linha : 
CARACTER[20] formaPagto : 
CARACTER[20] 
FIM TIPO vetorPassagem = vetor[1..45] de passagem; VARonibus : 
vetorPassagem;
Note que precisamos adicionar apenas uma linha para armazenar a quantidade de 
passageiros, na penúltima linha. A variável onibus permite manusear o registro. 
Para acessar por exemplo o nome do passageiro da poltrona 27, fazemos assim:
onibus[27].nome
Fechamento
As estruturas de dados do tipo registro facilitam a manipulação de conjuntos de 
dados relacionados que possuem tipos diferentes, permitindo que eles sejam 
agregados em um único recurso, facilitando a sua manipulação.
10
Referências
PEREIRA, S. do L. Estruturas de dados em C: uma abordagem didática. São Paulo: 
Erica, 2016.

Mais conteúdos dessa disciplina