MC326 – Estutura de Arquivos
Laboratório 02 – Versão 1
1
MC 326E- 1º Semestre 2007
Manipulação de arquivos com registros
de tamanho fixo.
Laboratório 2B, 2C,2D – Manipulação Arquivos
Atualizado em:31/03/10 - Prof. Sindo
2
Objetivo
•
•
•
3
Manipulação de arquivos com registros de tamanho fixo, campos de tamanho fixo e campos de tamanho
variável.
Evolução dos laboratórios anteriores para a construção de uma biblioteca de funções que permitam realizar
as operações de pesquisa, alteração, remoção e inserção de registros e campos em um arquivo.
Construção de funções para criação e pesquisa de índices;
Estudo e Pesquisa
Estude as seguintes funções
•
4
fread();
fwrite();
feof();
Problema
Suponha que a Unicamp mantém um arquivo com algumas informações dos seus alunos em arquivos de dados
de tamanho fixo, conforme ilustrado na tabela TAB-1. Para cada registro são fornecidos:
•
o nome do campo
•
o tipo do campo (A- alfabético, X-alfanumérico, N – numérico inteiro, D- numérico decimal, M –moeda)
•
a posição inicial no registro
•
a posição final no registro
•
a obrigatoriedade da presença da informação (S – obrigatório, N – opcional)
Outras características:
●
•
Arquivo do tipo texto cujos campos são de tamanho fixo. O final do arquivo é especificado pelo nome do
Campo especial “FimRegistro”, normalmente colocado no final da tabela de descrição do registro do
arquivo.
Campos Alfanuméricos com tamanho inferior ao tamanho reservado, são preenchidos com “brancos” à
direita;
Descrição do arquivo de Entrada
Nome do Campo
RA
NOME
CIDADE
TEL Contato
TEL Aternativo
Sexo
Curso
FimRegistro
Tipo
N
X
X
X
X
A
N
X
Posição Posição Obrigat
Inicial
Final
ório? Mensagem para Usuário
1
6
S
RA deve ter 6 digitos
8
31
S
Nome deve ser fornecido
32
46
N
47
54
S
Obrigatório
56
63
N
65
65
N
F ou M
67
68
S
Devem ser fornecidos 2 dígitos
69
69
S
#
TAB – 1 - Descrição do arquivo de entrada
5
1
0
0
0
2
9
9
8
3
2
4
2
4
3
9
0
5
7
1
7
Exemplo de um arquivo de entrada
Na Tabela TAB-2 abaixo segue um exemplo de arquivo que satisfaz a descrição constante de TAB – 1. As 3
primeiras linhas não fazem parte do aquivo e foram adicionadas apenas como um cabeçalho apenas para
identificar as posições (colunas) dentro do arquivo.
1
6 7 8 9 0 1 2 3 4 5 6
3 MA U R I C I O
0 L UCAS DE
0 MA G D A S I L
2
3
7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
J O S E Z A MB O N
I TAP
MO R A E S B E R T O
PI RA
VA
ARAP
6 7
EV
CI
OT
4
8 9 0 1 2 3 4 5 6 7 8 9
A
3 7 5
CABA
2 1 2
I
4 3 5
5
0
6
2
4
1
4
1
2
2
3
1
6
3
2
2
4
6
4 5 6 7 8 9 0 1 2 3 4 5 6
8 9 9 1 2 1 8 7 5 M
2
M
5
F
TAB – 2 – Exemplo de arquivo de entrada
6
1.1
Funcionalidades do programa
O programa deverá ser orientado por “cardápios” e deve ter, no mínimo, as seguintes opções:
Opcão 1: Conversão do arquivo de formato fixo para formato variável
Nesta opção baseado no arquivo de configuração do arquivo de dados, deve ser criado o arquivo no formato
variável de acordo com o seguinte formato
•
•
•
O registro de saída deve conter os seis dígitos do RA, seguido do caractere separador “|”, seguido dos
caracteres do NOME (removendo, se houver, os caracteres em branco ao final dos nomes), seguido do
separador “ |” , e assim sucessivamente até o sétimo campo. Para campos nulos voce deve armazenar
apenas o separador “|”.
Ao final do registro armazenar o caractere definido no campo FIMREGISTRO. No caso acima esse
caracter é “#”
Após o caracter “#”, adicionar “pular de linha”.
Para os 2 primeiros registros teremos a seguinte saída:
7
3
0
4
8
4
3
2
9
#
#
#
092373|MAURICIO JOSE ZAMBON|ITAPEVA|37564328|99121875|M|34#
094910|LUCAS DE MORAES BERTO|PIRACICABA|21221122||M|03#
Ao final da conversão informe a quantidade de registros lidos, a quantidade de bytes do arquivo original e a
quantidade de bytes do arquivo convertido.
1.2
Opcão 2: Listar o arquivo de dados no formato fixo
Nesta opção deve ser mostrada uma lista dos registros do arquivo fixo com o objetivo de facilitar a visualização
dos dados. Defina um formato de saída que tenha pelo menos o nome dos campos e o valor desses campos.
Do arquivo de configuração, por exemplo, poderá ser extraído o nome do campo para mostrar os seu valor.
Por exemplo, poderia ser uma Lista com NomeDoCampo=Valor. Voce pode sugerir uma outra formatação que
considerar mais apropriada. Por exemplo, um formato HTML que poderia ser aberto por um navegador que já
mostraria uma página bem bonita!
1.3
Opcão 3: Listar o arquivo de dados no formato variável
Nesta opção deve ser mostrada uma lista dos registros do arquivo de dados variável. A lista deve conter todas
as informações da estrutura definida no item 2. Com essa lista o usuário poderá acompanhar e “debugar” se o
arquivo está no formato correto. Embora as informações dependam da estrutura escolhida no item 2, poderão
ser úteis as seguintes informações: posição (byte) do arquivo onde inicia o registro; situação do registro
(“removido” ou “válido”), tamanho, em bytes, do registro; campo, tamanho do campo, conteúdo do campo.
1.4
Opcão 4: Pesquisa de um determinado registro pela chave primária
Nesta opção o programa deve pedir ao usuário o valor de uma chave primária e o programa deverá fazer uma
pesquisa no arquivo de formato variável e mostrar:
• Caso o registro exista, os dados do registro no mesmo formato de apresentação da opção 3
• Caso o registro não exista, mensagem “Registro Inexistente”;
1.5
Opcão 6: Extração das chaves
Nesta opção o programa deverá criar um arquivo com a extração das chaves primárias e o endereço físico do
registro no arquivo de dados. Este arquivo será utilizado para criar um arquivo de índices
1.6
Opcão 7: Classificação do arquivo das chaves
Nesta opção o programa deverá criar um arquivo classificado com chaves primárias extraídas na Opção 6.
(Esta opção é para ser bem simples. Utilize a função system para chamar o programa sort. Não deve ser
implementado nenhum algoritmo de classificação).
1.7
Opcão 8: Listar o arquivo com a extração das chaves geradas na opçao 3.6
Este item tem que sair de graça! Basta ter projetado a opção 2 genérica o suficiente para ativá-la passando um
nome de arquivo diferente e uma nova configuração...
1.8
Opcão 9: Listar o arquivo com a extração das chaves classificadas geradas no item 3.7
Se a opção 8 saiu de graça, esta nem conta na avaliação!
1.9
Opcão 10: Criar o arquivo de índices
Nesta opção, você deverá criar o arquivo de índices para que possa ser pesquisado utilizando a técnica de
pesquisa binária. Em disco!
Sugestão: será que você já não pode considerar que ele foi criado em alguma opção anterior?
1.10
Opcão 11: Pesquisa utilizando o arquivo de índices
Nesta opção o programa deve pedir ao usuário o valor de uma chave primária e o programa deverá fazer uma
pesquisa no arquivo de índices utilizando pesquisa binária em disco e deverão ser mostrados:
• Caso o registro exista, os dados do registro devem ser mostrados no mesmo formato de apresentação da
opção 3
• Caso o registro não exista, mensagem “Registro Inexistente”;
1.11
Opcão 12: Remoção de um registro
Nesta opção o programa deve pedir ao usuário o valor de uma chave primária e o programa deverá fazer uma
pesquisa no arquivo de índices utilizando pesquisa binária em disco
• Caso o registro exista, ele deverá ser excluído.
• Caso o registro não exista, mensagem “Registro
Inexistente”
Cada grupo deve criar dois arquivos de entrada com os dados no formato definido acima.
•
•
Um arquivo com 3 registros contendo todos os possíveis erros de entrada;
Um outro arquivo com pelo menos 20 registros.
7
Exemplos de chamada do Programa
1. Lab02A <arq_entrada> <arq saída>
8
Testes
9
•
Antes de codificar ou estruturar seu programa pense em arquivos de dados que possibilitem testar seu
programa de uma maneira abrangente.
•
Você deve consistir os dados de entrada e fornecer mensagens de erro/aviso para orientar o usuário.
•
Os registros que apresentarem algum tipo de erro devem ser descartados.
Prazo de entrega
Será considerada como data de entrega a data de depósito dos fontes no Teleduc.
Módulo
Data entrega
Valor Máximo do
Laboratório
Lab2A – até opção 3
12/04/2010(Segunda)
10
Lab2B- até opção 9
21/04/2010(Quarta)
10
Lab2C –até opção 12
30/04/2009(Sexta)
10
10
O que deve ser entregue?
11
Os programas e os arquivos utilizados nos testes.
Questionamento:
1. Suponha que houve alterações no arquivo de entrada em relação às posições de inicio e fim de cada
campo. Seu programa deverá ser concebido para facilitar essa alteração.
2. Faça seu programa para que o usuário possa trocar o caráter separador, por exemplo, de “|” por “@” .
3. No próximo laboratório você deverá ler os arquivos de saída que foram gerados neste laboratório para
efetuar operações de pesquisa. Organize seu programa para reutilizar o código.
4. As rotinas de leitura de arquivo, gravação de arquivo devem estar definidas em bibliotecas separadas
para serem reutilizadas nos próximos programas.
5. Embora na TAB-1 existam apenas 8 campos, seu programa deverá ser concebido para possibilitar que
sejam definidos arquivos com um número maior de campos.
6. Ainda deve ser considerada a possibilidade de mudança de idioma.
12
Referências
Download

SISBB - Sistema de Informações Banco do Brasil