Algoritmos e Estruturas de Dados I – Arquivos

Slides:



Advertisements
Apresentações semelhantes
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Advertisements

TÉCNICAS DE PROGRAMAÇÃO I
Estruturas de Dados Marcio Gonçalves.
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
WINDOWS Sistemas Operacionais PLATAFORMA TECNOLÓGICOS
Organização e Gerência de Arquivos
Escola Secundária da Ramada
Algoritmos e Estrutura de Dados I
Pesquisa em Memória Primária – Árvores de Busca
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Aula 02 de Excel.
Prof.: Sergio Pacheco Linguagem PHP Prof.: Sergio Pacheco 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Algoritmos e Estruturas de Dados II
Lógica de Programação Módulo II
Robson Godoi / Sandra Siebra
Algoritmos e Estruturas de Dados I – Estruturas de Dados
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
CAPACITAÇÃO SME-SP.
Aula prática 6 Vetores e Matrizes
Lógica de Programação Módulo I – Lógica de Programação (teórica)
Linguagem de Programação II Parte VII
Linguagem de Programação II Parte V
Linguagem de Programação II Parte IX
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior
Treinamento do Microsoft® Access® 2010
Manipulação de Arquivos em C
Algoritmos e Estruturas de Dados I – Registros
Introdução a Programação
ACESSE: Acesse o site do SENAI e clique no link “Trabalhe Conosco”, em seguida clicar em CANDIDATE-SE.
Lógica de Programação/ Algoritmos Engenharia Produção 2014
MICROSOFT Windows XP.
Aula 13 - Armazenamento de Dados em Arquivos
Algoritmos e Estruturas de Dados I – Ponteiros
Algoritmos e Estruturas de Dados I – Registros
Profa. Mercedes Gonzales Márquez
Algoritmos e Estruturas de Dados I – Estrutura Condicional
Algoritmos e Estruturas de Dados I – Estruturas de Dados
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
Algoritmos e Estruturas de Dados I – Modularização
Algoritmos e Estruturas de Dados I – Registros
Algoritmos - exercícios
Algoritmos e Estruturas de Dados I – Estrutura de Repetição
HELP (Manual Eletrônico). MENU CADASTRO ATENDIMENTO.
Operações com Arquivos Monitoria A estrutura FILE  É como um tipo de dado, mas não é um tipo propriamente dito  Definido no arquivo cabeçalho.
Financeiro – Boleto: Remessa e Retorno
Algoritmos e Estruturas de Dados I – Estrutura Condicional
Aula Prática 11 Operações com Arquivos Monitoria
WINDOWS EXPLORER.
Algoritmos e Estruturas de Dados I – Estrutura de Repetição
Fundamentos de linguagens de programação
Algoritmos e Estruturas de Dados I – Estruturas de Dados
Profa. Mercedes Gonzales Márquez
Professor: André Didier Autor: Francisco Airton
1 Programação em C Aula Considere que um banco armazena em arquivo as seguintes informações de seus clientes: número da conta (int), nome do cliente.
Algoritmos e Estruturas de Dados I – Estrutura Condicional Profa. Mercedes Gonzales Márquez.
Professor: André L. R. Didier Autor: Francisco Airton
Variáveis e Operadores
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Algoritmo É uma descrição seqüencial ordenada dos passos que devem ser executados de forma lógica e clara, com a finalidade de facilitar a resolução de.
Programação para Web I AULA 2 BANCO DE DADOS.
Financeiro - Boleto : Remessa e Retorno
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
Classificação (Ordenação) de dados. Roteiro Contextualização e definições sobre Classificação Métodos de Classificação de Dados.
Arquivos Capítulo 5 Lógica de Programação
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

Algoritmos e Estruturas de Dados I – Arquivos Profa. Mercedes Gonzales Márquez

Arquivos Armazenamento de grandes quantidades de informação por um grande período de tempo. Exemplos: A companhia telefónica precisa guardar informações sobre seus assinantes. Informações armazenadas na Receita Federal sobre os contribuintes. 2

Arquivos Arquivo é um conjunto de registros armazenados em um dispositivo de memória secundária. Registro é um conjunto de unidades de informação logicamente relacionadas. Cada unidade de informação constitui um campo do registro. Exemplo Arquivo de biblioteca : Cada livro é catalogado por meio de um registro, e o conjunto de registros corresponde ao acervo de livros da biblioteca. 3

Arquivos Ficha catalográfica (Registro)‏ Conjunto de fichas catalográficas (arquivo)‏ 4

Arquivos (a) Definição do registro que compõe o arquivo (b) Definição do tipo construído arquivo (c) Declaração de variáveis (de registro,de arquivo,outras)‏ Definição do tipo construído arquivo: Tipo <identif_arquivo> = arquivo composto de tipo <identif_registro> Declaração de variável composta do tipo arquivo definido Tipo-arquivo : nome_variável 5

Arquivos Tipo livro = registro inteiro: codigo,ano Exemplo biblioteca Definição do registro que compõe o arquivo Tipo livro = registro inteiro: codigo,ano literal: titulo,autor,assunto,editora fim registro Definição do arquivo Tipo arqlivro=arquivo composto de livro Declaração de variáveis livro:ficha variável de registro arqlivro:biblos variável de arquivo 6

Arquivos Exemplo2: Fichário dos associados de um clube que utiliza a seguinte ficha de cadastro. tipo socio=registro literal: nome,datanasc,naturalidade,nacionalidade, endereço,bairro,cidade,estado,dataadesão inteiro:RG,CPF,Fone,nrodepend lógico:sexo fim registro tipo arqsocio=arquivo composto de socio socio:regsocio arqsocio:clube 7

Arquivos Manipulação: Diante de um arquivo de livros por exemplo podemos ter apenas dois tipos de atitudes: (a) No caso de ser um leitor: procura a informação sobre a localização de certo livro através das fichas que registram o acervo. (b) No caso de ser funcionário (da biblioteca): manipulação de diferentes formas como inserir, modificar e remover alguma informação sobre algum livro. 8

Arquivos Algoritmos básicos para consulta e/ou manipulação de alguma informação no arquivo 9

Arquivos Exercício: Dado o arquivo CADASTRO com registros com os campos NOME,SEXO,COR-DE-OLHOS,ALTURA, PESO E DATA-DE-NASCIMENTO, separá-los em dois arquivos: um chamado HOMENS, com registros cujo campo SEXO apresente o valor 1 (sexo masculino), e outro chamado MULHERES, com registros cujo campo SEXO seja igual a 2. Os registros dos novos arquivos deverão possuir os seguintes campos: NOME, COR-DE-OLHOS, ALTURA, PESO E DATA-DE-NASCIMENTO. (1) Defina os tipos registro chamados regcad1 e regcad2; e os tipos arquivo arqcad1 e arqcad2 e as variáveis necessárias. (2) Faça o algoritmo que complete a tarefa solicitada. 10

Arquivos- operações básicas Abrindo um arquivo: Não podemos obter uma informação contida em um arquivo sem antes abri-lo. Isto é feito pelo comando Abra (Identif_arquivo)‏ onde: Identif_arquivo representa o identificador da variável arquivo previamente definida. Exemplo: abra(biblos)‏ Fechando um arquivo: Não é recomendável manter um arquivo aberto depois de usá-lo, pois isso deixaria seu conteúdo exposto a agentes externos. Para fechar os arquivos após sua utilização usamos: Fecha(Identif_arquivo)‏ Exemplo: fecha(biblos)‏ 11

Arquivos Copiando um registro de arquivo: Um arquivo não deve ser consumido (no sentido de retirar informação dele) e sim consultado. Para tal, é necessário copiar o conteúdo que nos interessa em algum lugar. Usa-se o comando copie (identif_arquivo, identif_registro)‏ identif_arquivo: Representa o identificador de variável arquivo previamente definida identif_registro: Representa o identificador de variável registro de formato igual àquele que compõe o arquivo. Exemplo copie(biblos,ficha)‏ 12

Arquivos Guardando um registro: Para guardar um registro no arquivo é necessário que este tenha a mesma estruturação de campos que os registros já armazenados. Usa-se o comando, guarde(identif_arquivo,identif_registro)‏ Exemplo: guarde(biblos,ficha)‏ Guarda-se a informação do registro para a posição atual do arquivo. Eliminando um registro: Para eliminação de informações indesejadas usamos elimine(id_arquivo)‏ Exemplo: elimine(biblos)‏ Elimina-se o registro na posição corrente do arquivo. 13

Arquivos Organização de arquivos: Seqüencial Direta Organização Sequencial Registros armazenados contiguamente, um após o outro. Para acessar um registro específico precisamos obedecer a sua ordem de gravação, o que significa percorrer todos os registros que o antecedem. A tarefa de acesso é auxiliada pelos comandos Avance Fda (fim de arquivo)‏ 14

Arquivos avance(identif_arquivo)‏ Esse comando coloca o arquivo na posição consecutiva ou seja, no próximo registro. Se utilizado repetidas vezes permite percorrer o arquivo passando por uma série consecutiva de registros. Fda (identif_arquivo)‏ Esse comando retorna verdadeiro quando a posição atual é o fim do arquivo e falso, caso contrário. 15

Arquivos Exercício:Faça um algoritmo que guarde um novo telefone em um arquivo sequencial (Inserção)‏ algoritmo<inserção_telefone> tipo pessoa : registro literal:nome inteiro:fone fim registro tipo pessoal=arquivo composto de pessoa pessoa:aux pessoal:agenda Inicio abra(agenda)‏ repita avance(agenda)‏ até fda(agenda)‏ leia (aux.nome,aux.fone)‏ guarda(agenda,aux)‏ fecha(agenda)‏ fim 16

Arquivos Observações: Sempre que o comando abra é executado, a posição corrente do arquivo é o primeiro registro. O comando guarda armazena o registro na posição corrente do arquivo que, no exemplo, é a última posição. Vejamos o caso de uma consulta no mesmo arquivo Como não se conhece a posição da informação procurada no arquivo, vasculha-se o arquivo partir do início. Se o final de arquivo for alcançado e a informação não for encontrada, conclui-se que esta não existe. 17

Arquivos escreva (aux.fone)‏ algoritmo<consulta_telefone> tipo pessoa : registro literal:nome inteiro:fone fim registro tipo pessoal=arquivo composto de pessoa pessoa:aux pessoal:agenda literal:nome_procurado Inicio abra(agenda)‏ leia (nome_procurado)‏ repita copie(agenda,aux)‏ avance(agenda)‏ até (aux.nome=nome_procurado) ou (fda(agenda))‏ se (aux.nome=nome_procurado) então escreva (aux.fone)‏ senão escreva(“telefone não registrado”)‏ fecha(agenda)‏ fim 18

Arquivos Observações: Não deve-se, apenas, avançar pelos registros para verificar a coincidência do campo nome, é preciso copiar para um registro auxiliar cada um dos registros armazenados. Exercício: Utilizando o tipo de arquivo arqLivro já apresentado, elabore um algoritmo que permita ao leitor obter uma relação de livros que a biblioteca dispõe sobre determinado assunto. 19

Arquivos Vejamos o caso de uma alteração de dados no mesmo arquivo Suponhamos que alguém já cadastrado mude o telefone, temos então que localizar seu registro correspondente, copiar seu conteúdo a um registro auxiliar e então alterar o campo fone. Depois basta gravar as informações atualizadas na mesma posição em que se encontrava antes, ou seja, gravar o registro atualizado “por cima” do antigo. 20

Arquivos enquanto (aux.nome<>nomeprocurado e não(fda(agenda))) faça avance(agenda)‏ copie (agenda,aux)‏ fim enquanto se (aux.nome=nome_procurado) então escreva (aux.fone)‏ escreva (“Novo telefone”)‏ leia (novofone)‏ aux.fone←novofone guarde(agenda,aux)‏ senão escreva(“telefone não registrado”)‏ Fim se fecha(agenda)‏ Fim algoritmo<modifica_telefone> tipo pessoa : registro literal:nome inteiro:fone fim registro tipo pessoal=arquivo composto de pessoa pessoa:aux pessoal:agenda literal:nome_procurado inteiro:novofone Inicio abra(agenda)‏ leia (nome_procurado)‏ copie(agenda,aux)‏ 21

Arquivos Observações: Tomar cuidado de não avançar a posição corrente depois de ter encontrado o registro, pois devemos, após da atualização, de regravá-lo na mesma posição. É conveniente apresentar para o usuário as informações que vão ser modificadas. Vejamos o caso de uma eliminação de registro no mesmo arquivo Se quisermos excluir algum telefone arquivado devemos primeiro localizar o registro para então eliminá-lo após uma confirmação. 22

Arquivos algoritmo<elimina_telefone> tipo pessoa : registro literal:nome inteiro:fone fim registro tipo pessoal=arquivo composto de pessoa pessoa:aux pessoal:agenda literal:nome_procurado,confirmacao Inicio Abra (agenda) Leia (nome_procurado) Copie (agenda,aux) Enquanto (aux.nome<>nome_procurado e não (fda(agenda)) faça Avance (agenda) Fim enquanto se (aux.nome=nome_procurado) então escreva (aux.nome,aux.fone)‏ escreva (“Confirma exclusão (S/N)?”)‏ leia (confirmacao)‏ se (confirmacao=”S”) então elimine(agenda)‏ senão escreva(“telefone não registrado”)‏ Fim se fecha(agenda)‏ fim 23

Arquivos Observações: Tomar cuidado de não avançar a posição corrente depois de ter encontrado o registro, pois será o registro da posição corrente que será eliminado. É conveniente solicitar uma confirmação da exclusão para evitar perdas irreparáveis. Exercício2: Utilizando o tipo de arquivo arqLivro já apresentado, elabore um algoritmo destinado ao usuário de categoria funcionário para possibilitar qualquer espécie de manipulação dos dados apartir de um código do livro (inserção, consulta, modificação, eliminação). Faça um menú de opções. 24

Arquivos Exercício3: Uma instituição de pesquisa recolheu amostras em três regiões. Cada amostra constitui um registro com os seguintes componentes: sexo, idade, salário, estado civil, número de dependentes, valor do patrimônio, quantidade de calorias absorvidas por dia, grau de instrução. Em cada região, os dados foram armazenados em um arquivo sequencial, sendo os registros colocados em ordem crescente de idade. Escrever um algoritmo que intercale estes arquivos de modo que o arquivo resultante permaneça ordenado. 25

Arquivos algoritmo<intercala_registros> tipo pessoa : registro literal:sexo inteiro:idade,nrodep,valorp,grau real: salário fim registro tipo pessoal=arquivo composto de pessoa pessoa:aux1,aux2,aux3 pessoal:regiao1,regiao2,regiao3,saida inteiro:menoridade,narquivo Inicio Abra (regiao1) Copie (regiao1,aux1) Abra (regiao2) Copie (regiao2,aux2) Abra (regiao3) Copie (regiao3,aux3) Enquanto (!fda(regiao1) ou !fda(regiao2) ou !fda(regiao3)) faça menoridade<- 9999 se (aux1.idade<menoridade e !fda(regiao1) menoridade<-aux1.idade narquivo<-1 fim se se ... se (narquivo=1) então guarde (aux1,saida) avance(regiao1) copie(regiao1,aux1) avance(saida) senão 26

Arquivos Exercício4: A seção de controle de produção de uma fábrica mantém um arquivo de registros de produção por máquinas. Cada registro contém o número da máquina e o número de peças produzidas em um dia. Supondo que a fábrica possua três máquinas, escreva um algoritmo que separe o arquivo em três outros arquivos, um para cada máquina. 27

Arquivos Organização Direta Também chamada de acesso aleatório. Vá diretamente ao registro desejado usando uma chave: O computador não precisa ler todos os registros anteriores. Ou seja, através do campo podemos determinar o lugar onde o registro está guardado, podendo acessá-lo de forma instantânea sem nos preocupar com seus antecessores. Um algoritmo de randomização (hashing) é usado para determinar o endereço de uma chave específica. A chave deve ser única pois nunca podemos armazenar dois registros diferentes em uma mesma localização. Exemplo: Um professor deseja armazenar o nome do aluno e suas quatro notas (bimestrais), então usa como chave o código de chamada do aluno (o qual é único). 28

Arquivos Algoritmo de Randomização (Hashing) Aplica uma fórmula matemática à chave para determinar o endereço de determinado registro. Ocorre colisão quando o algoritmo de randomização produz o mesmo endereço em disco para duas chaves diferentes. 29

Arquivos 30

Arquivos Para que a posição corrente do arquivo passe a ser a indicada pela chave usamos o comando posicione (IdArquivo, CHAVE)‏ onde: IdArquivo:Representa o identificador de variável de arquivo previamente definida. CHAVE: é um inteiro que indica a posição corrente desejada. 31

Arquivos Inicio abra(diario)‏ repita leia (aux.numero)‏ Exercício:Faça um algoritmo que guarde um novo aluno em um arquivo de organização direta (Inserção)‏ algoritmo<inserção_aluno> tipo aluno : registro literal:nome inteiro:numero inteiro:Nota[4] fim registro tipo sala=arquivo composto de aluno aluno:aux sala:diario inteiro:i Inicio abra(diario)‏ repita leia (aux.numero)‏ se (aux.numero>0) então leia (aux.nome)‏ Para i de 1 até 4 repita leia (‏aux.Nota[i])‏ Fim para posicione (diario, aux.numero)‏ guarde (diario,aux)‏ fim se até (aux.numero=0)‏ fecha(diario)‏ Fim 32

Arquivos Início abra(diario)‏ leia (numeroaluno)‏ Consultando registros em forma direta algoritmo<consulta_aluno> tipo aluno : registro literal:nome inteiro:numero inteiro:Nota[4] fim registro tipo sala=arquivo composto de aluno aluno:aux sala:diario inteiro:numeroaluno Início abra(diario)‏ leia (numeroaluno)‏ posicione (diario, numero.aluno)‏ copie(diario,aux)‏ escreva(aux.nome,”possui notas”,aux.Nota[1], aux.Nota[2], aux.Nota[3],aux.Nota[4])‏ fecha(diario)‏ Fim Observe que não foi necessário fazer a pesquisa por todos os registros do arquivo já que o registro desejado pode ser acessado diretamente, ou seja, sem precisar que nenhum outro registro fosse acessado. 33

Arquivos Início abra(diario)‏ leia (numeroaluno,qualnota)‏ posicione (diario, numeroaluno)‏ copie(diario,aux)‏ se (qualnota=1) então nota←aux.Nota[1] senão se (qualnota=2) então nota←aux.Nota[2] se (qualnota=3) então nota←aux.Nota[3] senão se(qualnota=4) então nota←aux.Nota[4] escreva(aux.nome,”possui nota”,qualnota,”=”,nota)‏ escreva (“Nova Nota”)‏ leia (nota)‏ aux.Nota[qualnota]←nota guarde(diario,aux)‏ fecha(diario)‏ Fim Alteração no arquivo de acesso direto algoritmo<altera_aluno> tipo aluno : registro literal:nome inteiro:numero inteiro:Nota[4] fim registro tipo sala=arquivo composto de aluno aluno:aux sala:diario inteiro:numeroaluno,qualnota real:nota 34

Arquivos Exercício: Eliminação em um arquivo de organização direta 35

Arquivos Acesso Direto em um arquivo sequencial Um arquivo concebido sequencialmente foi preenchido na mesma sequencia em que as informações foram surgindo. Ele se torna inconveniente quando cresce muito e os acessos se tornam muito frequentes. Deve-se fazer uma busca exaustiva para cada operação de inclusão, alteração ou exclusão. Este problema pode ser contornado pelo conceito de arquivo indexado: Para isso deve-se criar um arquivo auxiliar (índice) que contém as chaves e o endereço do registro correspondente no arquivo principal (dados). 36

Arquivos Acesso Direto em um arquivo sequencial Exemplo: Num banco de dados, para cada arquivo de dados, podemos ter um ou mais índices, dependendo dos valores de chave para ser utilizados. Um arquivo de clientes poderia ser classificado por ordem alfabética ou pelo número do CPF do cliente. Para satisfazer as duas chaves, seriam criados então dois arquivos de índices: um tendo o nome e o outro tendo o CPF como chave de classificação. 37

Arquivos Acesso Direto em um arquivo sequencial Exemplo: Uma empresa fundada em 1985 registra seus funcionários à medida que estes são contratados, tendo, portanto, uma concepção sequencial, com o seguinte registro: Nome: _____________________________________________ Endereço: _________________________CPF:____________ Telefone: __________ Bairro: ______________CEP:_______ Ano de admissão:_______ Ano de demissão: _____________ Estado Civil: ___________ No de dependentes: ___________ Salário base: ___________ Cargo: __________ Setor: ______ 38

Arquivos Criamos um novo arquivo que possua um campo-chave. Esse novo campo tem 7 dígitos e é estruturado: os quatro primeiros representam o ano de admissão, os dois seguintes, o setor e o último, um sequencial do setor, que não fazia parte do arquivo antigo. Utilizaremos um arquivo de acesso direto que empregue como chave o código de funcionário subtraído de 1985000; assim, o funcionário 1985001 está armazenado na posição 1, o 1985002 na posição 2 e assim por diante. Em cada posição também será armazenada a posição do funcionário no arquivo principal. Código Posição Nome Endereço ... XXW TRUJ HJU DLLD KJU LOIO ZUH DEFS FSW SWQA ... KFK FJSD 1 1 1985001 2 1985002 3 1985003 m 1985004 1 1985005 4 ... ttttt 5 2 2 3 3 4 4 5 5 m 39