You are on page 1of 10

PUNTERO

Estructura de datos
Mircoles 6 de septiembre

Eliecer Aguilar, Jacob Smith, Eligio Quijada, Jonathan Bultron


Puntero

Un puntero es una variable que contiene la direccin de otra variable.


Tambin podramos decir que un puntero es una variable que
representa la posicin (ms que el valor) de otro dato, tal como una
variable o un elemento de un array.
Cuando una variable puntero es definida, el nombre de la variable debe
ir precedido de un asterisco (*). Este identifica que la variable es un
puntero. Por tanto, una declaracin de puntero puede ser escrita en
trminos generales como:
En ciencias de la computacin, un puntero es un objeto del lenguaje de
programacin, cuyo valor se refiere a (o "apunta a") otro valor
almacenado en otra parte de la memoria del ordenador utilizando su
direccin. Un puntero referencia a una ubicacin en memoria, y a la
obtencin del valor almacenado en esa ubicacin se la conoce como
des referenciacin del puntero. A modo de analoga, un nmero de
pgina en el ndice de un libro podra considerarse un puntero a la
pgina correspondiente; des referenciar un puntero sera como ir a la
pgina con el nmero de pgina especificada en el ndice.
Los punteros a datos mejoran significativamente el rendimiento de las
operaciones repetitivas tales como cadenas de desplazamiento, tablas
de bsqueda, tablas de control y estructuras rbol. En particular,
muchas veces es mucho ms barato en tiempo y espacio copiar y des
referenciar punteros que copiar y acceder a los datos a los cuales
apunta el puntero.
Los punteros tambin se utilizan para mantener las direcciones de los
puntos de entrada para las subrutinas para llamadas en programacin
por procedimientos y enlaces para vincular a las bibliotecas de enlace
dinmico (DLL) en tiempo de ejecucin. En la programacin orientada a
objetos, los punteros a funciones se utilizan para mtodos de unin,
muchas veces utilizando lo que se llama tablas de mtodos virtuales.
Un puntero es una implementacin ms concreta y simple del tipo de
datos de referencia ms abstracto. Varios lenguajes soportan algn tipo
de puntero, aunque algunos tengan ms restricciones en su uso que
otros. Mientras que se utilice un "puntero" para referirse a referencias
en general, se aplica ms propiamente a las estructuras de datos cuya
interfaz permita explcitamente que el puntero sea manipulado
(aritmticamente va aritmtica de punteros) como una direccin de
memoria, en oposicin a una cookie u opcin dnde esto no sea posible.
a que los punteros permiten tanto proteger como permitir el acceso a
direcciones de memoria, hay riesgos asociados con su uso, sobre todo
en este ltimo caso. Generalmente, los punteros primitivos son
almacenados en un formato similar a un entero; no obstante, intentar
eliminar la referencia o "mirar hacia arriba" hacia un puntero cuyo valor
no fue nunca una direccin de memoria vlida conllevara a provocar
que un programa se bloquee. Para aliviar este potencial problema, como
una cuestin de seguridad de tipos, los punteros son considerados un
tipo separado parametrizado por un tipo de datos que apuntan a, incluso
si la representacin subyacente es un nmero entero. Tambin se
pueden tomar otras medidas (como la validacin y comprobacin de los
lmites, para verificar el contenido de la variable de puntero contenga un
valor que es a la vez una direccin de memoria vlida y dentro del rango
numrico que el procesador sea capaz de abordar).
Usos en estructuras de datos

Cuando se configuren estructuras de datos como listas, colas y rboles,


es necesario contar con indicadores para ayudar a controlar cmo se
implementa y controla la estructura. Ejemplos tpicos de punteros son
los de inicio, los punteros finales y los punteros de pila. Estos
indicadores pueden ser o bien absolutos (direccin fsica real o una
direccin virtual en la memoria virtual) o relativos (un desplazamiento
desde una direccin inicial absoluta ("base") que suele utilizar menos
bits que una direccin completa, pero por lo general requieren una
operacin aritmtica adicional para resolverse).
Los punteros son compatibles directamente sin restricciones en
lenguajes como PL/1, C, C++, Pascal, y la mayora de los lenguajes
ensambladores. Se utilizan principalmente para la construccin de
referencias, que a su vez son fundamentales para la construccin de
casi todas las estructuras de datos, as como para pasar datos entre las
diversas partes de un programa.

En otras estructuras de datos, tales como las listas enlazadas, los


punteros se utilizan como referencias para vincular de forma explcita
una sola pieza de la estructura a otra.
Los punteros se utilizan para pasar parmetros por referencia. Esto es
til si el programador quiere modificaciones de una funcin a un
parmetro sea visible para llamador de la funcin de la funcin. Esto
tambin es til para devolver varios valores de una funcin.
Los punteros tambin se pueden utilizar para asignar y desasignar en
la memoria variables dinmicas y matrices. Ya que muchas veces una
variable puede volverse redundante despus de que haya cumplido su
objetivo, que resulta en una prdida de la memoria mantenerla, en
consecuencia, es una buena prctica para desasignarla cuando ya no
se necesita, utilizando la referencia de puntero original.
Bibliografa

http://www.uhu.es/04004/material/Transparencias6.pdf

http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap8/cap82.htm

https://es.wikipedia.org/wiki/Puntero_(inform%C3%A1tica)

http://c.conclase.net/edd/

http://wwwtemarioestructuradedatos.blogspot.com/p/estructura-
de-datos-dinamicas-y.html

http://www.it.uc3m.es/abel/as/DSP/M2/Pointers_es.html

https://www.fing.edu.uy/inco/cursos/prog1/pm/uploads/Materiales
/punteros.html
Conclusin

Los punteros nos facilitan mucho trabajo a la hora de programar,


especialmente lo que son estructura de datos.
A pesar de que su uso al principio puede parecer confuso, cuando se
aprende de manera correcta los punteros ahorran tiempo y ayudan al
programador a poseer un cdigo ms limpio.
El dominio de los punteros es una habilidad de programacin que tiene
a quedar relegada debido a la preminencia de los lenguajes de muy alto
nivel y lenguajes de script. Pero estructuras de datos bsicas como lista
y rboles estn basadas en punteros, sin contar con que esos mismos
lenguajes de alto nivel estn implementndolo, haciendo un uso
intensivo de punteros.
Recomendaciones

El tipo de dato del apuntador debe coincidir con el de la variable


cuya posicin en memoria apuntan.
Siempre que queremos usar el apuntador debemos anteponer el
asterisco (*) para indicar que usaremos el valor en la posicin de
memoria apuntada
De no usar el asterisco el comportamiento seria impredecible.
Estaremos haciendo uso de la direccin de memoria mas no del
valor almacenado en esta.
Despus de usar un puntero, especialmente si trabajamos con
arreglos o matrices, es muy recomendable liberar la memoria
utilizada con la funcin delete
Un puntero o un apuntador puede ser de cualquier tipo de dato,
inclusive los podemos usar con tipos complejos.
Introduccin

Las estructuras dinmicas nos permiten crear estructuras de datos que


se adapten a las necesidades reales a las que suelen enfrentarse
nuestros programas. Pero no slo eso, como veremos, tambin nos
permitirn crear estructuras de datos muy flexibles, ya sea en cuanto al
orden, la estructura interna o las relaciones entre los elementos que las
componen.
Las estructuras de datos estn compuestas de otras pequeas
estructuras a las que llamaremos nodos o elementos, que agrupan los
datos con los que trabajar nuestro programa y adems uno o ms
punteros autorreferenciales, es decir, punteros a objetos del mismo tipo
nodo.
No tienen las limitaciones o restricciones en el tamao de memoria
ocupada que son propias de las estructuras estticas.
Mediante el uso de un tipo de datos especifico, denominado puntero, es
posible construir estructuras de datos dinmicas que no son soportadas
por la mayora de los lenguajes, pero que en aquellos que si tienen estas
caractersticas ofrecen soluciones eficaces y efectivas en la solucin de
problemas complejos.
Se caracteriza por el hecho de que con un nombre se hace referencia a
un grupo de casillas de memoria.
Objetivos

Identificar los elementos esenciales de las estructuras de datos


dinmicos (Punteros).

Presentar en forma creativa y expositiva los aspectos relevantes de


los punteros.

Tomar conocimiento de las diferentes estructuras de datos.

Repasar los conceptos de grafos, nodos, lista, etc., usados en


estructura de datos dinmicas.

Estructuras Dinmicas
Una estructura de datos se dice dinmica si su tamao cambia en
tiempo de ejecucin del programa.

El tipo puntero
Un puntero es una variable que apunta o referencia a una ubicacin
de memoria en la cual hay datos.
El contenido del puntero es la direccin de esa ubicacin.
A travs del puntero se puede:
1. "crear" la ubicacin de memoria (new)
2. acceder a los datos en dicha ubicacin (^ des referenciacin)
3. "destruir" la ubicacin de memoria (dispose)

You might also like