Estrutura de Dados Struct (Registro) Lais Farias Alves
Conceito de Struct Struct (Registro). Um registro (=record) é uma coleção de várias variáveis, possivelmente de tipos diferentes. Na linguagem C, registros são conhecidos como structs (abreviatura de structures). Como funciona? Funciona como se fosse uma ficha, na qual armazena diversos dados relacionados, entretanto de tipos diferentes.
Conceito de Struct Vetores e Matrizes. Estrutura de Dados homogênea; Pode armazenar vários valores, porém todos só mesmo tipo. Problemas encontrados: Em alguns casos temos coleções da dados que tipos diferentes. Ex: Nome (String); Endereço (String); Telefone (String); Salário (float); Idade (int).
Conceito de Struct Struct (Registro): Estrutura de Dados heterogênea; Pode armazenar várias variáveis sobre um mesmo nome. Destaque: Pode agrupar dados de diferentes tipos numa mesma estrutura, diferente do caso das matrizes e vetores. Cada componente de uma struct pode ser de um tipo diferente Int, float, string, etc. Esses componentes poder ser referenciados por um nome.
Conceito de Struct Os elementos do struct são chamados de campos ou membros da struct; É utilizado para armazenar informações de um mesmo objeto. Ex: Carro cor, marca, ano, placa, chassi. Pessoa nome, endereço, idade, telefone.
Struct Sintaxe na Linguagem C A palavra struct indica ao compilador que está sendo criada uma estrutura; Essa estrutura deve ser declarada após a inclusão das bibliotecas e antes do main. Declaração: Struct identificador { Tipo1 variavel1; Tipo2 variavel2; Tipo3 variavel3; } struct identificador variavel;
Struct Sintaxe na Linguagem C Exemplo: Uma estrutura na qual tem variáveis relacionadas a funcionários. Declaração: Struct funcionario { char nome[30]; char telefone[15]; float salario; int idade; }struct funcionario func; \\Comando que declara variável global
Struct Sintaxe na Linguagem C Como acessar um campo da struct dentro do main? Para isso utiliza-se o nome da variável struct, seguida de ponto, seguindo do nome do campo. Tomaremos um campo do exemplo anterior para demonstração. Ex: func.idade; scanf ( %d, &func.idade); \\Lendo printf ( A idade e: %d, func.idade); \\Imprimindo
Struct Sintaxe na Linguagem C Como acessar um campo da struct dentro do main? Em caso de string existem algumas especificações. Tomaremos o campo nome[30] para demonstração. Ex: func.nome; fflush(stdin) gets (func.nome); \\Lendo printf ( O nome e: %s, func.nome); \\Imprimindo
Struct Visualizando o que já falamos... Ex: \\Declarando as bibliotecas #include<stdio.h> #include<stdlib.h> #include<conio.h> struct fichadoaluno{ char nome[50]; char disciplina[50]; float nota1; float nota2; }; \\Struct declarado
Struct Visualizando o que já falamos... Ex (continuação): /*Iniciando o Main depois da declaração da struct*/ int main(){ \\Criando variável local Struct fichadoaluno aluno; \\Lendo os campos. Printf ( Nome do aluno: ); fflush(stdin); gets(aluno.nome);
Struct Visualizando o que já falamos... Ex (continuação): \\Lendo os campos (continuação). printf ( Disciplina: ); fflush(stdin); gets(aluno.disciplina); printf ( Digite a 1 a nota: ); scanf ( %f, &aluno.nota1); Printf ( Digite a 2 a nota: ); Scanf ( %f, aluno.nota2);
Struct Visualizando o que já falamos... Ex (continuação): \\Imprimindo os campos. printf ( Nome: %s, aluno.nome); printf( Disciplina: %s, aluno.disciplina); printf ( 1 a nota: %f, aluno.nota1); printf ( 2 a nota: %f, aluno.nota2); getch(); return 0; } \\Fim do main
Vetor de Struct Uma das maneiras mais comuns de se utilizar de struct é em vetores. A declaração de um vetor de struct se dá: Por meio da declaração da struct; E depois declaração do vetor do tipo struct. Ex: Struct FichaDoAluno turmavesp[45]; Struct Funcionario func[100]; Para manipular os dados do vetor, devem ser fornecidos o índice e o campo.
Vetor de Struct Ex: \\Declarando as bibliotecas #include<stdio.h> #include<stdlib.h> #include<conio.h> struct fichadoaluno{ char nome[50]; char disciplina[50]; float nota1; float nota2; }; \\Struct declarado
Vetor de Struct Ex: /*Iniciando o Main depois da declaração da struct*/ int main(){ \\Criando variável local Struct fichadoaluno aluno[45]; \\Imprimindo todos os dados do vetor. for (int i = 0; i < 45; i++){ printf ( Nome do aluno: %s, aluno.nome); } Return 0; } \\Fim do main
Dúvidas???
Atividade em sala...
Questões: 1)Criar uma estrutura chamada DadosAluno, que armazena a média e idade de um aluno. Na função main: criar uma variável que é uma estrutura DadosAluno; ler a média e a idade de um aluno e armazenar na variável criada; exibir na tela a média e a idade do aluno. 2)Considerando o exercício 1, criar uma variável que é um vetor da estrutura DadosAluno. O programa deve obter a média e a idade de 10 alunos. Depois, estes dados devem ser exibidos.
Questões: 3)Fazer um programa que cria uma estrutura livro, que contém os elementos título, ano de edição, número de páginas e preço. Criar uma variável desta estrutura que é um vetor de 5 elementos. Ler os valores para a estrutura e imprimir a média do número de páginas do livros.