Logo Studenta

Semana 6

¡Este material tiene más páginas!

Vista previa del material en texto

PROGRAMACIÓN Y FUNDAMENTOS 
DE ALGORÍTMICA
PUNTERO O APUNTADOR
LOGRO DE LA SESIÓN
 Al finalizar la sesión el estudiante empleará 
punteros para solución de problemas básicos.
2
AGENDA
Pseudocódigo
 Puntero
 Declaración
 Operadores
 Operaciones con punteros
 Punteros a punteros
 Gestión de memoria dinámica
 Operador new y delete
 Ejemplo 1
 Ejemplo 2
 Ejercicios
3
4
PUNTERO O APUNTADOR (POINTER)
 Un puntero es una variable que tiene la dirección 
de memoria de otra variable (la que contiene un 
valor).
http://4.bp.blogspot.com/-L_oNj401oHE/TZ8hTp_MW6I/AAAAAAAAASs/j3F2Z8mYxpo/s1600/Direcci%C3%B3n.png
PUNTERO O APUNTADOR (POINTER)
 Si una variable contiene la dirección de otra 
variable entonces se dice que: “la primera variable 
apunta a la segunda”.
5
 El identificador cont hace 
referencia directa a la variable 
cuyo valor es 23.
 El identificador punt hace 
referencia indirecta a la 
variable (cont) cuyo valor es 
23.
http://3.bp.blogspot.com/-JiDg74OSVpE/TZ8ku8FiW-I/AAAAAAAAAS0/xG4CySq8mHU/s1600/Puntero.png
6
DECLARACIÓN
Sintaxis : tipo *identificador
 Declara si una variable contiene una dirección de 
memoria. Donde tipo puede ser cualquier tipo base, 
y éste define a que tipo de variable puede apuntar el 
puntero.
 Ejemplo : Entero *punt, k
 Esta sentencia declara que punt apunta a un valor u 
objeto de tipo entero. Al declarar una variable como 
puntero, debe ir precedida por un *.
 Los punteros se deben inicializar a 0, NULL o a una 
dirección, al declararlos o mediante una asignación.
OPERADORES
 & : Operador de dirección, devuelve la dirección 
de memoria de su operando (variable a la que 
precede).
punt  &cont
 Coloca la dirección de memoria 3500 de la variable 
cont en punt y la variable puntero punt está ubicada 
en la dirección 4000. Se lee que “punt recibe la 
dirección del valor cont” o “punt apunta a 
cont”.
7
OPERADORES
 * : Operador de indirección, es el complemento 
de &, devuelve el valor de la variable situada en la 
dirección que sigue (sinónimo de la variable hacia 
el que apunta su operando).
valt  *punt
 Si punt contiene la dirección de memoria de la 
variable cont, entonces coloca el valor de cont en 
valt.
 Se lee como “valt recibe el valor contenido en la 
variable apuntada por punt” (en ejemplo anterior 
es cont).
8
OPERACIONES CON PUNTEROS
 Se pueden incrementar o disminuir punteros. Por 
ejemplo: si y es puntero a un Real con la dirección 
actual 3500.
 Después de la expresión: yy+1, la dirección de y
será 3504 y no 3501.
 Cada vez que se incrementa y, la computadora 
apuntará al siguiente flotante, que usa cuatro bytes.
9
http://2.bp.blogspot.com/-tVaHwA8aO9E/TZ8oEM5e6tI/AAAAAAAAAS8/eis2MMXCsd8/s1600/Variable.bmp
OPERACIONES CON PUNTEROS
 Se puede usar un puntero en la parte derecha de 
una sentencia de asignación para asignar el valor 
del puntero a otro puntero. Ejemplo:
Entero t, *x, *y
t  450 x &t y  x
 No se puede multiplicar o dividir punteros, no se 
puede sumar o restar dos punteros y no se puede 
sumar o restar los tipos reales a punteros.
10
PUNTEROS A PUNTEROS
 Sintaxis : tipo **identificador
 Declara un puntero a un puntero, es decir efectúa 
un direccionamiento indirecto múltiple o una 
cadena de punteros.
 Ejemplo : Real **dobleDir
 Esta declaración le dice al compilador que dobleDir 
es un puntero a un puntero tipo Real, y que no es 
un puntero a un número en punto flotante.
11
GESTIÓN DE MEMORIA DINÁMICA
 Hay ocasiones en las que no sabemos cuánta 
memoria vamos a necesitar hasta que no se 
ejecuta el programa.
 Los lenguajes (C++) permiten poder reservar 
memoria según se va necesitando, es decir, en 
tiempo de ejecución.
 Ventaja de utilizar memoria dinámica:
 Los programas aprovecharán mejor la memoria del 
ordenador en el que se ejecuten, usando sólo lo 
necesario.
12
OPERADOR NEW
 Por ejemplo en C++ hay 2 operadores para la 
gestión de memoria:
 new permite reservar memoria cuando se 
requiere y devuelve la dirección de inicio.
identificadorPuntero  new tipo
En C++ identificadorPuntero = new tipo;
Entero *pNULL int *p=NULL;
pnew Entero p=new int;
 .
13
OPERADOR DELETE
 delete permite liberar memoria si ya no se 
necesita.
delete identificadorPuntero
En C++ delete identificadorPuntero;
Entero *pNULL int *p=NULL;
pnew Entero p=new int;
delete p delete p;
14
EJEMPLO 1
Entero nota
Entero *p
leer(nota)
p&nota
escribir(*p)
15
EJEMPLO 2
Entero *p
pnew Entero
leer(*p)
escribir(*p)
delete p
16
PREGUNTAS
17
18
EJERCICIOS
 Escriba pseudocódigo que permita ingresar 2 
números, luego debe sumarlos y finalmente 
mostrarlos. 
 Desarrolle la solución de dos formas
 Usando punteros y variables 
 Usando new y delete
RESÚMEN
 Un puntero es una variable que puede almacenar 
una dirección de memoria.
 El operador de dirección &, se utiliza para obtener 
la dirección de memoria de una variable.
 El símbolo * se utiliza para declarar una variable de 
tipo puntero.
 El operador de indirección * se utiliza para acceder 
al valor apuntado por un puntero. Se llama de 
indirección, porque se accede de manera indirecta 
al valor almacenado en una dirección de memoria.
 Para gestionar memoria de forma dinámica se 
usará new y delete.
19

Continuar navegando

Materiales relacionados

99 pag.
apun_c

IPN

User badge image

ibarraflores

99 pag.
8 pag.
Tarea 11 punteros

UdG

User badge image

Diego Mandujano