Algoritmos e
Estruturas de Dados
Aula 5 e Aula 6
04 e 11/09/2012
Profª Ms. Engª Elaine Cecília Gatto
Unidade 5: Variáveis Compostas
Curso de Bacharelado em Engenharia de Computação
Universidade do Sagrado Coração – USC
Bauru/SP
Registros
• Registros são variáveis compostas heterogêneas;
• Conjunto em que os elementos não são do mesmo tipo;
• Conjunto heterogêneo de dados;
• Exemplo: formulário de inscrição em um evento. O formulário
  é composto por vários campos que você deve preencher. Esses
  campos são de tipos diferentes. Alguns são numéricos outros
  são textos e, assim por diante.
• Um registro é composto por campos que são partes que
  especificam cada uma das informações que o compõe.
• Uma variável do tipo registro é uma variável composta, pois
  engloba um conjunto de dados, e é heterogenea, pois cada
  campo pode ser de um tipo primitivo diferente.
Registros
• Exemplo: passagem de ônibus:

•   Número da passagem
•   Data
•   Origem
•   Destino
•   Horário
•   Poltrona
•   Plataforma
•   Idade
•   Nome do passageiro
Registro
//definição do tipo de registro
Tipo regEmbarque = registro
       inteiro: numPass, numPol, Idade;
       caracter: nome, data, origem, destino, hor;
fimregistro;

//declaração da variável composta do tipo registro definido
regEmbarque: Embarque;
Registros
//lendo todos os campos do registro
leia(Embarque);

//escrevendo todos os camps do registro
escreva(Embarque);

//lendo/escrevendo um campo especifico do registro
leia(Embarque.numPoltrona);
escreva(Embarque.Data);
Registros
//acesso genérico ao registro
//ler todos os campos do registro;
leia(Embarque);

//acesso específico a um campo do registro
escreva(Embarque.Idade);
Se (Embarque.Idade < 18)
       então escreva(Embarque.Nome, “ é menor”);
fimse;
Registros
• Registros também podem conter vetores e matrizes em sua
  composição. Exemplo: registro de estoque

•   Nome do produto
•   Código do produto
•   Preço do produto
•   Baixa: 1 ( ) 2 ( ) 3 ( ) 4 ( ) 5 ( ) 6 ( )

• Sempre antes será necessário declarar o vetor/matrizes para
  somente depois declarar o registro
Registros
//definição do tipo vetor
tipo vDias = vetor [1..6] de inteiros;

//definição do tipo registro
tipo regProduto = registro
                        inteiro: Cod;
                        caracter: Nome;
                        real: Preço;
                        vDias: Baixa; //vetor definido antes
fimregistro;

//declaração da variável composta do tipo registro
regProduto: Produto;
Registros
• Monte o registro para o seguinte formulário:

•   Nome do Produto
•   Código do Produto
•   Preço do Produto
•   Baixas:

        1       2       3        4        5      6
        1
        2
        3
        4
Registros
tipo matDias = matriz [1..4, 1..6] de inteiros;
tipo regProduto = registro
         inteiro: Cod;
         caracter: Nome;
         real: Preço;
         matDias: Baixa;
fimregistro;

regProduto: Produto;
Registros
• Acesso aos elementos de um registro com matriz
• Exemplo 1: acessar quanto foi vendido do produto no terceiro
  dia da quarta semana: Produto.Baixa[4,3]
• Exemplo 2: escreva o nome do produto, o código, o preço e as
  baixas da segunda semana:

     escreva(Produto.Nome);
     escreva(Produto.Código);
     escreva(Produto.Preço);
     para J de 1 até 6 faça
              escreva(Produto.Baixa[2,J]);
     fimpara;
Registros
• Exemplo 3: totalize por dia de semana todos os dias do mês

para j de 1 até 6 faça
   aux  0;
   para i de 1 até 4 faça
       aux  aux + Produto.Baixa[i,j]
   fimpara;
   escreva(j, “ totalizou ” , aux, “ baixas”);
fimpara;
Registros
• Matrizes de Registros.
• Exemplo: suponha que queremos manter um registro de
  informações relativas a todos os passageiros que embarcam
  em um onibus. Um registro é usado para identificar cada
  passageiro e, para agrupar todos eles, usamos o conjunto
  desses registros, ou seja, uma matriz de registros. Suponha
  que temos 44 lugares no onibus, numerados em sequencia de
  1 a 44. Para unir esses registros criamos um vetor em que
  cada posição é um elemento do tipo registro.
Registros
 1
 2
       Número da passagem   Assim, primeiro
                            devemos definir a
 3     Data                 estrutura dos registros,
 4     Origem               no momento da
                            declaração. Somente
 5     Destino
                            depois definimos o
 6     Horário              vetor.
 7     Poltrona
 8     Plataforma
 9     Idade
 .
       Nome do passageiro
 .
 .

43
44
Registros
//definindo o tipo registro
tipo regEmbarque = registro
                        inteiro: numPas, NumPol, Idade;
                        caracter: Nome, Data, Origem, Destino, Hor;
fimregistro;

//definindo o tipo vetor
tipo vetEmbarque = vetor [1..44] de regEmbarque;

//definindo a variável composta
vetEmbarque: Onibus;
Registros
• Exemplo: declare um conjunto de registros que comporte as
  informações de estoque, mas que desta vez permita armazenar 500
  produtos diferentes em um vetor.

tipo matDias = matriz [1..4,1..6] de inteiros;
tipo regProduto = registro
                          inteiro: Cod;
                          caracter: Nome;
                          real: Preço;
                          matDias: Baixa;
fimregistro;
tipo vetEstoque = vetor [1..500] de regProduto;
vetEstoque: Produto;
Registros
• Qual é a baixa do décimo produto, da terceira semana do mês e do quarto dia
  da semana? Resposta: Produto[10].Baixa[3,4]
• Imprima o total de movimentação do estoque para cada um dos 500 produtos:

para n de 1 até 500 faça
        acm  0;
        para i de 1 até 4 faça
                  para j de 1 até 6 faça
                             acm  acm + Produto[n].Baixa[i,j];
                  fimpara;
        fimpara;
        escreva(Produto[n].Nome, acm);
fimpara;
Registros
• Mostre quantos são e o nome de todos os passageiros que possuem menos
  de 18 anos

QM  0;
para i de 1 até 44 faça
         se(Onibus[i].Idade < 18)
                    então início
                              escreva(Onibus[i].Nome);
                              QM  QM +1;
                    fim;
         fimse;
fimpara;
escreva(“Total de menores de idade no onibus: ”, QM);
Exercícios
1. Defina um registro para um cheque bancário.
2. Mostre a média de idade dos passageiros e o nome
    daqueles que estejam acima desta média.
3. Uma biblioteca possui obras de ciências exatas, humanas e
    biomédicas, totalizando 1500 volumes, 500 de cada área. O
    proprietário resolveu informatizá-la e, para tal, agrupou as
    informações sobre cada livro do seguinte modo:
• Código de catalogação
• Nome da obra
• Nome do autor
• Doação
• Editora
• Número de páginas
registros
a. Construa um algoritmo que declare tal estrutura e reúna
   todas as informações de todas as obras em três vetores
   distintos para cada área
b. Elabore um trecho de algoritmo que, utilizando como
   premissa o que foi feito no item a, realize uma consulta às
   informações. O usuário fornecerá código da obra e sua área;
   existindo tal livro, informa seus campos; do contrário, envia
   mensagen de aviso. A consulta repete-se até que o usuário
   introduza código finalizador como valor -1.

Aula 6 aed - registros

  • 1.
    Algoritmos e Estruturas deDados Aula 5 e Aula 6 04 e 11/09/2012 Profª Ms. Engª Elaine Cecília Gatto Unidade 5: Variáveis Compostas Curso de Bacharelado em Engenharia de Computação Universidade do Sagrado Coração – USC Bauru/SP
  • 2.
    Registros • Registros sãovariáveis compostas heterogêneas; • Conjunto em que os elementos não são do mesmo tipo; • Conjunto heterogêneo de dados; • Exemplo: formulário de inscrição em um evento. O formulário é composto por vários campos que você deve preencher. Esses campos são de tipos diferentes. Alguns são numéricos outros são textos e, assim por diante. • Um registro é composto por campos que são partes que especificam cada uma das informações que o compõe. • Uma variável do tipo registro é uma variável composta, pois engloba um conjunto de dados, e é heterogenea, pois cada campo pode ser de um tipo primitivo diferente.
  • 3.
    Registros • Exemplo: passagemde ônibus: • Número da passagem • Data • Origem • Destino • Horário • Poltrona • Plataforma • Idade • Nome do passageiro
  • 4.
    Registro //definição do tipode registro Tipo regEmbarque = registro inteiro: numPass, numPol, Idade; caracter: nome, data, origem, destino, hor; fimregistro; //declaração da variável composta do tipo registro definido regEmbarque: Embarque;
  • 5.
    Registros //lendo todos oscampos do registro leia(Embarque); //escrevendo todos os camps do registro escreva(Embarque); //lendo/escrevendo um campo especifico do registro leia(Embarque.numPoltrona); escreva(Embarque.Data);
  • 6.
    Registros //acesso genérico aoregistro //ler todos os campos do registro; leia(Embarque); //acesso específico a um campo do registro escreva(Embarque.Idade); Se (Embarque.Idade < 18) então escreva(Embarque.Nome, “ é menor”); fimse;
  • 7.
    Registros • Registros tambémpodem conter vetores e matrizes em sua composição. Exemplo: registro de estoque • Nome do produto • Código do produto • Preço do produto • Baixa: 1 ( ) 2 ( ) 3 ( ) 4 ( ) 5 ( ) 6 ( ) • Sempre antes será necessário declarar o vetor/matrizes para somente depois declarar o registro
  • 8.
    Registros //definição do tipovetor tipo vDias = vetor [1..6] de inteiros; //definição do tipo registro tipo regProduto = registro inteiro: Cod; caracter: Nome; real: Preço; vDias: Baixa; //vetor definido antes fimregistro; //declaração da variável composta do tipo registro regProduto: Produto;
  • 9.
    Registros • Monte oregistro para o seguinte formulário: • Nome do Produto • Código do Produto • Preço do Produto • Baixas: 1 2 3 4 5 6 1 2 3 4
  • 10.
    Registros tipo matDias =matriz [1..4, 1..6] de inteiros; tipo regProduto = registro inteiro: Cod; caracter: Nome; real: Preço; matDias: Baixa; fimregistro; regProduto: Produto;
  • 11.
    Registros • Acesso aoselementos de um registro com matriz • Exemplo 1: acessar quanto foi vendido do produto no terceiro dia da quarta semana: Produto.Baixa[4,3] • Exemplo 2: escreva o nome do produto, o código, o preço e as baixas da segunda semana: escreva(Produto.Nome); escreva(Produto.Código); escreva(Produto.Preço); para J de 1 até 6 faça escreva(Produto.Baixa[2,J]); fimpara;
  • 12.
    Registros • Exemplo 3:totalize por dia de semana todos os dias do mês para j de 1 até 6 faça aux  0; para i de 1 até 4 faça aux  aux + Produto.Baixa[i,j] fimpara; escreva(j, “ totalizou ” , aux, “ baixas”); fimpara;
  • 13.
    Registros • Matrizes deRegistros. • Exemplo: suponha que queremos manter um registro de informações relativas a todos os passageiros que embarcam em um onibus. Um registro é usado para identificar cada passageiro e, para agrupar todos eles, usamos o conjunto desses registros, ou seja, uma matriz de registros. Suponha que temos 44 lugares no onibus, numerados em sequencia de 1 a 44. Para unir esses registros criamos um vetor em que cada posição é um elemento do tipo registro.
  • 14.
    Registros 1 2 Número da passagem Assim, primeiro devemos definir a 3 Data estrutura dos registros, 4 Origem no momento da declaração. Somente 5 Destino depois definimos o 6 Horário vetor. 7 Poltrona 8 Plataforma 9 Idade . Nome do passageiro . . 43 44
  • 15.
    Registros //definindo o tiporegistro tipo regEmbarque = registro inteiro: numPas, NumPol, Idade; caracter: Nome, Data, Origem, Destino, Hor; fimregistro; //definindo o tipo vetor tipo vetEmbarque = vetor [1..44] de regEmbarque; //definindo a variável composta vetEmbarque: Onibus;
  • 16.
    Registros • Exemplo: declareum conjunto de registros que comporte as informações de estoque, mas que desta vez permita armazenar 500 produtos diferentes em um vetor. tipo matDias = matriz [1..4,1..6] de inteiros; tipo regProduto = registro inteiro: Cod; caracter: Nome; real: Preço; matDias: Baixa; fimregistro; tipo vetEstoque = vetor [1..500] de regProduto; vetEstoque: Produto;
  • 17.
    Registros • Qual éa baixa do décimo produto, da terceira semana do mês e do quarto dia da semana? Resposta: Produto[10].Baixa[3,4] • Imprima o total de movimentação do estoque para cada um dos 500 produtos: para n de 1 até 500 faça acm  0; para i de 1 até 4 faça para j de 1 até 6 faça acm  acm + Produto[n].Baixa[i,j]; fimpara; fimpara; escreva(Produto[n].Nome, acm); fimpara;
  • 18.
    Registros • Mostre quantossão e o nome de todos os passageiros que possuem menos de 18 anos QM  0; para i de 1 até 44 faça se(Onibus[i].Idade < 18) então início escreva(Onibus[i].Nome); QM  QM +1; fim; fimse; fimpara; escreva(“Total de menores de idade no onibus: ”, QM);
  • 19.
    Exercícios 1. Defina umregistro para um cheque bancário. 2. Mostre a média de idade dos passageiros e o nome daqueles que estejam acima desta média. 3. Uma biblioteca possui obras de ciências exatas, humanas e biomédicas, totalizando 1500 volumes, 500 de cada área. O proprietário resolveu informatizá-la e, para tal, agrupou as informações sobre cada livro do seguinte modo: • Código de catalogação • Nome da obra • Nome do autor • Doação • Editora • Número de páginas
  • 20.
    registros a. Construa umalgoritmo que declare tal estrutura e reúna todas as informações de todas as obras em três vetores distintos para cada área b. Elabore um trecho de algoritmo que, utilizando como premissa o que foi feito no item a, realize uma consulta às informações. O usuário fornecerá código da obra e sua área; existindo tal livro, informa seus campos; do contrário, envia mensagen de aviso. A consulta repete-se até que o usuário introduza código finalizador como valor -1.