Estrutura
-
Upload
gabriel-albert -
Category
Documents
-
view
21 -
download
0
description
Transcript of 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])
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
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
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
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
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;
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
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;
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;
DÚVIDAS?a diante...
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)
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)}
DÚVIDAS?a diante...
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)