Sie sind auf Seite 1von 3

UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

LICENCIATURA: CIENCIAS DE LA INFORMATICA

ASIGNATURA: ESTRUCTURA Y REPRESENTACION DE DATOS

ALUMNO: GARCIA AGUILAR SALVADOR

SECUENCIA: 2CV2

BOLETA: 2008600337

TEMA: INVESTIGACION DEL USO DE LA MEMORIA EN PASCAL

PROFESOR(A): GONZALEZ RIVERA SANDRA

FECHA: MIERCOLES 6 DE FEBRERO DEL 2008

Pascal: Pascal es un lenguaje de alto nivel. Es bastante veterano, por lo cual apenas se usa en la actualidad. Es muy potente en la gestin de memoria, y su uso es aconsejable para todos aquellos que se quieran iniciar en la programacin, ya que aun siendo un lenguaje de alto nivel, y en consecuencia sencillo, es bastante potente para cualquier tipo de aplicacin de texto. Memoria Dinmica en Pascal En teora los programas PASCAL permiten utilizar 64KB de memoria esttica. Esto generalmente no es suficiente para aplicaciones reales, por eso pascal nos permite acceder a un sector de memoria que puede administrar el programador, tomando y liberando memoria arbitrariamente mientras las capacidades de la computadora en dnde ejecuta el programa lo permitan. En memoria dinmica hay tres estructuras de datos principales que implementaremos en los ejemplos, a saber: Listas Pilas Colas Punteros Hay un tipo de variable que nos permitir construir las estructuras dinmicas. A esta variable se la conoce como Puntero, y es una variable de tipo esttica pero con la particularidad de que su dominio de valores son las direcciones de memoria disponibles para el programador. Esto significa que la variable tendr como contenido una direccin de memoria (que puede ser la direccin dnde se encuentra, alguna otra variable, incluso la direccin dnde se encuentra otro puntero). En PASCAL, declaramos los punteros con el smbolo ^ y una direccin de memoria a la cual lo hacemos apuntar. El tamao que ocupa un puntero est dado por el tamao necesario para almacenar una direccin de memoria, en muchas PCs hogareas este valor suele ser 4 bytes. VAR PUNTERO: ^INTEGER; En el cdigo anterior hemos declarado un puntero 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. Si bien el puntero est listo para guardar una direccin an no lo hemos inicializado con ninguna direccin, el siguiente paso es reservar la memoria de un entero en el rea de HEAP (dnde se aloca la memoria solicitada dinmicamente) y guardar la direccin de ese lugar en el puntero. Para realizar esto utilizamos la instruccin NEW (), en caso de que la mquina no obtenga memoria para alocar el pedido, al puntero se le asignara la direccin NIL, cuyo significado es la "nada", es decir el puntero no apunta a ningn sector de la memoria. Al terminar de utilizar la memoria a la cual accedamos con el puntero, lo recomendable es siempre liberarla, para que quede disponible para otras aplicaciones que soliciten memoria. Ahora bien, tiene sentido que uno quiera acceder al valor de lo que uno hasta el momento slo conoce la direccin que almacena el puntero. Pascal nos permite referirnos al valor que se encuentra en la direccin de memoria de un puntero simplemente utilizando el nombre del puntero seguido inmediatamente por el smbolo ^. PUNTERO^:= 25; WRITELN (PUNTERO^); En las dos instrucciones anteriores hemos asignado al entero al cual apunta PUNTERO con 25, y luego hemos mostrado tal valor por pantalla. Otro ejemplo, que muestra la diferencia entre el valor de un puntero y el valor que se haya en la direccin de memoria que guarda el puntero PROGRAM PUNTEROS_01; VAR PUNTERO:^INTEGER; AUXILIAR:^INTEGER; BEGIN NEW(PUNTERO); PUNTERO^:= 154;

AUXILIAR:= PUNTERO; WRITELN( PUNTERO^ ); WRITELN( AUXILIAR^ ); DISPOSE(PUNTERO); END. En el ejemplo anterior se ve el uso de las dos funcionalidades del puntero, cuando asignamos la direccin de memoria que contiene PUNTERO como valor, no utilizamos el smbolo ^, debido a que justamente estamos guardando la direccin en otro puntero llamado AUXILIAR. En cambio cuando queremos imprimir los valores de los enteros a los cuales apuntan (en este caso ambos apuntan a lo mismo) debemos utilizar el el smbolo ^.

Organizacin de la memoria en Pascal El uso del stack en LISP es algo diferente. Las llamadas a subprogramas (funciones) son estrictamente anidadas y un stack podra ser usado para mantener los registros de activacin. Cada registro de activacin contiene un punto de retorno y temporales para la evaluacin de expresiones y la transmisin de parmetros. Los ambientes de referencia locales podran ser tambin colocados en el mismo stack, pero el programador puede manipular estas asociaciones. Por lo tanto, normalmente estos son almacenados en un stack separado, representada como una lista ligada, llamada la A-lista. Una lista de memoria usada por LISP se muestra en la siguiente figura.

BIBLIOGRAFIA http://codigomaldito.blogspot.com/2007/07/memoria-dinmica-en-pascal.html http://209.85.173.104/search?q=cache:zBEnb1F8s QJ:www.mcc.unam.mx/~cursos/Lenguajes2/documentos/almacenamiento.doc+uso+de+l a+memoria+de+pascal&hl=es&ct=clnk&cd=13&gl=es