Cursos / Jogos Digitais / Programação Estruturada / Aula

arrow_back Aula 12 - Registros e enumerações

4. Utilizando Registros

Agora vamos mostrar como utilizar registros. Vamos criar um programa que lê os dados de um endereço. Considerando a classe “Registro” já criada, analise o seguinte código:

Nesse programa, a novidade está no seguinte comando:

Esse comando declara uma variável end do tipo “Endereco”. Note que variáveis podem ser não só de tipo primitivo (int, float, etc.), mas também do tipo registro. E a novidade está na forma que inicializamos esse registro. Usamos a palavra chave new para informar ao ambiente de execução do programa que é necessário alocar espaço na memória para caber todas as informações contidas em um registro do tipo “Endereco”.

Se as variáveis que armazenam as informações do endereço no registro (rua, número, bairro, cidade, etc.) tivessem sido declaradas com o static, não precisaríamos usar a palavra chave new. Usamos, nesse caso, justamente porque a alocação do espaço em memória é dinâmica, e não estática. A vantagem de alocar dinamicamente o espaço para os registros é que você pode alocar espaço para quantos registros quiser! Veremos isso através de um exemplo mais adiante.

Outra novidade é a forma de acessar as variáveis do registro. Basta colocar o nome da variável que representa o registro (end) e o nome do campo do registro que queremos acessar (rua, número, etc.) separado por um ponto. Dessa forma, para ler ou escrever o nome da rua, usamos a expressão “end.rua” para termos acesso de escrita ou leitura a esse espaço de memória.

Bom, agora que você já deve ter entendido bem o código do programa mostrado, vamos fazer uma pequena variação no código criando um novo programa:

Observe que parte do código da rotina “main()” anteriormente mostrada foi deslocado para duas novas rotinas, o “lerEndereco” e o “imprimirEndereco”. A função “lerEndereco” lê um endereço do teclado e armazena os dados em um novo registro do tipo “Endereco”, retornando ao registro criado. Já o procedimento “imprimirEndereco” recebe como parâmetro um registro do tipo endereço e imprime seus dados na tela do computador.

A rotina “main()” criada, chama agora duas vezes as rotinas “lerEndereco” e “imprimirEndereco”. Isso quer dizer que serão criados, lidos e impressos na tela dois registros do tipo “Endereco”!

Note que registros podem ser passados como parâmetro para procedimentos e funções, bem como retornados por funções. Se o registro “Endereco” possui 6 campos (rua, número, bairro, etc.), isto quer dizer que evitamos de declarar 6 parâmetros na função “imprimirEndereco”, passando a apenas um, que é um registro que agrupa todos os 6 campos. Outra vantagem é que se surgir um sétimo campo em “Endereco”, automaticamente a função “imprimirEndereco” já estará apta a manipular esse novo campo, já que ela recebe a estrutura “Endereco” como um todo.

Os registros são recursos muito interessantes, não são?

Versão 5.3 - Todos os Direitos reservados