You are on page 1of 11

Registros

A estrutura de dados registro extremamente verstil Com ela podemos representar, sob uma mesma estrutura, vrios itens de dados de tipos diferentes Formalmente, o tipo registro pode ser visto como um produto cartesiano de tipos Neste caso, um valor particular do tipo registro uma tupla, com a vantagem adicional de podermos identificar cada componente da tupla com um nome
2004 UFV. Todos os direitos reservados.

Registros em Pascal
Sintaxe
A linguagem Pascal tem o seguinte construtor primitivo de tipos registro:
type R = record lista_de_campos end;

A lista de campos pode ser definida como uma seqncia de:


campo : tipo
2004 UFV. Todos os direitos reservados.

Registros em Pascal
Sintaxe (cont.)
Um campo denotado por um identificador e o tipo pode ser qualquer um A definio de um campo separada de outra por ponto-e-vrgula

Exemplo
type Funcionario = record nome : string[30]; salario : integer end;
2004 UFV. Todos os direitos reservados.

Registros em Pascal
Mais exemplos
type complexo = record re, im : real end; Aluno = record matr : string[7]; nome : string[30]; curso : (Adm, Comp, Eng, Fis, Mat, Med ) end;
2004 UFV. Todos os direitos reservados.

Registros
O tipo registro representa todos os valores compostos que tem aquela estrutura Cada valor do tipo registro uma tupla Por exemplo, um valor do tipo complexo definido anteriormente pode ser o par (1.0, 2.0) que, neste caso, representa o nmero complexo 1 + 2i Um valor do tipo Aluno pode ser a tripla (32768, 'Antnio Lopes', Mat) Um valor do tipo Funcionario pode ser o par ('Gerusa Sampaio', 150000)
2004 UFV. Todos os direitos reservados.

Registros em Pascal
Infelizmente, o Pascal ISO no fornece nenhum mecanismo para denotar uma constante do tipo registro Se quisermos representar um valor especfico de um tipo registro, temos que definir uma varivel com esse tipo e depois armazenar os valores individuais de cada campo por meio de uma atribuio ou uma leitura A criao de uma varivel do tipo registro feita usando a notao normal de declarao de varivel
2004 UFV. Todos os direitos reservados.

Acesso e Seleo de Campos


Em Pascal, para acessar ou selecionar um componente de uma varivel registro, usamos o operador de seleo de campo O operador de seleo de campo denotado por . (um ponto) Ento, para referenciar um componente de um registro, o nome da varivel registro seguido por um ponto e o respectivo identificador do campo O nome da varivel sozinho referencia todo o registro
2004 UFV. Todos os direitos reservados.

Exemplo em Pascal
Sejam as declaraes:
type Data = record dia : 1..31; mes : (jan, fev, mar, abr, mai, jun, jul, ago, sept, out, nov, dez ); ano : integer end; var nasc : Data;

Para armazenar a data 02/12/2004 na varivel nasc, podemos fazer:


nasc.dia := 2; nasc.mes := dez; nasc.ano := 2004
2004 UFV. Todos os direitos reservados.

Comando with
Para facilitar a notao de registros, a linguagem Pascal disponibiliza o comando with O comando with mais um acar sinttico Embora um compilador otimizante possa aproveitar as informaes descritas no comando with para colocar o endereo de memria do registro em algum registrador da CPU Dessa forma, o acesso aos campos do registro torna-se mais rpido
2004 UFV. Todos os direitos reservados.

Comando with
Sintaxe
with varivel_registro do comando Entre as palavras-chaves with e do podem ser colocadas mais de uma varivel registro; neste caso, elas devem ser separadas por vrgulas No comando dentro do escopo do comando with, toda referncia a um campo da varivel registro pode ser feita escrevendo apenas o identificador do campo
2004 UFV. Todos os direitos reservados.

10

Exemplo
Considere as declaraes anteriores do tipo Data e da varivel nasc As atribuies da data 02/12/2004 poderiam ser feitas assim:
with nasc begin dia := mes := ano := end do 2; dez; 2004
2004 UFV. Todos os direitos reservados.

11

You might also like