You are on page 1of 32

Algoritmos e Estruturas de Dados I Registros

Profa. Mercedes Gonzales Mrquez

Registros
Variveis Compostas Heterogneas: Variveis compostas homogneas consistem de conjuntos de dados do mesmo tipo (inteiros, reais, literais ou lgicos). Quando temos dados de diferentes tipos (heterogneos) logicamente agrupados, ns usamos variveis compostas heterogneas chamadas registros.

Registros

Registros so conjuntos de dados logicamente relacionados,mas de tipos diferentes. Exemplo: uma passagem de nibus formada por um conjunto de dados logicamente relacionados de tipos diferentes, tais como nmero da passagem (inteiro), origem e destino (literal), data (literal), horrio (literal), poltrona (inteiro), distncia (real), que so subdivises do registro (elementos do conjunto), tambm chamadas de campos.

Registros

Definio do tipo construdo registro: Tipo <identificador> : registro <tipo do campo>: <campo 1> <tipo do campo>: <campo 2> ... <tipo do campo>:<campo n> Fim_Registro
Exemplo:

Tipo Passagem: registro inteiro:numero literal:origem,destino,data,horario inteiro:poltrona real:distancia Fim_Registro

Registros
Exemplo:
Tipo Ficha_academia: registro inteiro:matricula literal:Nome real:Peso real:Altura literal:Instrutor Fim_Registro

Registros

Declarao de varivel composta do tipo registro definido Tipo-registro : nome_varivel Exemplo: Ficha_academia:aluno

Registros

O registro Ficha_academia agrupa as informaes referentes a um aluno da academia. Os registros no podem ser acessados sem especificao individual dos campos. Especifica-se o nome do registro e o nome do campo que se deseja utilizar separado pelo caractere . (ponto). Tal ponto estabelece separao entre o nome do registro e o nome do campo. Exemplo; Leia (aluno); errado Escreva (aluno); errado Leia (aluno.matrcula); correto Escreva (aluno.nome); correto aluno.peso 80.2 correto

Vejamos

em seguida um algoritmo para armazenar os dados de um recm nascido


Algoritmo <Registro_criana> Tipo Ficha_criana:Registro inteiro:nmero_vivo literal:nome inteiro:dia inteiro:ms inteiro:ano literal:pai literal:me literal:sexo inteiro:ddd inteiro:fone Fim_Registro Ficha_criana:criana

Registros

Incio criana.nmero_vivo 1233 criana.nome Andre Schmitt Medina criana.dia 24 criana.ms 12 criana.ano 2003 criana.pai Aurlio Medina criana.me Cristina Schmitt criana.sexo M criana.ddd 44 criana.fone 2525005 Fim

Registros
Os

registros vistos at agora possuam em seus campos apenas informaes de tipos primitivos, entretanto, podemos dispor tambm de campos que so compostos, ou seja, formados por outros tipos construdos.
Uma

outra forma de armazenar os dados visando facilitar a leitura e interpretao do algoritmo anterior seria:

Registros
Algoritmo <Registro_criana> Incio Tipo data : Registro criana.nmero_vivo 1233 inteiro:dia inteiro:ms criana.nome Andre Schmitt inteiro:ano Medina Fim_Registro criana.data_nasc.dia 24 Tipo telefone : registro inteiro:ddd criana.data_nasc.ms 12 inteiro:fone Fim-registro criana.data_nasc.ano 2003 Tipo Ficha_criana:Registro criana.pai Aurlio Medina inteiro:nmero_vivo literal:nome criana.me Cristina Schmitt data:data_nasc criana.sexo M literal:pai literal:me criana.telef.ddd 44 literal:sexo telefone: telef criana.telef.fone 2525005 Fim_Registro Fim Ficha_criana:criana

Registros de conjuntos
Podemos tambm ter registros com campos vetor ou matriz. Exemplo de Registro com campo de tipo vetor: Registro estoque com as baixas de uma semana
Nome: _________________________________ Cdigo: ______________________Preo:_____

1
Baixa:

Tipo Estoque : Registro literal:nome inteiro:cdigo real:preo inteiro:Baixa[6] Fim_Registro Estoque: produto

Definio do tipo registro

Declarao da varivel

Exemplo de Registro com campo de tipo matriz : Registro estoque com as baixas de 4 semanas
Nome: _________________________________ Cdigo: ______________________Preo:_____ 1 2 3 4 5 6 1 Baixas: 2
3 4

Registros de conjuntos

Tipo Estoque2: Registro literal:nome inteiro:cdigo real:preo inteiro:Baixa[4][6] Fim_Registro Estoque2: produto2

Definio do tipo registro

Declarao da varivel

Registros de conjuntos

Manipulao A manipulao de um registro de conjunto deve obedecer s manipulaes prprias de cada estrutura de dados anteriormente definida. Exemplo: a) Para acessar o quanto foi vendido do produto no terceiro dia da quarta semana, teramos: produto2.baixa[4][3]

Registros de conjuntos
b) Construir o trecho de algoritmo que, usando a definio de produto2, escreva o nome do produto, o cdigo, o preo e as baixas da segunda semana. escreva (produto2.nome); escreva (produto2.codigo); escreva (produto2.preo); para j de 1 at 6 repita escreva (produto.Baixa[2][j]); fim para;

Registros de conjuntos
c) Construa o trecho do algoritmo que totalize por dia da semana todos os dias do ms. para j de 1 at 6 repita aux 0; para i de 1 at 4 repita aux aux + produto2.Baixa[i][j] fim para escreva (j, totalizou , aux, baixas) fim para

Conjunto de Registros

Nas estruturas compostas homogneas (vetores e matrizes) utilizamos somente tipos de dados primitivos. Agora utilizaremos no apenas um tipo primitivo, mas sim os tipos construdos (registros). Exemplo: Suponha que queremos informaes relativas passagens rodovirias dos 44 lugares de um nibus. Criamos um vetor no qual cada posio um elemento de tipo registro (passagem).

Conjunto de Registros

Tipo Passagem: registro inteiro:numero literal:origem,destino,data,horario inteiro:poltrona real:distancia Fim_Registro Passagem:onibus[44]

Conjunto de Registros
Ex. Declare um conjunto de registros que comporte as informaes de estoque de 500 produtos. Tipo Estoque2: Registro literal:nome inteiro:cdigo real:preo inteiro:Baixa[4][6] Fim_Registro Estoque2: produtos[500]

Conjunto de Registros

Exemplo: a) Se quisermos saber a baixa do dcimo produto, da terceira semana do ms e do quarto dia da semana, escreveramos: produtos[10].Baixa[3][4]

Conjunto de Registros
b) Elabore o trecho de um algoritmo que imprima o total de movimentao do estoque para cada um dos 500 produtos: ... para N de 1 at 500 repita ACM 0; para i de 1 at 4 repita para j de 1 at 6 repita ACM ACM + produtos[N].Baixa[i][j] fim para; fim para escreva (produtos[N].nome, ACM); fim para

Conjunto de Registros
c) Usando o registro de estoque definido nos

exemplos, elabore: a) um algoritmo que imprima o produto de maior sada; b) um algoritmo que imprima a diferena percentual entre a maior e a menor sada; c) um relatrio com a semana de maior sada de cada produto.

Registros
(4) Dada a tabela a seguir:

CODIGO 1 001000 2 001050 3 002000 4 002050 5 003000 6 003050 . . . 99 198050 100 199000

NOME ALFAIATE ALMOXARIFE ANALISTA ANTROPLOGO BOMBEIRO CARPINTEIRO . . . TORNEIRO VENDEDOR

Faa um algoritmo que usando a tabela de profisses acima, escreva o nome da profisso correspondente aps a leitura do cdigo de profisso (500 cdigos devem ser lidos).

Registros
Algoritmo <profisses> Tipo profisso : Registro inteiro:codigo literal:nome Fim_Registro profissao:tabela[100] inteiro:i,k,coddessej

Incio para i de 1 at 100 repita leia (tabela[i].codigo) leia (tabela[i].nome) fim para k1 Repita leia (coddessej) kk+1 i 0 repita i i+1 at que (tabela[i].codigo= coddessej ou i>100) se (tabela[i].codigo=coddessej) ento escreva (tabela[i].nome) seno escreva(Cdigo Invlido) fim se at que (k>500) Fim

Registros
(5)Faa um algoritmo para criar uma agenda eletrnica. Na agenda poderemos guardar o nome, os e-mails (trs, no mximo), o endereo (rua, nmero, bairro) e os telefones (residencial, comercial, celular) de at 20 pessoas. O algoritmo deve possibilitar ao usurio preencher a agenda e depois consult-la. Para fazer uma consulta agenda, o usurio dever fornecer o nome da pessoa. Se a pessoa estiver cadastrada na agenda, o algoritmo dever exibir todas as informaes sobre ela; caso contrrio, o algoritmo dever informar que a pessoa no est cadastrada. A consulta finalizar quando o usurio escrever FIM como nome.

Incio para i de 1 at 20 repita leia (pessoas[i].nome) leia (pessoas[i].ende.rua) Algoritmo <agenda> leia (pessoas[i].ende.numero) Tipo endereco: Registro leia (pessoas[i].ende.bairro) literal:rua,bairro para j de 1 at 3 repita inteiro:numero leia (pessoas[i].emails[j]) Fim_Registro leia (pessoas[i].fones[j]) Tipo agenda : Registro literal:nome,emails[3],fones[3] fim para endereco:ende fim para Fim_Registro leia (nomedessej) agenda:pessoas[20] enquanto (nomedessej<>FIM ) faa inteiro:i,j achou0 literal:nomedessej para i de 1 at 20 repita logico:achou se (pessoas[i].nome=nomedessej) escreva (pessoas[i].ende.rua) Todas as informaes devero ser impressas. - achou1 i20 fim se fim para se (!achou) escreva(Nome Invlido) leia (nomedessej)

Registros

Registros
(6)Faa

um algoritmo para criar o cadastro dos funcionrios de uma empresa. A empresa possui 50 funcionrios. O cadastro dever conter o nome, o nmero de matrcula, o grau de escolaridade (1, 2 ou 3), o tempo de servio (em anos) e o salrio de cada funcionrio. O cadastro de funcionrios dever ser preenchido pelo usurio do algoritmo. Aps preenchido o cadastro, o algoritmo dever percorr-lo procurando todos os funcionrios com 3 grau, que tenham mais de 5 anos de servio e que ganhem menos de R$ 1000,00 e dever dar a eles um aumento de 20%. Ao final, o algoritmo dever exibir o nome e o nmero de matrcula de todos os funcionrios com mais de 10 anos de servio e que tenham apenas o 1 grau.

Registros
(7) Faa um algoritmo para criar o cadastro dos produtos comercializados por uma loja. O cadastro dever conter, para cada produto, o cdigo, sua descrio, o nome do fornecedor, a quantidade mnima permitida em estoque e a quantidade real em estoque. A loja em questo comercializa 100 produtos diferentes. O cadastro de produtos dever ser preenchido pelo usurio do programa. Aps preenchido o cadastro, o programa dever exibir o cdigo, a descrio e o nome do fornecedor, de todos os produtos cuja quantidade real em estoque inferior a quantidade mnima permitida.

Registros
(8) Para evitar erros de digitao de sequncias de nmeros de importncia fundamental, como a matrcula de um aluno, o CPF do Imposto de Renda, o nmero de conta bancria, geralmente se adiciona ao nmero um dgito verificador. Por exemplo, o nmero de matrcula 811057 usado como 8110573 onde 3 o dgito verificador, calculado da seguinte maneira: (a) cada algarismo do nmero multiplicado por um peso comeando de 2 e crescendo de 1, da direita para a esquerda: 8 x 7, 1 x 6, 1 x 5, 0 x 4, 5 x 3, 7 x 2 (b) somam-se as parcelas obtidas: 56+6+5+0+15+14=96; (c ) calcula-se o resto da diviso desta soma por 11: 96 dividido por 11 d resto 8 (96=8x11+8); (d) subtrai-se de 11 o resto obtido: 11-8=3; (e) se o valor encontrado for 10 ou 11, o dgito verificador ser 0; nos outros casos, o dgito verificador o prprio valor encontrado.

Registros
Escrever um algoritmo capaz de: 1. Ler um conjunto de registros contendo, cada um, o nmero de uma conta bancria, o dgito verificador deste nmero, o saldo da conta e o nome do cliente. O ltimo registro, que no deve ser considerado, contm o nmero de conta igual a zero. 2. Utilizando o esquema de verificao acima, imprimir duas listas de clientes distintas no seguinte formato de sada: CONTAS DE NMERO CORRETO 413599-7 987,30 Dbora Newnchander 111118-0 121,99 Juliana Berg CONTAS DE NMERO ERRADO 765432-1 335,66 Jnia Faria

Incio i 0 j 0 leia (conta.numero) Algoritmo <digitoverificador> enquanto (conta.numero<>0) faca Tipo CadConta: Registro leia (conta.nome) literal:nome leia (conta.digver) real: saldo leia (conta.saldo) inteiro: digver,numero Fim_Registro soma 0 CadConta:validas[100],invalidas[100] peso 2 inteiro:i,j,k,digver,peso numero conta.numero enquanto (numero<>0) faa somasoma+(mod(numero,10)*peso) numero div(numero,10) peso peso+1 fim enquanto digver 11-mod(soma,11) se (digver>9) entao digver 0 fim se se (digver=conta.digver) entao i i+1 validas[i].numero conta.numero validas[i].nome conta.nome

Registros

Registros

validas[i].digverconta.digver validas[i].saldoconta.saldo senao j j+1 invalidas[j].numero conta.numero invalidas[j].nome conta.nome invalidas[j].digverconta.digver invalidas[j].saldoconta.saldo fim se fim enquanto k 1 escreva (CONTAS DE NUMERO CORRETO) enquanto (k<=i) escreva (validas[k].numero, -, validas[k].digver, validas[k].saldo, validas[k].nome) fim enquanto k 1 escreva (CONTAS DE NUMERO ERRADO) enquanto (k<=j) escreva (invalidas[k].numero, -, invalidas[k].digver, invalidas[k].saldo, invalidas[k].nome) fim enquanto

Registros

Tarefas: Estude a lista de exerccios resolvidos de registros que se encontra no site da disciplina. Resolva a lista de exerccios propostos de registros que foi entregue na sala de aula..

You might also like