Buscar

Slides 12 - Registro (struct)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
ESTRUTURAS COMPOSTASESTRUTURAS COMPOSTAS
SSC 501 – Introdução à Ciência da Computação I 
Simone Senger Souza
REGISTROS (Struct)REGISTROS (Struct)
2
1
Estruturas
� Vetor e Matriz
� estruturas compostas homogêneas
� Registro
� estruturas compostas heterogêneas
3
2
Registro
� Um registro (struct) é uma coleção de dados (que 
podem ser de tipos diferentes) sobre um objeto 
particular.
registro
campo
Cada campo pode ser de qualquer
tipo (menos do tipo arquivo)
4
� Registro Aluno:
� Nome
� Número USP
� Data de nascimento
� Sexo
� Endereço
� Telefone
� Email
� ...
3
Registro - Exemplo
5
Registro - Exemplo
� Disciplina
� Código da disciplina
� Nome da disciplina
� Ementa
� Sistema de avaliação
� Bibliografia
� Cursos em que é oferecida
� ...
4
6
5
Registro - Exemplo
� Registro de Pagamento
HT 1
CPF RG
Nome
Salário
HT 2 HT 3 HT 4 HT 5 HT 6
FGTS 1.1 FGTS 1.2
Cadeia de
Caracteres
Vetor de Reais
Real
Vetor de Reais
horas
trabalhadas
no 
semestre
FGTs 
Em cada 
trimestre
7
6
Registro
� Cada campo deve ter um nome e deve ser 
referenciado por este nome
� Não confundir com matriz e vetor onde todos os 
elementos são do mesmo tipo e são 
referenciados por um índice
8
7
Como definir uma variável tipo 
registro em C
typedef struct { 
tipo1 campo1;
tipo2 campo2; 
...
tipon campon; 
} <nome do registro>;
Descrição dos
campos
Não é uma 
variável, é um 
novo tipo de 
dado!!
9
8
Como definir uma variável tipo 
registro em C
� Outra forma de fazer (sem typedef):
struct REGALUNO {
char numUSP[10];
char nome[30];
char sexo; 
float renda_familiar;
} ;
� Na declaração de variáveis coloca-se:
struct REGALUNO ALUNO;
10
9
Como definir uma variável tipo 
registro em C
� No início do programa (em geral, fora de todas as 
funções):
typedef struct {
char numUSP[10];
char nome[30];
char sexo; 
float renda_familiar;
} REGALUNO;
� Na declaração de variáveis coloca-se:
REGALUNO ALUNO;
11
10
Como definir uma variável tipo 
registro em Algoritmo
� No início do algoritmo(em geral, fora de todas as 
funções):
tipo IDENTIFICADOR = registro
tipo1 : campo1;
tipo2 : campo2;
…
tipo n : campo n;
fim registro;
� Na declaração de variáveis coloca-se:
IDENTIFICADOR lista de variáveis;
12
11
REGALUNO aluno;
� No Caso do Exemplo
uma atribuição de valores poderia ser:
ALUNO . numUSP = “1842655”;
ALUNO . nome = “Pedro Henrique”;
ALUNO . sexo = ‘M’;
ALUNO . Renda_familiar = 8.500,00 ;
Como fazer Referência a um Elemento de 
uma Variável do Tipo Struct
<nome-da-variável-tipo-struct> . <nome do campo>
13
12
Como fazer Referência a um Elemento de 
uma Variável do Tipo Struct
� No Caso do Exemplo
uma leitura de valores poderia ser:
printf("\n\nEntre com o numero USP:");
gets(ALUNO.numUSP);
printf("\n\nEntre com o nome:");
gets(ALUNO.nome);
printf("\n\nEntre com o sexo(M/F):");
scanf(“%c”, &ALUNO.sexo);
printf("\n\nEntre com a renda familiar:");
scanf(“%f”, &ALUNO.renda_familiar);
14
13
Manipulação da Variável Tipo 
Struct
� As variáveis do tipo struct podem ser 
manipuladas do mesmo modo que outros dados 
na memória
� Exemplo:
SALBR:=40 * REGEMPR . SALARIO;
15
14
Exibição da Variável Tipo Struct 
� As variáveis do tipo struct podem ser exibidas.
� Exemplo:
printf (“nome do aluno: %s”, ALUNO . NOME);
16
Estrutura dentro de estrutura
15
17
Estrutura dentro de estrutura
typedef struct {
int dia, mes, ano;
}REGDATA;
typedef struct{
char nome[20];
REGDATA nasc, contrato;
float salario;
} REGF;
REGF dados[100];
16
18
17
Vetor de Registros
� Se, ao invés de um única ficha do empregado, 
quisermos cadastrar várias fichas?
HT 1
CPF RG
Nome
Salário
HT 2 HT 3 HT 4 HT 5 HT 6
FGTS 1.1 FGTS 1.2
FGTS 2.1 FGTS 2.2
HT 1
CPF RG
Nome
Salário
HT 2 HT 3 HT 4 HT 5 HT 6
FGTS 1.1 FGTS 1.2
FGTS 2.1 FGTS 2.2
HT 1
CPF RG
Nome
Salário
HT 2 HT 3 HT 4 HT 5 HT 6
FGTS 1.1 FGTS 1.2
FGTS 2.1 FGTS 2.2
�SOLUÇÃO
� criar um 
�vetor de 
�registros !
19
18
Vetor de Registros
HT 1
CPF RG
Nome
Salário
HT 2 HT 3 HT 4 HT 5 HT 6
FGTS 1.1 FGTS 1.2
FGTS 2.1 FGTS 2.2
HT 1
CPF RG
Nome
Salário
HT 2 HT 3 HT 4 HT 5 HT 6
FGTS 1.1 FGTS 1.2
FGTS 2.1 FGTS 2.2
HT 1
CPF RG
Nome
Salário
HT 2 HT 3 HT 4 HT 5 HT 6
FGTS 1.1 FGTS 1.2
FGTS 2.1 FGTS 2.2
[1]
[2]
[3]
20
19
Como definir um vetor de 
registros
� Na seção de declaração de tipo coloca-se:
typedef struct { 
tipo1 campo1;
tipo2 campo2; 
...
tipon campon; 
} <nome do registro>;
<nome-do-registro> <nome-da-variavel [dimensao]>
21
20
No Exemplo
typedef struct {
char numUSP[10];
char nome[30];
char sexo; 
float renda_familiar;
} REGALUNO;
REGALUNO aluno[42];
numUSP
nome
sexo
renda_familiar
22
21
numUSP
nome
sexo
renda_familiar
numUSP
nome
sexo
renda_familiar
numUSP
nome
sexo
renda_familiar
Vetor de Registros
[1]
[2]
[3]
Como
referenciar 
este campo?
aluno[1] . numUSPaluno
Como
referenciar 
este campo?
aluno[2] . nome
Como
referenciar 
este campo?
aluno[3] . renda_familiar
23
22
Como definir uma variável tipo 
registro em C
� No início do programa (em geral, fora de todas as 
funções):
typedef struct {
int passagem, num_poltrona;
float dist;
char origem[20], destino[20];
} REGPASSAGEM;
� Na declaração de variáveis coloca-se:
REGPASSAGEM onibus[40];
24
Estruturas e Funções
23
� Estruturas são passadas por valor
� Exemplo:
typedef struct{
char nome[20];
int idade;
} REG;
REG dados;
25
Estruturas e Funções
� Ponteiros para estruturas: possibilita a passagem 
por referência
� Exemplo:
typedef struct{
char nome[20];
int idade;
} REG;
REG dados;
24
26
Estruturas e Funções
25
� Ponteiros para estruturas: possibilita a passagem 
por referência
� Exemplo:
typedef struct{
char nome[20];
int idade;
} REG;
REG dados;
void ler(REG *dados)
{
dados->nome= “Felipe”
dados->idade = 16;
}
int main()
{
ler (&dados);
}
27
26
Exercício 1
� Fazer uma função que recebe como parâmetro a 
variável ônibus (preenchida) e conta e retorna 
quantos passageiros tem o destino “Campinas”.
typedef struct {
int passagem, num_poltrona;
float dist;
char fumante;
char origem[20], destino[20];
} REGPASSAGEM;
REGPASSAGEM onibus[40];
28
27
Exercício 2
� Escrever um programa que:
� Lê uma tabela com nomes e idades de jogadores de 
futebol. O usuário entra com nomes até um nome vazio 
para encerrar a inclusão dos dados na tabela. 
� Faça uma função que, dada uma idade, mostrar todos os 
jogadores que possuem essa idade.
29
Estruturas
� As estruturas podem ser armazenadas em 
arquivo
� Esse arquivo deve ser binário
� assunto a ser visto...
28

Outros materiais