Baixe o app para aproveitar ainda mais
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
Compartilhar