Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Técnicas de Programação (Estruturas) Prof. Alexandre Wagner Chagas Faria Definições... � Há cinco tipos básicos de dados que estão predefinidos no compilador e que já conhecemos e já utilizamos: São eles: char, int, float, double e void. � Esses tipos representam um único item de informação e, baseados neles, podemos definir tipos complexos que possibilitam agrupar um conjunto de variáveis diferentes sob um único nome Definições... � struturas são tipos de variáveis que agrupam dados geralmente desiguais enquanto matrizes são tipos de variáveis que agrupam dados similares. � Os itens de dados de uma estrutura são chamados membros, enquanto os itens de uma matriz são chamados elementos � A sintaxe para criar estruturas é a mesma da de classe. Assim aprender a lidar com estruturas é o caminho para entender classes objetos. Definições... � Por meio da palavra-chave struct definimos um novo tipo de dado. � Definir um novo 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 � Após ter sido definido, o novo tipo existe e pode ser utilizado para criar variáveis de modo similar ao que já aprendemos Exemplo: � O exemplo a seguir cria um tipo de dado que pode armazenar as informações de uma aluno 1° exemplo utilizando struct 1. #include <iostream.h> 2. struct aluno // definição da estrutura 3. { 4. int nmat; // Numero da matricula 5. float nota[3]; //notaS 6. float media; // calcula a media das notas 7. }; 8. int main () 9. { 10. aluno ana; // declara uma variável do tipo aluno 11. ana.nmat=456; 12. ana.nota[0]=7.5; 13. ana.nota[1]=5.2; 14. ana.nota[2]=8.4; 15. ana.media=(ana.nota[0]+ana.nota[1]+ana.nota[2])/3; 16. cout<<"\nMatricula: "<<ana.nmat; 17. cout<<"\nMedia: "<<ana.media; 18. cout<<"\n\n"; 19. system ("pause"); 20. } Definindo a estrutura struct aluno { int nmat; float nota[3]; float media; }; Palavara- chave Nome do tipo MembrosChaves Ponto e virgula Definições... � A palavra struct indica que um novo tipo de dado está sendo definido e a apalavra aluno será o seu nome. � No nosso exemplo, definimos o tipo aluno antes de main(), o que permite um acesso global a todas as funções do programa. Definições... � A instrução aluno ana ; declara uma variável de nome ana, do tipo aluno. � Esta declaração reserva espaço de memória suficiente para armazenar todos os membros da estrutura Acessando os membros da estrutura � Uma vez criada a variável estrutura, seus membros podem ser acessados por meio do operador ponto � A instrução ana.nmat=456, atribui o valor 456 ao primeiro membro da variável ana. � Obs: O operador ponto conecta o nome de uma variável estrutura ao membro dela. Pedindo o usuário para entrar com os dados 1. #include <iostream.h> 2. struct aluno // definição da estrutura 3. { 4. int nmat; // Numero da matricula 5. float nota[3]; //notaS 6. float media; // calcula a media das notas 7. char curso[10]; //Nome do curso 8. }; 9. int main () 10. { 11. aluno ana; // declara uma variavel do tipo aluno 12. cout<<"\nEntre com a matricula: "; 13. cin>>ana.nmat; 14. cout<<"\nEntre com o curso: "; 15. cin>>ana.curso; 16. cout<<"\nEntre com a Nota de Algoritmo: "; 17. cin>>ana.nota[0]; 18. cout<<"\nEntre com a anota de Calculo: "; 19. cin>>ana.nota[1]; 20. cout<<"\nEntre com a nota de Fisica"; 21. cin>>ana.nota[2]; 22. ana.media=(ana.nota[0]+ana.nota[1]+ana.nota[2])/3; 23. cout<<"\n\nA aluna, que possui a matricula: "<<ana.nmat<<", frequenta o curso "<<ana.curso<<", e tem media escolar de "<<ana.media; 24. cout<<"\n\n"; 25. system ("pause"); 26. } Estruturas aninhadas � Exatamente como podemos ter matrizes em que cada elemento é outra matriz, podemos definir estruturas com membros que sejam outras estruturas. � O exemplo a seguir apresenta um exemplo de estruturas aninhadas Estruturas aninhadas 1. #include <iostream.h> 2. struct data 3. { 4. int dia; 5. char mes[10]; 6. int ano; 7. }; 8. struct venda 9. { 10. int pecas; 11. float preco; 12. data diavenda; 13. }; 14. int main() 15. { 16. venda A={20,110,{3,"Junho",2011}}; 17. cout<<"\nPecas: "<<A.pecas; 18. cout<<"\nPreco: "<<A.preco; 19. cout<<"\nData: "<<A.diavenda.dia<<" de "<<A.diavenda.mes<< " de "<<A.diavenda.ano; 20. cout<<"\n\n"; 21. system("pause"); 22. } Comentários... � No exemplo anterior, adicionamos um membro do tipo data à estrutura venda, e criamos a variável A do tipo venda. � A variável A tem 3 membros dos quais um deles é uma estrutura do tipo data. Portanto A.diavenda é o nome de uma variável estrutura do tipo data e, para acessar seus membros, devemos aplicar o operador ponto novamente. � A variável A foi inicializada na instrução venda A={20, 110, {03, “junho”, 2011}}, Observem que o membro diavenda, por ser uma estrutura, é inicializado colocando seus membros entre chaves e separando-os por vírgulas. � Logicamente, este processo não para neste nível; podemos ter uma estrutura dentro de outra quantas vezes desejarmos ou quisermos.. Complicando um pouco... Passando estruturas para funções � As estruturas podem ser passadas como argumento de função, da mesma forma que as variáveis simples. � O nome de uma estrutura em C++ não é um endereço, portanto ela pode ser passada por valor. � Vamos exemplificar com uma função que recebe uma estruturas como argumento, e cada estrutura com 3 membros. A função recebe a estrutura e imprime o resultado, ou seja não retorna nada void. Passando uma estrutura para uma função 1. #include<iostream.h> 2. struct peca 3. { 4. char nome[15]; 5. int codigo; 6. int quantidade; 7. }; 8. void imprime(peca x); 9. int main() 10. { 11. peca a,b; 12. cout<<"\nEntre com o nome da peca a: "; 13. cin>>a.nome; 14. cout<<"Entre com o nome da peca b: "; 15. cin>>b.nome; 16. cout<<"\nEntre com o codigo da peca a: "; 17. cin>>a.codigo; 18. cout<<"\Entre com o codigo da peca b: "; 19. cin>>b.codigo; 20. cout<<"\nEntre com a quantidade de pecas a no estoque: "; 21. cin>>a.quantidade; 22. cout<<"\Entre com a quantidade de pecas b no estoque: "; 23. cin>>b.quantidade; 24. imprime(a); 25. imprime(b); 26. cout<<"\n\n"; 27. system("pause"); 28. } 29. void imprime(peca x) 30. { 31. cout<<"\nA peca "<<x.nome<<", codigo: "<< x.codigo<<", possui "<<x.quantidade<<" amostras no estoque!"; 32. cout<<"\n"; 33. } Comentários � O protótipo da função imprime() e as instruções de seu corpo tratam as variáveis argumentos como qualquer tipo simples � A função cria a nova variável, chamada x, para conter os dados da estrutura a e b de main() enviadas como argumentos Comentários finais... � A palavra struct permite ao programador definir seus próprios tipos de dados, conforme sua necessidade. � Uma estrutura é um conjunto de variáveis, que podem ser de tipos diferentes, agrupada numa única unidade � Definir uma estrutura significa informar ao compilador como ela está organizada, quais seus itens e o seu nome. � A definição de uma estrutura não cria nenhuma variável, para criá-la, é necessário incluir uma instrução de declaração de variável. � Os itens de dados de uma estrutura são chamados membros e são acessados por meior do operador ponto. Este operador conecta o nome de uma variável estrutura a um membro dela. BIBLIOGRAFIA * Treinamento em C++, Victorine Viviane * Deitel, H.M; Deitel, P.J. Como programar em C++. Rio de Janeiro: LTC, 1994, 486p. 1. #include <iostream.h> 2. struct ferramenta 3. { 4. char nome[10]; 5. int codigo; 6. int quantidade; 7. float preco; 8. }; 9. int main() 10. { 11. ferramenta a,b; 12. cout<<"\nEntrecom os nomes: "; 13. cin>>a.nome>>b.nome; 14. cout<<"\nA ferramenta chama-se: "<<a.nome<<"e a outra "<<b.nome; 15. cout<<"\n\n"; 16. system("pause"); 17. } Até a próxima aula Alexandre Wagner axlwagner@gmail.com
Compartilhar