Resumo Organização de Estrutura de Arquivos
Por: mkriiger • 3/11/2019 • Abstract • 874 Palavras (4 Páginas) • 192 Visualizações
REVISÃO ORGANIZAÇÃO DE ARQUIVOS
1) Considere um arquivo A, não ordenado, no qual deseja-se buscar por uma determinada chave. Dos métodos vistos em aula (busca sequencial, busca binária), quais podem ser usados para se buscar uma determinada chave?
Como o arquivo não está ordenado, o método ideal é a busca sequencial.
2) Considere o mesmo arquivo, só que agora ordenado. Dos métodos vistos em aula (busca sequencial, busca binária), quais podem ser usados para se buscar uma determinada chave?
Neste caso, como o arquivo está ordenado, é possível utilizar tanto a busca sequencial quanto a busca binária, porém a busca binária é mais adequada por funcionar de modo otimizado.
3) Explique cada um dos métodos levantados na questão 1.
Busca sequencial: percorre o arquivo índice a índice, compara com a chave de busca, se igual retorna o índice, se não avança uma posição;
Busca binária: calcula o meio do arquivo, compara a chave de busca com o meio, se igual, retorna o meio, se menor, percorre apenas a primeira metade (menor), se maior, percorre apenas a segunda metade (maior) e assim sucessivamente até encontrar a chave.
4) A busca sequencial pode auferir vantagens em um arquivo ordenado? Comente.
Não, pois mesmo com o arquivo ordenado, a busca sequencial irá percorrer diversos elementos até encontrar a chave. A única vantagem seria se a chave buscada estivesse no início do arquivo.
5) Qual é a diferença entre arquivos binários e arquivos texto?
Arquivos binários possuem sequência de bytes, enquanto arquivos de texto possuem sequência de caracteres, normalmente representados pela tabela ASCII. Não há como recuperar os dados agregados de caracteres com significado lógico.
6) Qual é a diferença entre arquivos com registros de tamanho fixo e registros de tamanhos variados?
Registros de tamanho fixo: assume que todos os registros ocupam o mesmo número de bytes. Permite acesso direto aos registros.
Registros de tamanhos variados: Não especifica a quantidade de bytes que deverá estar contida em um registro. É possível especificar o número fixo de campos, fazendo com que o tamanho do registro que seja variado em número de bytes.
7) O arquivo de CEP que usamos em alguns experimentos em sala de aula, tem que classificação? (questões 5 e 6).
O arquivo CEP é um arquivo binário com caracteres imprimíveis, organizado em registros de tamanho fixo.
8) Em java, usando RandomAccessFile, como podemos saber o tamanho de arquivo?
9) Como podemos saber o tamanho do arquivo em C?
Utilizando as funções fseek e ftell em combinação. Movimenta-se a posição corrente de escrita ou leitura no arquivo para o seu fim, com a função fseek em seguida, chamamos a função ftell para sabermos qual é posição atual de leitura ou escrita no arquivo, neste ponto a função ftell irá retornar quantos bytes o arquivo possui.
Exemplo:
long calcularTamanhoArquivo(FILE *arquivo) {
// guarda o estado ante de chamar a função fseek
long posicaoAtual = ftell(arquivo);
// guarda tamanho do arquivo
long tamanho;
// calcula o tamanho
fseek(arquivo, 0, SEEK_END);
tamanho = ftell(arquivo);
// recupera o estado antigo do arquivo
fseek(arquivo, posicaoAtual, SEEK_SET);
return tamanho;
}
10) Para que serve o comando seek? Explique como funciona em C e em Java.
O seek é utilizado para dar saltos em arquivos com registro de tamanho fixo. Em C, passamos como parâmetro o arquivo a ser lido, o deslocamento (em bytes), que deve ser equivalente a 0, e a posição que desejamos ir (exemplo: SEEK_END, que leva ao final do arquivo). Em Java, o método recebe como parâmetro um número (um long, obrigatoriamente), que podemos multiplicar pelo tamanho dos registros do arquivo.
...