• Home
  • Chat IA
  • Guru IA
  • Tutores
  • Central de ajuda
Home
Chat IA
Guru IA
Tutores

·

Biomedicina ·

Introdução à Lógica e Programação

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Introdução às Linguagens de Programação Estruturada

31

Introdução às Linguagens de Programação Estruturada

Introdução à Lógica e Programação

UAM

Ordenação Externa e Intercalação de Arquivos

28

Ordenação Externa e Intercalação de Arquivos

Introdução à Lógica e Programação

UAM

Técnicas de Programação: Funções - Unidade 2

31

Técnicas de Programação: Funções - Unidade 2

Introdução à Lógica e Programação

UAM

Pesquisa sobre Ordenação Interna e Algoritmos de Armazenamento

34

Pesquisa sobre Ordenação Interna e Algoritmos de Armazenamento

Introdução à Lógica e Programação

UAM

Pesquisa Ordenação e Técnicas de Armazenamento: Técnicas de Pesquisa Sequencial e Binária

30

Pesquisa Ordenação e Técnicas de Armazenamento: Técnicas de Pesquisa Sequencial e Binária

Introdução à Lógica e Programação

UAM

Traveling Salesman Problem - Discrete Optimization Assignment

4

Traveling Salesman Problem - Discrete Optimization Assignment

Introdução à Lógica e Programação

UAM

Sistema-de-Cadastro-CRUD-em-Java-com-MySQL-e-Swing

1

Sistema-de-Cadastro-CRUD-em-Java-com-MySQL-e-Swing

Introdução à Lógica e Programação

UAM

Matrizes e Sistemas Lineares em Circuitos Elétricos

1

Matrizes e Sistemas Lineares em Circuitos Elétricos

Introdução à Lógica e Programação

UAM

Texto de pré-visualização

21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 137 TÉCNICAS DE PROGRAMAÇÃO UNIDADE 4 ARQUIVOS Fernando Cortez Sica 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 237 21082023 1631 Técnicas de Programacgao ee Introducgao trodug Prezado cursista Chegamos ao nosso quarto e Ultimo encontro dentro do contexto das Técnicas de Programacao Conversaremos agora sobre arquivos Em muitos momentos creio que vocés ja se depararam com a necessidade de armazenar informacées de forma nao volatil ndo é mesmo Entdo veremos nesta unidade como podemos fazer isso Inicialmente vocé podera perguntar Todo tipo de informacao podera ser salvo em arquivos Sim poderemos salvar em arquivos informaées declaradas como tipos basicos tais como char int e float assim como poderemos gravar por exemplo estruturas de dados registros Ponteiros também poderdo ser salvos Ponteiros exatamente nao pois eles apenas representam uma posido dentro da memoria principal e essa posicado podera ser alterada a cada alocacdo ou a cada execucao do programa em fundo do gerenciamento de memoria realizada pelo sistema operacional Uma outra questdo que poderia vir a sua cabeca é Quando se abre um arquivo em algum editor de texto existem arquivos que sao possiveis de ler 0 seu contetido e outros que aparecem uns caracteres estranhos Existem diferencas entre esses dois arquivos Veremos a respeito deste assunto também quando falarmos as diferencas entre um arquivo do tipo texto e um arquivo binario Falar sobre arquivos é 0 mesmo que falar sobre banco de dados Nao um banco de dados consiste em varios arquivos gerenciados por um sistema integrador Esse sistema chamado de Sistema de Gerenciamento de Bancos de Dados SGBD permite que haja seguranca coesdo consisténcia sistematizagdo em sua organizacao e outros fundamentos Sendo assim os SGBD usam em seu nivel mais baixo arquivos Vamos entado conversar sobre arquivos oe 41 Conceitos basicos sobre arquivos Podemos falar que um arquivo é uma sequéncia de registros armazenados na memoria secundaria por exemplo no HD Hard Disk a estes registros poderdo estar vinculados um nimero que os identificam por exemplo caso formos armazenar registros que representam pessoas podemos definir como chave de acesso ou identificador do registro o préprio CPF da pessoa ou algum outro cédigo atribuido conforme a necessidade do sistema httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 337 21082023 1631 Técnicas de Programacgao ee VOCE QUER VER e Em algumas ocasi6es surge a necessidade de realizar ordenacées dos valores contidos em arquivos Uma ordenacao pode resultar posteriormente em uma manipulacao do arquivo mais eficiente facilitando por exemplo 0 processo de busca Alguns conceitos sobre ordenaao externa poderdo ser vistos neste link httpswwwyoutubecomwatchvsVGbj1zgvWQ httpswwwyoutubecomwatchvsVGbj1zgvWQ eee eeeeeeeeeeeeeeeeeeeeeeeeeeeee eee eee Mas como esses registros estéo organizados no arquivo Existem varias formas para armazenalos a mais comum é através do armazenamento sequencial Os arquivos representam a unidade basica de uma base de dados neste caso existem varios arquivos que podem ser interrelacionados cujo gerenciamento é feito pelo SGDB Sistema de Gerenciamento de Banco de Dados PUGA 2016 Mas vamos focar nos arquivos propriamente ditos httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 437 21082023 1631 Técnicas de Programacgao a VOCE O CONHECE e Os arquivos sdo a base dos bancos de dados Portanto para se conhecer a fundo os SGDB Sistema de Gerenciamento de Branco de Dados é interessante saber como os arquivos sdo manipulados Com esse conhecimento conseguese aproveitar melhor os seus recursos e criar consequentemente sistemas mais eficientes Por falar em bancos de dados um dos modelos mais usados é 0 modelo relacional criado por Edgar Frank Codd da IBM International Business Machines Corporation em meados de 1970 Para conhecer um pouco mais sobre a contribuicao dele vocé podera ler a dissertacao de mestrado intitulada Edgar Frank Codd and the Relational Database a contribution to the History of Computing disponivel neste linkhttpssapientiapucspbrhandlehandle13305modefull httpssapientiapucspbrhandlehandle13305modefull Como mencionado um arquivo consiste em uma sequéncia de registros ou de forma mais genérica uma sequéncia de bytes Mas como que um sistema ou um programa sabe quantos registros estaéo armazenados ou qual é o ultimo registro Assim como as strings tém o seu caractere finalizador x0 os arquivos também possuem o seu delimitador que determina o seu final EOF EndOfFile Final do Arquivo A figura a seguir retirada de Deitel 2011 ilustra esse delimitador 0 1 2 3 ct 5 6 7 8 9 n1 0 a Se Marcador de fim de arquivo Figura 1 Posicionamento do delimitador de arquivo EOF Notase que um arquivo é formado por N registros da posicdo 0 até a posicao n1 Fonte DEITEL 2011 p 352 A figura acima mostra que em um arquivo composto por N registros no Ultimo campo sempre estara presente o simbolo EOF Mas como usar o EOF Antes de respondermos a esse questionamento vamos falar um pouco sobre descritor de arquivo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 537 21082023 1631 Técnicas de Programacgao O sistema operacional SO pode manter varios arquivos em uso simultaneamente inclusive arquivos do proprio SO O SO neste caso manipula um vetor de handles manipuladores No caso da linguagem C para instanciar um manipulador deveremos usar um tipo de dado especifico para arquivo o tipo FILE definido no arquivo header stdioh Porém como acessaremos uma estrutura do SO deveremos associar ao tipo FILE um ponteiro que sera o nosso descritor de arquivo FILE arquivo Esse descritor contera dentre outras informaoes inerentes ao arquivo a posido corrente que esta sendo manipulada como se fosse o indice de um vetor Ja que mencionamos o descritor de arquivo e 0 delimitador EOF vamos ja mostrar a seguir algumas funées e manipulades Uteis que vocé podera realizar sobre os arquivos 411 Posicionamento em um ponto do arquivo Para efetuar 0 posicionamento em um ponto do arquivo podese utilizar a fundo fseek Tal funao permite posicionar no ponto do arquivo cuja posido corresponde ao deslocamento a partir de uma referéncia Essa referéncia podera ser e SEEKSET inicio do arquivo e SEEKCUR posicao corrente SEEKEND final do arquivo Protétipo da funcao int fseekargdesocamentoreferénciaorigemparaodeslocamento Exemplo de uso httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 637 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 737 No exemplo acima o ponteiro de arquivo foi posicionado na primeira posiçao apos o inıcio do arquivo em funçao do uso do SEEKSET Caso por exemplo tivesse sido utilizado SEEKEND o ponteiro seria posicionado na penultima posiçao do arquivo O posicionamento na posiçao inicial do arquivo pode ser realizada de duas formas fseekarq0SEEKSET rewindarq Vimos como posicionar o ponteiro do arquivo mas teria como obter a sua posiçao atual Veremos isso a seguir 412 Obtenção da posição corrente do ponteiro do arquivo Alem de posicionarmos o ponteiro do arquivo para uma posiçao podemos tambem obter qual a sua posiçao atual Para tanto utilizase a funçao ftell Prototipo da funçao long int ftellarq Exemplo de uso 21082023 1631 Técnicas de Programacgao include stdioh ink Maing FILE ards ffdescritor do arquivo arngfopent teste txtrs ffabertura do arquivo a ser V1iSto oportunamente afCargNULL pcaintecErro de abertura do arquivo 4n35 return os printeePosicao correntet 4dsite Carqpds felosetarq3s fechamento do arquivo a ser Visto oportunamente return No cédigo de exemplo acima o retorno da funcao ftell do tipo long int é impresso na tela através da funcao printf 413 Verificagdo de final de arquivo Como mencionamos a finalizagdo do arquivo pode ser realizada mediante 0 teste com o delimitador EOF Porém podese ainda usar a funao feof A fundo feof retorna 0 caso nao se tenha chegado ao final de arquivo Caso haja a marcacao de final de arquivo a fundo retornara um valor nao nulo Protétipo da funcao int feofarq Exemplo de uso httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTTECPRO19unidade4ebookindexhtml 837 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 937 Sobre o exemplo acima devido ao fato de estar sendo manipulado um arquivo textual o laço formado pelo comando while poderia ser substituıdo por 21082023 1631 Técnicas de Programacgao caracsfgetctorgys prantEecsc caracks whi letcarack FOF Ds No trecho acima o proprio caractere lido a partir do arquivo podera receber o cédigo do finalizador de arquivo EOF e desta forma testalo como elemento da condiao da permanéncia do laco de repetiao Ainda sobre 0 exemplo acima utilizouse a funao fgetc para realizar a leitura de um caractere do arquivo A mesma aco poderia ser feita com o uso da fundo fscanf que se comporta de forma andaloga a fundo scanf As funcées fgetc e fscanf seguem os seguintes modos de utilizaao int fgetcarq int fscanfarqlistadeformatac6escomlistadevarsporreferéncia O exemplo a seguir mostra melhor a utilizado das funcées fgetc e fscanf httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1037 21082023 1631 Técnicas de Programacgao include stdioh Zot MainO FILE aras Ghar CatacsStclisds ank valors arcafopen texemploxt Ir 3s 1ftargqNULL3 printcErro de abertura do arquivo 4n5 return 95 caracttgetctarqss ffcoleta um caracter do arquivo fscankterg 2dés8valorstc3 fcoleta um inteiro e uma string do arquivo PriptfeValores lidos c Zid s1incaracsvalorsstrcys folosetergs return s O exemplo acima realiza a leitura de informacées a partir de um arquivo cuja linha lida corresponde a a 1234 bc Podemos perceber entdo que a funao fscanf realiza a entrada formatada de dados como se estivéssemos inserindo informac6es a partir do teclado sendo assim o fluxo de entrada deixa de ser o teclado para ser 0 arquivo A fundo fgetc que permite a leitura de um caractere do arquivo poderia ser substituida por fscanfarqccarac ou ainda ter adicionado essa operacao em fscanfarqcdscaracvalorstr Todas essas fungdes e manipulaées serao exemplificadas adiante apds falarmos de algumas outras questées importantes Para iniciar podemos mencionar que para a manipulado de um arquivo teremos que seguir uma sequéncia fixa Clique nos cards e confira mais sobre o tema Abertura A abertura permite definir o nome do arquivo e as formas de abertura para que possamos manipular um arquivo devemos sempre abrilo anteriormente httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1137 21082023 1631 Técnicas de Programacgao Manipulacao A propria manipulaao para gravar buscar apagar modificar criar registros Fechamento Encerra a manipulacdao do arquivo Veremos a seguir essas manipulaées de forma aprofundada 42 Abertura de um arquivo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1237 21082023 1631 Técnicas de Programacgao Como ja foi adiantado todo arquivo para ser manipulado necessita ser aberto A abertura consiste em instanciar o descritor de arquivo e se da através da funcdo fopen Para tanto a referida funcdo tem o seguinte prototipo FILE fopennomedoarquivotipodeabertura Caso o arquivo nado possa ser aberto a funado fopen retorna um ponteiro nulo NULL Em operacées normais o descritor de arquivo sera corretamente instanciado para que seja utilizado no decorrer do programa Para reforcar a utilizacdo da funao fopen vamos verificar 0 codigo a seguir include stdioh 2nk Maing FILE ara fdescritor do arquivo arcgfopent teste txtrs 9 abertura do arquivo iCargNULL3 printecErro de abertura do arquivo4n35 Return 5 fclosetargs fechamento do arquivo Return 95 No codigo de exemplificagdo acima podemos destacar dois fatos Clique e confira quais sao eles fclose cujo protétipo é int fcloseponteiroarquivo A refererida funao retorna 0 caso o fechamento tenha sido bem sucedido Caso contrario retornara um cédigo de erro No caso do exemplo acima a funao fopen retorna um ponteiro para a manipulacao do arquivo intitulado testetxt que foi aberto no httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1337 21082023 1631 Técnicas de Programacgao aly modo r Mas 0 que vem a Ser esse modo r de abertura Veremos a seguir os modos nos quais poderemos efetuar a abertura de um arquivo 43 Modos de abertura Um arquivo na linguagem C pode ser aberto de trés formas distintas r w e a Essas letras sao as iniciais de read ler write escrever e append anexar Mas entao quais as diferencas entre eles Vamos sumarizar na sequéncia Clique para conferir e Modo r O arquivo nesse caso é aberto para o modo somente leitura Nesse modo o arquivo ja deve existir e Modo w No modo w écriado um novo arquivo sendo aberto para a escrita Caso um arquivo com o mesmo nome ja exista na pasta ele é destruido e aberto um novo vazio e Modo a Neste modo um arquivo é aberto quando ja existir ou criado na inexisténcia prévia do arquivo para a escrita Quando usado esse modo o ponteiro é posicionado ao final do arquivo permitindo se assim a anexacao de outros registros apds o ultimo previamente gravado Além de r w e a poderemos acrescentar o sinal e a letra b Ao acrescentarmos o sinal estamos liberando a permissdo tanto de escrita quanto de leitura Por sua vez a letra b denota a utilizacdo de arquivos binarios os quais conversaremos adiante O quadro a seguir extraida de Ascencio 2012 sumariza os modos de abertura de um arquivo utilizandose a linguagem C de programagao httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1437 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1537 O codigo a seguir ilustra a utilizaçao do modo de abertura Quadro 1 Modos de abertura de um arquivo utilizandose a linguagem C Notase que e possıvel fazer combinaçoes dos modos r w e a com os sımbolos e b Fonte ASCENCIO 2012 p 423 21082023 1631 Técnicas de Programacgao include stdioh LOL Maines FILE args char palavralie6ils argfopent teste Ext at 35 1fargNULL prciptécErro de abertura do arquivo1n5 retucn printécPalavra a ser gravada no arquivo 35 scanft 2s spalavrads fecinlitargs 237 spalayrads ifferrortarq PrintfeceErro na gravacao35 folosetargys return Os No exemplo acima temos um arquivo denominado testetxt sendo aberto para permitir as operacées de leitura e escrita ao seu final modo a Neste caso a palavra fornecida pelo usuario através da fundo scanf é gravado ao final do arquivo por intermédio da funcao fprintf Nesse exemplo introduzimos uma nova fundo a ferror cujo prototipo é int ferrorarquivo pode ser colocada apés cada operacdo de manipulaao de arquivo para retornar um cdédigo de erro caso a operacao tenha sido malsucedida ou retorna 0 caso a ultima operacado tenha sido executada normalmente Mas se o modo de abertura fosse r ao invés de a Neste caso a gravacdo da palavra ocorreria no inicio do arquivo sobrescrevendo ao contetido das posi6es iniciais caso 0 arquivo ndo estivesse vazio Ainda no exemplo acima foi utilizada a funao fprintf Essa fundo funciona da mesma forma que a fundo printf com a diferena que a sua saida é direcionada para 0 arquivo passado como primeiro pardmetro no caso 0 ponteiro para o descritor de arquivo arq MIZRAHI 2008 Para o seu uso usase int fprintfarqlistadeformatacé6escomlistadevariaveis No exemplo a seguir poderemos perceber melhor a sua utilizaao httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1637 21082023 1631 Técnicas de Programacgao include stdioh ani Maing FILE args char GaracaStr76Apenas um testes ink valor54778 arnagfopentexemplo1txt Ww 35 afCargNULL printfécErro de abertura do arquivo 4n5 ReEyrn 95 fprintfitargs éc d Zsincaracvalorsstcys folosetargys return Os Notase no exemplo acima que a utilizacdo da funcdo fprintf é analoga a funao printf com a diferena do direcionamento do fluxo para o arquivo arq A saida obtida por esse programa é apresentada abaixo onde poderemos notar que apesar de ser utilizada por exemplo uma variavel inteira a gravacdo no arquivo foi realizada no formato de texto string a 54778 Apenas um teste Para permitir a manipulacao de strings e caracteres além das funcées fprintf e fscanf podemos usar também as fungées fputs fgets fputc e fgetc Tais fundes estado sumarizadas no quadro abaixo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1737 21082023 1631 Técnicas de Programacgao Escreve no arquivo a string str Em caso de sucesso fputs retorna um valor inteiro ndo negativo Em caso deerro int fputschar strFILE arq retorna EOF En ected char tether int tam FE ag Grava 0 caractere carac no arquivo Em caso de fputc sucesso retorna o préprio caractere carac Em caso de int fputcint caracFILE arq falha retorna EOF Retorna o caractere lido No caso de ter encontrado o fgetc término do arquivo ou na ocorréncia de uma condigaéo int fgetcFILE arq de erro a fungao retorno EOF Quadro 2 Funées basicas para a escrita e leitura em arquivos do tipo texto Fonte Elaborada pelo autor 2019 Até o momento apenas efetuamos a leitura ou a gravacdo de caracteres ou strings no arquivo Seria possivel trabalharmos com manipulacdo de outros tipos de dados em qualquer posido do arquivo Responderemos a esse questionamento a seguir 44 Acesso direto a arquivo localizar alterar excluir e incluir registros Antes de falarmos sobre a localizacdo alteragdo exclusdo e inclusdo de registros vamos apresentar duas novas funcoées a funcdo fread e a fundo fwrite Ambas as fundes permitem a manipulagao leitura e escrita respectivamente de informacdes de tipos distintos tais como valores do tipo float dados organizados em estruturas struct Essas funées seguem os seguintes prototipos unsigned int freaddadoslidos tamanhodeumitem qtditensarq unsigned int fwritedadosparagravar tamanhodeumitem qtditensarq Para exemplificar o uso das funées fread e fwrite vamos supor que exista um arquivo onde cada linha contém idades de pessoas identificadas pelo seu CPF Essa mesma estruturaao de arquivo sera utilizada para demais exemplos de manipulacao de registros A figura a seguir ilustra um possivel contetido do arquivo citado httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1837 21082023 1631 Técnicas de Programacgao 12345678901 30 45612378902 40 78945612303 50 12378945604 55 45678912305 18 CPF Idade Figura 2 Exemplo do contetido do arquivo que sera usado para exemplificar 0 uso das funées fread e fwrite assim como as demais manipulac6ées desta secao Fonte Elaborada pelo autor 2019 Para 0 caso 0 campo de CPF sera manipulado como uma string de onze posiées e o campo de idade como uma informacao do tipo int A partir da descriao de como sera 0 arquivo vamos falar como podem ser implementadas as funcionalidades de criado localizacao alteragdo remoado e inclusdo de novos registros 441 Criagdo dos registros iniciais O primeiro exemplo que abordaremos sera a criado do arquivo para a inclusdo de dois registros iniciais Para certificaao serado realizadas as suas leituras httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1937 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2037 No exemplo acima tivemos a inclusao dos dois primeiros registros formados pelos campos cpf e idade Notase que a funçao fwrite requer a utilizaçao de passagem de parametro por referencia para o item a ser gravado Esse fato e motivado pela necessidade de tornar a funçao compatıvel para qualquer tipo de dado inclusive se o item a ser salvo for uma struct Mas como localizar alterar e incluir novos registros Vamos ver essas funcionalidades a seguir 442 Localização de um registro 21082023 1631 Técnicas de Programacgao Para exemplificar a operacdo de localizado de registros vamos tomar como exemplo o mesmo arquivo de dados usado na etapa de criacdo do arquivo e inclusdo de dois registros iniciais O cédigo a seguir ilustra a operacao de localizacdo de registros include stdioh include siringh unaded struct oP is aoh i JPessoas Long LocalizaRegistrotchar cpfli2z IPessoa pessoaFILe orq LOD ROSs rewindtands sha let 1 posftelLtarays SRG AOT DERAOa ght cane CIR ARR siaras itteottargs IAC istrcmp CPfsCDEFd pessoa CeLVcn ROSs Return 15 naqg achado 4k main FILE aros LONG ROGs Char opkli2is agfopent registrosdatr3 akCeraNULL PRinLéCErro de abertura do arquivo1n5 return RPCINLEE CPF a ser localizado 35 SCankezsscpeys O95 LocalizaRegistratcps fpessoaangys ROIDLAC Registro nag encontrado 1ns PeintéCEncontrado posicao Z1LANKLCPE s idade zd DORs DARED A ALDH sRRERNA ALORA Bs fclosetarays retucn Gs No codigo acima temos a funcionalidade de localizaao de um registro Notase que a instanciaao da variavel pos é realizada antes da leitura Isso é devido ao fato de que apos a leitura a posido do ponteiro de arquivo ja apontard para o proximo registro independentemente se 0 registro buscado foi ou nado encontrado Essa funcdo podera ser utilizada na funcionalidade de alteracao de um registro como veremos a seguir httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2137 21082023 1631 Técnicas de Programacgao 443 Alteragdao de um registro Para se alterar um registro temos que antes localizalo Sendo assim usaremos a funao de localizaao ja implementada Com essa fundo ja se sabe qual a posido sera sobrescrita com o valor devidamente modificado A funcionalidade de alteracao de registro pode ser visualizada no exemplo a seguir httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2237 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2337 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2437 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2537 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2637 21082023 1631 Técnicas de Programacgao No cédigo acima temos um exemplo para a modificacdo de um registro previamente gravado Como a funcao de localizacdo ja retorna a posicdo do registro a ser modificado a funcdo de alteracdo realiza apenas o posicionamento no registro a ser alterado e efetua a sua gravacdo Na gravacdo todo o registro é sobrescrito modificando consequentemente o seu valor Notase que no cédigo acima foi usada a forma r para a abertura de arquivo para permitir tanto a leitura quanto a gravacao de registros Caso por exemplo fosse aberto com a a gravacdo ocorreria sempre apos o ultimo registro mesmo com a execucdo da funao fseek Por fim como realizar a remocdo de um item Veremos esse assunto a seguir 444 Remogao deum registro Para a remocao de um registro podese simplesmente alterar 0 contetido do registro a ser excluido para um contetido vazio ou nao valido No caso do cdédigo anterior aproveitandose as funées de localizacdo e alteracdo de registro o programa principal ficaria como listado a seguir httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2737 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2837 21082023 1631 Técnicas de Programacgao Podese entdo aproveitar todas essas funcdes para que seja implementada a funcionalidade de inclusdo de novos registros Veremos a seguir 445 Inclusao de um novo registro Caso a remoao tenha sido implementada através da gravacdo de um valor nulo sobre o registro removido entdo para a inserdo de um novo registro podese procurar pelos espacos vagos ou seja procurar por registros cujos valores de CPF sejam 00000000000 Em tais espacos realizase a modificaao incluindose valores validos relativos aos novos registros Sendo assim o cédigo para a inserao de um novo registro ficaria ink InsereNevoRegistrojPessos pessoa FILE sarq IPessoa Ps Ros LocalizaRegi stro CSeeeoe0ee8ee 4parqs if pos1 Cetucn Alternakegi strot pos pessoaarcgss fseck arg 9 SEEK FNDIS LEC far i te Cipessoa sSizecr Pessoadlarq Retuen 1s return Como foi mencionado anteriormente a insercdo de novos registros ocorre nos espacos dos registros anteriormente apagados aqui representados pelos registros com CPF igual a 00000000000 Caso nado existam registros nulos a inserdo ocorre apos o Ultimo registro do arquivo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2937 21082023 1631 Técnicas de Programacgao ee VOCE QUER LER e Em muitas ocasides fazse necessario saber 0 tamanho de um arquivo porém a linguagem C nao tem funcées com esse objetivo Para saber calcular em C o tamanho de um arquivo vocé podera usar a dica postada por Lima 2006 disponivel neste link httpsallanlimawordpresscom20060715calculandootamanhodeum arquivoemc2 httpsallanlimawordpresscom20060715 calculandoo tamanhodeumarquivoemc2 Anteriormente mencionamos os temos arquivo de texto e arquivo bindrio inclusive falamos quando estavamos abordando os tipos de abertura de arquivo que ao colocar 0 simbolo b estamos a manipular arquivos binarios Vamos entdo conversar sobre 0 que vem aser esses dois tipos de arquivos 45 Arquivo de texto Apesar de termos mencionado quando falavamos sobre os modos de abertura de um arquivo que existem os arquivos texto e binario até o momento nao fizemos distincdo entre esses dois formatos Mas qual a diferenca entre eles httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3037 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3137 No arquivo em formato texto como o proprio nome diz seu conteudo consiste em um texto puro que podera ser aberto em qualquer editor de texto Sendo assim temos que usar em tais arquivos apenas as funçoes que manipulam caracteres e strings O exemplo abaixo ilustra um caso onde um arquivo textual e criado VOCÊ SABIA Voce sabia que os arquivos CSV Comma Separated Values Valores Separados por Vırgula sao arquivos textuais em podem ser manipulados usando a linguagem C Para ver um exemplo de codigo para a manipulaçao de arquivos CSV voce podera acessar este link httpswwwvivaolinuxcombrscriptManipulacaodearquivosCSV Estruturado httpswwwvivaolinuxcombrscriptManipulacaodearquivos CSVEstruturado 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3237 Notase no exemplo anterior a utilizaçao para a gravaçao no arquivo apenas de funçoes manipulando variaveis do tipo strings Mas qual foi o motivo de utilizarmos a funçao gets e nao scanf para a entrada das informaçoes A funçao scanf divide a entrada digitada em palavras ou seja nao aceita o espaço em branco como parte de apenas uma informaçao digitada Por sua vez com a funçao gets ja e possıvel incluir os espaços em branco dentro de uma unica informaçao Para a gravaçao no arquivo foi utilizada a funçao fprintf assim como poderia ser utilizada a funçao fputs Mencionamos anteriormente a remoçao de um registro de um arquivo Como remover uma informaçao de um arquivo texto No exemplo do registro realizamos a sobescrita de um registro com um valor nao valido para a representar a sua remoçao No caso de um arquivo texto que pode ser considerado como um arquivo sequencial para a remoçao de um item precisamos criar um arquivo temporario para receber todas as informaçoes exceto aquelas a serem retiradas O exemplo a seguir realiza a remoçao do aniversario de uma pessoa cujo arquivo foi construıdo com o exemplo anterior 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3337 21082023 1631 Técnicas de Programacgao No cédigo acima temos a presena de duas funcdes que manipulam diretamente o arquivo mas nao os registros Tratase das fundes remove e rename Essas duas funées possuem os seguintes modos de uso removenomearquivoaserremovido renamenomeantigo novonome Esse processo de utilizagdo de um arquivo temporario é tipico na manipulacao de arquivos sequenciais Um arquivo sequencial é aquele que necessitamos percorrer por todo o contetido até chegarmos a um ponto especifico e 6 46 Arquivo binario A manipulacdo de um arquivo binario tornase mais eficiente em funao da possibilidade de manipulacao de registros Desta forma podese manipular tais arquivos de forma nado sequencial ou seja de forma aleatoria Neste caso 0 proprio cddigo de acesso de um registro representa o proprio deslocamento a ser utilizado através da funcdo fseek Uma outra vantagem do uso de arquivos binarios consiste na possibilidade de reducdo de espaco armazenado Por exemplo caso necessite armazenar um valor inteiro de valor 123457 no arquivo texto gastariamos seis bytes um byte para cada digito ou sete bytes se considerarmos 0 ponto Ja nos arquivos bindarios 0 tamanho gasto é exatamente o tamanho do tipo do dado no caso gastariamos sizeofint Esse gasto a mais impactaria consequentente no tempo de leitura ou gravado Sendo assim uma outra vantagem dos arquivos binarios consiste no fato de que eles demandam de menos tempo computacional para realizar suas operaées de leitura e escrita eee e reer reer eee CASO Uma certa empresa familiar manipulava as suas informagdes totalmente de forma arcaica Todo gerenciamento do faturamento e débitos era realizado de forma quase manual através de relatérios textuais Um profissional da area foi chamado para tentar automatizar o processo a primeira providéncia tomada foi de implementar um sistema que para interpretar os lancamentos tinha que quebrar as informagées dos relatérios em tokens token representa um pedaco da informado por exemplo uma palavra Porém esse processamento textual demandava muito computacional Diante da lentidao do sistema ele resolveu transformar os relatérios em arquivos binarios para melhor manipular os registros os quais representavam as despesas e as entradas de valores Com os arquivos binarios através da manipulado de seus registros 0 processamento tornouse mais rapido flexivel e ocupava menos espao de armazenamento eee eee eee reer renee reer eee eee eee eee eee httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3437 21082023 1631 Técnicas de Programacgao Para os arquivos binarios abertos com a inserado do b no modo de abertura da fundo fopen nado podemos usar por exemplo as funcées fputs e fgets E sim teremos que usar as funcées fread e fwrite como utilizadas em varios exemplos ao longo da unidade O exemplo a seguir ilustra a gravacdo e recuperacdo de registros em um arquivo binario onde a primeira posicado do arquivo contém a quantidade de registros armazenados As demais posides sao representadas pelos registros no caso sequéncias formadas por um valor inteiro e um valor do tipo float finclude ghdioh aol GravaDadesiol Vislloal MEslILL sang LEC fer itetay sizeoftipts1arq petuen i5 LEC feritetayl sizeofts ooldslsargs petuen i5 hetucn aak maiots FILE anc 2ak qhd2valorintis floal valorfloats aogfopentexempobinariodak wht 3s iAfacgM113 PCLOCELErro de abertira do arquivet K Rehven fqravando os dados Riri telagiszeerGplislsarqs qid de itens a serem qravados GravaNadest 2453 arqss GravaDados 1296 20987 sargas frecuperando os dados para testar resipdiangss freadaqtdsizeoftin1arqhs forgi6 itgkcs i freadtavaloraintssizeoftint1arqh freadavalontloatsizecttloal1arqhs printécregistro Cc anttd floattFin1valorintsvalorfloatys F fclosetacas retucn Notase no exemplo acima que podemos manipular qualquer tipo de dado em qualquer ocasiao através das fungées fwrite e fread Para tanto devemos saber como o arquivo encontrase estruturado httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3537 21082023 1631 Técnicas de Programacgao Sintese Chegamos ao fim de nossa quarta e Ultima conversa sobre técnicas de programacado Nesta pudemos abranger um outro ponto importante da programacado que é a manipulacao de arquivos Com os pontos abordados realizamos operaées de gravacdo e recuperacdo de informacées em memoria nao volatil por exemplo manipulando arquivos gravados no HD hard disk Desta forma vocé podera agora implementar programas com amplas funcionalidades desde a manipulacado de estruturas mais complexas até a sua gravacdo e recuperaao em arquivos Com os contetidos apresentados nesta quarta unidade esperamos que vocé construa programas mais complexos envolvendo a amplidao de recursos que a linguagem C proporciona Nesta unidade vocé teve a oportunidade de ter contato com conceitos inerentes aos arquivos saber identificar e usar as fungdes para a manipulacao de arquivos e identificar sugerir e implementar solucdes de software através da manipulagao de arquivos empregar corretamente as fungoes e estruturas de programagao para a localizagao inserao remocao alteracao de registros em arquivos e saber diferenciar e utilizar um arquivo texto de um arquivo binario Clique para baixar o contetido deste tema Bibliografia ASCENCIO A F G Fundamentos de Programacgao de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sdo Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomhttps brasilblackboardcom https brasilblackboardcom Acesso em 21072019 BACKES A Ordenacao Externa Aula 66 1431min Linguagem C Programacao Descomplicada 2014 Disponivel em httpswwwyoutubecomwatchvsVGbjlzgvWQ httpswwwyoutubecomwatch vsVGbjlzgvWQ Acesso em 30072019 CANDIDO F A S Manipulacdo de Arquivos CSV Estruturado 2010 Disponivel em httpswwwvivaolinuxcombrscriptManipulacaodearquivosCSVEstruturado httpswwwvivaolinuxcombrscriptManipulacaodearquivosCSVEstruturado Acesso em httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3637 21082023 1631 Técnicas de Programacgao 30072019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sdo Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomhttps brasilblackboardcom https brasilblackboardcom Acesso em 21072019 LIMA A D S Calculando o Tamanho de um Arquivo em C 2006 Disponivel em httpsallanlimawordpresscom20060715calculandootamanhodeumarquivoemc2 httpsallanlimawordpresscom20060715calculandootamanhodeumarquivoemc2 Acesso em 30072019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sdo Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomhttps brasilblackboardcom https brasilblackboardcom Acesso em 21072019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sdo Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomhttps brasilblackboardcom https brasilblackboardcom Acesso em 21072019 SOUZA O Edgar Frank Codd e o Banco de Dados Relacional uma contribuido para a Historia da Computaado 2015 Dissertagao Mestrado em Historia da Ciéncia Pontifica Universidade Catdélica de Sao Paulo Sado Paulo 2015 Disponivel em httpssapientiapucspbrhandlehandle13305 modefullhttpssapientiapucspbrhandlehandle13305modefull httpssapientiapucspbrhandlehandle13305modefull Acesso em 30072019 httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3737

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Introdução às Linguagens de Programação Estruturada

31

Introdução às Linguagens de Programação Estruturada

Introdução à Lógica e Programação

UAM

Ordenação Externa e Intercalação de Arquivos

28

Ordenação Externa e Intercalação de Arquivos

Introdução à Lógica e Programação

UAM

Técnicas de Programação: Funções - Unidade 2

31

Técnicas de Programação: Funções - Unidade 2

Introdução à Lógica e Programação

UAM

Pesquisa sobre Ordenação Interna e Algoritmos de Armazenamento

34

Pesquisa sobre Ordenação Interna e Algoritmos de Armazenamento

Introdução à Lógica e Programação

UAM

Pesquisa Ordenação e Técnicas de Armazenamento: Técnicas de Pesquisa Sequencial e Binária

30

Pesquisa Ordenação e Técnicas de Armazenamento: Técnicas de Pesquisa Sequencial e Binária

Introdução à Lógica e Programação

UAM

Traveling Salesman Problem - Discrete Optimization Assignment

4

Traveling Salesman Problem - Discrete Optimization Assignment

Introdução à Lógica e Programação

UAM

Sistema-de-Cadastro-CRUD-em-Java-com-MySQL-e-Swing

1

Sistema-de-Cadastro-CRUD-em-Java-com-MySQL-e-Swing

Introdução à Lógica e Programação

UAM

Matrizes e Sistemas Lineares em Circuitos Elétricos

1

Matrizes e Sistemas Lineares em Circuitos Elétricos

Introdução à Lógica e Programação

UAM

Texto de pré-visualização

21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 137 TÉCNICAS DE PROGRAMAÇÃO UNIDADE 4 ARQUIVOS Fernando Cortez Sica 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 237 21082023 1631 Técnicas de Programacgao ee Introducgao trodug Prezado cursista Chegamos ao nosso quarto e Ultimo encontro dentro do contexto das Técnicas de Programacao Conversaremos agora sobre arquivos Em muitos momentos creio que vocés ja se depararam com a necessidade de armazenar informacées de forma nao volatil ndo é mesmo Entdo veremos nesta unidade como podemos fazer isso Inicialmente vocé podera perguntar Todo tipo de informacao podera ser salvo em arquivos Sim poderemos salvar em arquivos informaées declaradas como tipos basicos tais como char int e float assim como poderemos gravar por exemplo estruturas de dados registros Ponteiros também poderdo ser salvos Ponteiros exatamente nao pois eles apenas representam uma posido dentro da memoria principal e essa posicado podera ser alterada a cada alocacdo ou a cada execucao do programa em fundo do gerenciamento de memoria realizada pelo sistema operacional Uma outra questdo que poderia vir a sua cabeca é Quando se abre um arquivo em algum editor de texto existem arquivos que sao possiveis de ler 0 seu contetido e outros que aparecem uns caracteres estranhos Existem diferencas entre esses dois arquivos Veremos a respeito deste assunto também quando falarmos as diferencas entre um arquivo do tipo texto e um arquivo binario Falar sobre arquivos é 0 mesmo que falar sobre banco de dados Nao um banco de dados consiste em varios arquivos gerenciados por um sistema integrador Esse sistema chamado de Sistema de Gerenciamento de Bancos de Dados SGBD permite que haja seguranca coesdo consisténcia sistematizagdo em sua organizacao e outros fundamentos Sendo assim os SGBD usam em seu nivel mais baixo arquivos Vamos entado conversar sobre arquivos oe 41 Conceitos basicos sobre arquivos Podemos falar que um arquivo é uma sequéncia de registros armazenados na memoria secundaria por exemplo no HD Hard Disk a estes registros poderdo estar vinculados um nimero que os identificam por exemplo caso formos armazenar registros que representam pessoas podemos definir como chave de acesso ou identificador do registro o préprio CPF da pessoa ou algum outro cédigo atribuido conforme a necessidade do sistema httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 337 21082023 1631 Técnicas de Programacgao ee VOCE QUER VER e Em algumas ocasi6es surge a necessidade de realizar ordenacées dos valores contidos em arquivos Uma ordenacao pode resultar posteriormente em uma manipulacao do arquivo mais eficiente facilitando por exemplo 0 processo de busca Alguns conceitos sobre ordenaao externa poderdo ser vistos neste link httpswwwyoutubecomwatchvsVGbj1zgvWQ httpswwwyoutubecomwatchvsVGbj1zgvWQ eee eeeeeeeeeeeeeeeeeeeeeeeeeeeee eee eee Mas como esses registros estéo organizados no arquivo Existem varias formas para armazenalos a mais comum é através do armazenamento sequencial Os arquivos representam a unidade basica de uma base de dados neste caso existem varios arquivos que podem ser interrelacionados cujo gerenciamento é feito pelo SGDB Sistema de Gerenciamento de Banco de Dados PUGA 2016 Mas vamos focar nos arquivos propriamente ditos httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 437 21082023 1631 Técnicas de Programacgao a VOCE O CONHECE e Os arquivos sdo a base dos bancos de dados Portanto para se conhecer a fundo os SGDB Sistema de Gerenciamento de Branco de Dados é interessante saber como os arquivos sdo manipulados Com esse conhecimento conseguese aproveitar melhor os seus recursos e criar consequentemente sistemas mais eficientes Por falar em bancos de dados um dos modelos mais usados é 0 modelo relacional criado por Edgar Frank Codd da IBM International Business Machines Corporation em meados de 1970 Para conhecer um pouco mais sobre a contribuicao dele vocé podera ler a dissertacao de mestrado intitulada Edgar Frank Codd and the Relational Database a contribution to the History of Computing disponivel neste linkhttpssapientiapucspbrhandlehandle13305modefull httpssapientiapucspbrhandlehandle13305modefull Como mencionado um arquivo consiste em uma sequéncia de registros ou de forma mais genérica uma sequéncia de bytes Mas como que um sistema ou um programa sabe quantos registros estaéo armazenados ou qual é o ultimo registro Assim como as strings tém o seu caractere finalizador x0 os arquivos também possuem o seu delimitador que determina o seu final EOF EndOfFile Final do Arquivo A figura a seguir retirada de Deitel 2011 ilustra esse delimitador 0 1 2 3 ct 5 6 7 8 9 n1 0 a Se Marcador de fim de arquivo Figura 1 Posicionamento do delimitador de arquivo EOF Notase que um arquivo é formado por N registros da posicdo 0 até a posicao n1 Fonte DEITEL 2011 p 352 A figura acima mostra que em um arquivo composto por N registros no Ultimo campo sempre estara presente o simbolo EOF Mas como usar o EOF Antes de respondermos a esse questionamento vamos falar um pouco sobre descritor de arquivo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 537 21082023 1631 Técnicas de Programacgao O sistema operacional SO pode manter varios arquivos em uso simultaneamente inclusive arquivos do proprio SO O SO neste caso manipula um vetor de handles manipuladores No caso da linguagem C para instanciar um manipulador deveremos usar um tipo de dado especifico para arquivo o tipo FILE definido no arquivo header stdioh Porém como acessaremos uma estrutura do SO deveremos associar ao tipo FILE um ponteiro que sera o nosso descritor de arquivo FILE arquivo Esse descritor contera dentre outras informaoes inerentes ao arquivo a posido corrente que esta sendo manipulada como se fosse o indice de um vetor Ja que mencionamos o descritor de arquivo e 0 delimitador EOF vamos ja mostrar a seguir algumas funées e manipulades Uteis que vocé podera realizar sobre os arquivos 411 Posicionamento em um ponto do arquivo Para efetuar 0 posicionamento em um ponto do arquivo podese utilizar a fundo fseek Tal funao permite posicionar no ponto do arquivo cuja posido corresponde ao deslocamento a partir de uma referéncia Essa referéncia podera ser e SEEKSET inicio do arquivo e SEEKCUR posicao corrente SEEKEND final do arquivo Protétipo da funcao int fseekargdesocamentoreferénciaorigemparaodeslocamento Exemplo de uso httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 637 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 737 No exemplo acima o ponteiro de arquivo foi posicionado na primeira posiçao apos o inıcio do arquivo em funçao do uso do SEEKSET Caso por exemplo tivesse sido utilizado SEEKEND o ponteiro seria posicionado na penultima posiçao do arquivo O posicionamento na posiçao inicial do arquivo pode ser realizada de duas formas fseekarq0SEEKSET rewindarq Vimos como posicionar o ponteiro do arquivo mas teria como obter a sua posiçao atual Veremos isso a seguir 412 Obtenção da posição corrente do ponteiro do arquivo Alem de posicionarmos o ponteiro do arquivo para uma posiçao podemos tambem obter qual a sua posiçao atual Para tanto utilizase a funçao ftell Prototipo da funçao long int ftellarq Exemplo de uso 21082023 1631 Técnicas de Programacgao include stdioh ink Maing FILE ards ffdescritor do arquivo arngfopent teste txtrs ffabertura do arquivo a ser V1iSto oportunamente afCargNULL pcaintecErro de abertura do arquivo 4n35 return os printeePosicao correntet 4dsite Carqpds felosetarq3s fechamento do arquivo a ser Visto oportunamente return No cédigo de exemplo acima o retorno da funcao ftell do tipo long int é impresso na tela através da funcao printf 413 Verificagdo de final de arquivo Como mencionamos a finalizagdo do arquivo pode ser realizada mediante 0 teste com o delimitador EOF Porém podese ainda usar a funao feof A fundo feof retorna 0 caso nao se tenha chegado ao final de arquivo Caso haja a marcacao de final de arquivo a fundo retornara um valor nao nulo Protétipo da funcao int feofarq Exemplo de uso httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTTECPRO19unidade4ebookindexhtml 837 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 937 Sobre o exemplo acima devido ao fato de estar sendo manipulado um arquivo textual o laço formado pelo comando while poderia ser substituıdo por 21082023 1631 Técnicas de Programacgao caracsfgetctorgys prantEecsc caracks whi letcarack FOF Ds No trecho acima o proprio caractere lido a partir do arquivo podera receber o cédigo do finalizador de arquivo EOF e desta forma testalo como elemento da condiao da permanéncia do laco de repetiao Ainda sobre 0 exemplo acima utilizouse a funao fgetc para realizar a leitura de um caractere do arquivo A mesma aco poderia ser feita com o uso da fundo fscanf que se comporta de forma andaloga a fundo scanf As funcées fgetc e fscanf seguem os seguintes modos de utilizaao int fgetcarq int fscanfarqlistadeformatac6escomlistadevarsporreferéncia O exemplo a seguir mostra melhor a utilizado das funcées fgetc e fscanf httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1037 21082023 1631 Técnicas de Programacgao include stdioh Zot MainO FILE aras Ghar CatacsStclisds ank valors arcafopen texemploxt Ir 3s 1ftargqNULL3 printcErro de abertura do arquivo 4n5 return 95 caracttgetctarqss ffcoleta um caracter do arquivo fscankterg 2dés8valorstc3 fcoleta um inteiro e uma string do arquivo PriptfeValores lidos c Zid s1incaracsvalorsstrcys folosetergs return s O exemplo acima realiza a leitura de informacées a partir de um arquivo cuja linha lida corresponde a a 1234 bc Podemos perceber entdo que a funao fscanf realiza a entrada formatada de dados como se estivéssemos inserindo informac6es a partir do teclado sendo assim o fluxo de entrada deixa de ser o teclado para ser 0 arquivo A fundo fgetc que permite a leitura de um caractere do arquivo poderia ser substituida por fscanfarqccarac ou ainda ter adicionado essa operacao em fscanfarqcdscaracvalorstr Todas essas fungdes e manipulaées serao exemplificadas adiante apds falarmos de algumas outras questées importantes Para iniciar podemos mencionar que para a manipulado de um arquivo teremos que seguir uma sequéncia fixa Clique nos cards e confira mais sobre o tema Abertura A abertura permite definir o nome do arquivo e as formas de abertura para que possamos manipular um arquivo devemos sempre abrilo anteriormente httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1137 21082023 1631 Técnicas de Programacgao Manipulacao A propria manipulaao para gravar buscar apagar modificar criar registros Fechamento Encerra a manipulacdao do arquivo Veremos a seguir essas manipulaées de forma aprofundada 42 Abertura de um arquivo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1237 21082023 1631 Técnicas de Programacgao Como ja foi adiantado todo arquivo para ser manipulado necessita ser aberto A abertura consiste em instanciar o descritor de arquivo e se da através da funcdo fopen Para tanto a referida funcdo tem o seguinte prototipo FILE fopennomedoarquivotipodeabertura Caso o arquivo nado possa ser aberto a funado fopen retorna um ponteiro nulo NULL Em operacées normais o descritor de arquivo sera corretamente instanciado para que seja utilizado no decorrer do programa Para reforcar a utilizacdo da funao fopen vamos verificar 0 codigo a seguir include stdioh 2nk Maing FILE ara fdescritor do arquivo arcgfopent teste txtrs 9 abertura do arquivo iCargNULL3 printecErro de abertura do arquivo4n35 Return 5 fclosetargs fechamento do arquivo Return 95 No codigo de exemplificagdo acima podemos destacar dois fatos Clique e confira quais sao eles fclose cujo protétipo é int fcloseponteiroarquivo A refererida funao retorna 0 caso o fechamento tenha sido bem sucedido Caso contrario retornara um cédigo de erro No caso do exemplo acima a funao fopen retorna um ponteiro para a manipulacao do arquivo intitulado testetxt que foi aberto no httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1337 21082023 1631 Técnicas de Programacgao aly modo r Mas 0 que vem a Ser esse modo r de abertura Veremos a seguir os modos nos quais poderemos efetuar a abertura de um arquivo 43 Modos de abertura Um arquivo na linguagem C pode ser aberto de trés formas distintas r w e a Essas letras sao as iniciais de read ler write escrever e append anexar Mas entao quais as diferencas entre eles Vamos sumarizar na sequéncia Clique para conferir e Modo r O arquivo nesse caso é aberto para o modo somente leitura Nesse modo o arquivo ja deve existir e Modo w No modo w écriado um novo arquivo sendo aberto para a escrita Caso um arquivo com o mesmo nome ja exista na pasta ele é destruido e aberto um novo vazio e Modo a Neste modo um arquivo é aberto quando ja existir ou criado na inexisténcia prévia do arquivo para a escrita Quando usado esse modo o ponteiro é posicionado ao final do arquivo permitindo se assim a anexacao de outros registros apds o ultimo previamente gravado Além de r w e a poderemos acrescentar o sinal e a letra b Ao acrescentarmos o sinal estamos liberando a permissdo tanto de escrita quanto de leitura Por sua vez a letra b denota a utilizacdo de arquivos binarios os quais conversaremos adiante O quadro a seguir extraida de Ascencio 2012 sumariza os modos de abertura de um arquivo utilizandose a linguagem C de programagao httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1437 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1537 O codigo a seguir ilustra a utilizaçao do modo de abertura Quadro 1 Modos de abertura de um arquivo utilizandose a linguagem C Notase que e possıvel fazer combinaçoes dos modos r w e a com os sımbolos e b Fonte ASCENCIO 2012 p 423 21082023 1631 Técnicas de Programacgao include stdioh LOL Maines FILE args char palavralie6ils argfopent teste Ext at 35 1fargNULL prciptécErro de abertura do arquivo1n5 retucn printécPalavra a ser gravada no arquivo 35 scanft 2s spalavrads fecinlitargs 237 spalayrads ifferrortarq PrintfeceErro na gravacao35 folosetargys return Os No exemplo acima temos um arquivo denominado testetxt sendo aberto para permitir as operacées de leitura e escrita ao seu final modo a Neste caso a palavra fornecida pelo usuario através da fundo scanf é gravado ao final do arquivo por intermédio da funcao fprintf Nesse exemplo introduzimos uma nova fundo a ferror cujo prototipo é int ferrorarquivo pode ser colocada apés cada operacdo de manipulaao de arquivo para retornar um cdédigo de erro caso a operacao tenha sido malsucedida ou retorna 0 caso a ultima operacado tenha sido executada normalmente Mas se o modo de abertura fosse r ao invés de a Neste caso a gravacdo da palavra ocorreria no inicio do arquivo sobrescrevendo ao contetido das posi6es iniciais caso 0 arquivo ndo estivesse vazio Ainda no exemplo acima foi utilizada a funao fprintf Essa fundo funciona da mesma forma que a fundo printf com a diferena que a sua saida é direcionada para 0 arquivo passado como primeiro pardmetro no caso 0 ponteiro para o descritor de arquivo arq MIZRAHI 2008 Para o seu uso usase int fprintfarqlistadeformatacé6escomlistadevariaveis No exemplo a seguir poderemos perceber melhor a sua utilizaao httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1637 21082023 1631 Técnicas de Programacgao include stdioh ani Maing FILE args char GaracaStr76Apenas um testes ink valor54778 arnagfopentexemplo1txt Ww 35 afCargNULL printfécErro de abertura do arquivo 4n5 ReEyrn 95 fprintfitargs éc d Zsincaracvalorsstcys folosetargys return Os Notase no exemplo acima que a utilizacdo da funcdo fprintf é analoga a funao printf com a diferena do direcionamento do fluxo para o arquivo arq A saida obtida por esse programa é apresentada abaixo onde poderemos notar que apesar de ser utilizada por exemplo uma variavel inteira a gravacdo no arquivo foi realizada no formato de texto string a 54778 Apenas um teste Para permitir a manipulacao de strings e caracteres além das funcées fprintf e fscanf podemos usar também as fungées fputs fgets fputc e fgetc Tais fundes estado sumarizadas no quadro abaixo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1737 21082023 1631 Técnicas de Programacgao Escreve no arquivo a string str Em caso de sucesso fputs retorna um valor inteiro ndo negativo Em caso deerro int fputschar strFILE arq retorna EOF En ected char tether int tam FE ag Grava 0 caractere carac no arquivo Em caso de fputc sucesso retorna o préprio caractere carac Em caso de int fputcint caracFILE arq falha retorna EOF Retorna o caractere lido No caso de ter encontrado o fgetc término do arquivo ou na ocorréncia de uma condigaéo int fgetcFILE arq de erro a fungao retorno EOF Quadro 2 Funées basicas para a escrita e leitura em arquivos do tipo texto Fonte Elaborada pelo autor 2019 Até o momento apenas efetuamos a leitura ou a gravacdo de caracteres ou strings no arquivo Seria possivel trabalharmos com manipulacdo de outros tipos de dados em qualquer posido do arquivo Responderemos a esse questionamento a seguir 44 Acesso direto a arquivo localizar alterar excluir e incluir registros Antes de falarmos sobre a localizacdo alteragdo exclusdo e inclusdo de registros vamos apresentar duas novas funcoées a funcdo fread e a fundo fwrite Ambas as fundes permitem a manipulagao leitura e escrita respectivamente de informacdes de tipos distintos tais como valores do tipo float dados organizados em estruturas struct Essas funées seguem os seguintes prototipos unsigned int freaddadoslidos tamanhodeumitem qtditensarq unsigned int fwritedadosparagravar tamanhodeumitem qtditensarq Para exemplificar o uso das funées fread e fwrite vamos supor que exista um arquivo onde cada linha contém idades de pessoas identificadas pelo seu CPF Essa mesma estruturaao de arquivo sera utilizada para demais exemplos de manipulacao de registros A figura a seguir ilustra um possivel contetido do arquivo citado httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1837 21082023 1631 Técnicas de Programacgao 12345678901 30 45612378902 40 78945612303 50 12378945604 55 45678912305 18 CPF Idade Figura 2 Exemplo do contetido do arquivo que sera usado para exemplificar 0 uso das funées fread e fwrite assim como as demais manipulac6ées desta secao Fonte Elaborada pelo autor 2019 Para 0 caso 0 campo de CPF sera manipulado como uma string de onze posiées e o campo de idade como uma informacao do tipo int A partir da descriao de como sera 0 arquivo vamos falar como podem ser implementadas as funcionalidades de criado localizacao alteragdo remoado e inclusdo de novos registros 441 Criagdo dos registros iniciais O primeiro exemplo que abordaremos sera a criado do arquivo para a inclusdo de dois registros iniciais Para certificaao serado realizadas as suas leituras httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 1937 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2037 No exemplo acima tivemos a inclusao dos dois primeiros registros formados pelos campos cpf e idade Notase que a funçao fwrite requer a utilizaçao de passagem de parametro por referencia para o item a ser gravado Esse fato e motivado pela necessidade de tornar a funçao compatıvel para qualquer tipo de dado inclusive se o item a ser salvo for uma struct Mas como localizar alterar e incluir novos registros Vamos ver essas funcionalidades a seguir 442 Localização de um registro 21082023 1631 Técnicas de Programacgao Para exemplificar a operacdo de localizado de registros vamos tomar como exemplo o mesmo arquivo de dados usado na etapa de criacdo do arquivo e inclusdo de dois registros iniciais O cédigo a seguir ilustra a operacao de localizacdo de registros include stdioh include siringh unaded struct oP is aoh i JPessoas Long LocalizaRegistrotchar cpfli2z IPessoa pessoaFILe orq LOD ROSs rewindtands sha let 1 posftelLtarays SRG AOT DERAOa ght cane CIR ARR siaras itteottargs IAC istrcmp CPfsCDEFd pessoa CeLVcn ROSs Return 15 naqg achado 4k main FILE aros LONG ROGs Char opkli2is agfopent registrosdatr3 akCeraNULL PRinLéCErro de abertura do arquivo1n5 return RPCINLEE CPF a ser localizado 35 SCankezsscpeys O95 LocalizaRegistratcps fpessoaangys ROIDLAC Registro nag encontrado 1ns PeintéCEncontrado posicao Z1LANKLCPE s idade zd DORs DARED A ALDH sRRERNA ALORA Bs fclosetarays retucn Gs No codigo acima temos a funcionalidade de localizaao de um registro Notase que a instanciaao da variavel pos é realizada antes da leitura Isso é devido ao fato de que apos a leitura a posido do ponteiro de arquivo ja apontard para o proximo registro independentemente se 0 registro buscado foi ou nado encontrado Essa funcdo podera ser utilizada na funcionalidade de alteracao de um registro como veremos a seguir httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2137 21082023 1631 Técnicas de Programacgao 443 Alteragdao de um registro Para se alterar um registro temos que antes localizalo Sendo assim usaremos a funao de localizaao ja implementada Com essa fundo ja se sabe qual a posido sera sobrescrita com o valor devidamente modificado A funcionalidade de alteracao de registro pode ser visualizada no exemplo a seguir httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2237 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2337 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2437 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2537 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2637 21082023 1631 Técnicas de Programacgao No cédigo acima temos um exemplo para a modificacdo de um registro previamente gravado Como a funcao de localizacdo ja retorna a posicdo do registro a ser modificado a funcdo de alteracdo realiza apenas o posicionamento no registro a ser alterado e efetua a sua gravacdo Na gravacdo todo o registro é sobrescrito modificando consequentemente o seu valor Notase que no cédigo acima foi usada a forma r para a abertura de arquivo para permitir tanto a leitura quanto a gravacao de registros Caso por exemplo fosse aberto com a a gravacdo ocorreria sempre apos o ultimo registro mesmo com a execucdo da funao fseek Por fim como realizar a remocdo de um item Veremos esse assunto a seguir 444 Remogao deum registro Para a remocao de um registro podese simplesmente alterar 0 contetido do registro a ser excluido para um contetido vazio ou nao valido No caso do cdédigo anterior aproveitandose as funées de localizacdo e alteracdo de registro o programa principal ficaria como listado a seguir httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2737 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2837 21082023 1631 Técnicas de Programacgao Podese entdo aproveitar todas essas funcdes para que seja implementada a funcionalidade de inclusdo de novos registros Veremos a seguir 445 Inclusao de um novo registro Caso a remoao tenha sido implementada através da gravacdo de um valor nulo sobre o registro removido entdo para a inserdo de um novo registro podese procurar pelos espacos vagos ou seja procurar por registros cujos valores de CPF sejam 00000000000 Em tais espacos realizase a modificaao incluindose valores validos relativos aos novos registros Sendo assim o cédigo para a inserao de um novo registro ficaria ink InsereNevoRegistrojPessos pessoa FILE sarq IPessoa Ps Ros LocalizaRegi stro CSeeeoe0ee8ee 4parqs if pos1 Cetucn Alternakegi strot pos pessoaarcgss fseck arg 9 SEEK FNDIS LEC far i te Cipessoa sSizecr Pessoadlarq Retuen 1s return Como foi mencionado anteriormente a insercdo de novos registros ocorre nos espacos dos registros anteriormente apagados aqui representados pelos registros com CPF igual a 00000000000 Caso nado existam registros nulos a inserdo ocorre apos o Ultimo registro do arquivo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 2937 21082023 1631 Técnicas de Programacgao ee VOCE QUER LER e Em muitas ocasides fazse necessario saber 0 tamanho de um arquivo porém a linguagem C nao tem funcées com esse objetivo Para saber calcular em C o tamanho de um arquivo vocé podera usar a dica postada por Lima 2006 disponivel neste link httpsallanlimawordpresscom20060715calculandootamanhodeum arquivoemc2 httpsallanlimawordpresscom20060715 calculandoo tamanhodeumarquivoemc2 Anteriormente mencionamos os temos arquivo de texto e arquivo bindrio inclusive falamos quando estavamos abordando os tipos de abertura de arquivo que ao colocar 0 simbolo b estamos a manipular arquivos binarios Vamos entdo conversar sobre 0 que vem aser esses dois tipos de arquivos 45 Arquivo de texto Apesar de termos mencionado quando falavamos sobre os modos de abertura de um arquivo que existem os arquivos texto e binario até o momento nao fizemos distincdo entre esses dois formatos Mas qual a diferenca entre eles httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3037 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3137 No arquivo em formato texto como o proprio nome diz seu conteudo consiste em um texto puro que podera ser aberto em qualquer editor de texto Sendo assim temos que usar em tais arquivos apenas as funçoes que manipulam caracteres e strings O exemplo abaixo ilustra um caso onde um arquivo textual e criado VOCÊ SABIA Voce sabia que os arquivos CSV Comma Separated Values Valores Separados por Vırgula sao arquivos textuais em podem ser manipulados usando a linguagem C Para ver um exemplo de codigo para a manipulaçao de arquivos CSV voce podera acessar este link httpswwwvivaolinuxcombrscriptManipulacaodearquivosCSV Estruturado httpswwwvivaolinuxcombrscriptManipulacaodearquivos CSVEstruturado 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3237 Notase no exemplo anterior a utilizaçao para a gravaçao no arquivo apenas de funçoes manipulando variaveis do tipo strings Mas qual foi o motivo de utilizarmos a funçao gets e nao scanf para a entrada das informaçoes A funçao scanf divide a entrada digitada em palavras ou seja nao aceita o espaço em branco como parte de apenas uma informaçao digitada Por sua vez com a funçao gets ja e possıvel incluir os espaços em branco dentro de uma unica informaçao Para a gravaçao no arquivo foi utilizada a funçao fprintf assim como poderia ser utilizada a funçao fputs Mencionamos anteriormente a remoçao de um registro de um arquivo Como remover uma informaçao de um arquivo texto No exemplo do registro realizamos a sobescrita de um registro com um valor nao valido para a representar a sua remoçao No caso de um arquivo texto que pode ser considerado como um arquivo sequencial para a remoçao de um item precisamos criar um arquivo temporario para receber todas as informaçoes exceto aquelas a serem retiradas O exemplo a seguir realiza a remoçao do aniversario de uma pessoa cujo arquivo foi construıdo com o exemplo anterior 21082023 1631 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3337 21082023 1631 Técnicas de Programacgao No cédigo acima temos a presena de duas funcdes que manipulam diretamente o arquivo mas nao os registros Tratase das fundes remove e rename Essas duas funées possuem os seguintes modos de uso removenomearquivoaserremovido renamenomeantigo novonome Esse processo de utilizagdo de um arquivo temporario é tipico na manipulacao de arquivos sequenciais Um arquivo sequencial é aquele que necessitamos percorrer por todo o contetido até chegarmos a um ponto especifico e 6 46 Arquivo binario A manipulacdo de um arquivo binario tornase mais eficiente em funao da possibilidade de manipulacao de registros Desta forma podese manipular tais arquivos de forma nado sequencial ou seja de forma aleatoria Neste caso 0 proprio cddigo de acesso de um registro representa o proprio deslocamento a ser utilizado através da funcdo fseek Uma outra vantagem do uso de arquivos binarios consiste na possibilidade de reducdo de espaco armazenado Por exemplo caso necessite armazenar um valor inteiro de valor 123457 no arquivo texto gastariamos seis bytes um byte para cada digito ou sete bytes se considerarmos 0 ponto Ja nos arquivos bindarios 0 tamanho gasto é exatamente o tamanho do tipo do dado no caso gastariamos sizeofint Esse gasto a mais impactaria consequentente no tempo de leitura ou gravado Sendo assim uma outra vantagem dos arquivos binarios consiste no fato de que eles demandam de menos tempo computacional para realizar suas operaées de leitura e escrita eee e reer reer eee CASO Uma certa empresa familiar manipulava as suas informagdes totalmente de forma arcaica Todo gerenciamento do faturamento e débitos era realizado de forma quase manual através de relatérios textuais Um profissional da area foi chamado para tentar automatizar o processo a primeira providéncia tomada foi de implementar um sistema que para interpretar os lancamentos tinha que quebrar as informagées dos relatérios em tokens token representa um pedaco da informado por exemplo uma palavra Porém esse processamento textual demandava muito computacional Diante da lentidao do sistema ele resolveu transformar os relatérios em arquivos binarios para melhor manipular os registros os quais representavam as despesas e as entradas de valores Com os arquivos binarios através da manipulado de seus registros 0 processamento tornouse mais rapido flexivel e ocupava menos espao de armazenamento eee eee eee reer renee reer eee eee eee eee eee httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3437 21082023 1631 Técnicas de Programacgao Para os arquivos binarios abertos com a inserado do b no modo de abertura da fundo fopen nado podemos usar por exemplo as funcées fputs e fgets E sim teremos que usar as funcées fread e fwrite como utilizadas em varios exemplos ao longo da unidade O exemplo a seguir ilustra a gravacdo e recuperacdo de registros em um arquivo binario onde a primeira posicado do arquivo contém a quantidade de registros armazenados As demais posides sao representadas pelos registros no caso sequéncias formadas por um valor inteiro e um valor do tipo float finclude ghdioh aol GravaDadesiol Vislloal MEslILL sang LEC fer itetay sizeoftipts1arq petuen i5 LEC feritetayl sizeofts ooldslsargs petuen i5 hetucn aak maiots FILE anc 2ak qhd2valorintis floal valorfloats aogfopentexempobinariodak wht 3s iAfacgM113 PCLOCELErro de abertira do arquivet K Rehven fqravando os dados Riri telagiszeerGplislsarqs qid de itens a serem qravados GravaNadest 2453 arqss GravaDados 1296 20987 sargas frecuperando os dados para testar resipdiangss freadaqtdsizeoftin1arqhs forgi6 itgkcs i freadtavaloraintssizeoftint1arqh freadavalontloatsizecttloal1arqhs printécregistro Cc anttd floattFin1valorintsvalorfloatys F fclosetacas retucn Notase no exemplo acima que podemos manipular qualquer tipo de dado em qualquer ocasiao através das fungées fwrite e fread Para tanto devemos saber como o arquivo encontrase estruturado httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3537 21082023 1631 Técnicas de Programacgao Sintese Chegamos ao fim de nossa quarta e Ultima conversa sobre técnicas de programacado Nesta pudemos abranger um outro ponto importante da programacado que é a manipulacao de arquivos Com os pontos abordados realizamos operaées de gravacdo e recuperacdo de informacées em memoria nao volatil por exemplo manipulando arquivos gravados no HD hard disk Desta forma vocé podera agora implementar programas com amplas funcionalidades desde a manipulacado de estruturas mais complexas até a sua gravacdo e recuperaao em arquivos Com os contetidos apresentados nesta quarta unidade esperamos que vocé construa programas mais complexos envolvendo a amplidao de recursos que a linguagem C proporciona Nesta unidade vocé teve a oportunidade de ter contato com conceitos inerentes aos arquivos saber identificar e usar as fungdes para a manipulacao de arquivos e identificar sugerir e implementar solucdes de software através da manipulagao de arquivos empregar corretamente as fungoes e estruturas de programagao para a localizagao inserao remocao alteracao de registros em arquivos e saber diferenciar e utilizar um arquivo texto de um arquivo binario Clique para baixar o contetido deste tema Bibliografia ASCENCIO A F G Fundamentos de Programacgao de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sdo Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomhttps brasilblackboardcom https brasilblackboardcom Acesso em 21072019 BACKES A Ordenacao Externa Aula 66 1431min Linguagem C Programacao Descomplicada 2014 Disponivel em httpswwwyoutubecomwatchvsVGbjlzgvWQ httpswwwyoutubecomwatch vsVGbjlzgvWQ Acesso em 30072019 CANDIDO F A S Manipulacdo de Arquivos CSV Estruturado 2010 Disponivel em httpswwwvivaolinuxcombrscriptManipulacaodearquivosCSVEstruturado httpswwwvivaolinuxcombrscriptManipulacaodearquivosCSVEstruturado Acesso em httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3637 21082023 1631 Técnicas de Programacgao 30072019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sdo Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomhttps brasilblackboardcom https brasilblackboardcom Acesso em 21072019 LIMA A D S Calculando o Tamanho de um Arquivo em C 2006 Disponivel em httpsallanlimawordpresscom20060715calculandootamanhodeumarquivoemc2 httpsallanlimawordpresscom20060715calculandootamanhodeumarquivoemc2 Acesso em 30072019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sdo Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomhttps brasilblackboardcom https brasilblackboardcom Acesso em 21072019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sdo Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomhttps brasilblackboardcom https brasilblackboardcom Acesso em 21072019 SOUZA O Edgar Frank Codd e o Banco de Dados Relacional uma contribuido para a Historia da Computaado 2015 Dissertagao Mestrado em Historia da Ciéncia Pontifica Universidade Catdélica de Sao Paulo Sado Paulo 2015 Disponivel em httpssapientiapucspbrhandlehandle13305 modefullhttpssapientiapucspbrhandlehandle13305modefull httpssapientiapucspbrhandlehandle13305modefull Acesso em 30072019 httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade4ebookindexhtml 3737

Sua Nova Sala de Aula

Sua Nova Sala de Aula

Empresa

Central de ajuda Contato Blog

Legal

Termos de uso Política de privacidade Política de cookies Código de honra

Baixe o app

4,8
(35.000 avaliações)
© 2025 Meu Guru®