Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos
¿Qué es un dato?
Información en bruto, sin ningún significado
Dado un enunciado, evento o acción, los datos
Permiten representar sus actores o participantes
Analizándolos, se podrá obtener resultados deseados
Analicemos el siguiente hecho:
El estudiante Juan Paz de edad 23 años, tiene promedio 8.3 en sus
calificaciones
Podemos tomar los siguientes datos
Nombre: Juan Paz -> Conjunto de Caracteres
Edad: 23 -> entero
Promedio: 78,3 -> real
Como representar los datos
Ejemplo: &a es
int a; 1000
a = 3;
printf(“Valor:%d Dir: %d”, a, &a);
Un puntero
Es una variable que puede almacenar dirección
de memoria
Estructura de Datos y
Algoritmos
Repaso Estructuras de
Datos
¿Qué es una Estructura de Datos?
Tipos Inductivos
Tipos Inductivos ("Recursivos")
tienen en general cardinalidad infinita
Ejemplos:
números naturales
listas
Tipos Inductivos ("Recursivos")
Tomemos por ello un problema para representar estos
tipos en computadoras
Concretamente: ¿Cómo se implementan las variables
de estos tipos ?
infinita
de tamaño ajustable
(Cada lista es finita; pero la variable debería poder
crecer y contraerse al agregar y quitar elementos
de la lista)
El caso de las listas
Solución:
¿ Por qué ?
El caso de las listas
Debemos poder implementar asignaciones
(abstractas) como:
S = x.S (operación que agrega un elemento a la lista)
(comparar con n = n + 1)
Repaso Punteros
Punteros en C
Para cada tipo T existe el tipo de los punteros a
variables de tipo T:
POINTER TO T
(que en C se declararía: T *variable;)
Punteros en C
Notar que si p es una variable de tipo POINTER TO T,
entonces los estados posibles de p son:
(puntero a variable)
+
-
== (verificación de igualdad de dos punteros, y solo
de punteros)
= (asignación)
Punteros en C
Un tipo de dato
El puntero solo podrá almacenar direcciones de
memoria de variables del tipo especificado
Se pueden definir punteros de cualquier tipo:
1000
float *pf; 1001 3 x
1005
1000
1000 pt
Un identificador que siempre va antecedido del
operador *
int *pt, x; pt almacena la
dirección de x, se dice
x = 3;
que pt apunta a x
pt = &x;
Punteros en C
Un puntero apunta a una variable
A través del puntero se puede llegar a conocer todo sobre la
variable char c, *pc1, *pc2;
Ejemplo: pc1 = &c;
#include <stdio.h>
Punteros en C
T *variable = new(T);
delete(variable);
p = new(T)
Crea una variable de tipo T (siendo p una variable
de tipo POINTER TO T)
deja p apuntando a esa nueva variable
no importando cuál era el estado previo de p
delete(p)
Tiene como precondición que p esté apuntando a
alguna variable
La variable apuntada por p desaparece
p queda "sin valor"
Punteros en C
[1]p = q
[2]*p = *q (esta es la notación en C para p y q
respectivamente)
¿Que pasa si hacemos …?
Luego de ejecutar [1], tenemos:
http://www.fing.edu.uy/inco/cursos/prog2
www.dspace.espol.edu.ec/bitstream/.../1.
Tipos%20de%20Datos.ppt
Bibliografía
¿Preguntas?