Registros

Padrão

Olá pessoal! Mais uma vez estou eu aqui em um post, depois de mais um bom período sem postar nada. Fim de semestre na faculdade é sempre complicado, cheio de provas e ainda estive estudando muitas coisas (C++, Java, Delphi, OpenGL e ainda pretendo dar uma olhada em C#)… pra melhorar viajei e voltei mal, passei uns dias no hospital e tudo… mas chega de desculpas, finalmente estou no 3º ano da faculdade. Cheguei à metade. Sem perder tempo, vamos ao que importa: programação!

Hoje vamos falar sobre Registros, também chamados de Estruturas. Bom, no último post, vimos como criar agrupamentos de dados de um mesmo tipo, no caso, com os Vetores. Agora, suponhamos que queremos agrupar alguns dados referentes a uma pessoa… um aluno para exemplificar. Para um aluno podemos ter uma grande diversidade de dados correspondente a ele: Nome, Idade, Endereço, Telefone, Notas dos Bimestres, Situação (aprovado/reprovado/em exame). No caso, como os dados são de tipos diferentes, não seria possível agrupá-los em um vetor. Para isso existem os Registros!

Porém, antes de entrarmos na definição dos registros no algoritmo, precisamos dar uma passada na definição de novos tipos. Os tipos, nada mais são do que modelos de dados. Por exemplo, quando criamos uma variável do tipo inteiro, estamos definindo que teremos um dado com o formato de um inteiro. É como se o tipo fosse o molde ou a forma (sem acento, de acordo com a nova regra ortográfica, hahaha) e a variável fosse o… bolo ou o que quer que seja. Quando criamos o nosso registros, estamos definindo um novo tipo, ou um novo molde de dados. As variáveis criadas com esse novo tipo terão o seu aspecto, definido na área de definição de tipo. A seguir, vamos ao exemplo algoritmico e na linguagem Pascal de uma definição de um tipo novo, criando um registro simples:

[Definição de Tipos]
   Aluno = registro
      nome : literal[30]
      idade : inteiro
   fim-registro

[Declaração de Variáveis]
   umAluno : Aluno

 

type
   Aluno = record
      nome : string[30];
      idade : integer;
   end;

var
   umAluno : Aluno;

Utilizar os registros dessa maneira é que você define um tipo, e ele fica sendo reconhecido em todo o seu programa, além da vantagem de você poder passar ou retornar um conjunto de variáveis de uma vez só em funções (calma, no próximo post veremos funções e procedimentos!). Lembrando que, em Pascal, a definição de tipos deve ser feita logo após a área Uses (ou a Program, no caso do PascalZim).

Porém, caso você for utilizar o registro somente uma vez, você pode declará-lo diretamente na área de variáveis da seguinte maneira:

[Declaração de Variáveis]
   Bola : registro
      cor : literal[20]
      peso : real
      diametro : real
   fim-registro

 

Var
   Bola : record
      cor : string[20];
      peso : real;
      diametro : real;
   end;

Beleza, tenho o meu registro. Mas como eu acesso os seus campos separadamente? Através do <nome do registro>.<nome do campo>. Dessa forma, apesar do registro ser uma única variável, ele nos oferece a possibilidade de acessar cada um dos seus campos separadamente. Um pequeno exemplo disso pode ser visto abaixo:

[Declaração de Variáveis]
   Aluno : registro
      nome : literal[30]
      idade : inteiro
   fim-registro

[Processamento]
   Aluno.nome ← "Rafael"
   Aluno.idade ← 20
   escreva("O aluno ", Aluno.nome, " tem ", Aluno.idade, " anos.")
[Fim]

 

var
   Aluno : record
      nome : string[30];
      idade : integer;
   end;

begin
   Aluno.nome := 'Rafael';
   Aluno.idade := 20;
   writeln('O aluno ', Aluno.nome, ' possui ', Aluno.idade, ' anos.');
   readkey;
end.

Bom, então é isso. Os registros podem assustar um pouco no começo, mas são simples e de grande utilidade. Qualquer dúvida, como eu já disse, é só deixar um comentário ou mandar um e-mail. No próximo post teremos Funções e Procedimentos, elementos essenciais na programação estruturada. Até lá! 🙂

Um comentário sobre “Registros

  1. Thiago de Paiva

    Estar de parabéns o blog, mas eu queria saber como faço para poder andar por ás quatro direções(direita, esquedar, cima, baixo) com esse programar ou talvés podendo ser até outro só com esse objetivo.
    Program Pzim ;
    VAR
    LETRA:CHAR;
    X,Y:INTEGER;
    Begin
    REPEAT
    repeat
    letra := upCase(ReadKey);
    until letra=#77;
    begin
    GOTOXY(X,Y);
    write(#177) ;
    end;
    UNTIL KEYPRESSED;
    End.
    Agradeco desde já.

Deixe uma resposta