Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor: Renato Peixoto Maio/2007 Estruturas Estruturas: São utilizadas para armazenar dados heterogêneos (tipos diferentes). Ex: dados de um aluno Nome (string) Matrícula (inteiro) Data de nascimento (dd/mm/aaaa => 3 inteiros) Curso (inteiro ou string) IRA (real). Vetores e matrizes: Armazenam um conjunto de dados do mesmo tipo (dados homogêneos). 2 Estruturas Definição: struct DadosAluno{ char Nome[200]; int Matricula; int DiaNasc; int MesNasc; int AnoNasc; int Curso; // Codigo do curso double IRA // Indice de rendimento academico }; Declaração de variáveis: struct DadosAluno aluno; struct DadosAluno vet_aluno[1000]; struct DadosAluno *ptr_aluno; 3 Estruturas Acesso aos dados: Através do nome da variável e do nome do campo. Exemplos: cout << aluno.Matricula; cout << vet_aluno[i].Matricula; cout << ptr_aluno->Matricula; Importante: Utiliza-se “.” nas variáveis comuns. Utiliza-se “->” nas variáveis tipo ponteiro. Vetores alocados dinamicamente são tratados como variáveis comuns após a alocação. 4 Estruturas Tipos Abstratos de Dados (TAD): Verifica-se que as estruturas podem ser encaradas como novos tipos definidos pelo programa. Além dos dados contidos na estrutura é possível definir funções que atuem sobre estes dados. Estas funções definem o comportamento dos tipos criados. Este mecanismo permite criar novos tipos além dos básicos definidos pela linguagem: char, int, bool, float, double, ... 5 Tipos Abstratos de Dados Tipo Abstrato de Dados ou Tipo Definido pelo Usuário: Nomes utilizados para descrever os novos tipos de dados criados em um programa. Mecanismos de definição: Estruturas (struct). Enumerados (enum). Uniões (union): pouco utilizado. Enumerados: Utilizados para definir os valores possíveis de uma variável (inteira): enum _eResultado{VITORIA, EMPATE, DERROTA}; enum _eResultado jogo; if (jogo == VITORIA) cout << “Ganhamos!”; 6 Tipos Abstratos de Dados Comando typedef: Formaliza a definição de novos tipos: typedef struct {int dia,mes,ano;} sData; typedef enum _eResultado eResultado; Define um nome para o tipo criado. Pode ser utilizado para renomear tipos existentes: typedef float Real; // usar double se necessario! Real x[100]; 7