Pagina anteriorIndiceProxima pagina

Algoritmos Computacionais

10.4 Record

  • Possui vários componentes, denominados campos
  • Os campos podem ser de tipos diferentes e são identificados por um nome.
Ex.:
Type
   DATA = Record
                      MES: 1..12;
                      DIA: 1..31;
                     ANO: 1900..2000;
                End;

   complexo = Record
                         PREAL: Real;
                         PIMG: Real
                    End;
   REGISTRO= Record
                          NOME: Array [1..40] of Char;
                          SALARIO: Real;
                          IDADE: Integer;
                          SEXO: Char;
                      End;
Var
    x: complexo
    DIA_DE_SEMANA: DATA
    CADASTRO: Array [1..1000] of REGISTRO;;
    REG: REGISTRO;

Para referenciarmos um campo de um Record, usamos um ponto (.)
Ex.:
 X.PREAL:= 6.0;
 X.PIMG:= 2.0;
  • Pode ser usado com qualquer operador compatível com o tipo de dado, contido no campo do Record.
  • Somente o operador :=  pode ser aplicado a um Record inteiro.

Ex.:

Var
    X,Y: complexo;
Begin
    X.PREAL:= Y.PREAL;   
    X.PIMG:= Y.PIMG;
End.

Isto é equivalente a:
  X:= Y;

 Um Record pode conter qualquer estrutura, inclusive outro Record. Então, usando o que foi definido anteriormente:
 
Type
  novoregistro = Record
                            regantigo: registro
                            aniversario: data
                       End;
Var
  nreg: novoregistro;
Begin
    nreg.regantigo.nome:= 'jose';
    nreg.aniversario.mes:= 1;
End.
 

Comando With

 Permite que se manipule um Record referenciando apenas os campos deste.
Var
     a:Record
             b:integer;
             c:Record
                    d:boolean;
                    e:real;
               End;
      End;
a.b:= 1; 
a.c.d:= true;
a.c.e:= 1.3;
=
With a do
  Begin
     b:=1;
     c.d:=true;
     c.e:=1.3;
  End;
=
With a,c do
 Begin
   b:=1;
   d:=true;
   e:=1.3;
 End;
Não é permitido fazer dentro do With qualquer alteração da variável denotada em uma lista de variáveis abreviadas.

Ex. 

Program aula;
 Type brinquedo = Record
                               tipo:(bola,jogo,boneca);
                               custo:real;
                               estado:(bom,quebrado);
                            End;
Var
  estoque:array [1..10] of brinquedo;
  i:integer;
Begin
     with estoque [1] do
          Begin
               tipo:=bola;
               custo:=500.00;
               estado:=bom;
          End;
 End.
Porém, se fizermos:
 i:=1;
 with estoque [i] do
  Begin
        …
        i:=i+1 => ERRADO
    End;

Pagina anteriorIndiceProxima pagina

araujo@eng.uerj.br