Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Estrutura de Dados UNIDADE I - Agregados Homogêneos e Heterogêneos Structs Elionai Gomes de Almeida Sobrinho STRUCTS 2.1 Uso das estruturas heterogêneas definidas pelo programador a maioria dos problemas modelados necessitam de uma representação dos dados composta por diferentes tipos simultaneamente, tais como, string, inteiros, datas, etc. Esta variação de tipos de dados é permitida na composição de uma estrutura de dados heterogênea. NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 2 STRUCTS O exemplo a seguir, ilustra a utilização de struct. struct DADOS_ALUNO{ int CodAluno; char Nome[100]; int Turma; }; 2.2 Tipos de elementos que podem ser membros de uma estrutura Basicamente todos os tipos de variáveis em C++ podem ser utilizadas como membros de uma estrutura. Os membros mais comuns são: int, char, float etc. NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 3 STRUCTS 2.3 Definição e declaração de estruturas heterogêneas localmente e globalmente No exemplo a seguir, a estrutura heterogênea foi declarada localmente dentro da função main(). Isto implica que a estrutura somente poderá ser utilizada dentro da função main(). #include <iostream> using namespace std; void main(){ struct DADOS_ALUNO{ int CodAluno; char Nome[100]; int Turma; }; struct DADOS_ALUNO AlunoA; AlunoA.CodAluno = 10; strcpy(AlunoA.Nome, "Gabriela"); AlunoA.Turma = 250; cout << "Código do Aluno: "<<AlunoA.CodAluno<< endl; cout << "Nome: " << AlunoA.Nome << endl; cout << "Turma: " << AlunoA.Turma << endl; system("pause > null"); } NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 4 STRUCTS Inicialmente foi definida uma estrutura chamada DADOS_ALUNO com três variáveis membros: CodAluno, Nome e Turma. struct DADOS_ALUNO{ int CodAluno; char Nome[100]; int Turma; }; Uma vez a estrutura definida, é possível declarar variáveis do tipo DADOS_ALUNO. struct DADOS_ALUNO AlunoA; NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 5 STRUCTS Os membros da estrutura podem ser acessados através do operador ponto. O programa atribui valores aos membros da estrutura e em seguida exibiu os valores na tela. Uma observação nesse trecho é em relação ao membro AlunoA.Nome. Por ser um vetor do tipo char, não é possível lhe atribuir um texto diretamente. Neste caso é utilizado a função strcpy(...). A função strcpy(destino, origem) copia um texto origem para dentro de uma variável destino. AlunoA.CodAluno = 10; strcpy(AlunoA.Nome, "Gabriela"); AlunoA.Turma = 250; cout << "Código do Aluno: " << AlunoA.CodAluno << endl; cout << "Nome: " << AlunoA.Nome << endl; cout << "Turma: " << AlunoA.Turma << endl; NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 6 STRUCTS Para que possa ser utilizada por todas as funções que possam ser criadas dentro da aplicação, a estrutura deve ser declarada globalmente, ou seja, fora da função main(). void main(){ AlunoA.CodAluno = 10; strcpy(AlunoA.Nome, "Gabriela"); AlunoA.Turma = 250; cout << "Código do Aluno: " << AlunoA.CodAluno << endl; cout << "Nome: " << AlunoA.Nome << endl; cout << "Turma: " << AlunoA.Turma << endl; system("pause > null"); } #include <iostream> using namespace std; struct DADOS_ALUNO{ int CodAluno; char Nome[100]; int Turma; }; struct DADOS_ALUNO AlunoA; NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 7 STRUCTS 2.4 Construção de funções usando estruturas heterogêneas #include <iostream> using namespace std; struct DADOS_ALUNO{ int CodAluno; char Nome[100]; int Turma; }; As estruturas podem ser passadas para funções da mesma forma como são feitas com as variáveis. O tipo do parâmetro da função, que recebe a estrutura, deve ser do mesmo tipo desta estrutura. No exemplo a seguir a variável AlunoA foi passada para a função Imprimir(...). Notem que o tipo do parâmetro que recebe a variável é do tipo da estrutura DADOS_ALUNO. NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 8 STRUCTS 2.4 Construção de funções usando estruturas heterogêneas void Imprimir(DADOS_ALUNO Aluno); void main(){ struct DADOS_ALUNO AlunoA; cout << "Digite o código do aluno: "; cin >> AlunoA.CodAluno; cout << "Digite o nome do aluno: "; cin >> AlunoA.Nome; cout << "Digite a turma: "; cin >> AlunoA.Turma; // Envia a estrutura para ser impressa na tela Imprimir(AlunoA); system("pause > null"); } void Imprimir(DADOS_ALUNO Aluno){ cout << "Código do Aluno: " << Aluno.CodAluno << endl; cout << "Nome: " << Aluno.Nome << endl; cout << "Turma: " << Aluno.Turma << endl; } NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 9 EXERCÍCIOS 1. Defina uma estrutura que irá representar bandas de música. Essa estrutura deve ter o nome da banda, que tipo de música ela toca, o número de integrantes e em que posição do ranking essa banda está dentre as suas 5 bandas favoritas. 2. Construa uma declaração de struct em C++ que possa acomodar dados provenientes de uma tabela conforme o exemplo a seguir: NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 10 EXERCÍCIOS 3. Ano: 2012 / Banca: CESGRANRIO / Órgão: PETROQUÍMICA SUAPE / Prova: Analista de Infraestrutura Pleno A estrutura a seguir é usada para guardar os dados cadastrais dos alunos de uma turma. typedef struct aluno { int matric; char nome [31]; float media; } Aluno; Considere que um determinado sistema de informação necessite de uma função que realize uma busca em um vetor de alunos que esteja ordenado NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 11 EXERCÍCIOS descendentemente pelo campo nome da estrutura anterior (variável nome). Dado que o vetor se encontra ordenado, a função em questão deverá implementar o algoritmo de busca binária. O cabeçalho dessa função deverá ser o seguinte: int busca(Aluno la[],char nm,int ini, int fin); A função irá receber o vetor ordenado de alunos (variável la) e o nome de um aluno qualquer (variável nm). Caso exista no vetor um aluno com o nome passado como parâmetro (variável nm), a função deverá retornar a sua posição no vetor de alunos, caso contrário a função deverá retornar o inteiro -1. Qual implementação atinge os objetivos descritos acima?. NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 12 EXERCÍCIOS NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 13 EXERCÍCIOS NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 14 EXERCÍCIOS NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 15 EXERCÍCIOS NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 16 EXERCÍCIOS NA IMAGEM (RETIRAR A VÍRGULA E COLOCAR “TABLET” EM ITÁLICO): Tão simples que você nem precisa pedir. Acesse no celular, no tablet ou no computador. 17 Referência: RICARDO BALIEIRO. Estrutura de Dados Obrigado!
Compartilhar