You are on page 1of 40

BCC 201 - Introduo ` Programao I ca a ca

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

Estruturas (struct) III

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

Estruturas (struct) VII

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

Estruturas (struct) VIII


Declarao ca
struct nome da estrutura { t i p o c a m p o 1 nome campo1 ; t i p o c a m p o 2 nome campo2 ; ... }

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

Estruturas (struct) XII

13/40

Estruturas (struct) XIII

14/40

Estruturas (struct) XIV

15/40

Estruturas (struct) XV

struct cadastroAluno { c h a r nome [ 5 0 ] ; i n t codigo ; int idade ; };

16/40

Estruturas (struct) XVI


i n t main ( ) { c a d a s t r o A l u n o Alu1 , Alu2 ; s t r c p y ( Alu1 . nome , " Jo~ o Santos " ) ; a Alu1 . c o d i g o = 3 6 5 8 3 3 ; Alu1 . i d a d e = 1 9 ; s t r c p y ( Alu2 . nome , " Fernanda de Souza " ) ; Alu2 . c o d i g o = 5 5 5 8 3 3 ; Alu2 . i d a d e = 1 8 ; p r i n t f ( " %s %d %d \n" , Alu1 . nome , Alu1 . c o d i g o , Alu1 . i d a d e ) ; p r i n t f ( " %s %d %d \n" , Alu2 . nome , Alu2 . c o d i g o , Alu2 . i d a d e ) ; return 0; }

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

... // Mostra o s f i l m e s i n s e r i d o s f o r ( i n t i = 0 ; i < n ; i ++) { p r i n t f ( " %s %d \n" , f [ i ] . nome , f [ i ] . ano ) ; } return 0; }

23/40

Exemplos VII

Inicializao: poss inicializar uma varivel do tipo estrutura ca e vel a


struct filme { c h a r nome [ 5 0 ] ; i n t ano ; }; i n t main ( ) { s t r u c t f i l m e f = {" Avatar " , 2 0 0 9 } ; p r i n t f ( " Filme : %s Ano : %d" , f . nome , f . ano ) ; return 0; }

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

Novos Tipos: typedef I


A declarao de uma varivel do tipo estrutura emprega a ca a palavra reservada struct
s t r u c t Data d1 ;

A palavra reservada typedef estabelece um sinnimo para o qualquer conjunto de palavras

28/40

Novos Tipos: typedef II


Outra alternativa empregar a palavra reservada typedef ao e mesmo tempo em que denida a estrutura: e

29/40

Novos Tipos: typedef III


As trs formas poss e veis para declarar um novo tipo Data com ou sem typedef so: a

30/40

Estruturas Compostas I

Declarao de estrutura composta ca


struct nome do tipo da estrutura { s t r u c t n o m e d e o u t r a e s t r u t u r a nome campo1 ; t i p o c a m p o 2 nome campo2 ; ... };

Desta forma, uma estrutura pode ser parte de outra estrutura!

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

Estruturas Compostas III

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

s t r u c t Ponto { int x , y ; }; struct Circulo { Ponto C ; double r a i o ; }; d o u b l e d i s t a n c i a ( s t r u c t Ponto , s t r u c t Ponto ) ;

36/40

Estruturas Compostas VII

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

Estruturas Compostas VIII


... d = distancia ( c i r c .C, P) ; i f ( d <= c i r c . R a i o ) p r i n t f ( " ponto dentro do circulo \n" ) ; else p r i n t f ( " ponto fora do circulo \n" ) ; return 0; } d o u b l e d i s t a n c i a ( Ponto A , Ponto B) { double d ; d = s q r t ( pow (A . x B . x , 2 ) + pow (A . y B . y , 2 ) ) return d ; }

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

You might also like