Tema: Punteros: Puntero this en C#.

Anuncio
Programación II. Guía No.11
1
Facultad:
Ingeniería
Escuela:
Computación
Asignatura: Programación II
Tema: Punteros: Puntero this en C#.
Objetivos

Conocer el manejo de los punteros en C#.

Utilizar el puntero this.

Implementar programas en C# que incluyan el uso de punteros a Objetos y la utilización del
puntero this.
Materiales y Equipo
 Computadora con el software C#.
 Guía Número 11.
Introducción Teórica
Punteros en C#.
Los punteros son un tipo especial de variable que tiene direcciones de memoria como sus
valores. Por ser una variable, aunque sea especial, su declaración no varía de gran forma con
lo estudiado hasta el momento.
La sintaxis:
<tipo_de_dato>*<nombre_puntero>
El tipo de una variable de tipo puntero se corresponde con el tipo de dato de la variable a la que
apunta. Los punteros pueden ser inicializados cuando se declaran o en un enunciado de la
asignación. Pueden inicializarse a 0, NULL o una dirección específica (cuyo formato se presenta
en hexadecimal); un puntero con un valor NULL apunta a nada.
Para declarar un puntero, debe utilizarse un tipo de dato:
int *ptrEntero;
2
Programación II. Guía No. 11
float *ptrReal;
char *ptrDireccion;
Si se desea declarar varios punteros en la misma línea de código, C# permite hacer lo siguiente:
int* p1, p2, p3;
Luego, no se podrá utilizar un puntero declarado int con variables de tipo char o float. La idea
anterior significa que los punteros deben declararse del mismo tipo de dato al cual apuntan. En
un programa pueden aparecer errores en tiempo de ejecución y advertencias en tiempo de
compilación cuando se define un puntero a determinado tipo de dato y, a continuación, se utiliza
para apuntar a algún otro tipo de dato.
Para entender los punteros y los vectores, es necesario primero conocer cómo se almacenan
los números en la memoria del ordenador. El valor de cada variable en un programa de
ordenador se guarda en una sección de memoria cuyo tamaño está determinado por el tipo de
dato de la variable. La localización de esta sección de memoria es almacenada en la dirección
de la variable.
Por tanto, es así como si cada variable estuviera compuesta de dos partes: su valor y su
dirección de memoria. Cada celda de memoria se puede considerar de una parte con el
contenido, y la otra parte que se almacena en la dirección.
Las direcciones se representan normalmente por un número hexadecimal, pudiendo contener
un carácter, un entero o un real (aunque en realidad todos son almacenados como números
binarios, lo cual es más entendible para la máquina a la hora de compilar los programas).
Una forma de acceder a la información de una variable es por medio de una segunda variable
que contiene la dirección de la variable a la que se pretende acceder. Este tipo de variable se
conoce como apuntador o puntero.
Operadores para Punteros

El operador de dirección (&) es un operador unario que devuelve la dirección de memoria
de su operando.

El operador de indireccón (*) regresa el valor del objeto hacia el cual se apunta.
Código Inseguro (Unsafe Code)
Con unsafe code o código inseguro nos referimos a una región de código en la que está
permitida la declaración y operaciones con punteros. La palabra clave para marcar un
Programación II. Guía No. 11
3
método, miembro o bloque es unsafe. Ejecutar una aplicación en modo inseguro (unsafe)
Dado que los punteros manipulan la memoria de nuestro ordenador, para cada aplicación
que vayamos a ejecutar vamos a activar la ejecución en modo inseguro, la cual la activamos
de la siguiente manera:
Project  Properties  Build  Allow unsafe code.
Ejemplos de declaraciones de tipos de punteros:
El puntero implícito "this".
El puntero this es un atributo especial del objeto, el cual guarda la dirección de memoria del
objeto para poder referirse a si mismo en cualquier momento, esto es usado por la manera de
distribuir los objetos en memoria: los atributos de cada objeto son independientes de los de otro
objeto, pero los métodos son compartidos por todos los objetos declarados del mismo tipo de
clase, así cuando se llama un método del objeto, implícitamente se manda como parámetro el
puntero this de ese objeto para que el método sepa a que atributos referirse a la hora de
procesarlos.
El puntero this se inicializa para apuntar al objeto para el cual se llama a la función miembro.
Este puntero es muy útil cuando se trabaja con punteros y especialmente en listas enlazadas,
cuando se necesita referenciar un puntero al objeto que se está insertando en la lista.
La palabra clave this hace referencia a la instancia actual de la clase y también se utiliza como
modificador del primer parámetro de un método de extensión.
Procedimiento
Ejemplo
1:
Bibliografía
Uso de punteros y paso por valor y por referencia.
Guía 1
4
Programación II. Guía No. 11
Ejemplo_2
Procedimientos de paso por valor y por referencia.
Programación II. Guía No. 11
Ejemplo_3
Uso del puntero this para hacer referencia a los miembros de la clase.
Perfil.cs
Program.cs
5
6
Programación II. Guía No. 11
Análisis de Resultados
Ejercicio 1:
Desarrollar una aplicación que permita recorrer un vector a través de un puntero. El programa
debe solicitar los datos al usuario y deberá mostrar un menú:
A) Ordenar Ascendente.
B) Ordenar Descendente.
C) Mostrar elemento por elemento.
D) Salir.
Ejercicio 2:
Modificar el ejemplo 3, de manera que sean solicitados los datos desde teclado. Agregar los
campos: Cargo, Salario, Empresa.
Programación II. Guía No. 11
7
Investigación Complementaria
Desarrolle un programa que simule una agenda.
La aplicación debe solicitar los datos y mantenerlos en tiempo de ejecución (el programa
debe estar activo hasta que se escoja la opción salir). Los datos que se deben solicitar son
los siguientes: Nombre, DUI, Dirección, Teléfono, Email, Profesión u Oficio. El menú debe
tener las opciones: 1. Ingresar Datos. 2. Mostrar Datos. 3. Buscar Persona. 4. Salir. En la
opción 3, debe buscar por DUI, ya que es un datos que es único para cada usuario, al
encontrar dicha persona el programa debe mostrar los datos encontrados.
8
Programación II. Guía No. 11
Guía 6: Punteros a Objetos. Puntero
this.
Hoja de cotejo:
Alumno:
Máquina No:
Docente:
GL:
6
1
Fecha:
EVALUACIÓN
%
CONOCIMIENTO
Del 20
al 30%
APLICACIÓN
DEL
CONOCIMIENTO
Del 40%
al 60%
ACTITUD
Del 15%
al 30%
TOTAL
100%
1-4
5-7
8-10
Conocimiento
deficiente de
los fundamentos
teóricos
Conocimiento
y explicación
incompleta de
los
fundamentos
teóricos
Conocimiento
completo y
explicación
clara de los
fundamentos
teóricos
No tiene
actitud
proactiva.
Actitud
propositiva y
con
propuestas no
aplicables al
contenido de
la guía.
Tiene actitud
proactiva y
sus
propuestas
son
concretas.
Nota
Descargar