12.185 cursos gratis
8.414.190 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Introducción al lenguaje Pascal

Autor: emarinch@racsa.co.cr
Curso:
9,63/10 (8 opiniones) |40127 alumnos|Fecha publicación: 01/03/2006
Envía un mensaje al autor

Capítulo 30:

 Operaciones con punteros

Como se dijo anteriormente, los punteros se crean con las declaraciones:

Type

   PuntX = ^Real;

Var

   P : PuntX;

P es una variable puntero de tipo PuntX que apunta a posiciones que contienen valores de tipo real. La posición de memoria designada por el valor de la variable puntero P se representa por P^. Se pueden asignar valores a P^ y utilizar valores de P^ en expresiones tal como cualquier otra variable. Si P apunta a posiciones que contiene reales, P^ es una variable real.

Ejemplo:

P^ := 1000                 El valor de P^ es 1000

3 * P^ + 500              El valor de P^ es 3500

Sin embargo, estas operaciones no se pueden realizar directamente luego de la declaración, debido a que el objeto o dirección P^ no existe. Antes de que un programa utilice un puntero, se requiere abrir espacio para el tipo de datos objeto de la dirección del puntero. Para iniciar un puntero se debe utilizar el procedimiento NEW.

7.2.1 New

La declaración de un puntero P no crea una celda de memoria para apuntar a ella. El procedimiento (sentencia) New se utiliza para crear la celda de memoria P; es decir, el procedimiento New crea una variable dinámica y establece que una variable puntero apunte a ella.

Sintaxis:

New (P)

P representa la variable puntero.

La sentencia New (P); llama al procedimiento New que asigna almacenamiento para un valor determinado y sitúa la dirección de esta celda de memoria en la variable puntero P. Una vez que se asigna almacenamiento para un valor de tipo determinado al que está apuntando P, se puede almacenar un valor en esa celda de memoria y manipularlo.

Ejemplo:

New (Ptr);

Ptr^ := `Mckenna´;

La sentencia New (Ptr) crea una celda vacía de memoria a la que apunta Ptr. La segunda sentencia sitúa el valor `Mckenna´ en esa celda de memoria.

Gráficamente se representaría así:

Operaciones con punteros

7.2.2 Dispose

El procedimiento Dispose libera la posición de memoria ocupada por una variable dinámica.

Sintaxis:

Dispose (P) (* P es una variable tipo puntero *)

Gráficamente se representa así:

Operaciones con punteros

Dispose destruye la variable referenciada por P y devuelve su zona de memoria

7.2.2.1 Constante nil

Pascal proporciona una constante predefinida, nil (nulo. La constante nil se utiliza para dar un valor a una variable puntero que no apunta a ninguna posición, nil puede ser asignad a un puntero de cualquier tipo.

P:= nil;

P:=5

Ejemplo:

Var

  P,Q : ^Integer;

Begin

   New (P);

   P^ :=8;

  Q^ :=P;

  Q^ :=5;

  Dispose (P)

End.

7.2.3 Assigned

Determina si un puntero o variable de tipo procedimiento es nil. Especifica si el argumento es nil o e el argumento tiene un valor. Su sintaxis es:

                        Function Assigned (Var P) : Bolean;

P debe ser una referencia de un puntero o tipo procedimiento. La función devuelve verdadero (true) si P no es nil o falso (false) si es nil. Una posible aplicación puede ser la siguiente:

Var P : Pointer;

Begin

  P : nil;

  If Assigned (P) then

     Writeln (`Prueba Uno´);

     P := @P;

  If Assigned (P) then

     Writeln (`Prueba Dos´);

End.

La llamada Assigned(P) correspondiente a la evaluación de P <> nil para una variable puntero, mientras @P <> nil se corresponde a una variable por procedimiento.

Capítulo siguiente - Archivos y registros
Capítulo anterior - Punteros

Nuestras novedades en tu e-mail

Escribe tu e-mail:

Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Cursos similares a Introducción al lenguaje Pascal


  • Vídeo
  • Alumnos
  • Valoración
  • Cursos
1. Introducción al lenguaje HTML
¿Te interesa entrar al mundo de la programación web ? ¡Entonces este curso de... [14/04/11]
739
Curso con video
2. Introducción al lenguaje SQL
Curso de programación, aprende el lenguaje sql que es un lenguaje de acceso a bases... [16/11/11]
131  
3. Algoritmos y lenguaje C
Este curso pretende dar a conocer las explicaciones más simples del trabajo de los... [13/01/06]
36.357  

¿Qué es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail


¿Quieres recibir más cursos de Programación? ¡Son gratis!