domingo, 27 de maio de 2012

Registros - Conceito

Variáveis Compostas Heterogêneas

(texto retirado do site tiexpert.net)

Um registro (= record) é uma coleção de várias variáveis, possivelmente de tipos diferentes. Na linguagem C, registros são conhecidos como structs (abreviatura de structures).

Estrutura de Dados - STRUCT


O conceito de orientação a objeto - principalmente classes que serão tratadas mais a frente - tem uma base muito sólida no conceito de estrutura de dados.
As estruturas de dados consistem em criar apenas um dado que contém vários membros, que nada mais são do que outras variáveis. De uma forma mais simples, é como se uma variável tivesse outras variáveis dentro dela. A vantagem em se usar estruturas de dados é que podemos agrupar de forma organizada vários tipos de dados diferentes, por exemplo, dentro de uma estrutura de dados podemos ter juntos tanto um tipo float, um inteiro, um char ou um double.
As variáveis que ficam dentro da estrutura de dados são chamadas de membros ou campos.

Criando uma estrutura de dados com STRUCT


Para criar uma estrutura de dados usamos a palavra reservada struct. Toda estrutura deve ser criada antes de qualquer função ou mesmo da função principal main. Toda estrutura tem nome e seus membros são declarados dentro de um bloco de dados. Após a definição de seus membros no bloco de dados, terminamos a linha com um ponto-e-vírgula (;). Portanto:

struct nome_da_estrutura
          {
          tipo_de_dado  nome_do_membro;
          };

Por exemplo, se fossemos criar uma estrutura de dados para simbolizar uma data faríamos:

struct data 
          {
          int dia;
          int mes;
          int ano;
          };

Declarando um struct e acessando seus membros


Ainda utilizando o exemplo acima, vamos declarar uma variável do tipo estrututa de dados data e acessar seus membros.
Após criarmos uma estrutura de dados com struct, poderemos utilizá-la como um tipo de dado comum (ex.: float, int, char). E para acessar seus membros utilizamos a variável declarada mais um ponto (.) e o nome do membro. Veja este exemplo abaixo: 

#include <iostream>
#include <stdio.h>

using namespace std;

struct data 
          {
          int dia;
          int mes;
          int ano;
          };

int main ()
{
     data hoje;
     hoje.dia = 23;
     hoje.mes = 9;
     hoje.ano = 2008;
     cout << "Hoje e " << hoje.dia << "/" << hoje.mes << "/" << hoje.ano << endl;
     system ("pause");
}

Portanto, a variável hoje é declarada como sendo um tipo de dado data. Data é uma estrutura de dados que tem três características (ou três membros) inteiros: dia, mes e ano. Como hoje é um tipo de dado data, ele obtém os mesmos três membros. Para acessar cada membro, usamos a variável e depois o nome do membro que queremos acessar separados por ponto (.).


Exercício 1 da aula de Algoritmo Estruturado de 23/05


Implementar o programa para ler e imprimir um vetor de 5 contas.

Algoritmo


Programa Contas
     regcliente = registro
          nome: literal
          rua: literal
          numero: inteiro
          cep: inteiro
          saldo: real
     fim_registro
     Declare contas: vetor[1..5] de regcliente
     Declare i: inteiro
Inicio
        Para i ← 1 até 5 Faça
        Inicio_para
                Leia (contas[i].nome)
                Leia (contas[i].rua)
                Leia (contas[i].numero)
                Leia (contas[i].cep)
                Leia (contas[i].saldo)
        Fim_para
        Para i ← 1 até 5 Faça
        Inicio_para
                Escreva (contas[i].nome)
                Escreva (contas[i].rua)
                Escreva (contas[i].numero)
                Escreva (contas[i].cep)
                Escreva (contas[i].saldo)
        Fim_para
Fim

Código implementado no Dev-C++ 4.9.9.2


#include <iostream>
#include <stdio.h>

using namespace std;

struct regcliente //declaracao do registro
          {
          int numero, cep;
          char nome[30], rua[30];
          float saldo;
          };

int main()
{
     regcliente contas[5]; //declaracao da variavel contas do tipo registro
     int i;
     for (i = 0; i < 5; i++)
           {
           cout << "CONTA NUMERO " << i+1 << "\n\n";
           cout << "Digite o nome: ";
           cin >> contas[i].nome;
           cout << "Digite o nome da rua: ";
           cin >> contas[i].rua;
           cout << "Digite o numero: ";
           cin >> contas[i].numero;
           cout << "Digite o CEP: ";
           cin >> contas[i].cep;
           cout << "Digite o saldo em R$: ";
           cin >> contas[i].saldo;
           system("cls");
           }
     for (i = 0; i < 5; i++)
           {
           cout << "CONTA NUMERO " << i+1 << "\n\n";
           cout << "Nome: " << contas[i].nome << endl;
           cout << "Rua: " << contas[i].rua << endl;
           cout << "Numero: " << contas[i].numero << endl;
           cout << "CEP: " << contas[i].cep << endl;
           cout << "Saldo: R$ " << contas[i].saldo << endl;
           cout << "\n\n";
           system("PAUSE");
           system("cls");
           }
     system("PAUSE");
}

Nenhum comentário:

Postar um comentário