Uso de La Memoria en Pascal

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

Transcript of Uso de La Memoria en Pascal

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