estrutura

14
Introdução à Programação Tipos de Estruturas de Dados: Array de Estruturas 1º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes ([email protected])

Upload: gabriel-albert

Post on 30-Dec-2015

21 views

Category:

Documents


0 download

DESCRIPTION

Introdução à Programação Tipos de Estruturas de Dados: Array de Estruturas 1º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes ([email protected]). Estrutura. Estruturas devem encarradas como sendo um tipo de variável, como uma definição de tipo de variável . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Estrutura

Introdução à Programação

Tipos de Estruturasde Dados: Array de

Estruturas

1º ano - ESI e IGE (2011/2012)

Engenheiro Anilton Silva Fernandes([email protected])

Page 2: Estrutura

Estrutura

● Estruturas devem encarradas como sendo um tipo de variável, como uma definição de tipo de variável.● Isto significa que, quando os tipos existentes não nos

satisfazem, nos recorremos ao nosso próprio tipo– Um tipo definido por nós.

● É claro que estrutura e muito mais do que apenas um tipo,● Mas continua sendo nossa definição de um tipo de

variável– Mais importante, é a delaração de vários tipos de variáveis,

dentro duma mesma variável.UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

Page 3: Estrutura

Estrutura

● Assim...● Uma estrutura é uma compilação de vários tipos em

uma única variável● Quando é que usamos?

● Sempre que precisamos de guardar um conjunto de dados de tipo diferente (int, char, float, etc) dentro de uma única varíavel– E quando é que vamos precisar disso?

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

Page 4: Estrutura

Estrutura

● Quando for necessário trabalhar com com objectos, onde objectos são entidades que têm conjunto de atributos● Exemplo. PESSOA

– Pessoa é um objecto ou uma entidade.– Seus atributos seriam:

● Nome, BI, Sexo, altura, telefone, etc● Assim, a representação de pessoa devia ser

● pessoa(Nome, BI, Sexo, altura, telefone)

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

Page 5: Estrutura

Estrutura

● Para que essa representação seja possível, nos precisamos de usar estrutura, onde vamos criar uma variável pessoa, e vamos dizer que essa variavel tem esses campos.● A definição da estrutura, é apenas o dizer dos campos

e seus tipos que constam de uma determinada variável

● A definição de uma estrutura é sempre a mesma, variando apenas, o nome da estrutura e seus campos,● Essa definição é dada por

typedef struct → significa definição de tipo estrutura

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

Page 6: Estrutura

Estrutura - Definição

● Assim, a criação de uma estrutura para pessoa seria:

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

typedef struct _E{ int BI; // bilhete de identidade char nome[40]; // nome da pessoa char sexo; // sexo da pessoa em M/F float altura; // altura em cm da pessoa int telefone; // tel de contacto da pessoa }E;

Page 7: Estrutura

Estrutura - Definição

● Explicação● É obrigatório colocar typedef struct;● O valor circulado a vermelho, é um nome temporário que se

dá à estrutura, mas que em caso de estruturas para variáveis simples ou array, não é obrigatório;

● As variáveis pertencentes à estrutura, devem sempre vir entre chavetas, indicando bloco de instruções da estrutura;

● As variáveis da estrutura são declaras normalmente como em outras situações;

● No final, da estrutura, feicha-se chavetas e, OBRIGATORIAMENTE, logo a frente coloca-se o nome da estrutura.

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

Page 8: Estrutura

Estrutura - Definição

● Explicação● O nome da estrutura é o elemento que depois vai ser

usado para declarar uma variável do tipo da estrutura– Assim, a variável pessoa seria declarada:

● Uma declaração dessa natureza, faz com que pessoa, herde todos os campos da estrutura E, e que tenhamos:

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

E pessoa // declaração da variável pessoa do tipo da estrutura E

pessoa.bi;pessoa.nome;pessoa.sexo;pessoa.altura;pessoa.telefone;

Page 9: Estrutura

Estrutura - Definição

● É possível:

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

typedef struct _E{ int BI; char nome[40]; char sexo; float altura; int telefone;}E;

typedef struct{ int BI; char nome[40]; char sexo; float altura; int telefone;}E;

typedef struct{ int BI, telefone; char nome[40], sexo, morada[50];}E;

Possível, mas não aconcelhável

typedef struct{ int BI, telefone; char nome[40], sexo, morada[50];}E;

Page 10: Estrutura

DÚVIDAS?a diante...

Page 11: Estrutura

Manusear variáveis do tipo estrutura

● Depois da definição de uma estrutura, depois da declaração de uma variavel do tipo da estrutura, o manusear desta variável é muito simples.● O acesso aos campos da variável, que são os

mesmos da estrutura é dada pelo nome da variável, ponto, nome do campo;

pessoa.bi; ou pessoa.nome;

● Assim, tanto para alterar quanto para mostrar:

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

printf(“BI: %d”, pessoa.bi)

pessoa.altura = 1,87;printf(“Altura: %f”, pessoa.altura)

Page 12: Estrutura

Exercício

● Tendo em conta a estrutura anterior, E, faz um função, Mostrar(), que percore o array de 20 posições e mostra cada campo.

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

mostrar(){ int i; for(i=0;i<20;i++) printf(“%d, %s, %f, %d\n”, pessoa[i].bi, pessoa[i].nome, pessoa[i].altura, pessoa[i].telefone)}

Page 13: Estrutura

DÚVIDAS?a diante...

Page 14: Estrutura

Array de estruturas

● Se vamos guardar dados de 20 pessoas, então precisaremos de um array de 20 posições.● Assim, só precisamos de declarar um array de 20

posições do tipo da estrutura

● Em caso de arrays, o acesso aos campos é feita de forma igual, mas...– É preciso indicar a posições

UniPiaget – 2011 / INF002(2011.2012) – Engenheiro Anilton Silva Fernandes

E pessoa[20]; // array pessoa de 20 posições

pessoa[0].altura = 1,87;printf(“Altura: %f”, pessoa[0].altura)