punteros y archivos de texto en pascal

13
Un puntero es una variable que contiene la dirección de memoria donde se encuentra almacenado un dato, es la dirección de “algo” en la memoria del ordenador. Una variable de tipo apuntador o puntero es una variable que almacena un valor que es la dirección de una posición de la memoria en la que se almacena otro dato de cualquiera de los tipos vistos hasta ahora excepto de tipo archivo (file of ... , text o file). Las variables puntero se emplean generalmente para almacenar direcciones de memoria de variables dinámicas en el segmento de montículo. Es muy importante destacar que las variables puntero que se empleen al principio serán variables estáticas, pero más adelante se introducirán también variables dinámicas de tipo puntero. Los punteros son también llamados apuntadores. Son tipos de datos que permiten crear estructuras de datos dinámicas, las cuales pueden variar en tamaño y memoria requerida. Las variables que se crean y se destruyen durante la ejecución se llaman variables dinámicas o anónimas. Así, durante la ejecución de un programa, puede haber una posición de memoria específica asociada con una variable dinámica y posteriormente puede no existir ninguna posición de memoria asociada con ella. Punteros en Pascal Programación

Upload: anonymous-55dqxee70b

Post on 18-Aug-2015

313 views

Category:

Documents


4 download

DESCRIPTION

punteros y archivos de texto en pascal

TRANSCRIPT

Unpunteroesunavariablequecontienela direccindememoriadondeseencuentra almacenado un dato, es la direccin de algo en la memoria del ordenador. Una variable de tipo apuntadoropunteroesunavariableque almacenaunvalorqueesladireccindeuna posicindelamemoriaenlaquesealmacena otro dato de cualquiera de los tipos vistos hasta ahoraexceptodetipoarchivo(fileof...,texto file). Lasvariablespunteroseempleangeneralmenteparaalmacenar direccionesdememoriadevariablesdinmicasenelsegmentode montculo. Es muy importante destacar que las variables puntero que se empleenalprincipiosernvariablesestticas,peromsadelantese introducirn tambin variables dinmicas de tipo puntero. Lospunterossontambin llamadosapuntadores.Sontipos dedatosquepermitencrear estructuras de datos dinmicas, las cualespuedenvariarentamaoy memoriarequerida.Lasvariables que se crean y se destruyen durante laejecucinsellamanvariables dinmicasoannimas.As, durantelaejecucindeun programa, puede haber una posicin de memoria especfica asociada con unavariabledinmicayposteriormentepuedenoexistirninguna posicin de memoria asociada con ella. Punteros en Pascal Programacin Representacin Grfica Unaestructuradedatosdinmicaesunacoleccindeelementos llamadosnodosdelaestructura-normalmentetiporegistro-quese enlazan o encadenan juntos. Este enlace se establece asociando con cada nodo un puntero que apunta al nodo siguiente de la estructura. Aldefinirunpunterosedebeindicareltipodevaloresquese almacenarn en las posiciones designadas por los punteros. Esto se debe aquelosdiferentestiposdedatosrequierendistintascantidadesde memoriaparaalmacenarsusconstantes,unavariablepunteropuede contener una direccin de una posicin de memoria adecuada slo para un tipo dado. En PASCAL, declaramos los punteros con el smbolo ^ y una direccin dememoriaalacuallohacemosapuntar.Eltamaoqueocupaun puntero est dado por el tamao necesario para almacenar una direccin de memoria, en muchas PCs hogareas este valor suele ser 4 bytes. Enelcdigoanteriorhemosdeclaradounpuntero llamado PUNTERO que est apuntando a un tipo de dato entero, es decir que en l podemos almacenar valores de direcciones de memoria dnde se encuentren enteros. VAR PUNTERO:^INTEGER; Dato Puntero Variable Referencia Sibienelpunteroestlistopara guardar una direccin an no lo hemos inicializadoconningunadireccin,el siguientepasoesreservarlamemoria de un entero en el rea de HEAP (dnde sealocalamemoriasolicitada dinmicamente) y guardar la direccin de ese lugar en el puntero. PararealizarestoutilizamoslainstruccinNEW (),encasodequela mquinanoobtengamemoriaparaalocarelpedido,alpunterosele asignaraladireccinNIL,cuyosignificadoesla"nada",esdecirel puntero no apunta a ningn sector de la memoria. Al terminar de utilizar la memoria a la cual accedamos con el puntero, lorecomendableessiempreliberarla,paraquequededisponiblepara otras aplicaciones que soliciten memoria. Para poder usar una variable puntero es necesario: Definir el tipo de dato (o estructura) al queseapunta.(Estadeclaracinse realiza dentro de la seccin TYPE). Declararlasvariablespunterosque seannecesarias(estadeclaracinse realiza dentro de la seccin VAR). En Pascal un puntero slo puede sealar a objetos de un mismo tipo, el establecido en la declaracin. Definicin y Declaracin de Punteros Unavariabledetipopunteroocupa unacantidaddememoriafija, independientedeltipodedatoalque apunta. Undatoreferenciado,comoeldel ejemplo, no posee existencia inicial, o loqueeslomismonoexiste inicialmenteespacioreservadoen memoria para l. El contenido de la variable referenciada por el puntero se denota: Puntero^ Las operaciones permitidas para esta nueva variables son: Asignacin Lectura Escritura Todas las operaciones legales que se puedan realizar con dicho tipo. Conocer ms acerca de las funciones, procedimientos y operaciones que podes utilizar yrealizar en el programa de pascal Algunas Observaciones al Respecto Operaciones Bsicas con Variables Referenciadas Las nicas operaciones vlidas son Lacomparacin(secomparanlas direcciones,noloscontenidosdelos datos apuntados).Apnum1=Apnum2 Laasignacin(seasignanlas direcciones entre s, no los contenidos de los datos apuntados). Apnum1:=Apnum2 La Comparacin Apnum1=Apnum2 La comparacin anterior dara como resultado el valor false ya que cada uno apunta a una direccin de memoria diferente. Apnum1 33 Apnum2 Operaciones Bsicas con Punteros La Asignacin Apnum1:=Apnum2 Los cambios efectuados sobre Apnum1 afectan a la variable Apnum2 (son indistintas) (Alliasing). El espacio de memoria reservado inicialmente por el puntero Apnum1 sigue situado en memoria. Una adecuada gestin de la memoria hubiera exigido Apnum1 35 Apnum2 Apnum1 35 Apnum2 Losarchivos,(adiferenciadelos vectores,variables,matrices,arrays deregistros)sonestructurasquese guardandemodopermanenteen dispositivosdealmacenamiento definitivo(discorgido,disquete, reproductor de mp3). Los archivos de textosegnladefinicinesuna secuencialneadecaracterespuesto uno tras otro, los caracteres son todos aquellos que estn incluidos en el cdigo ASCII, los archivos de texto son estructuralmente los ms simples y sencillos, cuando nosotros creamos un archivo de texto en pascal, ese archivo lo podemos ver y modificar en elBlocdeNotas,NotePadocualquierotroprogramaquemanipule archivos de texto, Atencin, no hay que confundir los archivos de texto con los archivos doc. de Word, los archivos de Word incluyen adems del texto etiquetas tipo HTML que sirven para especificar las alineaciones, colores etc. Word puede manejar los archivos de texto pero se tiene que guardar como eso, como archivos de texto. Adems podemos hacer lo contrario, podemos crear un archivo de texto conelblocdenotas,Wordinclusoypodemosmodificarloconun programa en pascal y sern totalmente legibles Unarchivoofichero(file)esunaestructuradedatosqueresideen memoriasecundaria,consistenteenunconjuntodeinformaciones estructuradasenunidadesdeaccesodenominadasregistros,todosdel mismo tipo y en nmero indeterminado. En contraste con los arreglos, eltamaodelosarchivosnoesfijo,yestlimitadosolamenteporla capacidad de almacenamiento disponible. Adems cuando uno apaga la mquinalosarreglossepierdensucontenido,elcontenidodelos archivos no se pierde por esta causa. Archivos de Texto en Pascal ProgramacinLosarchivosengeneral,estncompuestosporregistros.Mediante programasadecuadossepuedenmanipularlosdistintostiposde archivos (texto, tipeados, no tipeados). Cada archivo es referenciado por unidentificador(sunombreysuextensin).Cuandohablamosde archivos tipeados, nos referimos a un archivo de registros. Existendosmtodosdeaccesoaunarchivo.Elaccesosecuencialyel accesodirecto.Elaccesosecuencialexigeeltratamientoelementoa elementomientraselaccesodirectopermitetomarunelemento determinadoreferenciadoporsuposicinenelsoportede almacenamiento. RegistroLgico:Queescadaunodeloscomponentesdelarchivo, conteniendoelconjuntodeinformacionesquesetratandemanera unitaria.Estconstituidoporunoomselementosdenominados campos, que pueden ser de diferentes tipos y que a su vez pueden estar compuestos por sub campos.Siunarchivocontienelainformacindeunconjuntodeindividuosu objetos, sus registros contienen la informacin de cada uno de ellos y los campos los diferentes dates que lo componen.Por ejemplo, en el archivo de empleados de una empresa, cada registro contienelainformacindeunempleadoyloscamposcontienensu nombre, direccin, fecha de ingreso, etc.RegistroFsico:obloquecorrespondealacantidaddeinformacin que se transfiere en cada operacin de acceso (lectura o escritura). Unregistrolgicoyregistrofsico,sediferencianenqueeltamaoy formatodelregistrolgicolosdefineelprogramador,mientrasqueel tamao del registro fsico viene dado por las caractersticas fsicas de la computadora utilizada. Los Registros en un Archivo son de Dos Tipos Las principales caractersticas que diferencian esta estructura de dates de las restantes son las siguientes: Residenciaensoportesdeinformacinexternos,tambin denominados memorias secundarias o auxiliares, como son las cintas y discos (magnticos u pticos). Independencia respecto de los programas, lo que significa que la vida del archivo no est limitada por la vida del programa que lo cre y tambinqueendiferentesmomentospuedenhacerusodelmismo archivo diferentes programas.Permanenciadelasinformacionesalmacenadas,esdecir,la informacincontenidaenunarchivonodesaparececuandose desconectalacomputadora,adiferenciadetodaslasinformaciones almacenadas en la memoria central.Grancapacidaddealmacenamiento,siendoestacapacidad tericamenteilimitada;porelcontrario,lasestructurasdedatosque residen en la memoria central tiene l imitado su tamao por la capacidad de sta. Caractersticas de los Archivos TodoslosarchivosdeTurboPascal,conindependenciadesutipo, comparten caractersticas comunes. Todos los archivos se utilizan como entrada y/o salida Elsistemaoperativoalmacenayaccedeaarchivos,genera directorios,copia,renombraytransfierearchivosentrediscos, memoria y dispositivos de E/S (modem, impresora...). Losarchivossepuedenalmacenarendisquetesyunidadesde discos duros. Existen otros dispositivos de almacenamiento (cinta, discos pticos, discos RAM, etc.), aunque son menos frecuentes. Los archivos de texto estndar de Turbo Pascal tienen la extensin .TXT; porconsiguiente,escasinormaelusodelaextensin.DATpara aquellos archivos creados por Ud. O sus programas Operaciones Sobre ArchivosEntre las operaciones ms usuales que se realizanconarchivosdestacanla creacin,copia,consulta,clasificacin, concatenacin,interseccin,fusin, particin, actualizacin, reorganizacin y borrado.Estas operaciones se llevan a cabo bien por un programa del usuario, o bien por un programa del propio sistema operativo de la computadora. Lasoperacionesmsusualesanivelderegistroson:insercin, supresin,modificacin yconsultadelcontenido delos mismos.Estas operacionessehacengeneralmenteatravsdeprogramasde actualizacin. Archivos en Turbo Pascal Declaracin de archivosPara declarar un archivo como en otros casos se declara primero el tipo y luego una variable asociado al tipo.TypeT_Archivo = file of char; {* archivo de texto *}T_Texto = file of text; VarArchivo: T_Texto; Procedimientos y Funciones de Tratamiento de Archivos Para todos los tipos de archivosSolo para archivos de texto Procedimientos AssignAppend ChDirFlush Close Erase ReadReadln GetDirSetTexBuf MkDirWrite RenameWritelnReset Rewrite RmDi Funciones EofEolnIOResultSeekEof SeekEoln Un archivo de texto est constituido por una serie de lneas de caracteres separadosporCR/LF.Estacombinacinseobtiene,cuandoserealiza una pulsacin de la tecla Intro. () Esto es una prueba de un archivo de texto Cada lnea en un archivo de texto finaliza con CR/LF, Es decir un Retorno de Carro y un Avance de Lnea (Lnea vaca) 45671.45 es la cantidad total Los archivos de texto se terminan con una marca final de archivo Ctrl-Z (eof, end of file). Cuando trabajamos con ellos en Pascal es obligatorio declararlos.Los archivos de texto se pueden crear con el editor del sistema operativo WordPad o con un programa de edicin de texto (Word, WordStar, etc.) en estos casos en el momento de grabarlos (Guardar Como) se elegir la opcinSloTexto.Tambinsepuedeescribirunarchivoutilizandoel editor de Pascal. Ejemplo de cmo crear un archivo de texto Acerca del Blog En la preparacin de un programa, el programadorpuedetenerque escoger entre soluciones alternativas enmuchospuntos.Cadaeleccin debehacerseparasatisfacerlos objetivos y restricciones de la tarea de programacin particular. Por lo tanto este blog estar dirigido al rea de programacin, en el cual se discutirn temas relacionados al Programa de Pascal, y tambin para lograrunconocimientoprofundosobreloscontenidosdePunterosy ArchivosdeTextosenPascaldemaneraqueaprendamosausarel programa de una mejor manera.