martes, 27 de diciembre de 2011

Punteros y Variables Dinámicas

Términos muy importantes a la hora de programar son los punteros y las variables dinámicas , son fundamentales, por ello en este post vamos a tratar de explicarlos para que podamos entenderlos de la mejor manera posible.

La estructura secuencia:

          La estructura secuencia puede definirse como un esquema de datos del tipo iterativo, pero con un número variable de componentes. La estructura secuencia resulta parecida a una formación con número variable de elementos. Las operaciones de construcción pueden incluir: añadir o retirar componentes al principio de la secuencia, añadir o retirar componentes al final de la secuencia, añadir o retirar componentes en posiciones intermedias de la secuencia, etc. Las operaciones de acceso pueden ser: acceso secuencial las componentes deben tratarse una por una, en el orden en que aparecen en la secuencia, acceso directo se puede acceder a cualquier componente directamente indicando su posición, como en una formación o vector.

          En muchos casos, y en particular cuando el acceso es secuencial, el tratamiento de una secuencia se realiza empleando un cursor. El cursor es una variable que señala a un elemento de la secuencia. El acceso, inserción o eliminación de componentes de la secuencia se hace actuando sobre el elemento señalado por el cursor. Dicho elemento lo representaremos simbólicamente como cursor empleando una flecha como símbolo gráfico para designar el elemento de información señalado por otro. Para actuar sobre el cursos se suelen plantear las siguientes operaciones: iniciar que pone el cursos señalando el primer elemento, avanzar que pasa el cursor al siguiente elemento y fin que es una función que indica si el cursor ha llegado al final de la secuencia.

Variables dinámicas:

          Una manera de realizar estructuras de datos ilimitadas en C+- es mediante el empleo de variables dinámicas. Una variable dinámica no se declara como tal, sino que se crea en el momento necesario, y se destruye cuando ya no se necesita. Las variables dinámicas no tienen nombre, sino que se designan mediante otras variables llamadas punteros o referencias.

Punteros:

          En C+- los punteros o referencias son variables simples cuyo contenido es precisamente una referencia a otra variable. El valor de un puntero no es representable como número o texto. Para poder detectar si un puntero señala realmente o no a otra variable, existe en C+- el valor especial NULL. Este valor es compatible con cualquier tipo de puntero, e indica que el puntero no señala a ninguna parte, por lo tanto debería ser asignado a cualquier puntero que sepamos que no señala a ninguna variable. Normalmente se usará para inicializar las variables de tipo puntero al comienzo del programa. La inicialización no es automática, sino que debe ser realizada expresamente por el programador. Esta sentencia garantiza que sólo se usa la variable apuntada cuando realmente existe.

Uso de variables dinámicas:

          Una variable de un programa se corresponde, en general, con una zona concreta de la memoria que el compilador reserva para almacenaren ella el valor de la variable. La forma mas sencilla de crear una variable dinámica es mediante el operador new. La variable dinámica se crea a base de reservarle el espacio necesario en una zona general de memoria gestionada dinámicamente. La sentencia delete, permite destruir la variable dinámica que señala un puntero. Una variable dinámica puede estar referenciada por más de un puntero. Esto ocurre cuando se copia un puntero en otro. Un problema delicado al manejar variables dinámicas es que pueden quedar perdidas, sin posibilidad de hacer referencia a ellas. Una variable perdida es totalmente inútil y representa una pérdida de la capacidad de memoria disponible.

Una definición recursiva es aquella en que se hace referencia a sí misma. Sería deseable que una secuencia ilimitada se pudiese definir de manera recursiva, sin necesidad de punteros.

Punteros y paso de argumentos:

          Un puntero puede pasarse como argumento a un subprograma. En general el valor de un puntero en sí mismo no es significativo, sino que el puntero es sólo un medio para designar la variable apuntada. Desde un punto de vista conceptual el paso de un puntero como argumento puede ser considerado equivalente a pasar como argumento la variable apuntada.

No hay comentarios:

Publicar un comentario