5/14/2018 Uso de La Memoria en Pascal - slidepdf.com
http://slidepdf.com/reader/full/uso-de-la-memoria-en-pascal 1/3
UNIDAD PROFESIONAL INTERDISCIPLINARIA DEINGENIERIA 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
5/14/2018 Uso de La Memoria en Pascal - slidepdf.com
http://slidepdf.com/reader/full/uso-de-la-memoria-en-pascal 2/3
Pascal: Pascal es un lenguaje de alto nivel. Es bastante veterano, por lo cual apenas seusa en la actualidad. Es muy potente en la gestión de memoria, y su uso esaconsejable para todos aquellos que se quieran iniciar en la programación, ya que
aun siendo un lenguaje de alto nivel, y en consecuencia sencillo, es bastantepotente para cualquier tipo de aplicación de texto.
Memoria Dinámica en PascalEn teoría los programas PASCAL permiten utilizar 64KB de memoria estática.Esto generalmente no es suficiente para aplicaciones reales, por eso pascal nos permite acceder aun sector de memoria que puede administrar el programador, tomando y liberando memoriaarbitrariamente mientras las capacidades de la computadora en dónde ejecuta el programa lopermitan.En memoria dinámica hay tres estructuras de datos principales que implementaremos en losejemplos, a saber:
• Listas• Pilas• Colas
PunterosHay un tipo de variable que nos permitirá construir las estructuras dinámicas. A esta variable se laconoce como Puntero, y es una variable de tipo estática pero con la particularidad de que sudominio de valores son las direcciones de memoria disponibles para el programador.Esto significa que la variable tendrá como contenido una dirección de memoria (que puede ser ladirección dónde se encuentra, alguna otra variable, incluso la dirección dónde se encuentra otropuntero).En PASCAL, declaramos los punteros con el símbolo ^ y una dirección de memoria a la cual lohacemos apuntar. El tamaño que ocupa un puntero está dado por el tamaño necesario paraalmacenar una dirección de memoria, en muchas PCs hogareñas este valor suele ser 4 bytes.
VAR PUNTERO: ^INTEGER;
En el código anterior hemos declarado un puntero llamado PUNTERO que está apuntando a un tipode dato entero, es decir que en él podemos almacenar valores de direcciones de memoria dónde seencuentren enteros.Si bien el puntero está listo para guardar una dirección aún no lo hemos inicializado con ningunadirección, el siguiente paso es reservar la memoria de un entero en el área de HEAP (dónde sealoca la memoria solicitada dinámicamente) y guardar la dirección de ese lugar en el puntero.Para realizar esto utilizamos la instrucción NEW (), en caso de que la máquina no obtenga memoriapara alocar el pedido, al puntero se le asignara la dirección NIL, cuyo significado es la "nada", esdecir el puntero no apunta a ningún sector de la memoria.Al terminar de utilizar la memoria a la cual accedíamos con el puntero, lo recomendable es siempreliberarla, 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 sólo
conoce la dirección que almacena el puntero. Pascal nos permite referirnos al valor que seencuentra en la dirección de memoria de un puntero simplemente utilizando el nombre del punteroseguido inmediatamente por el símbolo ^.
PUNTERO^:= 25;WRITELN (PUNTERO^);
En las dos instrucciones anteriores hemos asignado al entero al cual apunta PUNTERO con 25, yluego 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 ladirección de memoria que guarda el puntero
PROGRAM PUNTEROS_01;VARPUNTERO:^INTEGER;AUXILIAR:^INTEGER;
BEGINNEW(PUNTERO);PUNTERO^:= 154;
5/14/2018 Uso de La Memoria en Pascal - slidepdf.com
http://slidepdf.com/reader/full/uso-de-la-memoria-en-pascal 3/3
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 ladirección de memoria que contiene PUNTERO como valor, no utilizamos el símbolo ^, debido a que
justamente estamos guardando la dirección en otro puntero llamado AUXILIAR. En cambio cuandoqueremos imprimir los valores de los enteros a los cuales apuntan (en este caso ambos apuntan alo mismo) debemos utilizar el el símbolo ^.
Organización de la memoria en Pascal
El uso del stack en LISP es algo diferente. Las llamadas a subprogramas (funciones) sonestrictamente anidadas y un stack podría ser usado para mantener los registros de activación. Cadaregistro de activación contiene un punto de retorno y temporales para la evaluación de expresionesy la transmisión de parámetros. Los ambientes de referencia locales podrían ser también colocadosen 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:zBEnb1F8sQJ:www.mcc.unam.mx/~cursos/Lenguajes2/documentos/almacenamiento.doc+uso+de+la+memoria+de+pascal&hl=es&ct=clnk&cd=13&gl=es