Estruturas de dados heterogêneas

Documentos relacionados
algoritmo "Exercício sobre registros" tipo data: registro inicio dia:inteiro mes: inteiro ano: inteiro fimregistro tipo registro_conta: registro

Introdução a Algoritmos Parte 07

algoritmo "exercício 28" var opcao, n1, n2: inteiro funcao seleciona_opcao():inteiro var o:caractere inicio repita escreva ("Efetue uma multiplicação

ALGORITMOS I. Procedimentos e Funções

Estruturas de Controle de Fluxo

Prof. Jorge Cavalcanti

Estruturas de Controle de Fluxo

Aplicaremos a técnica do teste de mesa sobre o algoritmo abaixo, o qual visa determinar o número de vértices de uma figura geométrica.

Prof. Jorge Cavalcanti

Introdução a Algoritmos Parte 06

Algoritmos e Estruturas de Dados. Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras PURO

n1, /,n2, =,res n1, n2, res: real res <- n1 / n2 Digite o Dividendo: n2<>0 Digite o Divisor: verdadeiro falso

Conceitos básicos de algoritmos

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

TIPOS DE DADOS E VARIÁVEIS

VETORES Motivação AULA 19

Aula IV Vetores e Matrizes

ALGORITMOS AULA 2. Profª Amanda Gondim

algoritmo "exercício 13" var op1, op2: real operador: caractere inicio escreva ("Entre com o primeiro operando: ") leia (op1) escreva ("Entre com o

Aula 4 Oficina de Programação Algoritmos - Parte 3. Profa. Elaine Faria UFU

Português Estruturado (VISUALG)

AULA 07. HABILIDADES TRABALHADAS: Desenvolver algoritmos utilizando laços a partir da leitura de fluxogramas ou algoritmos em portugol.

INFORMÁTICA APLICADA AULA 06 ALGORITMOS

Algoritmos e Programação

ALGORITMOS E PROGRAMAÇÃO. Andreza Leite Andreza.leite@univasf.edu.br

INFORMÁTICA APLICADA AULA 03 ALGORITMOS

Estruturas de Controle de Fluxo Estruturas de Seleção. Givanaldo Rocha

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

Conceitos Básicos de Algoritmos

Recursividade Alguns problemas são definidos com base nos mesmos, ou seja, podem ser descritos por instâncias do próprio problema.

Prof. Jorge Cavalcanti


Fluxograma. Símbolo Nome Descrição

algoritmo "exercício vetor" var vet:vetor [1..12] de inteiro i:inteiro inicio para i de 1 ate 12 faca escreva ("Entre com vetor[",i,"]: ") leia

PSEUDO-CÓDIGO. Nickerson Fonseca Ferreira

Estruturas de Controle de Fluxo

Pseudocódigo Exercício 6

Estruturas de dados homogêneas

Fluxograma. Símbolo Nome Descrição

COMANDOS DE REPETIÇÃO (ENQUANTO, REPITA E PARA)

ALGORITMOS E LÓGICA DE PROGRAMAÇÃO PRÉ AULA PRÉ AULA 26/10/2015

AULA 10 VETORES. Disciplina: Algoritmos Professora: Alba Lopes.

Algoritmos Estrutura Condicional

Estruturas de Controle de Fluxo

Algoritmos e Técnicas - Vetores e Registros. Vetores

Expressões, Atribuições, Entrada e Saída. Givanaldo Rocha

Algoritmos e Lógica de Programação (Aula Prática - 09/05/16)

Algoritmos e Programação

Introdução à Programação. Vetores. Prof. José Honorato F. Nunes

Algoritmos e Programação I

Funções e procedimentos. Lógica de programação Professor Leo Larback

Prof. Jorge Cavalcanti

Estruturas de Controle de Fluxo Pseudocódigo/Exercício Construa o pseudocódigo de um algoritmo para obter o resultado da divisão de dois números

Pseudocódigo Exercício 6

CONTROLE DE FLUXO DE EXECUÇÃO

Estruturas de Repetição

Variáveis Compostas Homogêneas Vetores

Introdução ao VisuALG

Microcontroladores. Programação: fluxogramas, pseudocódigos e lógica. Prof. Daniel

Para começar... Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Comando REPITA (repeat) Comando REPITA (repeat)

LINGUAGEM DE PROGRAMAÇÃO

VARIÁVEIS INDEXADAS VETORES E MATRIZES

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

Aula 4: Introdução à Linguagem C++

Algoritmos. Prof. Jonatas Bastos Site:

Algoritmos e Programação - Engenharia da Computação -

1. Escreva um algoritmo em fluxograma que descreva a sequência 1, 5, 13, 17, 21, 25,?,?,?,?. Ou seja, até o seu 10º termo.

Lista 02 Vetores. escreval("agora, digte um nome a ser buscado.") leia(nome)

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

Lógica de Programação

Noções de algoritmos - Aula 1

Resumo VISUALG. A seção de declaração de variáveis começa com a palavra-chave var, e continua com as seguintes sintaxes:

Português Estruturado

LÓGICA DE PROGRAMAÇÃO. Algoritmos Computacionais. Sérgio Carlos Portari Júnior

Universidade Estadual do Sudoeste da Bahia Departamento de Estudos Básicos e Instrumentais Disciplina: Introdução à Ciência da Computação Prof.

Fundamentos de Programação 1

ALGORITMO I ESTRUTURA DE CONTROLE DECISÃO SE / CASO;

ALGORITMOS E PROGRAMAÇÃO Estruturas de repetição. Andreza Leite andreza.leite@univasf.edu.br

Transcrição:

Registros Estruturas de dados heterogêneas Vimos inúmeras aplicações onde são necessários conjuntos de elementos do mesmo tipo, e para tal utilizamos os vetores. No entanto, em alguns problemas há necessidade de definirmos conjuntos onde os elementos não sejam do mesmo tipo. Um típico exemplo de nosso cotidiano é a utilização do conjunto de informações que caracterizam um aluno: Nome(caractere), CPF(inteiro), RG(inteiro), data de nascimento(caractere), coeficiente de rendimento(real), etc.. 307

308 Estruturas de dados heterogêneas Em uma análise superficial um estudante poderia pensar que uma solução para a questão apresentada poderia ser obtida declarando-se cinco variáveis: algoritmo exemplo var Nome: caractere CPF: inteiro RG: inteiro data_de_nascimento: caractere coeficiente_de_rendimento: real Para uma melhor visualização da utilidade dos registros basta imaginarmos que ao invés de manipular as informações de um aluno exista a necessidade de gerenciamento de uma turma com cinquenta alunos.

309 Estruturas de dados heterogêneas Um estudante desatento imaginaria ser necessário a declaração de 250 variáveis. Porém, um estudante com uma visão mais coerente dos conceitos estudados sugeriria a utilização de cinco vetores: algoritmo exemplo var Nomes: vetor [1..50] de caractere CPFs: vetor [1..50] de inteiro RGs: vetor [1..50] de inteiro datas_de_nascimento: vetor [1..50] de caractere coeficientes_de_rendimento: vetor [1..50] de real Porém, manipular de forma adequada os vetores, mantendo seus dados consistentes, se torna trabalhoso. Com a utilização de um registro podemos resolver este problema apenas com um vetor de cinquenta registros.

310 Estruturas de dados heterogêneas Exemplo: algoritmo exemplo var alunos: vetor [1..50] de registro nome: caractere CPF: inteiro RG: inteiro datas_de_nascimento: caractere coeficientes_de_rendimento: real fimregistro A cada um dos elementos que constituem um registro é dado o nome de campo. No exemplo acima, temos os campos: nome, CPF, RG, datas_de_nascimento e coeficientes_de_ rendimento.

Estruturas de dados heterogêneas Com base no exemplo anterior podemos deduzir a estrutura geral para a declaração de um registro: <nome_da_variavel>: registro <nome_campo_1>: <tipo_campo_1> <nome_campo_2>: <tipo_campo_2> <nome_campo_n>: <tipo_campo_n> fimregistro 311

312 Estruturas de dados heterogêneas Abriremos um parêntese em nosso estudo sobre registros para falarmos sobre definição de tipo de dado. Com o objetivo de facilitar a leitura e consequentemente o entendimento dos algoritmos construídos foi criada o conceito de definição de tipo de dado. Sintaxe: tipo <nome_do_tipo>: <definicao_do_tipo> Exemplo: tipo vetor_de_inteiros: vetor [1..100] de inteiro As definições de tipos devem ser feitas entre a constante caractere que nomeia o algoritmo e a declaração de variáveis globais ou dos módulos. Obs.: Um estudante atento já vislumbrou as vantagens da definição de tipo na passagem de vetores e registros como parâmetros em módulos.

Estruturas de dados heterogêneas Com a utilização dos conceitos vistos podemos resolver o problema aludido da seguinte forma: algoritmo exemplo tipo registro_aluno: registro nome: caractere CPF: inteiro RG: inteiro datas_de_nascimento: caractere coeficientes_de_rendimento: real fimregistro tipo vetor_de_registros: vetor [1..50] de registro_aluno var alunos: vetor_de_registros 313

Estruturas de dados heterogêneas Agora devemos tratar de como é feita a manipulação de um registro. Da mesma forma que trabalhamos com um vetor acessando-o elemento a elemento, seja para atribuição ou seja para consulta de um valor, o mesmo ocorre com relação aos registros, devemos acessá-lo campo a campo. Para acessarmos um determinado campo de um registro devemos utilizar o operador. da seguinte forma: No caso do exemplo com o qual temos trabalhado, a leitura do campo nome do décimo segundo aluno da turma é feita através de leia(alunos[12].nome) ou a impressão na saída padrão do CPF do terceiro aluno seria feita da seguinte forma escreva(alunos[3].cpf) 314

Estruturas de dados heterogêneas Exercício 43: Defina um tipo de dado capaz de armazenar as seguintes informações sobre um determinado cliente de um banco: nome, CPF, RG, número da conta, data de abertura da conta e saldo. 315

tipo data: registro dia:inteiro mes: inteiro ano: inteiro fimregistro tipo registro_conta: registro nome: caractere cpf: caractere rg: caractere numero_conta: inteiro data_abertura: data saldo: real fimregistro 316

317 Estruturas de dados heterogêneas Exercício 44: Com base no exercício anterior, construa um algoritmo que manipule um vetor com 15 registros de clientes, onde cada registro é um elemento do tipo de dado definido. A manipulação do vetor é feita através dos seguintes módulos: inicializar vetor, imprimir um determinado registro com base no valor do campo CPF e imprimir um determinado registro com base em sua posição no vetor. O algoritmo deve se utilizar de forma satisfatória dos módulos mencionados e não deve possuir variáveis globais.

algoritmo "Exercício sobre registros" tipo data: registro dia:inteiro mes: inteiro ano: inteiro fimregistro tipo registro_conta: registro nome: caractere cpf: caractere rg: caractere numero_conta: inteiro data_abertura: data saldo: real fimregistro tipo vetor_de_registros: vetor [1..15] de registro_conta 318

procedimento inicializar_vetor (var v: vetor_de_registros) var i: inteiro para i de 1 ate 15 faca escreva ("Entre com as informações do registro número ") escreval (i, ".") escreva ("Número da conta: ") leia (v[i].numero_conta) escreva ("Nome do cliente: ") leia (v[i].nome) escreva("cpf: ") leia (v[i].cpf) escreva("rg: ") leia (v[i].rg) escreval("data de abertura: ") escreva ("Ano: ") leia (v[i].data_abertura.ano) escreva ("Mês: ") leia (v[i].data_abertura.mes) escreva ("Dia: ") leia (v[i].data_abertura.dia) escreva("saldo: ") leia (v[i].saldo) fimpara fimprocedimento 319

funcao imprimir_registro_cpf (var v: vetor_de_registros; cpf: caractere):logico var i: inteiro para i de 1 ate 15 faca se (v[i].cpf=cpf) entao escreval ("Registro da conta número ", v[i].numero_conta) escreval ("Cliente: ",v[i].nome) escreval("cpf: ",v[i].cpf) escreval("rg: ",v[i].rg) escreva ("Data de abertura: ",v[i].data_abertura.dia,"/") escreval (v[i].data_abertura.mes, "/", v[i].data_abertura.ano) escreval("saldo: ",v[i].saldo) retorne (verdadeiro) fimse fimpara retorne (falso) fimfuncao 320

funcao imprimir_registro_posicao (var v: vetor_de_registros; posicao: inteiro):logico se (posicao<1 ou posicao>15) entao retorne (falso) senao escreva ("Registro da conta número ") escreval (v[posicao].numero_conta) escreval ("Cliente: ",v[posicao].nome) escreval("cpf: ",v[posicao].cpf) escreval("rg: ",v[posicao].rg) escreva("data de abertura: ",v[posicao].data_abertura.dia,"/") escreval ([posicao].data_abertura.mes,"/") escreval (v[posicao].data_abertura.ano) escreval("saldo: ",v[posicao].saldo) retorne (verdadeiro) fimse fimfuncao 321

procedimento principal() var vet_reg: vetor_de_registros cpf: caractere p: inteiro inicializar_vetor(vet_reg) escreva ("Entre com um CPF para impressão do registro da ") escreval ("conta correspondente: ") leia (cpf) se (nao imprimir_registro_cpf (vet_reg, cpf)) entao escreva ("Não existe nenhum conta de cliente com o CPF ") escreval ("especificado.") fimse escreval ("Entre com a posição do registro da conta para ") escreval ("impressão, intervalo [1,15]: ") leia (p) se (nao imprimir_registro_posicao (vet_reg, p)) entao escreval ("Posição inválida.") fimse fimprocedimento principal() fimalgoritmo 322

Estruturas de dados heterogêneas Exercício 45: A solução apresentada para o exercício anterior, visando não tirar o foco da manipulação de registros, não tratou do aspecto extremamente relevante de validação de entradas. Sendo assim faça as alterações necessárias na solução exposta para que esta trate de forma coerente da questão de validação das entradas. 323