Escolar Documentos
Profissional Documentos
Cultura Documentos
PSI 1 ano
Resumo
As estruturas em C correspondem aos registos na
generalidade das outras linguagens de programao,
permitem colocar, numa nica entidade, elementos de
tipos diferentes (char, int, float, double,).
Uma estrutura assim um conjunto de uma ou mais
variveis (a que vulgarmente se chama campos ou
membros) agrupadas sobre um nico nome, de forma a
facilitar a sua referncia.
As estruturas podem conter elementos com quaisquer tipo
de dados vlidos em C (tipos bsicos, vetores, strings,
apontadores, ou mesmo outras estruturas).
3
Linguagem C
struct
Tipos de dados compostos
void
tipos simples
tipos
alfanumricos
char
int
float
double
tipos compostos
tipos
apontadores
tipos
enumerados
enum
[]
struct
FILE
int idade;
char sexo;
char nome [60];
float altura, peso;
6
int idade;
char sexo;
char nome [60];
float altura, peso;
Mltiplos objetos
int idade;
char sexo;
char nome [60];
float altura, peso;
int idade;
char sexo;
char nome [60];
float altura, peso;
int idade2;
char sexo2;
char nome2 [60];
float altura2, peso2;
//As linhas seguintes leem os dados.
int idade;
char sexo;
char nome [60];
float altura, peso;
Esta soluo no a mais aconselhada pois nada nos
diz que as variveis esto de algum modo
relacionadas entre si.
Para resolver o problema de ter uma varivel
constituda por tipos de dados diferentes, utilizam-se
as estruturas (struct).
10
#2:
11
Motivao
Necessidade de guardar informao de vrios tipos
de dados numa s entidade (struct).
Exemplo:
No dia-a-dia das empresas e organizaes h
necessidade de introduzir, alterar, eliminar e consultar
dados em formulrios (p.ex.: segurana social, banca,
finana, bolsa, arquivo de identificao, etc.).
12
nome
morada
nmero de identificao fiscal
Em C (novo tipo de dados: CLIENTE):
struct CLIENTE {
char *nome;
char *morada;
long nif;
};
13
Diagrama de sintaxe
14
No tm ordem
15
Definio de struct
uma coleo ou conjunto de elementos (ou variveis)
numa zona contgua de memria.
Ao contrrio dos vetores (arrays), os elementos no so
necessariamente do mesmo tipo.
Ao contrrio dos arrays, os elementos no so indexados.
Os elementos so variveis usuais identificadas por nome.
Os elementos so tambm designados por campos,
membros ou componentes.
17
Declarao de struct
A declarao de estruturas realizada atravs da seguinte
sintaxe:
struct nome_da_estrutura {
tipo elemento1, elemento2;
. . .
tipo elementon;
};
A declarao de uma estrutura corresponde unicamente
definio de um novo tipo (i.e., da sua estrutura) e no
declarao de variveis do tipo estrutura.
Nota: o nome_da_estrutura pode ser opcional.
18
struct Datas
{
int Dia, Ano;
char Mes[12];
};
A definio da estrutura Datas (struct Datas) indica
unicamente que, a partir deste momento, o compilador passa
a conhecer um outro tipo, chamado struct Datas que
composto por dois inteiros e um vetor com 12 carateres.
Neste exemplo, Datas no uma varivel, mas antes o nome
pelo qual conhecida esta nova definio de tipo de dados.
19
Exemplo:
struct Data {
int Dia, Ano;
char Mes[12];
} d, datas[100], *ptr_data;
21
Declarao de variveis
Definio de tipo de dados
+
declarao de varivel (ou
variveis) em instrues
diferentes
23
24
inicializao
semelhante
aos arrays
25
Inicializaes de variveis
A inicializao de uma struct feita da mesma forma que
a dos vetores (arrays).
Exemplo (declarao dum cliente c/ inicializao):
CLIENTE x = {Josefa Boavida, Rua do Vau, n 2, 3500-089 Viseu, 232456719};
Operador de acesso
struct CLIENTE
{
char *nome;
char *morada;
long telefone;
};
Operador . (ponto)
struct CLIENTE x;
x.nome = Joaquim Mira;
x.morada = R. Ag.Cima, 2,2456-001 gueda;
x.telefone = 239675413;
27
struct Person
{
char Mother[100], Father[100];
char Dog[30];
} John;
/* John uma varivel do tipo struct Person */
/* Mary tambm */
28
struct Person
{
char Mother[100], Father[100];
char Dog[30];
} John;
struct Person Mary;
Pergunta:
Resposta:
Pergunta:
Resposta:
Pergunta:
Resposta:
Observao:
Como se sabe, um dos objetivos das linguagens de
programao assemelharem-se, o mais possvel,
linguagem falada que utilizamos normalmente.
No entanto no podemos escrever o cdigo exatamente
igual s respostas anteriores, pois o carater aspas simples
utilizado em C para delimitar os carateres.
A soluo adotada foi a substituio dos s por um ponto
.
Exemplo de cdigo
31
};
dt_nasc = {23,1980,janeiro};
Ou
Declarao da estrutura
struct Data {
int dia, ano;
char mes[12];
};
Declarao da varivel
struct Data {
int dia;
char mes[12];
int ano
};
Declarao da estrutura
Declarao da varivel
A definio de uma estrutura pode ser realizada se indicar qual o seu nome.
No entanto, todas as variveis desse tipo tm de ser declaradas no momento
da definio, pois a estrutura deixa de ser identificada fora do local de
definio.
Essas estruturas no podem ser enviadas ou recebidas dentro de funes,
pois no possuem um nome que as identifique na definio dos parmetros
da funo.
34
35
Operador de atribuio
struct CLIENTE
{
char *nome;
char *morada;
long telefone;
};
struct CLIENTE x, y;
// a atribuio pode ser feita membro a membro
x.nome = Joaquim Mira;
x.morada = R. Ag.Cima, 2, 2456-001 gueda;
x.telefone = 239675413;
// mas, ao contrrio dos arrays,
// tambm pode ser feita entre estruturas
y = x;
x = *(&y);
36
Exemplo 1
37
Exemplo 2
38
Exemplo 3
39
Exemplo 4
40
ToDo:
Considera o registo de um produto de uma loja
que contem as seguintes informaes:
descricao, valor
Fazer um programa que, dado o registo de 5
produtos, os exiba na ordem inversa em que
foram digitados.
41
42
Prontos para a ao ?!
43
Hora de resolver
1) Criar uma estrutura aluno que contm:
nmero
nome
ano
turma
disciplina
notas do 1, 2 e 3 perodo
Programa os procedimentos necessrios para
inserir dados, calcular a mdia e exibir toda a
informao da estrutura aluno.
44
Hora de resolver
2) Utilizando uma estrutura, fazer um programa em C
que permita a entrada de nome, endereo e telefone
de 5 pessoas e os imprima em ordem decrescente
de insero.
3) Implementa um programa que define um tipo novo
de dados, para uma estrutura de um animal, que
dever conter os seguintes atributos: raa, cor, peso
e sexo. Solicitar ao utilizador do programa 10
espcies e depois imprimir os mesmos no ecr.
45
46