INSTITUTO TECNOLOGICO SUPERIOR DE CALKINI EN EL ESTADO DE CAMPECHE
PRÁCTICA NO. 5 “ARCHIVOS SECUENCIALES Y DIERECTOS” Nombre del alumo! R"#el D"d"er L$%e& 'o# (5)5* A+"#a,ura! %ro#rama-"$ b+"-a E+%e-"al"dad! /e-a,r$"-a 0er Par-"al 1rado! *ro 1ru%o CICLO ESCOLAR 23*4(23*) Dr. o+6 /auel L"ra Turr"&a
Archivos Secuenciales y Directos
Página |2
ÍNDICE ÍNDICE..................................................................................................................2 INTRD!CCI"N..................................................................................................# ARC$I%S SEC!ENCIA&ES ' DIRECTS.......................................................( Archivos)............................................................................................................( A*ertura +e archivos)...................................................................................., Clasi-icacin +e archivos *or el ti*o +e +atos).............................................., Clasi-icacin +e archivos *or el ti*o +e acceso).............................................../ Archivos +e Acceso Secuencial)......................................................................./ Consulta o recorri+o Secuencial)..................................................................0 Archivos Secuenciales In+e1a+o)................................................................. Co+i-icacin +e Archivos Secuenciales)......................................................34 Archivos +e Acceso Directo)...........................................................................35 Consulta Directa).........................................................................................3/ rgani6acin Directa)..................................................................................30 Co+i-icacin +e Archivos Directos)..............................................................3 7unciones y 89to+os +e Archivos).................................................................2, Ta:la +e Caracter;sticas)................................................................................20 CNC&!SI"N....................................................................................................#4
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
Página |0
INTRODUCCIÓN El uso +e la *rogra@acin es @uy interesante hoy en +;a ue sor*ren+e ca+a ve6 @ásB *or lo ueB +es+e una *ers*ectiva *ersonalB *o+e@os interactuar con auellos co@*onentes internos ue *ro*orciona una co@*uta+oraB sien+o la *rogra@acin una gran herra@ienta *ara *o+er a*licar +icha interaccin. Cuan+o se *rogra@a co@n@ente en CB se usa la @e@oria *rinci*al o @e@oria RA8 co@o nico @e+io +e al@acena@iento usan+o varia:lesB arreglos o estructuras +e +atos @ás co@*leFasGB con el inconveniente ue esto re*resenta) la volatili+a+ +e la @e@oria RA8H es +ecirB si se a*aga la co@*uta+ora se *ier+en los +atos. A+e@ásB algunas a*licaciones e1igen trans*ortar los +atos +e una co@*uta+ora a otra. Es *or esto ue surge la necesi+a+ +e al@acenar +ichos +atos +e -or@a *er@anente ue *er@ita retenerlos en ciertos +is*ositivos +e al@acena@iento secun+ario *or un *er;o+o +e tie@*o largo sin el su@inistro +e energ;aB +e tal -or@a ue *er@itan trans*ortarlos y utili6arlos en otro eui*o co@*utacional. CITATIN =ar4# Jl 24,0 K Al +esarrollar la *rogra@acin a trav9s +e @aneFos +e archivosB e1iste una estrecha relacin entre la @e@oria *rinci*alB el @icro*rocesa+or y los +is*ositivos +e al@acena@iento secun+ario ya ue el *rocesa@iento ue reali6a una co@*uta+ora es tarea a:soluta +el @icro*rocesa+or en conFuncin con la @e@oria *rinci*alH es +ecirB los +is*ositivos +e al@acena@iento secun+ario +isLettesB +iscos +urosB CDsB -lash +rivesB etc.G no *rocesan +atosB slo los al@acenan. En estos +is*ositivos slo se re-leFan los +atos *revia@ente *rocesa+os y -uncionan e1clusiva@ente co@o una :o+ega. Esto re*ercute +e @anera signi-icativa al @o@ento +e *rogra@ar archivosB ya ue *ara hacerle @o+i-icaciones a los +atos +e un registro *revia@ente al@acena+o es necesario *ri@ero Mcargarlo? en la @e@oria *rinci*alB es +ecirB locali6ar el registro en el archivo y leerlo *ara colocar sus +atos en la @e@oria RA8B ah; @o+i-icarlo y *osterior@ente gra:arlo en la @is@a *osicin en la ue se encontra:aB sin e@:argo estas o*eraciones no se reali6an +irecta@enteB sino a trav9s +e la uni+a+ arit@9ticalgicaB la uni+a+ +e control y los registros +el @icro*rocesa+or. CITATIN =ar4# Jl 24,0 K Es *or ello ue en esta res*ectiva investigacin se *ro*orcionará to+a auella in-or@acin ue re*ercute el @aneFo +e archivos es*ec;-ica@ente en el lenguaFe C. A+e@ás +e tratar sus +istintas clasi-icacionesB res*ecto al ti*o +e acceso co@o son) +irectas y aleatorias. As; co@o el ti*o +e +atos) te1to y :inario. A continuacinB *roce+a@os al +esarrollo +e esta corres*on+iente investigacin *ara enten+er +e @anera a+ecua+a lo ue se *reten+i involucrar en esta *resente intro+uccin.
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
Página |7
ARCHIVOS SECUENCIALES Y DIRECTOS Archivos: !n archivo o -ichero un conFunto ue son en un +is*ositivo. !nin-or@ático archivo es es i+enti-ica+o *or+e un:its no@:re y la al@acena+os +escri*cin +e la car*eta o +irectorio ue lo contiene. A los archivos in-or@áticos se les lla@a as; *orue son los euivalentes +igitales +e los archivos escritos en e1*e+ientesB tarFetasB li:retasB *a*el o @icro-ichas +el entorno +e o-icina tra+icional. En lo ue concierne al siste@a o*erativo un archivo esB en la @ayor;a +e los casosB si@*le@ente un -luFo uni+i@ensional +e :itsB ue es trata+o *or el siste@a o*erativo co@o una nica uni+a+ lgica. !n archivo +e +atos in-or@ático nor@al@ente tiene un ta@aOoB ue general@ente se e1*resa en :ytesH en to+os los siste@as o*erativos @o+ernosB el ta@aOo *ue+e ser cualuier n@ero entero+el no negativo @á1i@o +e*en+ienteel +el siste@a. De*en+e so-tare +e ue:ytes se hasta eFecutaunen la co@*uta+ora inter*retar esta estructura :ásica co@o *or eFe@*lo un *rogra@aB un te1to o una i@agenB :asán+ose en su no@:re y conteni+o. &os ti*os es*eciales +e archivosB co@o los no+os +e +is*ositivo ue re*resentan si@:lica@ente *artes +el har+areB no consisten en un -luFo +e :its y no tienen ta@aOo +e archivo. CITATIN =ar4# Jl 24,0 K El no@:re +e un archivo y la ruta al +irectorio +el archivo lo i+enti-ica +e @anera un;voca entre to+os los +e@ás archivos +el siste@a in-or@ático no *ue+e ha:er +os archivos con el @is@o no@:re y ruta. El as*ecto +el no@:re +e*en+e +el ti*o +e siste@a in-or@ático ue se use. Al igual ue ocurre con la escritura en *antallaB a la hora +e @aneFar los -icheros +es+e CB *o+e@os e@*lear las -unciones ue ya han si+o inter*reta+osB o :ien e@*lear otras nuevas *osi:ili+a+es ue a*orta C. Ta@:i9n al igual ue ocurr;a con la *antallaB el @aneFo +e -icheros se :asará en -luFos +e entra+a y sali+a. CITATIN =ar4# Jl 24,0 K Tene@os las clases -strea@ -icheroB en generalGB i-strea@ -ichero +e entra+aG yescri:ire@os o-strea@ -ichero to+asue ellas +e-ini+as en
[email protected]. con +ey sali+aGB B al igual *ara la *antalla. Cerrare@os&eere@os un -icheroy con QcloseQ tanto si lo he@os a:ierto co@o *ara leer o *ara escri:irG y co@*ro:are@os si se ha ter@ina+o un -ichero +e entra+a con Qeo-Q. CITATIN =ar4# Jl 24,0 K Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
Página |5
A continuacinB +e @anera e1*l;cita se *resentará un eFe@*lo *ráctico y sencillo so:re la creacin +e un archivo +e te1to en C.
Apertura e archivos: Antes +e escri:ir o leer +atos +e un archivo es necesario a:rirlo. Al a:rir el archivo se esta:lece co@unicacin entre el *rogra@a y el siste@a o*erativo acerca +e c@o accesarlo. Es necesario ue el *rogra@a le *ro*orcione al siste@a o*erativo el no@:re co@*leto +el archivo y la intencin +e uso leer o escri:ir +atosGB entonces se +e-inen áreas +e co@unicacin entre ellos. !na +e estas áreas es una estructura ue controla el archivo alias +el archivoGB +e esta -or@a cuan+o se solicita una o*eracin +el archivoB se reci:e una res*uesta ue in-or@a el resulta+o @e+iante un a*unta+or. Ca+a archivo a:ierto reuiere un alias *ara *o+er reali6ar o*eraciones en 9l. CITATIN =ar4# Jl 24,0 K &a estructura +el archivo contiene in-or@acin +el archivo ue se está usan+oB as; co@o el ta@aOo actual y la locali6acin +e los :u--ers +e +atos.
C!asi"icaci#$ eclasi-icaciones archivos por e! e atos: E1isten @uchas +etipo archivos +e acuer+o a +i-erentes criterios o a*licaciones. Au; se *resenta una @uy i@*ortante) +e acuer+o al conteni+o.
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
Página |4
Archivos e Te%to: Son auellos ue *ue+en contener cualuier clase +e +atos y +e tal @anera ue son Menten+i:les? *or la gente. &os +atos en un archivo +e te1to se al@acenan usan+o el c+igo ASCIIB en el cual ca+a carácter es re*resenta+o *or un si@*le :yte. De:i+o a ue los archivos +e te1to utili6an el c+igo ASCIIB se *ue+en +es*legar o i@*ri@ir. En este ti*o +e archivosB to+os sus +atos se al@acenan co@o ca+enas +e caracteresB es +ecirB los n@eros se al@acenan con su re*resentacin ASCII y no su re*resentacin nu@9ricaB *or lo tantoB no se *ue+en reali6ar o*eraciones @ate@áticas +irecta@ente con ellos. Pr eFe@*lo) Si se guar+a el +ato #.3(3,2 en un archivo +e te1toB se al@acena co@o M#.3(3,2? y ntese ue #.3(3,2 M#.3(3,?. CITATIN Ign35 Jl 24,0 K
Archivos &i$arios: Este ti*o +e archivos al@acenan los +atos nu@9ricos con su re*resentacin :inaria. Pue+en ser archivos ue contienen instrucciones en lenguaFe @áuina listas *ara ser eFecuta+as. Por eFe@*loB cuan+o escri:i@os un *rogra@a en un lenguaFe en *articular co@o CB PascalB 7ortranB etcGB tene@os las instrucciones al@acena+as en un archivo +e te1to lla@a+o *rogra@a -uenteB *ero una ve6 ue lo so@ete@os a un *roceso +e co@*ilacin y eFecucin nuestro lo trasla+a@os a un *rogra@a eFecuta:ley en lenguaFe @áuinaGB*rogra@a ue es +irecta@ente enten+i+o *or la co@*uta+ora se crea un archivo :inario. En este ti*o +e archivos ta@:i9n se *ue+en al@acenar +i-erentes ti*os +e +atos incluyen+o +atos nu@9ricosH sin e@:argoB ca:e +estacar ue los +atos nu@9ricos se gra:an con su re*resentacin :inaria no con su re*resentacin ASCIIGB *or tal ra6nB cuan+o se +es*liegan con un e+itor +e te1tos o *or @e+io +e co@an+os +el siste@a o*erativoB a*arecen caracteres raros ue no se inter*retan. P. eFe@. Si se guar+a el +ato 2/ en un archivo :inarioB se al@acena co@o 44443333 y no co@o M2/?. CITATIN Ign35 Jl 24,0 K
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
Página |)
C!asi"icaci#$ e archivos por e! tipo e acceso: De acuer+o a la -or@a +e acce+er los +atos +e los archivosB 9stos se clasi-ican en secuenciales o +irectos ta@:i9n conoci+os co@o +e acceso +irectoB relativos o aleatoriosG. En esta seccin no se *reten+e anali6ar las +i-erentes estructuras +e +atos involucra+as en estas clasi-icaciones +e archivos ni +esarrollar a*licaciones co@*leFas +e:i+a@ente +iseOa+as usán+olosB sino conocer esencial@ente sus conce*tos tericos y la -or@a +e @aneFarlos.
CITATIN =ar4# Jl 24,0 K
Archivos e Acceso Secue$cia!: Co@o su no@:re lo in+icaB en este ti*o +e archivos los registros se gra:an en secuencia o consecutiva@ente y +e:en accesarse +e ese @is@o @o+oB es +ecirB con-or@e se van insertan+o nuevos registrosB 9stos se al@acenan al -inal +el lti@o registro al@acena+oH *or lo tantoB cuan+o se +esea consultar un registro al@acena+o es necesario recorrer co@*leta@ente el archivo leyen+o ca+a registro y co@*arán+olo con el ue se :usca. En este ti*o +e archivo se utili6a una @arca invisi:le ue el siste@a o*erativo coloca al -inal +e los archivos) E7 En+ o- 7ileGB la cual sirve *ara i+enti-icar +n+e ter@ina el archivo. CITATIN Ign35 Jl 24,0 K
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
Página |8
&a -or@a @ás co@n +e estructura +e archivo es el archivo secuencial. En este ti*o +e archivoB un -or@ato -iFo es usa+o *ara los registros. To+os los registros tienen el @is@o ta@aOoB constan +el @is@o n@ero +e ca@*os +e ta@aOo -iFo en un or+en *articular. Co@o se conocen la longitu+ y la *osicin +e ca+a ca@*oB sola@ente los valores +e los ca@*os se necesitan al@acenarseH el no@:re +el ca@*o y longitu+ +e ca+a ca@*o son atri:utos +e la estructura +e archivos. !n ca@*o *articularB general@ente el *ri@ero +e ca+a registro se conoce co@o el ca@*o clave. El ca@*o clave i+enti-ica un;voca@ente al registro. As;B los valores +e la clave *ara registros +i-erentes son sie@*re +i-erentes. &os archivos secuenciales son t;*ica@ente utili6a+os en a*licaciones +e *roceso +e lotes ' son *ti@os *ara +ichas a*licaciones si se *rocesan to+os los registros. &a organi6acin secuencias +e archivos es la nica ue es -ácil +e usar tanto en +isco co@o en cinta. Para las a*licaciones interactivas ue incluyen *eticiones o actuali6aciones +e registros in+ivi+ualesB los archivos secuenciales o-recen un ren+i@iento *o:re. Nor@al@ente un archivo secuencial se al@acena en :louesB en un or+en secuencial si@*le +e los registros. &a organi6acin -;sica +el archivo en una cinta o +isco se corres*on+e e1acta@ente con la u:icacin lgica +el archivo. En este casoB el *roce+i@iento *ara u:icar los nuevos registros en un archivo +e *ila se*ara+oB lla@a+o archivo +e registro log -ileG o archivo +e transacciones. Peri+ica@enteB se reali6a una actuali6acin *or lotes ue @e6cla el archivo +e registro con el archivo @aestro *ara *ro+ucir un nuevo archivo en secuencia correcta +e claves. &os so*ortes secuenciales son auellos en los ue los registros in-or@aciones están escritos a continuacin +e otros y *ara acce+er a un +eter@ina+o registroB n se necesita *asar *or los n3 registros anteriores. &a secuencia *ue+e corres*on+er al or+en -;sico +e los registros en el archivo organi6acin secuencialG o :ien el or+en +e las claves ascen+ente o +escen+enteG +e los registros organi6acin in+e1a+aG.
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
Página |9
!n archivo con organi6acin secuencial es una sucesin +e registros al@acena+os consecutiva@ente so:re el so*orte e1ternoB +e tal @o+o ue *ara acce+er a un registro @ +a+o es o:ligatorio *asar *or to+os los n3 art;culos ue le *rece+en. &os registros se gra:an consecutiva@ente cuan+o el archivo se crea y se +e:e acce+er consecutiva@ente cuan+o se leen +ichos registros. CITATIN Ign35 Jl 24,0 K
Co$su!ta o recorrio Secue$cia!: A continuacinB se @uestra un +iagra@a +e -luFo +e una rutina +e consulta +e un registro en *articular @e+iante un recorri+o secuencial. En esta rutina se @aneFa un archivo ue al@acena +atos +e *ro+uctos PRD!CT.SECG segn el registro +eclara+o y lo recorre co@*leta@ente en -or@a secuencial registro *or registroG hasta encontrar el *ro+ucto solicita+o. CITATIN =ar4# Jl 24,0 K
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | *3
Archivos Secue$cia!es I$e%ao: !n @9to+o *o*ular *ara su*erar las +esventaFas +e los archivos secuenciales es el +el archivo secuencias in+e1a+o. El archivo secuencial in+e1a+o @antiene las caracter;sticas :ásicas +e los archivos secuenciales) los registros están organi6a+os en una secuencia :asa+a en un ca@*o. Dos caracter;sticas se aOa+en) un ;n+ice +el archivo *ara so*ortar los accesos aleatorios y un archivo +e +es:or+a@iento over-loG. El ;n+ice *rovee una ca*aci+a+ +e :sue+a *ara llegar rá*i+a@ente a las *ro1i@i+a+es +e un registro +esea+o. El archivo +e +es:or+a@iento over-loG es si@ilar al archivo +e registro usa+o en un archivo secuencialB *ero está integra+o +e -or@a ue los registros +el archivo +e +es:or+a@iento se u:ican en la +ireccin +e un *untero +es+e si registr *rece+ente. En la estructura in+e1a+a @ás si@*leB se usa un solo nivel +e in+e1acin. El ;n+iceB secuencial en este casoB es un archivo secuencial si@*le. Ca+a registro +el archivo ;n+ice tiene +os ca@*os) un ca@*o claveB ue es el @is@o ue el ca@*o clave +el archivo *rinci*al y un *untero al archivo *rinci*al. Para encontrar un ca@*o es*ec;-ico se :usca en el ;n+ice hasta
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | **
encontrar el valor @ayor +e la clave ue es igual o *rece+e al valor +esea+o +e la clave. &a :sue+a continua en el archivo *rinci*al a *artir +e la *osicin in+ica+a *or el *untero.
&os archivos secuenciales in+e1a+os retienen la li@itacin +el archivo secuencial) la e-icacia en el *rocesa@iento se li@ita al :asa+o en un nico ca@*o +el archivo. Cuan+o es necesario :uscar un registro :asán+ose en algn otro atri:uto +istinto +el ca@*o clave a@:as -or@as +e archivo secuencial no son a+ecua+as. En algunas a*licaciones esta -le1i:ili+a+ es +esea:le. Para alcan6ar esta -le1i:ili+a+B se necesita una estructura ue utilice @lti*les ;n+icesB uno *ara ca+a ti*o +e ca@*o ue *ue+a ser o:Feto +e la :sue+a. Se suelen utili6ar +os ti*os +e ;n+ices. !no ;n+ice e1haustivo contiene una entra+a *ara ca+a registro +el archivo *rinci*al. tro ;n+ice *arcial conten+rá entra+as a los registros +on+e este el ca@*o +e inter9s. Con registros +e longitu+ varia:leB algunos registros no conten+rán to+os los ca@*os. &os archivos in+e1a+os son @uy utili6a+os en a*licaciones +on+e es critica la o*ortuni+a+ +e la in-or@acin y +on+e los +atos son rara ve6 *rocesa+os +e -or@a e1haustiva. CITATIN Sal43 Jl 24,0 K
Coi"icaci#$ e Archivos Secue$cia!es: Acceso secue$cia! e! archivo: &a *ri@era o*eracin +es*u9s +e +eclarar un archivo y antes +e cualuier otra o*eracin con 9l es a:rirlo.
'ope$: varia:leUarchivo V -o*en no@:reUarchivoB @o+oUaccesoGH Don+e)
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
P á g i n a | *2
Archivos Secuenciales y Directos varia:leUarchivo es Wvaria:leUarchivo
la
varia:le
+eclara+a
+e
la
-or@a)
7I&E
no@:reUarchivo es el no@:re ue ten+rá el archivo en el +is*ositivo usa+o. Po+rá ser varia:le o constante. @o+oUacceso es el @o+o +e a*ertura +el archivoB @e+iante el cual le +ire@os al co@*ila+or si se trata +e un archivo +e te1to o :inarioB y si va@os a leer o escri:ir en el archivo. &os +istintos @o+os +e a:rir un archivo son los siguientes)
(oos: r) A:re un archivo +e te1to *ara solo lectura. Si el archivo no e1isteB +evuelve un error ) A:re el archivo +e te1to *ara solo escritura. Si el archivo no e1isteB lo creaB y si e1iste lo so:rescri:e. a) A:re el archivo +e te1to *ara aOa+ir al -inal. Si el archivo no e1isteB lo crea. r) A:re el archivo +e te1to *ara lecturaXescritura. Si el archivo no e1isteB +a un error. ) A:re el archivo +e te1to *ara lecturaXescritura. Si el archivo no e1isteB lo creaB y si e1iste lo so:rescri:e. a) A:re el archivo +e te1to *ara aOa+ir al -inalB con o*cin +e lectura. Si el archivo no e1isteB lo crea. r:) A:re un archivo :inario *ara solo lectura. Si el archivo no e1isteB +evuelve un error :) A:re el archivo :inario *ara solo escritura. Si el archivo no e1isteB lo creaB y si e1iste lo so:rescri:e. a:) A:re el archivo :inario *ara aOa+ir al -inal. Si el archivo no e1isteB lo crea. r:) A:re el archivo :inario *ara lecturaXescritura. Si el archivo no e1isteB +a un error :) A:re el archivo :inario *ara lecturaXescritura. Si el archivo no e1isteB lo creaB y si e1iste lo so:rescri:e. a:) A:re el archivo :inario *ara aOa+ir al -inalB con o*cin +e lectura. Si el archivo no e1isteB lo crea. Decir ue los archivos +e te1to se *ue+en re-erenciar ta@:i9n co@o QrtQB QtQB QatQB QrtQB QtQ y QatQB *ero *ara -acilitar @ás las cosasB cuan+o no es*eci-ica@os si uere@os a:rir un archivo +e te1to o :inarioB *or +e-ecto se
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | *0
su*one ue es +e te1toB es *or ello ue los @o+os QrQB QQ y QaQ se re-ieren a archivos +e te1to. $e@os +e tener cui+a+o con los @o+os +e a*ertura +e los archivos *orue al a:rir con cualuier @o+o QQB si ya e1ist;a el archivoB se :orrará la in-or@acin ue contuviese. Si no e1isteB lo creará. Por el contrarioB con el @o+o QaQ ta@:i9n lo creará si no e1iste el archivoB *ero si ya e1isteB aOa+irá al -inal +el @is@o los +atos ue escri:a@os. Po+e@os sa:er si un archivo ha si+o a:ierto correcta@ente o no. De:i+o a ue los archivos son *unteros a estructuras ti*o 7I&EB *o+e@os conocer su valor al hacer ue a*unten a ellas. &a -or@a +e hacerlo es co@*aran+o el *untero con la constante *re+e-ini+a N!&&. De esta -or@aB cuan+o el *untero valga N!&& no a*unta a ninguna varia:le o *osicin +e @e@oriaGB es *orue ha ha:i+o algn *ro:le@a al a:rir el archivo. Este *ro:le@a se *ue+e +e:er a ue no e1iste el archivo ue intenta@os a:rir *ara lecturaB ue no hay es*acio su-iciente en el +isco al tratar +e crear el archivoB ue la uni+a+ +e +isco no está *re*ara+aB ue el +isco está +aOa+o -;sica@ente o ue la i@*resora no está conecta+a. %ea@os en eFe@*lo +el testeo +e la e1istencia +e un archivo +e te1to.
'c!ose: valor V -close varia:leUarchivoGH Don+e) Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | *7
valor es el valor ue nos +irá si ocurre algn error cerran+o el archivo. 4 in+ica ue to+o ha i+o :ien. varia:leUarchivo es la varia:le +eclara+a +e la -or@a) 7I&E Wvaria:leUarchivo Cuan+o ter@ine@os +e tra:aFar con un archivo he@os +e reali6ar la o*eracin +e hace@os cerrar *o+e@os ocasionar to+os los cierre +atos +el +elarchivo. @is@o. Si Sino selonecesitan varios archivosla a*9r+i+a la ve6B+enos *o+e@os ahorrar varios -close utili6an+o la -uncin -closeall.
'c!osea!!: nu@eroUarchivos V -closeall GH Don+e) nu@eroUarchivos es una varia:le entera ue in+ica el n@ero +e archivos cerra+osB o E7 si ha ocurri+o un error. Ahora vea@os unas -unciones *ara escri:ir y leer +atos +e un archivo +e te1to.
)utc: Esta -uncin escri:e un carácter en un archivo +e te1to. Devuelve un entero si la escritura es correcta. De otra -or@a +evuelve el valor E7 ue in+ica ue ha ha:i+o un error. Su -or@ato es) *utc carácterB varU-ichGH Don+e) carácter es el carácter ue se +esea escri:ir en el archivo. varU-ich es la varia:le +eclara+a co@o 7I&E. EFe@*los) *utc YaYB -3GH c V Y=YH *utc cB -3GH Ni ue +ecir tiene ue cuan+o use@os -unciones *ara escri:ir en archivosB estos ten+rán ue ha:er si+o a:iertos en @o+o escritura o *ara aOa+ir +atos.
*etc: Esta -uncin lee un carácter +e un archivo +e te1to a:ierto en @o+o lectura. Devuelve un entero si la lectura es correcta. De otra -or@a +evuelve el valor E7 ue in+ica ue he@os llega+o al -inal +el archivo. Su -or@ato es) carácter V getc varU-ichGH Don+e)
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | *5
carácter es la varia:le ue conten+rá el carácter le;+o +el archivo. varU-ich es la varia:le +eclara+a co@o 7I&E. EFe@*los) c V getc -3GH !n eFe@*lo+e +elte1to uso y+eescri:irlos estas +osen -unciones ser;a+eleer to+os los*antalla caracteres un archivo otro archivo te1to y *or a la+e ve6 *ara co@*ro:ar la correcta eFecucin)
A*arece en este eFe@*lo una nueva -uncinB la -uncin e1it G. Esta -uncin *rovoca ue aca:e el *rogra@a con lo ue la -uncin @ain G +evuelve un valorB en este caso el valor 3. Recor+a@os ue to+a -uncin +evuelve un valor.
'sca$": Esta -uncin tra:aFa +e la @is@a @anera ue scan-B *ero leyen+o los +atos -or@atea+os +e un archivo. Su sinta1is es) -scan- varU-ichB ca+enaU+eUcontrolB listaUvaria:lesGH Don+e) varU-ich es la varia:le +eclara+a co@o 7I&E. Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | *4
ca+enaU+eUcontrol son las ca+enas +e control ue se +esean leerB tales co@o Z+B ZsB Z-B Z1B etc... listaUvaria:les son las varia:les ue conten+rán los valores +e la lectura +el archivo ue +e:en coinci+ir con sus res*ectivas ca+enas +e control. EFe@*los) -scan- -ichB QZsZ+Z-QB no@:reB [e+a+B [alturaGH 'pri$t": Esta -uncin tra:aFa +e la @is@a @anera ue *rint-B *ero escri:ien+o los +atos -or@atea+os so:re un archivo. Su sinta1is es) -*rint- varU-ichB ca+enaU+eUcontrolB listaUvaria:lesGH Don+e) varU-ich es la varia:le +eclara+a co@o 7I&E. ca+enaU+eUcontrol son las ca+enas +e control ue se +esean escri:irB tales co@o Z+B ZsB Z-B etc... listaUvaria:les son las varia:les ue conten+rán los valores *ara la escritura en el archivo ue +e:en coinci+ir con sus res*ectivas ca+enas +e control. EFe@*los) -*rint- -ichB QZsZ+Z-QB no@:reB e+a+B alturaGH
*esti#$ e u$ Archivo Secue$cia! e Estructuras: &os co@*onentes o registros +e un archivo *ue+en ser +e cualuier ti*o +e +atosB +es+e ti*os :ásicos enterosB -loatB charB etc..G hasta estructuras +e +atos. &as o*eraciones en cualuiera +e los casos son sie@*re iguales. %ea@os un eFe@*lo +e un archivo +e estructuras) A*ertura)
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | *)
Escritura) -rite [clienteB si6eo-clienteGB 3B -GH &ectura) -rea+ [clienteB si6eo-clienteGB 3B -GH &as o*eraciones :ásicas en el @anteni@iento o gestin +e un archivo secuencial son las siguientes) Co@*ro:acin +e la e1istencia +el archivo) Se a:rirá el archivo en @o+o lecturaB si no e1isteB se *er@itirá la creacin +el @is@oB volvi9n+olo a a:rir en @o+o escritura. Altas) Se a:rirá el archivo en @o+o aOa+ir.
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | *8
De tal -or@a ue to+o lo ue escri:a@os en -i@* sal+rá *or i@*resora. Por tal @otivoB +e:e@os *ensar ue seen trata +e un+e archivo usare@os -unciones +e escritura archivos te1to. +e te1toB *or lo cualB CITATIN &ui40 Jl 24,0 K
Archivos e Acceso Directo: A +i-erencia +e los archivos secuencialesB en los archivos +irectos o aleatorio no es necesario recorrerlo co@*leta@ente *ara acce+er un registro en *articularB sino se *ue+e colocar el a*unta+or interno +el archivo +irecta@ente en el registro +esea+oB *er@itien+o con esto @ayor ra*i+e6 +e acceso. Ca:e +estacar ue *ara re*osicionar este a*unta+or se utili6a el co@an+o SEE\ in+icán+ole la +ireccin +el registro ue se +esea. Per@iten situarse en cualuier *unto +el archivo *ara actuali6ar ciertos valores. &a +istincinB *or tantoB entre archivos +e acceso secuencial y archivos +e acceso aleatorio no es sino una +istincin entre u9 o*eraciones se utili6an *ara acce+er a los +atos.
Con el uso +el acceso +irecto se *ue+e acce+er +e -or@a +irecta a la *osicin ue se reuiera sin tener ue *asar *or las *osiciones anterioresB co@o si -ueran arreglos en la @e@oria. &o cual *er@itirá to@ar @o+i-ica e insertar in-or@acin en la *osicin ue se +esee. &as o*eraciones +e lectura yXo escritura *ue+en hacerse en cualuier *unto +el archivo. 8uchas veces se +esea acce+er un +ato concreto +e un archivo en una *osicin relativa conoci+a +e ante@ano. Por eFe@*loB uere@os leer o escri:ir en el registro /3# +e un archivo. El acceso +irecto está *ensa+o *ara resolver -ácil@ente estas o*eraciones. !n archivo +e acceso +irecto *er@ite leer o escri:ir :loues +e in-or@acin en un *unto cualuiera +el archivoB ue se *asa co@o *ará@etro en la lla@a+a +el siste@a corres*on+iente. $ay total li:erta+ en el or+en en ue se acce+e a los registros. Por eFe@*loB el 3,B luego /3#B luego ] este @o+o +e acceso es @uy til en siste@a +e :ase +e +atos. Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos CITATIN &ui4, Jl 24,0 K
Co$su!ta Directa: A continuacinB se @uestra un +iagra@a +e -luFo +e una rutina +e consulta +irecta +e un registro en *articular. En esta rutina se @aneFa el archivo PRD!CT.SEC segn el registro +eclara+o. A +i-erencia +el recorri+o secuencialB en el ue es necesario leer ca+a registro +el archivoB en la consulta +irecta se calcula la +ireccin -;sica +el registro solicita+o y se *osiciona el a*unta+or +el archivo +irecta@ente en ese registro *ara leerlo.
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
P á g i n a | *9
Archivos Secuenciales y Directos
P á g i n a | 23
Or+a$i,aci#$ Directa: !n archivo está organi6a+o en @o+o +irecto cuan+o el or+en -;sico no corres*on+e con el or+en lgico. &os +atos se sitan en el archivo y se acce+e a ellos +irecta aleatoria@ente @e+iante su *osicinB es +ecirB el lugar relativo ue ocu*an. Esta organi6acin tiene la ventaFa ue se *ue+en leer y escri:ir registros en cualuier or+en y *osicin. Son @uy rá*i+os +e acceso a la in-or@acin ue contiene. &a organi6acin +irecta tiene el inconveniente +e ue se necesita *rogra@ar la relacin e1istente entre el conteni+o +e un registro y la *osicin ue ocu*a. El acceso a los registros en @o+o +irecto i@*lica la *osi:le e1istencia +e es*acios li:res +entro +el so*orteB y *or consecuencia *ue+en e1istir es*acios li:res entre registros. &a corres*on+encia entre clave y +ireccin +e:e *o+er ser *rogra@a+a y la +eter@inacin +e la relacin entre un registro y su *osicin -;sica se o:tiene @e+iante una -or@ula. &as con+iciones *ara ue un archivo sea +e organi6acin +irecta son) Al@acena+o en un so*orte +irecciona:le. &os registros +e:en contener un ca@*o es*eci-ico +eno@ina+o clave ue i+enti-ica ca+a registro +e @o+o nicoH es +ecirB +os registros +istintos no *ue+en tener un @is@o valor +e clave. CITATIN Ign35 Jl 24,0 K
Coi"icaci#$ e Archivos Directos: os archivos +e acceso aleatorio son @ás versátilesB *er@iten acce+er a cualuier *arte +el -ichero en cualuier @o@entoB co@o si -ueran arrays en @e@oria. &as o*eraciones +e lectura yXo escritura *ue+en hacerse en cualuier *unto +el archivo. En general se suelen esta:lecer ciertas nor@as *ara la creacinB aunue no to+as son o:ligatorias) A:rir el archivo en un @o+o ue te *er@ita leer y escri:ir. Esto no es i@*rescin+i:leB es *osi:le usar archivos +e acceso aleatorio slo +e lectura o +e escritura. A:rirlo en @o+o :inarioB ya ue algunos o to+os los ca@*os +e la estructura *ue+en no ser caracteres. !sar -unciones co@o -rea+ y -riteB ue *er@iten leer y escri:ir registros +e longitu+ constante +es+e y hacia un -ichero. !sar la -uncin -seeL *ara situar el *untero +e lecturaXescritura en el lugar a*ro*ia+o +e tu archivo. Por eFe@*loB su*onga@os ue nuestros registros tienen la siguiente estructura) Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 2*
Tenien+o cuenta los registros a contarse +es+e el ceroB *ara hacer una en lectura +elue registro n@ero 5e@*ie6an usare@os)
Análoga@enteB *ara hacer una o*eracin +e escrituraB usare@os)
8uy i@*ortante) +es*u9s +e ca+a o*eracin +e lectura o escrituraB el cursor +el -ichero se actuali6a auto@ática@ente a la siguiente *osicinB as; ue es :uena i+ea hacer sie@*re un -seeL antes +e un -rea+ o un -rite. En el caso +e strea@sB la -or@a +e tra:aFar es análoga)
' *ara hacer una o*eracin +e escrituraB usare@os)
Ca!cu!ar Lo$+itu e u$ 'ichero: Para calcular el ta@aOo +e un -icheroB ya sea en :ytes o en registros se suele usar el siguiente *roce+i@iento)
En el caso +e strea@s)
&orrar re+istros:
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 22
Si el ca@*o %ali+o tiene un valor *re-iFa+oB *or eFe@*lo YSY o Y YB el registro es váli+o. Si tiene un valor *re-iFa+oB *or eFe@*lo YNY o YWYB el registro será inváli+o o se consi+erará :orra+o. De este @o+oB *ara :orrar un registro slo tienes ue ca@:iar el valor +e ese ca@*o. Pero hay ue tener en cuenta ue será el *rogra@a el encarga+o +e tratar los registros +el @o+o a+ecua+o +e*en+ien+o +el valor +el ca@*o %ali+oB el hecho +e @arcar un registro no lo :orra -;sica@ente. Si se uiere ela:orar @ásB se *ue+e @antener un -ichero au1iliar con la lista +e los registros :orra+os. Esto tiene un +o:le *ro*sito)
^ue se *ue+a +iseOar una -uncin *ara sustituir a -seeL G +e @o+o ue se tengan en cuenta los registros @arca+os. ^ueB al insertar nuevos registrosB se *ue+an so:rescri:ir los anterior@ente @arca+os co@o :orra+osB si e1iste alguno.
2 $acer co*ia +el -iche en otroes -ich eroBte+ioso *ero sin co*i aryelreuiere regis tro ue seuna uiere :orrar. Esterosiste@a @ás y lentoB cerrar el -ichero y :orrarlo o reno@:rarloB antes +e *o+er usar +e nuevo la versin con el registro eli@ina+o. &o nor@al es hacer una co@:inacin +e a@:osB +urante la eFecucin nor@al +el *rogra@a se :orran registros con el @9to+o +e @arcarlosB y cuan+o se cierra la a*licacinB o se +etecta ue el *orcentaFe +e registros :orra+os es alto o el usuario as; lo +eci+eB se Qe@*auetaQ el -ichero usan+o el segun+o @9to+o.
'u$ci#$ '-rite: &a -uncin -rite trans-iere un archivo un :ytes al e@*e6an+o en una *osicinaes*eci-ica+a +e n@ero @[email protected]*eci-ica+o &os +atos se+eescri:en *rinci*io +e la *osicin en el archivo in+ica+a @e+iante el a*unta+or +e *osicin +e un archivo. &a -uncin -rea+ trans-iere un n@ero es*eci-ica+o +e :ytes +e la *osicin en el archivoB es*eci-ica+o *or el a*unta+or +e *osicin +e
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 20
archivoB a un área en @e@oria e@*e6an+o a *artir +e una +ireccin es*eci-ica+a. Por eFe@*loB *ara escri:ir un enteroB en ve6 +e es*eci-icar) -*rint- cuentaPtrB MZ+?B nu@eroGH *ara escri:ir el @is@o n@ero +e ti*o intB se *ue+e es*eci-icar) -rite [nu@eroB si6eo-intGB 3B cuentaPtrGH @ás a+elante ese +ato *ue+e ser le;+o con la -uncin -rea+. El *ri@er *ará@etro +e -*rint- es la +ireccin +e la varia:le a escri:ir en +iscoB el segun+o el ta@aOo +e :ytes +el +ato ue se va a escri:ir +evuelto *or la -uncin si6eo-GB el tercer *ará@etro es el n@ero +e +atos ue se van a escri:ir +el ta@aOo es*eci-ica+o *or lo co@n será 3G y el lti@o es el a*unta+or al archivo ue se a:ri *ara escritura o @o+i-icacin. Para tener +atos +e ta@aOo -iFo en los archivos y lo ue -or@al@ente serán registros +el archivo se crea una estructuraB es +ecirB un nuevo ti*o +e +ato +e-ini+o *or el usuario y co@*uesto *or uno o varios ti*os +e +atos con sus no@:res +e ca@*o res*ectivos. &a +eclaracin +e un ti*o struct se hace antes +e la -uncin @ain +e la siguiente @anera)
Por eFe@*loB *ara crear una estructura ue *er@ita al@acenar los +atos +e un cliente *ue+e +eclararse +e la siguiente @anera)
De este @o+o se crea una estructura +e no@:re DatosCliente con los ca@*os +escritosB en el *rogra@a se *o+rán +eclarar varia:les +e ti*o DatosCliente y *ara acce+er a ca+a uno +e los ca@*os se utili6ará la notacin registro. ca@*o. &a +eclaracin +e una varia:le +e este ti*o se hará)
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 27
De esta @anera la varia:le @icliente tiene los cuatro ca@*os +e-ini+os *ara el ti*o +e estructuraB y el no@:re +el cliente se acce+e con la siguiente l;nea)
El uso +e una estructura y +e las -unciones -rea+B -rite y -seeL será :ásica@ente la +i-erencia entre *rogra@ar *ara utili6ar un archivo secuencial y un archivo +e acceso +irecto. C@o crear un archivo +e acceso +irecto.
Escri.ir / !eer atos e u$ archivo e acceso irecto &a intro+uccin +e los +atos será @e+iante la @is@a -uncin -riteB +on+e lo ue se escri:e es la varia:le +el ti*o +e la estructura +esea+aB con el ta@aOo +e la @is@a estructura y el a*unta+or al archivo. Ca+a +ato +e:e ser llena+o
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 25
con scan- al ca@*o +esea+o +e la @is@a estructura. A continuacinB se *resenta un eFe@*lo +e ca*tura +e +atos y escritura al archivo.
&a lectura +e ca+a registro en el archivo se hará con la -uncin -rea+B cuyos *ará@etros son) la varia:le ue al@acena los +atos le;+os +el archivoB el ta@aOo +e la estructura o +el ti*o +e +atoB el n@ero +e +atos a leer y el a*unta+or al archivo.
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 24
CITATIN Sal43 Jl 24,0 K
'u$cio$es / (0toos e Archivos: Operacio$es co$ archivos:
Creacin +e Archivos) Es la as ignacin +e un es *acio en el @e+ io +e al@acena@iento @e+iante la colocacin +el no@:re +el archivo en el +irectorio. A*ertura) Esta:leci@iento +e un canal +e co@unicacin con un archivo +eter@ina+o. En C se utili6a el co@an+o -o*en. Cierre) Cancelacin +e un canal +e co@unicacin *revia@ente esta:leci+o con un archivo. En C se utili6a el co@an+o -close GH Asignacin) corres*on+iente.Se le asocia un no@:re +e archivo con la e1tensin Actuali6acin) Es un *roceso ue @o+i-ica el conteni+o +e la :ase +e +atos altasB :aFasB ca@:iosG.
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 2)
Al es*eci-icar la a*ertura +e un archivo en el c+igo en CB el *rogra@a so:rescri:e cualuier archivo e1istente lla@a+o Datos.t1t en el +irectorio +e tra:aFo +el *rogra@a. De*en+ien+o +el *ro*sito +el *rogra@a es *osi:le ue sea necesario agregar +atos a los ya e1istentes en el archivoB o ui6á sea necesario ue las o*eraciones +el *rogra@a no se lleven a ca:o en caso +e ue el archivo es*eci-ica+o e1ista en el +iscoB *ara 9stos casos *o+e@os es*eci-icar el @o+o +e a*ertura +el archivo incluyen+o un *ará@etro a+icional en el constructorB cualuiera +e los siguientes)
ios))a** *eraciones +e aOa+i+ura. ios))ate Coloca el a*unta+or +el archivo al -inal +el @is@o. ios))in *eraciones +e lectura. Esta es la o*cin *or +e-ecto *ara o:Fetos +e la clase i-strea@. ios))out *eraciones +e escritura. Esta es la o*cin *or +e-ecto *ara o:Fetos +e la clase o-strea@. ios))nocreate Si el archivo no e1iste se sus*en+e la o*eracin. ios))nore*lace Crea un archivoB si e1iste uno con el @is@o no@:re la o*eracin se sus*en+e. ios))trunc Crea un archivoB si e1iste uno con el @is@o no@:re lo :orra.
ios)):inary *eraciones :inarias.
'u$cio$es 1ie1.ros e Iostrea1: *ut char cG escri:e un carácter en un -luFo +e sali+a get char[ cG lee un carácter +e un -luFo +e entra+a. rite const charW sB int nG escri:e n :ytes +e la ca+ena s en un -luFo +e sali+a nor@al@ente se usará *ara sali+a :inariaG. rea+ charW sB int nG lee n :ytes +el -luFo +e entra+a y los +e*osita en las ca+enas nor@al@ente se usará *ara entra+a :inariaG. get charW sB int nB char cVQJnQG lee co@o @á1i@o n caracteres +el -luFo +e entra+a incluyen+o el QJ4QG y los intro+uce en la ca+ena sB o hasta ue encuentre el carácter +e ter@inacin *or +e-ecto QJnQB salto +e l;neaGB o el -in +e -ichero. No retira el carácter +e ter@inacin +el -luFo +e entra+a. getline charW sB int nB char cVQJnQG lee co@o @á1i@o n3 caracteres +el -luFo +e entra+aB o hasta ue encuentre el carácter +e ter@inacin *or +e-ecto un -inal +e l;neaG o hasta el -in +e -ichero. Retira el carácter +e ter@inacin +el -luFo +e entra+aB *ero no lo al@acena en la ca+ena s. ignore int nV3B int +eli@VE7G ignora o +escarta los n caracteres siguientes +e un -luFo +e entra+a o un solo carácterB si no se in+ica el valor +e nGB o hasta ue encuentra un cierto carácter +e ter@inacin *or +e-ecto el -in +e -ichero E7G. *eeL G lee un carácter +el -luFo +e entra+aB *ero sin retirarlo +e +icho -luFo.
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 28
*ut:acL char cG +evuelve el carácter c al -luFo +e entra+a +e @o+o ue ser;a lo *ri@ero ue se leer;a en la *r1i@a o*eracin +e entra+aG. CITATIN Ana35 Jl 24,0 K
'u$cio$es 1ie1.ros e 'strea1: (a$e2o e Archivos3 'ILE: Declara la varia:le +on+e se al@acena la ruta +el archivo a utili6arB general@ente se coloca co@o glo:al. Su sinta1is es la siguiente) 7I&E Wno@:reUvaria:leH
"ope$ 456 Per@ite a:rir un archivoB +evolvien+o un valor N!&& sino se a:ri correcta@ente y TR!E si ocurre lo contrario. Su sinta1is es la siguiente) no@:reU7I&E V -o*en Mno@:re +e archivo?B M@o+o?GH 8o+o) r V Slo lectura. V A:re o so:rescri:e. a V AOa+e al -ichero. r V &ectura y escritura. V &ecturaB escritura y so:rescri:e. a V AOa+irB lectura y escritura. NTA) Des*u9s +el @o+o se incluye el ti*o : V :inarioB t V te1toG.
"c!ose 456 Per@ite cerrar un archivoB al -inal +e un *rogra@a es necesario cerrar un archivo *ara no *er+er in-or@acin. Su sinta1is es la siguiente) -closeno@:reU7I&EGH
"puts 456 Escri:e una ca+ena en un -ichero. Su sinta1is es la siguiente) -*utsvaria:leUcharB Wno@:reB varia:leU7I&EGH
"-rite 456 Escri:e en un -ichero uno o varios registros +e la @is@a longitu+B al@acena+os a *artir +e una +ireccinH tra:aFo en conFunto con -rea+ G. Su sinta1is es la siguiente) -rite[registroB si6eo-estructuraGB3B varia:leU7I&EGH
"pri$t" 456 Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 29
Per@ite escri:ir o i@*ri@ir en un archivo. Su sinta1is es la siguiente) -*rint-varia:leU7I&EB Min-or@acin?GH
"rea 456 Per@ite leer registros +e un archivo y *er@ite al@acenar la in-or@acin en una varia:le. Su sinta1is es igual a la +e -rite. -rea+[registroB si6eo-estructuraGB3B varia:leU7I&EGH
"eo" 456 Co@*rue:a el -inal +e un archivo y retorna un valor :ooleano. !sual@ente se co@:ina con algn ciclo -orB i-B hileG. Su sinta1is es la siguiente. -eo-varia:leU7I&EGH
"sca$" 456 Per@ite leer en un archivo utili6an+o una @áscara *ara el ti*o +e +ato ue se lee. Su sinta1is es la siguiente) -scan-varia:leU7I&EB @áscaraB varia:leUregistro. ca@*oGH
"see7 456 Per@ite *osicionar el cursor +entro +el archivo *ara +es*u9s reali6ar una :sue+a. Su sinta1is es la siguiente) -seeLvaria:leU7I&EB longitu+B srcenGH rigen) Es la *osicin a @an+ar el cursor)
CITATIN 7co43 Jl 24,0 K
Ta.!a e Caracter8sticas: De"i$ici#$
Se-ue-"al Es la -or@a :ásica +e organi6ar un conFunto +e registrosB ue -or@an un archivoB utili6an+o una organi6acin secuencial. Rigel Di+ier &*e6 >ong
D"re-,a !n archivo está organi6a+o en @o+o +irecto cuan+o el or+en -;sico no corres*on+e con el or+en lgico.
8ecatrnica 3? .
P á g i n a | 03
Archivos Secuenciales y Directos
Caracter8sticas
Ve$ta2as
3 &ectura o escritura +e +atos en -or@a secuencialB es +ecirB uno tras otroB +e *rinci*io a -in. 2 El or+en -;sico en ue -ueron gra:a+os o escritos los registros es el or+en +e lectura +e los @is@os. # To+os los ti*os +e +is*ositivos +e @e@oria au1iliar so*ortan la organi6acin secuencial. ( E1ige el trata@iento +e ele@entoB *ara esto es necesario una e1*loracin secuencial co@en6an+o +es+e el *ri@er ele@ento. , &os -icheros slo se *ue+en a:rir *ara lectura o *ara escrituraB nunca +e los +os @o+os a la ve6. 5 &a escritura +e nuevos +atos sie@*re se hace al -inal +el archivo. / Para leer una 6ona concreta +el archivo hay ue avan6ar sie@*reB si la 6ona está antes +e la
3 Acceso rá*i+o +e Archivo con el cual se *ue+e acce+er +e -or@a rá*i+a a un *rogra@a o aun -ichero. 2 !n archivo +e acceso +irecto *ue+e @overse o co*iarse a cualuier lugarB *ero sie@*re a*untará a la @is@a +ireccin. # 7uncin +e algunos *rogra@as *ara acce+er rá*i+a@ente a un servicio +e la @is@a. Por eFe@*loB el @en conte1tual *osee archivos +e accesos +irectos *ara -acilitar las tareas. ( En general se suelen esta:lecer ciertas nor@as *ara la creacinB aunue no to+as son o:ligatorias) 3 A:rir el archivo en un @o+o ue te *er@ita leer y escri:ir. Esto no es i@*rescin+i:leB es *osi:le usar archivos +e acceso aleatorio slo +e lectura o +e escritura. 2 A:rirlo en @o+o :inarioB ya ue algunos o to+os los ca@*os +e la estructura *ue+en no ser
6ona lecturaB será actual +enecesario Qre:o:inarQ el archivo.
# caracteres. !sar -unciones co@o -rea+ y -riteB ue *er@iten leer y escri:ir registros +e longitu+ constante +es+e y hacia un -ichero. ( !sar la -uncin -seeL *ara situar el *untero +e lecturaXescritura en el lugar a*ro*ia+o +e tu archivo. 3 &a ventaFa *rinci*al +e un archivo +e ti*o +irecto es la ha:ili+a+ +e acce+er a registros in+ivi+uales +irecta@ente. 2 &os registros se *ue+en
3 &os archivos secuenciales *roveen la @eFor utili6acin +e es*acio y son rá*i+os cuan+o los registros son accesa+os Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
P á g i n a | 0*
Archivos Secuenciales y Directos
Desve$ta2as
secuencial@ente. 2 &os archivos con *oca volatili+a+B gran activi+a+ y ta@aOo varia:le son alta@ente susce*ti:les +e ser organi6a+os secuencial@ente. # la t9cnica +e organi6acin secuencial +e archivos es la ca*aci+a+ +e acceso al QsiguienteQ registro rá*i+a@ente) 8ientras ue el *atrn +e acceso a un archivo secuencial se con-or@e al or+ena@iento +e registros en el archivoB los tie@*os +e acceso serán correcta@ente a+ecua+os. 3 El acceso a un registro es *o:reB la locali6acin +e un +eter@ina+o registro no se *ue+e hacer in+ivi+ual@ente no +e @anera rá*i+aB y el acceso aleatorio es i@*ráctico. 2 A+e@ásB en los archivos secuenciales la +ireccin +e registro está i@*l;cita
acce+er +e -or@a in@e+iata *ara ser actuali6a+os. # _ste ti*o +e acceso a los archivos -acilita consi+era:le@ente la i@*le@entacin +e las :sue+as.
3 Su +esventaFa ra+ica en ue se *ue+e *resentar la @is@a una @is@a +ireccin *ara +i-erentes valores +e llaveB es +ecirB se *resentan colisiones. 2 Presenta +es*er+icio +e es*acios en la +istri:ucin al a6ar +e los registros.
y-allas están vulnera:les a +el siste@a.
CONCLUSIÓN En esta res*ectiva investigacin se +esarrollaron una serie te@as relaciona+os con los archivos o -icheros ue se *ue+e con-or@ar en un *rogra@a +e CB +ivi+i9n+olos +e @anera e1*l;cita *or el ti*o +e +atos co@o el te1tual y el :inarioB y la +ivisin i@*l;cita con el ti*o +e acceso a los archivosB es +ecirB secuencial y +irecto o aleatorio. Se *u+o o:servar ue *ri@ero se @ostr el conteni+o +el +esarrolloB +etallán+olo con sus res*ectivos su:te@as. Al -inal se resu@i con una ta:la +e caracter;sticas conte1tuan+o ta@:i9n las ventaFas y +esventaFas. AhoraB es corres*on+iente resu@ir +e @anera conclusiva el conteni+o @ás i@*ortante +es+e el *unto +e vista *articular. Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 02
Pri@ero es i@*ortante resaltar ue un archivo es un conFunto +e :its al@acena+os en un +is*ositivoB ca+a :it será el resulta+o +e los +atos ue este@os ingresan+o en el -icheroB y *or consiguiente +e:erá guar+arse con un ti*o +e e1tensinB y una +ireccinB en el caso +e C se e@*lea con @ayor -recuencia la e1tensin +e te1to .t1tG sie@*re y cuan+o sea +e ti*o te1tual co@o se es*eci-ic en el +esarrollo. Ahora *ara +i-erenciar entre un archivo con acceso secuencial y aleatorioB no es @uy co@*leFo +e enten+erB *or lo ue sus no@:res lo in+ican a *ri@era instancia. El ti*o secuencial se :asa en el acceso +es+e el *ri@er +ato o registro hasta al lti@oB uno tras otro. Si se reuiere to@ar unoB *ri@ero se +e:e *asar *or los anterioresB *or lo ue se recorre :loue *or :loue. En ca@:ioB el ti*o +irectoB si se reuiere to@ar un archivoB ensegui+a acce+e@os a ellaB sin necesi+a+ +e *asar *or lo anterioresB *or tal @otivo se conoce ta@:i9n co@o aleatorioB a+e@ás +e guar+ar los registros +e esta @anera. Sin e@:argoB no tien+e a ser tan -ácil co@o *areceB *or lo ue la *rogra@acin +e 9sta es @ás co@*leFa ue el secuencialB sa:ien+o ue incluso es necesario e@*lear *unteros. En ca+a uno +e estos accesos se +escri:e la co+i-icacin con sus res*ectivas -unciones y @9to+os ue las con-or@an *ara enten+erlos con @ás clari+a+. 7inal@ente *ue+o e1ternar ue se ha cu@*li+o con el o:Fetivo +e este tra:aFo resaltan+o ca+a te@a ue res*ecta el conce*to +e archivos en C *or lo ue no es tan -ácil inclusive en la +ocu@entacin *ara *o+er co+i-icarB +e:i+o a ue hay una gran canti+a+ +e -or@as y li:rer;as *ara hacerloB *or su*uestoB trat9 +e seleccionar los @ás i@*ortantes.
&I&LIO*RA'ÍA
AguilarB &. `. 244,G. Programación en C: Metodología, Algoritmos y Estructura de Datos. 8a+ri+) 8c=RA>$I&&. AguilarB &. `. 2440G. Fundamentos de Programación:Algoritmos, Estructura de Datos y Objetos. 8a+ri+) 8c=RA>$I&&.
RE'ERENCIA ELECTRÓNICA Rigel Di+ier &*e6 >ong
8ecatrnica 3? .
Archivos Secuenciales y Directos
P á g i n a | 00
Ca:anesB I. 24452435G. A#rendeAProgramar.com. :teni+o +e htt*)XX.a*ren+ea*[email protected]@X@o+XresourceXvie.*h*i+V3/3 Corona+oB S. P. 2443G. !tt#:$$c.conclase.net$%ic!eros$&ca#'((). :teni+o +e htt*)XXc.conclase.netX-icherosXca*V44(. &aureanoCrucesB A. &. 2435G. Programación Estructurada en C**. :teni+o +e htt*)XXLali.a6c.ua@.@1XclcX4#U+ocenciaXlicenciaturaXeU+atosXProgra@acio
Rigel Di+ier &*e6 >ong
8ecatrnica 3? .