Informatica

Solo disponible en BuenasTareas
  • Páginas : 20 (4816 palabras )
  • Descarga(s) : 0
  • Publicado : 2 de febrero de 2012
Leer documento completo
Vista previa del texto
10. PUNTEROS Y VARIABLES DINÁMICAS
Conceptos: Variables estáticas y dinámicas, Puntero, Apuntador, Dirección de memoria,
Segmento de código, Segmento de datos, Segmento de pila o stack, Segmento de
montículo o heap.

Resumen: Este tema plantea la reserva dinámica de memoria y la referencia a variables a
través de su dirección de memoria. Las técnicas de programación moderna
exigen tratarcon estructuras de datos dinámicas que, al contrario de las estáticas,
se almacenan en áreas de la memoria de tamaño variable ya que su número crece
o decrece en función de las necesidades del problema concreto. Se presentan las
distintas partes en las que se organiza la memoria durante la ejecución de los
programas: el segmento de código, el segmento de datos, el segmento de pila o
stack y elsegmento de montículo o heap. Es en este último segmento donde se
reserva espacio en memoria para las variables dinámicas. La utilización de
variables dinámicas se realiza a través de un tipo especial de variable
denominado apuntador o puntero, que permite representar direcciones de
memoria de un dato de un tipo determinado, y del procedimiento estándar new
de TurboPascal. El tipo devariable dinámica especifica el espacio de memoria
que se reserva para dicha variable al ejecutar la llamada al procedimiento new.

Objetivos específicos. Al finalizar el tema, el alumno deberá ser capaz de:

a) Definir el concepto de puntero o apuntador y de variable dinámica (Conocimiento)
b) Describir el mecanismo de funcionamiento de la memoria durante la ejecución de un
programa(Conocimiento)
c) Escribir la declaración de tipos puntero y de variables de variables de cualquiera de los
tipos de datos estructurados (Comprensión)
d) Interpretar el código fuente de un programa que utilice punteros y variables dinámicas
(Comprensión)
e) Codificar una tarea sencilla convenientemente especificada, utilizando datos de tipo
puntero y variables dinámicas (Aplicación)

Fundamentos deprogramación - A. García-Beltrán, R. Martínez y J.A. Jaén 126

10.1. INTRODUCCIÓN
Hasta ahora las variables que se han empleado en los programas, denominadas
genéricamente estáticas, reunen una serie de características comunes:
a) Todas las variables estáticas que utiliza un programa o una rutina se declaran
explícitamente con la palabra reservada var en la zona de declaraciones.
b) Cadavariable estática tiene un único nombre o identificador.
c) Las variables estáticas simples y estructuradas o estructuras de datos estáticas definen su
tipo y tamaño durante la compilación, y en tiempo de ejecución, se reserva el espacio
anteriormente definido en memoria, en el segmento de datos (variables globales) o en el
segmento de pila o stack (variables locales).
El trabajar con variablesestáticas estructuradas o estructuras de datos estáticas es muy
sencillo pero su empleo implica una serie de inconvenientes:
a) Proporcionan una estructura rígida que apenas puede alterarse durante la ejecución del
programa.
b) El espacio en memoria correspondiente tanto al segmento de datos como al segmento de
pila es muy limitado.
c) No aprovechan de forma óptima la memoria disponible. Hayque reservar espacio en
memoria para toda la estructura durante toda la ejecución independientemente de los
requerimientos reales de los programas. En algunos casos se desperdiciará parte del
espacio en memoria reservado y en otros no podrán almacenarse más datos de los
previstos en un principio.
Estos inconvenientes pueden solventarse utilizando otro tipo de variables y las
estructuras dedatos a las que dan lugar. Este tipo de variables son las variables dinámicas, que a
diferencia de las estáticas:
a) No se declaran en la zona de declaraciones de variables del programa o de las rutinas.
b) Para almacenar una variable dinámica se reserva espacio en memoria en algún momento
durante la ejecución del programa. Asimismo puede también liberarse ese espacio de
memoria reservado...
tracking img