Laboratório de Técnicas de Programação

11
Laboratório de Técnicas de Programação Slide 03 – Arquivos (continuação) Instituto Metodista Isabela Hendrix Curso de Análise e Desenvolvimento de Sistemas Juliano Amorim de Oliveira [email protected].

description

Laboratório de Técnicas de Programação. Slide 03 – Arquivos (continuação). Juliano Amorim de Oliveira [email protected]. Instituto Metodista Isabela Hendrix Curso de Análise e Desenvolvimento de Sistemas. Arquivos binários. Motivação para Arquivos Binários. - PowerPoint PPT Presentation

Transcript of Laboratório de Técnicas de Programação

Page 1: Laboratório de Técnicas de Programação

Laboratório de Técnicas de Programação

Slide 03 – Arquivos (continuação)

Instituto Metodista Isabela HendrixCurso de Análise e Desenvolvimento de Sistemas

Juliano Amorim de [email protected]

Page 2: Laboratório de Técnicas de Programação

Arquivos binários

Page 3: Laboratório de Técnicas de Programação

Motivação para Arquivos Binários Por que usar arquivos binários? Texto não é

suficiente?

Variáveis int ou float têm tamanho fixo (por exemplo, 4 bytes) na memória

Representação em texto precisa de um numero variável de dígitos (10, 5.673, 100.340).

Armazenar em arquivos de movo análogo ao utilizado em memoria permite Reduzir o tamanho do arquivo Realizar buscas não seqüenciais

Page 4: Laboratório de Técnicas de Programação

Arquivos binários e registros Um arquivo pode armazenar registros

(como um banco de dados) O acesso a cada registro pode ser direto

Acesso aleatório Com arquivos texto temos que ler o

arquivo, seqüencialmente, até encontrar a posição desejada

Page 5: Laboratório de Técnicas de Programação

Arquivos binários e registros Imagine o seguinte registro

Podemos ter diversos registros desse tipo em um arquivo binário Todos terão o mesmo tamanho

José da Silva 20 1500,00

Nome idade salário

Fulano de Tal 65 415,00

Ciclano de Tal 48 3200,00

Maria João 37 2800,00

Page 6: Laboratório de Técnicas de Programação

Arquivos binários e registros Como todos os registros tem tamanhos fixos é

possível pular o cursor de posição direto para um registro específico Se eu quisesse mover para o início do terceiro registro

bastaria mover para a posição 2 * tamanho do registro

José da Silva 20 1500,00

Fulano de Tal 65 415,00

Ciclano de Tal 48 3200,00

Maria João 37 2800,00

cursor

Page 7: Laboratório de Técnicas de Programação

Lendo e escrevendo em arquivos binários Assim como os arquivos textos, arquivos binários

precisam ser abertos antes de sua manipulação e fechados depois do término de seu uso A forma de abrir arquivos binários é a mesma de

arquivos texto Na função fopen deve ser observado o modo de

abertura Por exemplo, se o arquivo será apenas lido usa-se “rb”

e se será escrito “wb” Não esquecer do sufixo b, que indica binário

O uso da função fclsose não tem alteração

Page 8: Laboratório de Técnicas de Programação

Lendo e escrevendo em arquivos binários Para ler e escrever em arquivos binários

utilizaremos as funções fread e fwrite.

size_t fread (void *ptr, size_t size, size_t nmemb, FILE *parq);

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *parq);

Page 9: Laboratório de Técnicas de Programação

A função fread

result = fread( &num , sizeof(int) , 1 , fp);result = fread( &num , sizeof(int) , 1 , fp);

Quantidade de elementos a serem lidos

Quantidade de elementos a serem lidos

Tamanho, em bytes, de cada elemento

Tamanho, em bytes, de cada elemento

Variável onde serão armazenados os dados lidos

Variável onde serão armazenados os dados lidos

Ponteiro de arquivo de onde os dados serão

lidos

Ponteiro de arquivo de onde os dados serão

lidos

O número de elementos lidos. Caso haja erro o retorno é menor ou zero.

O número de elementos lidos. Caso haja erro o retorno é menor ou zero.

Page 10: Laboratório de Técnicas de Programação

A função fwrite

result = fwrite( &num , sizeof(int) , 1 , fp);result = fwrite( &num , sizeof(int) , 1 , fp);

Variável onde serão recuperados os dados a serem

escritos.

Variável onde serão recuperados os dados a serem

escritos.

Ponteiro de arquivo para onde os dados

serão escritos.

Ponteiro de arquivo para onde os dados

serão escritos.

O número de elementos escritos. Caso haja erro o retorno é menor ou zero.

O número de elementos escritos. Caso haja erro o retorno é menor ou zero.

Quantidade de elementos a serem lidos

Quantidade de elementos a serem lidos

Tamanho, em bytes, de cada elemento

Tamanho, em bytes, de cada elemento

Page 11: Laboratório de Técnicas de Programação

Acesso aleatório A função fseek permite alterar a posição de

leitura/escrita no arquivo int fseek(FILE *fp, long offset, int whence);

O deslocamento pode ser relativo ao início do arquivo (SEEK_SET) ponto atual (SEEK_CUR) final do arquivo (SEEK_END)