Você está na página 1de 5

Agenda Aula10

TiposEstruturadosdeDados

UNIDADEIII
AlgoritmoseLgicadeProgramao

PetrnioCarlosBezerra
petroniocg@ifpb.edu.br
IFPB CampusdeCampinaGrande

Struct
2 3

Struct

Struct

Matrizes so muito teis (permite acesso indexado), porm, utilizamomesmotipodedado paratodososelementos

Parte da informao texto (cadeia de caracteres), outra do tipocaractere,outra detiponumrica Para armazenar toda esta informao numa nica estrutura de dados, precisamos de um tipo de dados que permita que seus elementospossamserdetiposdiferentes Para isso, a linguagem C providencia o tipo de dados estrutura (struct)

Precisamos armazenar informaes relacionadas entre si, porm,comtiposdiferentes Porexemplo,ocadastrodeumalunodeveconter:

Nome, sexo, matrcula, endereo, curso, data de nascimento, as disciplinasmatriculadas,etc.

IFPB CampusdeCampinaGrande

IFPB CampusdeCampinaGrande

Struct
4 5

Struct
z

O struct permite que seus elementos, que so designados por campos,possamserdetiposdiferentes O acesso a cada um dos campos no feito atravs da localizao na estrutura, mas sim atravs do nome do campo a quesepretendeacessar

Declarao,inicializaoeatribuiodeestruturas

Ofragmentodecdigoabaixomostracomocriarum modelode estrutura.


struct tdados_pessoa { char NOME[60]; char SEXO; unsigned int DIA; unsigned int MES; unsigned int ANO; };

Acessopornomeao

IFPB CampusdeCampinaGrande

IFPB CampusdeCampinaGrande

Struct
6 7

Struct

A palavra chave struct informa ao compilador que um modelo de estrutura est sendo definido, e a partir de agora ele reconhecer onovotipodedados Observe que a estrutura termina com um ponto e vrgula, isso porqueadefiniodeumaestrutura umcomando O identificador da estrutura tdados_pessoa indica essa estruturadedadosparticulare oseuespecificadordetipo

At aqui, nenhuma varivel foi de fato declarada. Apenas a formadosdadosfoidefinida Para declarar uma varivel do tipo tdados_pessoa, devemos escrever:
struct tdados_pessoa PESSOA,GRUPO_PESSOAS[10];

possvel tambm definir o tipo de dados tdados_pessoa e j declararvariveisdessetiponamesmainstruo.Exemplo:

IFPB CampusdeCampinaGrande

IFPB CampusdeCampinaGrande

Struct
8 9

Struct

struct tdados_pessoa { char NOME[60]; char SEXO; unsigned int DIA; unsigned int MES; unsigned int ANO; }PESSOA,GRUPO_PESSOAS[10];

Quando uma varivel de estrutura declarada, o compilador aloca automaticamente memria suficiente para todos os seus membros Se voc precisa de apenas uma varivel estruturada, um nome paraaestruturano necessrio.
struct { char NOME[60]; char SEXO; unsigned int DIA; unsigned int MES; unsigned int ANO; }PESSOA;

Quando definimos uma estrutura, estamos definindo um tipo complexodevarivel,noumavarivel

IFPB CampusdeCampinaGrande

IFPB CampusdeCampinaGrande

Struct
10 11

Struct

Existe uma outra forma de criar um novo tipo de dados em linguagemC usandoparaesseefeitoainstruotypedef
typedef struct { char NOME[60]; char SEXO; unsigned int DIA; unsigned int MES; unsigned int ANO; }TDADOS_PESSOA;

Oidentificadortdados_pessoa definiaapenasaestrutura,agora TDADOS_PESSOA um identificador de toda a declarao da estrutura incluindoapalavrareservadastruct Para distinguir o tipo de dados do identificador da estrutura, normalmente usase o mesmo identificador, mas em caracteres maisculos Quando se define uma estrutura atravs do typedef possvel omitir o identificador da estrutura usado anteriormente (o identificadortdados_pessoa)

IFPB CampusdeCampinaGrande

IFPB CampusdeCampinaGrande

Struct
12 13

Struct

Na definio de uma estrutura usando o typedef, no podem ser declaradas, nem inicializadas, variveis. Estas tm de ser declaradas parte
TDADOS_PESSOAPESSOA,GRUPO_PESSOAS[10];
z

possvel inicializar uma estrutura da mesma forma que se inicializaumvetor


TDADOS_PESSOAPESSOA={"VincentVanGogh",M,30,3,1853};

As definies de tipos de dados usando o typedef, so colocados no incio dos cdigos fonte logo aps as diretivas de include, de maneira a tornar o tipo de dados visvel por todo o programa

AcessandoosCamposdeEstruturas

Numa varivel do tipo struct, usase o nome da varivel e o nomedocamposeparadosporumponto Exemplo:

IFPB CampusdeCampinaGrande

IFPB CampusdeCampinaGrande

Struct
14 15

Struct
z

TDADOS_PESSOAPESSOA; ... PESSOA.DIA=30; printf(Odia:%d,PESSOA.DIA); ...

EstruturasHierrquicas

A linguagem C permite que um campo de uma estrutura possa serumaestrutura,oquesechamadeestruturashierrquicas Como a data constitui um tipo de informao muito frequente, fazsentidoquesejadeclaradacomoumaestruturaautnomae depoisusadanadeclaraodeoutrasestruturas

A matriz de caracteres PESSOA.NOME pode ser usada para chamar o gets()dessaforma: gets(PESSOA.NOME); Paraimprimirocontedoumcaractereporvez: for(t=0;PESSOA.NOME[t];t++) putchar (PESSOA.NOME[t]);

IFPB CampusdeCampinaGrande

IFPB CampusdeCampinaGrande

Struct
16 17

Struct

typedef struct { unsigned int DIA; unsigned int MES; unsigned int ANO; }TDATA; typedef struct { char NOME[60]; char SEXO; TDATA DATA_NASCIMENTO; }TDADOS_PESSOA;

Declarao hierarquizada provoca consequncias na inicializao da estrutura TDADOS_PESSOA, bem como, no acesso aoscamposdadata
TDADOS_PESSOAPESSOA={"VincentVanGogh",M,{30,3,1853}};

OacessoaoscamposdaestruturaTDATA:
TDADOS_PESSOAPESSOA; ... PESSOA.DATA_NASCIMENTO.DIA=30;

IFPB CampusdeCampinaGrande

IFPB CampusdeCampinaGrande

Struct
18 19

Struct
#include<stdio.h> void main (void){ struct{ int a; int b; }x,y; x.a=10; y=x;/*Atribuiumaestruturaaoutra*/ printf (%d,y.a); }

AtribuiodeEstruturas

A informao contida em uma estrutura pode ser atribuda a outraestruturadomesmotipo Ao invs de atribuir os valores de todos os elementos separadamente,podeseusarumnicocomandodeatribuio Exemplo:

IFPB CampusdeCampinaGrande

IFPB CampusdeCampinaGrande

Você também pode gostar