Buscar

09. REGISTROS OU ESTRUTURAS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
Registros ou Estruturas
2
Variáveis Compostas 
Heterogêneas
 Conjuntos de dados logicamente 
relacionados, mas de tipos diferentes 
(numérico, literal, lógico).
 Conhecidos como registros ou 
estruturas.
3
Variáveis Compostas 
Heterogêneas
 Os registros correspondem a conjuntos de 
posições de memória conhecidos por um 
mesmo nome e individualizados por 
identificadores associados a cada conjunto 
de posições.
 Na variável composta homogênea, a 
individualização de um elemento é feita 
através de índices, já no registro cada 
componente é individualizado pela 
explicitação de seu identificador.
4
Variáveis Compostas 
Heterogêneas
 Um registro é, portanto, uma coleção 
de campos, em que cada campo pode 
ser de um tipo diferente.
 A linguagem C++ também oferece 
outros dois mecanismos para a 
criação de variáveis compostas 
heterogêneas: uniões e classes.
5
Variáveis Compostas 
Heterogêneas
 Por meio da palavra-chave struct define-se 
um novo tipo de dado.
 Definir um tipo de dado significa informar ao 
compilador o seu nome, o seu tamanho em 
bytes e o formato em que ele deve ser 
armazenado e recuperado da memória.
 Informa como ele está organizado e quais 
são os seus membros.
 A definição de um registro não cria a 
variável, somente informa ao compilador as 
características do novo tipo. Não há reserva 
de memória.
6
Variáveis Compostas 
Heterogêneas
 Em C/C++ esta declaração é realizada da 
seguinte forma:
struct Nome_da_estrutura {
tipo identificador1;
tipo identificador2;
...
tipo identificadorN;
} variáveis;
Variáveis Compostas 
Heterogêneas
8
Variáveis Compostas 
Heterogêneas - Exemplo
Nome do 
Registro
Componentes 
do Registro
Struct Cliente
{
 string Nome;
 string Rua;
 int Numero;
 string CEP;
 char Sexo;
 string Nascimento;
 string CPF;
 String RG;
} ;
Variáveis Compostas Heterogêneas 
– Declaração de Variáveis
 Depois de definir um novo tipo de dado, este 
pode ser usado para declarar variáveis de modo 
análogo a qualquer tipo simples.
 Sintaxe:
tipoDeDadoRegistro nomeDaVariável;
 Exemplos:
 Funcionario funcionario; // variável funcionario do tipo Funcionario
 Cliente C[10]; //Vetor de 10 posições do tipo Cliente
Variáveis Compostas Heterogêneas – 
Acesso aos membros de um registro
 Pelo fato de o registro conter várias informações, para 
acessar um campo individualmente é necessário indicar o 
nome da variável e o nome do campo desejado, 
separados pelo operador ponto.
 Sintaxe:
Variáveis Compostas Heterogêneas – 
Acesso aos membros de um registro
 Exemplos:
Funcionario funcionario;
cout << funcionario.nome; // Imprime o nome do funcionário
cout << funcionario.nome[0]; // Imprime o primeiro caracter do nome
Funcionario funcionarios[10];
cout << funcionarios[9].nome; // Imprime o nome do último funcionário
cout << funcionarios[0].nome[0]; /* Imprime o primeiro caracter do nome 
do primeiro funcionário*/
Variáveis Compostas Heterogêneas – 
Inicialização de variáveis do tipo registro
 É possível inicializar uma variável do tipo registro de 
forma semelhante a uma matriz. 
 Os valores a serem atribuídos a seus membros devem 
ser colocados na ordem em que foram definidos, 
separados por vírgulas e entre chaves.
struct Data{
 int dia;
 int mes;
 int ano;
};
Data natal = {25,12,2013};
Data aniversario = {12,8,2013};
Variáveis Compostas Heterogêneas – 
Atribuições entre registros
 Uma variável do tipo registro pode ser atribuída à 
outra variável do mesmo tipo por meio de uma 
atribuição simples. 
 Os valores de todos os membros de um registro 
são atribuídos aos membros de outro registro.
struct Data{
 int dia;
 int mes;
 int ano;
};
Data anoNovo = {1, 1, 2012};
Data aniversarioCris = anoNovo;
14
Variáveis Compostas 
Heterogêneas - Exemplo
 Em um certo município, vários proprietários 
de imóveis estão em atraso com o 
pagamento do imposto predial. Desenvolver 
um programa que calcule e escreva o valor 
da multa a ser paga por esses proprietários 
considerando que:
 Os dados de cada imóvel: identificação (string), 
valor do imposto e número de meses em atraso 
serão digitados;
 As multas devem ser calculadas a partir do valor 
do imposto e de acordo com a tabela.
15
Variáveis Compostas 
Heterogêneas - Exemplo
16
Variáveis Compostas 
Heterogêneas - Exemplo
/*ProgC078 - Programa para 
apresentação de estruturas em C*/
#include <iostream>
int main(){
 struct {int Id;
 float Imp;
 int Meses;} Imovel;
 float Multa;
 char resp = 'S';
 while(resp == 'S') {
 std::cout << "\nDigite os dados 
do imovel (Identificador, Imposto e 
Meses): ";
 std::cin >> Imovel.Id >> 
Imovel.Imp >> Imovel.Meses;
 if (Imovel.Imp <= 50)
 Multa = 1;
 else if (Imovel.Imp <= 180)
 Multa = 2;
 else if (Imovel.Imp <= 500)
 Multa = 3;
 else
 Multa = 5;
 Multa = ((Multa * Imovel.Imp) / 100) 
* Imovel.Meses;
 std::cout << "\nImovel: " << 
Imovel.Id << "\tMulta: " << Multa << 
"\n";
 std::cout << "Deseja Continuar 
(S/N)? ";
 std::cin >> resp;
 }
 return 0;
}
Declaração de estrutura. 
Leitura da estrutura. 
Teste de componente da estrutura
Escrita da estrutura. 
17
Variáveis Compostas 
Heterogêneas - Exemplo
/*ProgC079 - Programa para 
apresentação de vetores de 
estruturas em C*/
#include <iostream>
#include <cstdlib>
using namespace std;
struct Venda{
 int pecas;
 float preco;
};
Venda Vendas[5];
int main(){
 int cont = 1;
 while (cont <= 5) {
 cout << "Digite a Peca " << cont << 
": ";
 cin >> Vendas[cont].pecas;
 cout << "Digite o preco " << cont 
<< ": ";
 cin >> Vendas[cont].preco;
 cont++;
 }
 cont = 1;
 while (cont <= 5) {
 cout << "A Peca " << 
Vendas[cont].pecas << " tem valor = " 
<< Vendas[cont].preco << "\n";
 cont++;
 }
 system ("PAUSE > 0");
 return 0;
}
Declaração de estrutura. 
Declaração de vetor de estrutura. 
18
Variáveis Compostas 
Heterogêneas - Exemplo
/*ProgC080.cpp - Outra forma de 
declarar estrutura*/
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
typedef struct Produto{
 int cod;
 float valor;
 char nome[30];
};
int main(){
 Produto Prod;
 cout << "Digite o codigo do produto: 
";
 cin >> Prod.cod;
 cout << "Digite o valor do 
produto: ";
 cin >> Prod.valor;
 fflush(stdin);
 cout << "Digite o nome do 
produto: ";
 gets(Prod.nome);
 cout << "Apresentacao da 
Entrada de Dados \n\n\tCodigo: " 
<< Prod.cod;
 cout << "\n\tValor: " << 
Prod.valor;
 cout << "\n\tNome: " << 
Prod.nome;
 system ("pause>0");
 return 0;
}
Outra forma de 
declarar registro 
19
Variáveis Compostas Heterogêneas – 
Passando registro para funções
 Variáveis do tipo registro podem ser 
passados como parâmetro de funções 
da mesma maneira que foi trabalhado 
com as demais variáveis (simples, 
vetores ou matrizes).
20
Variáveis Compostas Heterogêneas – 
Passando registro para funções
/*ProgC081.cpp - Registro e funções*/
#include <iostream>
#include <cstdio>
using namespace std;
struct Funcionario {
 int codigo;
 char nome[30];
 float salario;
 char sexo;
};
void cadastra(Funcionario &f);
void exibe(Funcionario f);
int main() {
 Funcionario funcionario;
 cadastra(funcionario);
 exibe(funcionario);
 return 0;
}
void cadastra(Funcionario &f) {
 cout << "Entre com o código: ";
 cin >> f.codigo;
 cout << "Entre com o nome: ";
 fflush(stdin);
 gets(f.nome);
 cout << "Entre com o salário: ";
 cin>> f.salario;
 cout << "Entre com o sexo: ";
 cin >> f.sexo;
}
void exibe(Funcionario f){
 cout << "\nCódigo: " << f.codigo;
 cout << "\nNome: " << f.nome;
 cout << "\nSalário: " << f.salario;
 cout << "\nSexo: " << f.sexo;
}
Declaração de 
registro 
Protótipos 
Passagem por 
referência
Passagem por 
valor 
21
Variáveis Compostas Heterogêneas – 
Passando registro para funções
 A sintaxe de passar um vetor ou 
matriz de registros é semelhante a de 
passar vetor ou matriz de variáveis 
simples. 
 Na chamada a uma função deve-se 
escrever apenas o nome do vetor ou 
matriz. 
 No cabeçalho de definição da função 
declaram-se normalmente os 
vetores/matrizes de registros.
22
Variáveis Compostas Heterogêneas – 
Passando registro para funções
/*ProgC082.cpp - Registro e Função*/
#include <iostream>
#include <cstdio>
using namespace std;
struct Funcionario{
 int codigo;
 char nome[30];
 float salario;
 char sexo;
};
void cadastra(Funcionario f[]);
void exibe(Funcionario f[]);
int main(){
 Funcionario funcionarios[10];
 cadastra(funcionarios);
 exibe(funcionarios);
 return 0;
}
void cadastra(Funcionario f[10]){
 for(int i=0; i<10; i++) {
 cout << i+1 << "o. FUNCIONARIO\n";
 cout << "Entre com o código: ";
 cin >> f[i].codigo;
 cout << "Entre com o nome: ";
 fflush(stdin); gets(f[i].nome);
 cout << "Entre com o salário: ";
 cin >> f[i].salario;
 cout << "Entre com o sexo: ";
 cin >> f[i].sexo;
 } }
void exibe(Funcionario f[10]){
 for(int i=0; i<10; i++) {
 cout << i+1 << "o. FUNCIONARIO\n";
 cout << "\nCódigo: " << f[i].codigo;
 cout << "\nNome: " << f[i].nome;
 cout << "\nSalário: " << f[i].salario;
 cout << "\nSexo: " << f[i].sexo;
 } }
Declaração de 
registro 
Protótipos 
Vetor 
Parâmetro vetor
23
Variáveis Compostas Heterogêneas – 
Passando registro para funções
 Pode-se retornar um registro completo 
para outra função, como pode ser 
observado na função novaVenda() no 
exemplo a seguir.
24
Variáveis Compostas Heterogêneas – 
Passando registro para funções
/*ProgC083.cpp - Função e registro*/
#include <iostream>
using namespace std;
struct Venda{
 int quantPecas;
 float preco;
};
Venda novaVenda(){
 Venda v;
 cout << "\nNova Venda\n";
 cout << "\nInsira o numero de peças: ";
 cin >> v.quantPecas;
 cout << "\nInsira o preço: ";
 cin >> v.preco;
 return v;
}
void listaTotalVendas(Venda &v1, Venda &v2){
 cout << "\nVenda Total\n";
 cout << "\nTotal de peças: " << 
(v1.quantPecas + v2.quantPecas);
 cout << "\nPreço Total: " << (v1.preco + 
v2.preco);
}
 int main() {
 Venda venda1, venda2;
 venda1 = novaVenda();
 venda2 = novaVenda();
 listaTotalVendas(venda1, venda2);
 return 0;
}
Declaração de 
registro 
25
Variáveis Compostas Heterogêneas – 
Registros Aninhados
 Podem-se definir tipos de dados 
registro cujos membros são outros 
registros. 
Variáveis Compostas Heterogêneas – 
Registros Aninhados
/*ProgC084.cpp - Registro aninhado*/
#include <iostream>
#include <cstdio>
using namespace std;
 struct Data{
 int dia; int mes; int ano;};
struct Venda{
 int quantPecas; float preco; Data dtVenda;};
int main(){
 Venda v = {15, 130.50, {27, 5, 2011}};
 cout << "Quantidade de peças: " << v.quantPecas << endl
 << "Preço: " << v.preco << endl
 << "Data da venda: " << v.dtVenda.dia << "/" << v.dtVenda.mes << "/" << 
v.dtVenda.ano;
 return 0;
}
Declaração de 
registro Aninhamento
27
Exercícios
 Criar um programa que crie o registro 
a seguir e faça a entrada de dados 
deste registro, apresentando a 
entrada realizada:
 Cliente – codigo, nome, produto 
comprado, valor comprado, data entrega, 
data pagamento, tipo pagamento. 
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27

Outros materiais