Académique Documents
Professionnel Documents
Culture Documents
Sumrio
Conceito de Registro Implementao em C (structs) Arranjos de Registros
Registros
Definio:
Um registro uma varivel composta heterognea
um conjunto de dados estruturados, os quais podem ser de tipos diferentes
Registros
Razo da denominao (varivel composta heterognea):
Podem ser compostos de variveis (campos) de tipos diferentes
Caso mais trivial: apenas tipos simples (primitivos) Porm, veremos que um campo pode tambm ser um arranjo ou at outro registro!
Registros
Exemplo 2: Registro de Pagamento
Dados:
Nome, RG, CPF, salrio, horas trabalhadas, etc...
Nmero: _______________ Origem: ________________ Destino: __________________ Data: ____ / ____ / _______ Horrio: ________ : _________ Poltrona: ____________ Preo: __________
Registros
Exemplo 2: Registro de Pagamento
Cadeia de Caracteres Vetor de Inteiros Real
HT 1
Declarao de Registros
Declarao de Registro nico:
horas trabalhadas no bimestre
Nome CPF
HT 2 HT 3 HT 4
RG
HT 5 HT 6
Salrio
Declarao de Registros
Exemplo:
struct { char NOME [30]; char CPF[12]; char RG[10]; int HT[6]; float SALARIO; }; Reg_Pag1;
9
Declarao de Registros
Declarao de Mltiplos Registros (Forma 1):
struct tipo_registro { tipo_1 campo(s); tipo_2 campo(s); ... tipo_n campo(s); }; identificadores;
10
Declarao de Registros
Exemplo:
struct Registro_Pagamento { char NOME [30]; char CPF[12]; char RG[10]; int HT[6]; float SALARIO; }; Reg_Pag1, Reg_Pag2, Reg_Pag3;
Declarao de Registros
Declarao de Mltiplos Registros (Forma 2):
struct tipo_registro { tipo_1 campo(s); tipo_2 campo(s); ... tipo_n campo(s); }; struct tipo_registro identificadores;
11 12
Declarao de Registros
Exemplo:
struct Registro_Pagamento { char NOME [30]; char CPF[12]; char RG[10]; int HT[6]; float SALARIO; }; struct Registro_Pagamento Reg_Pag1, Reg_Pag2, Reg_Pag3;
13
Declarao de Registros
Declarao de Mltiplos Registros (Forma 3):
typedef struct { tipo_1 campo(s); tipo_2 campo(s); ... tipo_n campo(s); } tipo_registro; tipo_registro identificadores;
14
Declarao de Registros
Exemplo:
typedef struct { char NOME [30]; char CPF[12]; char RG[10]; int HT[6]; float SALARIO; } Registro_Pagamento; Registro_Pagamento Reg_Pag1, Reg_Pag2, Reg_Pag3;
15
16
Exerccios
Declare variveis do tipo Registro_Pagamento definido no exemplo anterior Declare um tipo registro para o exemplo da passagem de nibus visto anteriormente, definindo os campos data (dia, ms e ano) e horrio (hora e minuto) como outros registros
18
Manipulao de Registros
Como acessar os campos de um registro?
Manipulao de Registros
Exemplo de Manipulao:
printf(Entre o nome do empregado: ); scanf(%s, Reg_Pag1.NOME); printf(Entre as horas trabalhadas no bimestre: ); for (i=0; i<=5; i++) scanf(%d, &Reg_Pag1.HT[i]); printf(Entre o salario: ); scanf(%f, &Reg_Pag1.SALARIO);
nome_do_registro . nome_do_campo
Exemplos de Atribuio:
Reg_Pag1.HT[0] = 163; Reg_Pag1.SALARIO = 852.7;
Vetor de Inteiros Real
Manipulao de Registros
Quando um dos campos outro registro:
struct { char NOME[30], CPF[12], RG[10]; int HT[6]; float SALARIO; struct { char Rua[20], Cidade[15], UF[3]; int No, CEP; } ENDERECO; } Reg_Pag1;
Manipulao de Registros
E se tenho 500 empregados?
Declaro 500 variveis do tipo registro???
Atribuies
21
22
Nmero: ____ Nome: ___________________ RG:_________ Origem: ________________ Destino: __________________ Data: ____ / ____ / _______ Horrio: ________ : _________ Poltrona: ____________ Preo: __________
44 24
Arranjos de Registros
Nome CPF RG HT 3 HT 4 HT 5 HT 6
Declarao
Exemplo:
typedef struct { char NOME [30]; char CPF[12];
RG HT 5 HT 6
[0]
HT 1
HT 2
Salrio
Nome
[1]
HT 1
CPF HT 2 HT 3 HT 4
Salrio
[2]
HT 1
Nome CPF HT 2 HT 3 HT 4 RG HT 5 HT 6
Salrio
...
Arranjos de Registros
FICHA_SP
Nome CPF RG HT 3 HT 4 HT 5 HT 6
Arranjos de Registros
Exemplos de Atribuio:
FICHA_SP[2].SALARIO = 243.45; FICHA_SP[6].HT[3] = 228; scanf(%s, FICHA_SP[1].NOME); ...
[0]
HT 1
HT 2
Salrio
Nome
[1]
HT 1
CPF HT 2 HT 3 HT 4
FICHA_SP[1].HT[5]
HT 6
HT 5
Salrio
[2]
HT 1
Nome CPF HT 2 HT 3 HT 4 RG HT 5 HT 6
...
Salrio
28
Exerccio 1
Fazer um programa, em C, que contenha a declarao de um registro PESSOA, contendo:
Nome (nome): at 30 caracteres; Sexo (sexo): 'M' ou 'F'; Data de nascimento (data_nas): dd/mm/aa; Nmero de dependentes (n_dep).
Exerccio 2
Generalize o programa do Exerccio 1 de tal forma que ele permita registrar 300 funcionrios
No necessariamente o programa deve registrar todos os 300 funcionrios. Logo, permita ao usurio uma opo de interromper o cadastro
O programa deve pedir ao usurio que digite as informaes de modo a preencher o registro. As informaes do registro devem ser escritas na tela
Exerccio 3
Uma determinada biblioteca possui obras de cincias exatas, cincias humanas e cincias biomdicas, totalizando 1500 volumes, 500 de cada rea. O proprietrio resolveu informatiz-la e, para tal, agrupou as informaes sobre cada livro do seguinte modo:
Cdigo de Catalogao (4 dgitos): ___________ Ano:_____ Doado: ( ) Sim ( ) No No. de Pginas: _____________
Exerccio 4
Uma determinada biblioteca possui obras de cincias exatas, cincias humanas e cincias biomdicas, totalizando 1500 volumes, 500 de cada rea. O proprietrio resolveu informatiz-la e, para tal, agrupou as informaes sobre cada livro do seguinte modo:
Cdigo de Catalogao (4 dgitos): _____________________ Doado: ( ) Sim ( ) No No. de Pginas: _____________
Bibliografia
Schildt, H. "C Completo e Total", 3a. Edio, Pearson, 1997. Damas, L. Linguagem C, 10a. Edio, LTC, 2007