O objetivo dessa unidade é apresentar ao aluno o conceito de registros e sua utilização na linguagem C.
Até o presente momento os nossos dados eram armazenados ou através de variáveis simples do tipo char, int, float ou double, ou através de conjuntos de valores do mesmo tipo como vetores e matrizes.
Mas e se quisermos fazer, por exemplo, um programa que gerencie as contas de todos os clientes de um determinado banco. Consideremos que cada conta deve conter: o número da conta (identificador), o nome do cliente e o saldo.
Para então fazermos este programa poderíamos fazer o uso de uma variável simples para cada um destes elementos, implicaria, como são várias contas, a necessidade de vários vetores, ou seja um vetor para cada atributo. Porém essa estratégia atrapalharia a legibilidade e a manutenção do programa, além de dificultar a possibilidade de armazenamento dos dados em disco.
Não seria mais fácil termos todos os campos de uma conta juntos em uma única estrutura e cada instância dessa estrutura pertencesse a um cliente? Então como podemos fazer isso? A resposta é simples utilizando registros.
Um registro (= record) é um pacote de variáveis, que podem de tipos diferentes. Cada variável é um campo do registro. Na linguagem C, registros são conhecidos como structs (o nome é uma abreviatura de structure). Vamos entender melhor:
Os registros em C são definidos pela palavra reservada struct, conforme apresentado a seguir.
Considerando o exemplo que pretendemos fazer ficaria da seguinte maneira:
A partir da estrutura definhada anteriormente, o programa poderá considerar que existe um novo tipo de dado para ser utilizado, chamado conta. Esse tipo de dado é capaz de armazenar o número da conta, o nome do cliente e o saldo da conta.
Para que uma estrutura possa ser utilizada é necessário fazer uma declaração do tipo de dado criado. Vejamos sua estrutura:
Então para proseeguir vamos declarar uma variável do tipo conta.
Já que essa estrutura representa um novo tipo de dado, todas as operações realizadas como os tipos predefinidos da linguagem também podem ser realizados por ela. Dessa maneira variáveis, vetores e matrizes também podem ser declaradas como sendo do tipo conta.
A variável vet é um vetor de dez posições e, em cada posição, serão armazenados um número de conta, um nome e um saldo.
A variável mat é uma matriz de com 5 linhas e 4 colunas, onde em cada célula serão armazenados um número de conta, um nome e um saldo.
Também é possível fazer a declaração da variável junto com a definição da estrutura, no mesmo bloco de comandos. Observe o exemplo a seguir:
Depois que uma varíavel registro é declarada, o programa poderá manipular o seu conteúdo, ou seja, os valores armazenados em cada campo de sua estrutura. Para isso utilizamos individualmente esses campos como se fossem variáveis normais. A sintaxe é:
Vejamos alguns exemplos:
A leitura dos campos de um registro deve ser feita campo a campo, como se fossem variáveis independentes.A mesma coisa vale para a escrita.
Vejamos:
Exemplo de execução:
Podemos atribuir um registro a outro diretamente:
Automaticamente é feito uma cópia de cada campo de var2_registro para var1_registro.
Exemplo:
Exemplo de execução: