Beruflich Dokumente
Kultur Dokumente
Estruturas (registros)
Guillermo Cmara-Chvez a a UFOP
1/40
Estruturas (struct) I
Imaginemos que queremos ler as notas de 4 provas para um aluno e calcular a mdia do aluno e
2/40
Estruturas (struct) II
Imaginemos que queremos ler as notas de 4 provas para um aluno e calcular a mdia do aluno e
3/40
4/40
Estruturas (struct) IV
5/40
Estruturas (struct) V
6/40
Estruturas (struct) VI
structs so Estruturas de Dados Heterogneas a e Uma estrutura agrupa vrias variveis numa s. a a o Funciona como uma espcie de cha. e A cha armazena diversos dados relacionados, porm de e tipos diferente.
7/40
A estrutura, ento, serve para agrupar um conjunto de a dados no similares, formando um novo tipo de dados. a As estruturas podem conter elementos de qualquer tipo de dados tais como int, char, oat, double, ponteiros, vetores, matrizes, strings ou mesmo outras estruturas.
8/40
onde :
nome_da_estrutura o nome do tipo da estrutura e, entre e chaves, tipo_campo1, tipo_campo2, . . . a lista com os tipos de e dados em C (char, int, float, double, char[])
9/40
Estruturas (struct) IX
Exemplo 1:
Denir um novo tipo de varivel Data (struct Data) a A partir daquele momento o compilador passa a conhecer um outro tipo de dado, chamado struct Data Dita estrutura est composta por dois inteiros e um vetor de a caracteres Data no uma varivel, seno o nome pelo que conhecido a a a e um novo tipo de dados Cada um dos elementos de Data denominado campo. e
10/40
Estruturas (struct) X
11/40
Estruturas (struct) XI
Exemplo 2
Para atribuir valores a seus campos fazemos diretamente inserindo um . (ponto) entre o nome da varivel e o campo a que nos interessa.
12/40
13/40
14/40
15/40
Estruturas (struct) XV
16/40
17/40
Exemplos I
Inserir uma lista de n lmes. A estrutura para os lmes deve conter os seguintes campos: nome e o ano de lanamento. c
18/40
Exemplos II
19/40
Exemplos III
20/40
Exemplos IV
21/40
Exemplos V
struct filme { c h a r nome [ 5 0 ] ; i n t ano ; }; i n t main ( ) { int n; struct filme f [100]; p r i n t f ( " Inserir n mero de filmes " ) ; u s c a n f ( " %n" , &n ) ; // I n s e r e n nomes de f i l m e s f o r ( i n t i = 0 ; i < n ; i ++) { p r i n t f ( " Nome e ano : \n" ) ; f g e t s ( f [ i ] . nome , 5 0 , s t d i n ) ; s c a n f ( " %d" , &f [ i ] . ano ) ; } // . . . ( c o n t i n u a )
22/40
Exemplos VI
23/40
Exemplos VII
24/40
Exemplos VIII
Criar uma estrutura aluno que deve conter os seguintes campos: nome, idade, identidade. Criar um vetor de 10 elementos e logo inserir valores nele. Mostrar os dados do aluno mais novo.
25/40
Exemplos IX
s t r u c t Aluno { c h a r nome [ 5 0 ] ; int idade ; int id ; }; i n t main ( ) { s t r u c t Aluno l i s t a [ 1 0 ] ; i n t menor , p o s ; f o r ( i n t i = 0 ; i < 1 0 ; i ++) { p r i n t f ( " Inserir dados do aluno %d \n" , i +1); f g e t s ( l i s t a [ i ] . nome , 5 0 , s t d i n ) ; s c a n f ( " %d %d" , & l i s t a [ i ] . i d a d e , & l i s t a [ i ] . i d ) ; } ...
26/40
Exemplos X
... pos = 0 ; menor = l i s t a [ 0 ] . i d a d e ; f o r ( i n t i = 1 ; i < 1 0 ; i ++) i f ( l i s t a [ i ] . i d a d e < menor ) { menor = l i s t a [ i ] . i d a d e ; pos = i ; } p r i n t f ( " Aluno mais novo : %s %d %d" , l i s t a [ p o s ] . nome , l i s t a [ p o s ] . i d a d e , l i s t a [ pos ] . i d ) ; return 0; }
27/40
28/40
29/40
30/40
Estruturas Compostas I
31/40
Estruturas Compostas II
Exemplo Criar uma cha cadastral de alunos. Essa lista deve contar a seguinte informao: nome, identidade e data de nascimento; ca
32/40
s t r u c t data { i n t d i a , mes , ano ; }; struct ficha cadastral { c h a r nome [ 5 0 ] ; int id ; s t r u c t data nascimento ; };
33/40
Estruturas Compostas IV
i n t main ( ) { f i c h a c a d a s t r a l alunos ; p r i n t f ( " Inserir nome : \n" ) ; f g e t s ( a l u n o s . nome , 5 0 , s t d i n ) ; p r i n t f ( " Inserir identidade : \n" ) ; s c a n f ( " %d" , &a l u n o s . i d ) ; p r i n t f ( " Inserir data de nascimento ( dd / mm / aa ) \n" ) ; s c a n f ( " %d %d %d" , &a l u n o s . n a s c i m e n t o . d i a , &a l u n o s . n a s c i m e n t o . mes , &a l u n o s . n a s c i m e n t o . ano ) ; return 0; }
34/40
Estruturas Compostas V
Denir uma estrutura c rculo, essa estrutura deve conter a seguinte informao: ponto de origem (criar estrutura ponto) e raio. Logo, ca inserir um ponto e responde se esse ponto est dentro do c a rculo. (criar uma funo distancia que receba como dados de entrada os ca dois pontos)
35/40
Estruturas Compostas VI
36/40
i n t main ( ) { Circulo circ ; Ponto P ; double d p r i n t f ( " Inserir dados do circulo : \n" ) ; p r i n t f ( " Coordenadas em x e y: \n" ) ; s c a n f ( " %d %d" , & c i r c . C . x , & c i r c . C . y ) ; p r i n t f ( " Raio : \n" ) ; s c a n f ( " %lf " , & c i r c . r a i o ) ; p r i n t f ( " Inserir ponto P (x ,y) \n" ) ; s c a n f ( " %d %d" , &P . x , &P . y ) ; ...
37/40
38/40
Exercicios Propostos I
1. Criar um programa que permita ao usurio digitar os dados de a 3 alunos, (seus nomes, idades e registros acadmicos). Em e seguida, pedir ao usurio para digitar uma idade, e o a programa deve imprimir os nomes e idades dos alunos com idade menor que a digitada. 2. Foi realizada uma pesquisa entre 500 habitantes de uma certa regio. De cada habitante foram coletados os dados: idade, a sexo, salrio e nmero de lhos. Crie a estrutura de dados a u adequada para armazenar estas informaes e faa uma co c funo que armazene as informaes digitadas pelo usurio na ca co a estrutura de dados criada. Faa tambm uma funo que c e ca calcula a mdia do salrio dos habitantes. e a
39/40
FIM
40/40