Buscar

Aula 14

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ECT1203 Linguagem de Programação
2012.1
Prof. Diego Rodrigues de Carvalho
Profa. Idalmis Milián Sardina
Prof. Luiz Eduardo Cunha Leite
Prof. Marconi Câmara Rodrigues 
Aula 14 – Tipos Estruturados II
Universidade Federal do Rio Grande do Norte
Escola de Ciências e Tecnologia
Hora de silenciar o celular
Manter o celular sempre desligado/silencioso quando estiver em sala de aula
Nunca atender o celular em sala de aula
Revisão da última aula
Struct: É capaz de armazenar diversas informações de diversos tipos.
Struct são declaradas como se fossem variáveis e seus membros são acessados através do ponto.
Estudante ouvinte;
ouvinte.Id = 2012232323;
Objetivo da Aula
Mostrar inicialização de estruturas, como são usadas com funções em parâmetros e valores de retorno.
Esses são os objetivos da aula
Inicialização de estruturas	
struct Ponto{
 double x,y;
};
Ponto origem = {0,0};
struct Data{
 int dia;
 char mes[10];
 int ano;
};
Data natal = 
{25, “Dezembro”, 2011};
A inicialização de estruturas é semelhante à inicialização de matrizes.
5
Inicialização de vetores de estruturas	
struct Ponto{
 double x,y;
};
Ponto trapezio[] = { {5,5}, {5,10}, {10,5}, {10,13} };
6
Inicialização de estruturas aninhadas	
struct Ponto{
 double x,y;
};
struct Linha{
 Ponto p1, p2;
};
Linha l = {{1.0,2,0}, 
 {3.5,4.8}};
struct Data{
 int dia;
 char mes[10];
 int ano;
};
struct Pessoa{
 char nome[50];
 Data nasc;
};
Pessoa chico = 
 { “Francisco”, 
 {10, “Maio”, 1970} };
7
Atribuições entre estruturas
Data natal = {25, “Dezembro”, 2011};
Data feriado = natal;
A informação contida em uma variável de uma estrutura pode ser atribuída a outra variável. 
O bloco de memória associado à variável original é todo (todos os campos) copiado para a variável destino.
A atribuição só é permitida entre variáveis de mesmo tipo.
8
Passando estruturas para funções
As estruturas podem ser passadas para funções da mesma forma que variáveis simples.
A passagem pode ser feita por valor ou referência.
9
struct Venda{
 int pecas;
 float preco;
};
void listaVenda(Venda, Venda);
int main(){
 Venda A, B;
 cout << “Venda A\n”;
 cout << “Numero de pecas:”;
 cin >> A.pecas;
 cout << “Preco:”;
 cin >> A.preco; 
 cout << “Venda B\n”;
 cout << “Numero de pecas:”;
 cin >> B.pecas;
 cout << “Preco:”;
 cin >> B.preco; 
 listaVenda(A,B);
 return 0;
}
void listaVenda(Venda X, Venda Y)
{
 cout << “VENDA TOTAL\n”;
 cout << “Pecas: ” << 
 (x.pecas+y.pecas) << endl;
 cout << “Preco: ” << 
 (x.preco+y.preco) << endl;
}
Passando estruturas por valor
A chamada à função listaVenda() cria novas variáveis X e Y para conter as cópias dos valores das variáveis A e B da função main(), enviadas como argumento.
10
Passando estruturas por referência
struct Venda{
 int pecas;
 float preco;
};
void listaVenda(Venda&, Venda&);
int main(){
 Venda A, B;
 cout << “Venda A\n”;
 cout << “Numero de pecas:”;
 cin >> A.pecas;
 cout << “Preco:”;
 cin >> A.preco; 
 cout << “Venda B\n”;
 cout << “Numero de pecas:”;
 cin >> B.pecas;
 cout << “Preco:”;
 cin >> B.preco; 
 listaVenda(A,B);
 return 0;
}
void listaVenda(Venda& X, Venda& Y)
{
 cout << “VENDA TOTAL\n”;
 cout << “Pecas: ” << 
 (x.pecas+y.pecas) << endl;
 cout << “Preco: ” << 
 (x.preco+y.preco) << endl;
}
Na passagem por referência, não há cópias de variáveis, evitando-se o uso desnecessário de espaço.
As variáveis X e Y de listaVenda() são referências para as variáveis A e B de main().
11
Passando estruturas por referência
struct Venda{
 int pecas;
 float preco;
};
void totalVendas(Venda&, Venda&, Venda &);
int main(){
 Venda A, B, T;
 cout << “Venda A\n”;
 cout << “Numero de pecas:”;
 cin >> A.pecas;
 cout << “Preco:”;
 cin >> A.preco; 
 cout << “Venda B\n”;
 cout << “Numero de pecas:”;
 cin >> B.pecas;
 cout << “Preco:”;
 cin >> B.preco; 
 totalVendas(A,B,T);
 cout << “VENDA TOTAL\n”;
 cout<<“Pecas:”<< T.pecas <<endl;
 cout<<“Preco:”<< T.preco <<endl;
 return 0;
}
void totalVendas(Venda& X, Venda& Y, Venda& total){
 total.pecas = X.pecas+Y.pecas;
 total.preco = x.preco+Y.preco;
}
A variável T de main() é modificada dentro função totalVendas() através da referência total.
12
Funções que retornam uma estrutura
struct Venda{
 int pecas;
 float preco;
};
void totalVendas(Venda&, Venda&, Venda&);
Venda novaVenda();
void imprimeVenda(Venda&);
int main(){
 Venda A, B, T;
 A = novaVenda();
 B = novaVenda();
 totalVendas(A,B,T);
 return 0;
}
void totalVendas(Venda& X, Venda& Y, Venda& total){
 total.pecas = X.pecas+Y.pecas;
 total.preco = x.preco+Y.preco;
 imprimeVenda(total);
}
Venda novaVenda(){
 Venda nova;
 cout << “Nova Venda\n”;
 cout << “Numero de pecas:”;
 cin << nova.pecas;
 cout << “Preco:”;
 cin << nova.preco;
 return nova;
}
void imprimeVenda(Venda& X){
 cout << “VENDA\n”;
 cout<<“Pecas:”<< X.pecas <<endl;
 cout<<“Preco:”<< X.preco <<endl;
}
Uma estrutura completa é retornada por novaVenda() através do comando return.
O conteúdo da variável nova é copiado para as variáveis A e B, membro a membro, após cada chamada à função novaVenda().
13
Mensagem final da disciplina
Programar é uma atividade que:
Faz você passar várias madrugadas acordado.
Faz com você passe menos tempo com os amigos.
Rouba várias horas do seu tempo de lazer.
Stress.
Por que eu devo programar?
Programar é uma ferramenta que transforma suas ideias em realidade.
“Conhecimento é poder”.
“Grandes poderes trazem grandes responsabilidades”.
Logo:
“Grandes conhecimentos trazem grandes responsabilidades”.
Sem a programação esse vídeo não existiria e teríamos um pedaço de papel com ideias bem bonitas.
http://www.nature.com/nature/journal/v485/n7398/extref/nature11076-s5.mov

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando