Вы находитесь на странице: 1из 6

Tema 9.

Punteros

Qu tienen en comn?

Manuel Ortega Ortiz de Apodaca

Lo que tienen comn qu tiene diferente?

Manuel Ortega Ortiz de Apodaca

Los punteros en Pascal

Una variable puntero es una vriable que "apunta a otra variable" Como puntero que es, el valor que almacena nos indica dnde localizar la "otra variable". Estas "otras variables" en ningn caso sern variables declaradas en la seccin VAR de cualquier mbito de un programa Hasta ahora, valor almacenado y nombre de variable eran prcticamente intercambiables en muchos contextos.
Manuel Ortega Ortiz de Apodaca

Los punteros en Pascal

En Pascal todas las variables pertenecen a un tipo. Los punteros tambin. Si un puntero sirve para apuntar a algo, es lgico que, de pertenecer a un tipo, ste venga determinado por el tipo de informacin a la que apuntar. Podemos hablar entonces de punteros que apunten a Integer's, Reales, Arrays, registros..etc

Manuel Ortega Ortiz de Apodaca

Declaracin de un tipo puntero en Pascal

Decl_tipo_puntero::= identificador "=" "^" Nombre_tipo ";" Nombre_Tipo::= Cualquier tipo vlido Ejemplo Type Tvector = array[Tindice] of Telemento; Punt_enteros = ^Integer; Punt_Char = ^Char; Punt_Vector = ^Tvector;
Manuel Ortega Ortiz de Apodaca

Dnde apuntan los punteros?

Una vez declarada una variable de tipo puntero podemos hacer que sta apunte a tres "tipos de sitios"
1. A "vaya usted a saber dnde"
Puntero sin inicializar

2. A nada (NIL)
El valor NIL es un valor especial de Pascal, al que puede apuntar cualquier variable puntero, sea del tipo que sea.

3. A la informacin que nos interesa


Haciendo que apunte al mismo sitio que otro puntero Creando un elemento de informacin adecuado para ser apuntado

Manuel Ortega Ortiz de Apodaca

Dnde apuntan los punteros?

Referncia_Variable_Puntero::= Identificador Referencia_apuntado_puntero::= Identificador"^" Ejemplo


Var vector: Tvector; punt1, punt2:Punt_vector; ... Vector:= punt1^; {asignacin de lo apuntado por punt1 a vector} Punt1:= punt2; {asignacion entre punteros} Punt2^[3]:= 100; {se asigna 100 a la tercera componete de lo apuntado por punt2}
Manuel Ortega Ortiz de Apodaca

Operaciones entre punteros

Asignacin.
Al igual que el resto de las variables, ser posible siempre que ambas pertenenzcan al mismo tipo (apunten al mismo tipo de informacin) Resultado. Ambos punteros apuntarn al mismo sitio. Si a un puntero le asignamos el valor NIL entonces apuntar a "Nada"

Si lo que queremos es que un puntero tenga "su informacin propia a que apuntar" le asignaremos esta mediante la utilizacin del procedimiento NEW.
La invocacin New(mi_puntero) har que, despues de la ejecucin del procedimiento, mi_puntero est apuntando a "algo" de las caractersticas de lo apuntable por l.
Manuel Ortega Ortiz de Apodaca

Operaciones entre punteros

Los punteros como parmetros


Como cualquier tipo de datos, el tipo Pointer puede ser el tipo asociado a un parmetro de un Procedimiento/Funcin Como tipo simple que es, una funcin puede devolver "algo de tipo puntero" Importante. En Pascal, los parmetros "por valor" protegen el valor del puntero parmetro actual NO DE LO APUNTADO POR ESTE

Comparacin en igualdad
Punt1 = punt2 {true si apuntan al mismo sitio (memoria)} Punt1^=punt2^ {true si lo apuntado por ambos tiene el mismo valor}

Manuel Ortega Ortiz de Apodaca

Lista lineal enlazada

type Tindice = Integer; Telemento = Integer; TLista = ^Tnodo;


Tnodo = Record info: Telemento; sig: Tlista; end; {record}

Lista

Nil

Manuel Ortega Ortiz de Apodaca

Вам также может понравиться