Académique Documents
Professionnel Documents
Culture Documents
ndice
Introduccin
Mauricio Solar
2008
Objetivos
Estructura de datos. Definicin
Datos e informacin
Bit y byte
Campos y registros
Archivos
Arreglos o arrays
Abstraccin
Tipos de datos abstractos (TDA)
Objetivos
Estructura de datos
Datos e Informacin
Bit y Byte
Campos y registros
Ejemplo
Archivos
Direccin
Sueldo
Rec1
Cdula
555555 Juan
Nombre Apellido
Prez
982000
Rec2
666666 Alberto
Longo
10
Arreglos o arrays
Arrays
Declaracin
Tipo_dato nombre_array[ ]
Acceso
Nombre_array[ posicin]
11
Inicializacin
Abstraccin
13
14
TDA
Ejemplo de TDA
TAD Punto
Interfaz
TAD Punto
Datos x, y
Operaciones:
asignar_valores_a_x_e_y
mostrar_valor_x, mostrar_valor_y,
convertir_a_cadena,
dibujar_punto
15
Operaciones
pblicas o
Interfaz
16
Tipos de Datos
Un Tipo de Dato es un conjunto de valores y
operaciones asociadas
Proporcionados por los Lenguajes (C, C++, Pascal, etc)
para clasificar diversas clases de datos. Ayudan en:
Prevencin y deteccin de errores
Comprensin y Organizacin de las ideas acerca de los
datos
Identificacin y descripcin de las propiedades nicas de
ciertos datos.
Valores: 4, 3, 2, 1, 0, 1, 2, 3, 4
Operaciones: *, +, , /, ++, .
1.
2.
3.
de recursos.
4.
Abstraccin y TADs
Partes de un TAD
Implementacin
Algoritmos y Programas
Exactitud y Correccin.
Especificar claramente sus entradas y cada instruccin sin ambigedad.
Etapas bien definidas y finitas.
Descripcin de resultado o efecto.
Fcil de entender, codificar y depurar.
Eficiente uso del computador.
1.
2.
Bucles Lineales:
i=1
Mientras i<n
Cdigo
i*=2
Fin M
E = F(n)= Log2 n
E = F(n)= Loga n
Medicin de la Eficiencia
E = F(n)= n
i=0
Mientras i<n
Cdigo
i++
Fin M
Eficiencia = F(n)
siendo
Prueba de Escritorio
Eficiencia
Verificacin
E = F(n)= n1*n2*..ny= ny
E = F(n)= kn
Medicin de la Eficiencia
Anlisis de Rendimiento
Mediante la complejidad en el Tiempo y en el Espacio
Tiempo de Ejecucin
ejecucin
la ejecucin
El tiempo medio suele ser mas realista. Para usarlo todos los
tipos de entradas son equiprobables.
El Tiempo Mximo depende de la Carga Mxima: y no siempre
se puede establecer con claridad o es estadsticamente variable
Complejidad espacial
t2
t3
Fin Mientras
t4
Memoria = 2bytes
i++
t1
Trabajos Prcticos
i=0
Mientras i<n
Memoria = 4bytes.
Interseccin
Interseccin
AB
AC
AD
Interseccin
Interseccin
AB
AC
BA
AD
BC
AB
BD
Interseccin
AC
AD
BA
BC
DA
DB
BD
DC
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
AB
BD
EC
AC
AD
BA
BC
DC
DA
DB
ED
EA
EB
Interseccin
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
AB
BD
EC
AC
AD
BA
BC
DC
DA
DB
ED
EA
EB
BD
DC
EC
ED
Interseccin
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
AB
BD
EC
AC
AD
BA
BC
DC
DA
DB
ED
EA
EB
Interseccin
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
AB
BD
EC
AC
AD
BA
BC
DC
DA
DB
ED
EA
EB
Interseccin
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
AB
BD
EC
AC
AD
BA
BC
DC
DA
DB
ED
EA
EB
BD
DC
EC
ED
Interseccin
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
AB
BD
EC
AC
AD
BA
BC
DC
DA
DB
ED
EA
EB
Interseccin
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
AB
BD
EC
AC
AD
BA
BC
DC
DA
DB
ED
EA
EB
Interseccin
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
AB
BD
EC
AC
AD
BA
BC
DC
DA
DB
ED
EA
EB
BD
DC
EC
ED
Interseccin
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
AB
BD
EC
BC
DC
DA
DB
ED
EA
EB
AC
AD
BA
BC
BD
DA
DB
DC
EA
EB
EC
ED
AB
AB
BA
AD
BC
DA
AC
BD
DB
AB
AC
AD
AD
BA
BA
BA
BC
BD
BC
BD
BD
DA
DA
DB
DA
DB
DC
AB
ED
DB
EA
EB
EC
EB
EA
EB
EC
EC
ED
ED
Interseccin
Interseccin
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
EC
ED
BA
BC
BD
DA
DB
EA
EB
EC
ED
1
1
1
1
1
DC
1
1
1
1
AB
AC
BC
DA
DB
EA
EB
1
1
AD
BA
ED
EC
AC
DC
DC
EA
EB
AD
AC
DC
EA
AC
AB
AD
BC
DC
BD
Interseccin
AB
AC
AD
BA
Interseccin
AB
AC
BD
DC
EC
ED
10
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BC
DA
DB
EA
EB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
Interseccin
AB
AD
BA
Interseccin
AB
AC
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
11
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BC
DA
DB
EA
EB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
Interseccin
AB
AD
BA
Interseccin
AB
AC
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
12
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BC
DA
DB
EA
EB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
Interseccin
AB
AD
BA
Interseccin
AB
AC
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
13
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BC
DA
DB
EA
EB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
Interseccin
AB
AD
BA
Interseccin
AB
AC
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
14
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BC
DA
DB
EA
EB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
Interseccin
AB
AD
BA
Interseccin
AB
AC
BD
DC
EC
ED
Interseccin
AB
AC
AD
BA
BC
DA
DB
EA
EB
BD
DC
EC
ED
15
Interseccin
AB
AC
BC
DA
DB
EA
AD
BA
EB
Interseccin
BD
DC
EC
ED
AD
BA
BC
DA
DB
EA
Interseccin
AC
EB
BD
Color
Turnos
ROJO:
AZUL:
BC, BD, EA
DC
EC
ED
AMARILLO:
DA, DB
VERDE:
EB, EC
Interseccin
Solucin con Algoritmo vido:
Color
Turnos
Color
Turnos
ROJO:
ROJO:
AZUL:
BC, BD, EA
AZUL:
BC, BD, EA
AMARILLO:
DA, DB
AMARILLO:
DA, DB
VERDE:
EB, EC
VERDE:
EB, EC
Interseccin
Interseccin
Solucin con Algoritmo vido:
Color
Turnos
Color
Turnos
ROJO:
ROJO:
AZUL:
BC, BD, EA
AZUL:
BC, BD, EA
AMARILLO:
DA, DB
AMARILLO:
DA, DB
VERDE:
EB, EC
VERDE:
EB, EC
16
INTRODUCCIN
Estructura de Datos
Tipos Abstractos de Datos (TADS)
L.F.M.
97
98
99
100
TDA
MODELO
MATEMATICO
ALGORITMO
INFORMAL
TIPOS DE
DATOS
ABSTRACTOS
ESTRUCTURA
DE DATOS
PROGRAMA
EN PSEUDOCODIGO
PROGRAMA
EN EL
LENGUAJE
INSTANCIACIONES
EJECUCION
EN LA
MAQUINA
Especificacin
del problema
Programa
Algoritmo
Definicin
de TDAs
102
17
Abstraccin - Modelo
Abstraccin - Modelo
Problema
abstraccin
modelos
103
104
Concepto
En un lenguaje de programacin, el tipo de datos de una
variable (o constante o resultado de una funcin) est
determinado por:
conjunto de valores que dicha variable puede tomar
conjunto de operaciones que se pueden realizar con
variables del mencionado tipo (argumentos y/o
resultado).
Ejemplo:
105
106
Estructura de datos
Estructura de Datos
datos
centro
crculo
C1
radio
color
107
18
Estructura de datos
109
110
Ejemplo:
int vector [10];
vector
Operaciones
(mtodos)
sumar
insertar
asignar
eliminar
111
buscar
112
Definicin
componentes:
Un conjunto de dominios, D
Abstracciones de datos.
Abstracciones funcionales.
114
19
Abstracciones de datos
Abstracciones funcionales
115
La especificacin de un TDA es la
descripcin del comportamiento del
mismo. Debe formalizarse.
116
1.
2.
117
118
Elementos:
20
Operaciones: (continuacin)
BORRA_INICIO
AGREGA_FINAL
121
122
Operaciones: (continuacin)
VACA
Operaciones: (continuacin)
123
TADs - Representacin
Operaciones: (continuacin)
INVIERTE
125
124
LLENA
21
TADs - Implementacin
TADs - Aplicacin
127
TADs - Ejemplo
TADs - Aplicacin
Operaciones:
Archivo_Nuevo (Archivo): Crea un Archivo nuevo sin introducir
ningn registro (nmero de registros es 0).
Insertar (Archivo, Registro): Inserta un registro despus del
registro actual y el nuevo pasa a ser el actual.
Reemplazar (Archivo, Registro): Cambia el registro actual por
el nuevo.
Eliminar (Archivo): Borra el registro actual y una vez eliminado el
actual pasa a ser el siguiente.
Avanzar (Archivo): El registro siguiente pasa a ser el actual.
Retroceder (Archivo): El registro anterior pasa a ser el actual.
Archivo_Nuevo (Archivo) {
Longitud = 0;
Reg_Actual = 0;
}
130
TADs - Ejemplo
TADs - Ejemplo
Archivo[RegActual+1] = RegNuevo;
Longitud ++;
RegActual ++;
Retroceder (Archivo) {
if RegActual != 0
RegActual --;
}
131
132
22
TADs - Ejemplo
TADs - Ejemplo
Eliminar (Archivo) {
if RegActual != 0
for( j =Actual; j <= Longitud-1; j++)
Archivo[j] = Archivo[j+1];
if RegActual >Longitud
RegActual --;
}
Avanzar (Archivo) {
if RegActual != Longitud
RegActual ++;
}
133
134
el TDA NumeroComplejo
TADs - Ejemplo
Reemplazar (Archivo,RegNuevo) {
if RegActual != 0
Archivo[RegActual] =
RegNuevo;
}
producto :
NumeroComplejo NumeroComplejo NumeroComplejo
producto((x, y), ((u, v), = (xu yv, xv + yu)
135
el TDA NumeroRacional
136
TADs - Ejemplo
Operacin
Operaciones:
CrearRacional: a, b = (a,b)
Divisin: (a,b) / (c,d) = (a*d , b*c)
Numerador: (a,b) = a
Denominador: (a,b) = b
ValorReal: (a,b) = a/b
Potencia: (a,b)^c = (a^c , b^c)
137
138
23
ESPECIFICACIN
Implementacin
#define MAX 100
typedef struct Racional {
int num, den;
};
Racional info[MAX]; // arreglo para almacenar los racionales
int ultimo = -1;
// para controlar el tamao del arreglo
Un racional
info
MAX
num
17
den
ltimo
139
140
Implementacin
Implementacin
int Crear_Racional (int n, int d, int i) {
if (d == 0) {
printf("\n Error:Division por cero");
getch();
exit(0);
}
else {
info[i].num = n;
info[i].den = d;
ultimo++;
}
return ultimo;
}
141
Implementacin
142
Implementacin
void Imprime_Racional(void) {
int num;
printf("\nIndique la posicion del racional que quiere ver: ");
scanf("%d", &num);
if( num >= ultimo)
printf(\n Error, fuera de rango);
else
printf( "\nRacional ingresado es : %d/%d en la posicion %d",
Numerador(num), Denominador(num), num); getch();
}
143
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 100
typedef struct Racional {
int num, den;
};
Racional info[MAX]; // arreglo donde se almacenaran los
// numeros racionales
int ultimo = -1;
144
24
Implementacin
int main() {
int nume, deno, pos, i, n;
printf("\n Cuantos datos? "); scanf("%d",&n);
if ( n >= ultimo) {
printf(\n Error, fuera de rango);
return 1;
}
else
for(i = 0; i < n; i++) {
printf("\nNumerador: "); scanf("%d", &nume);
printf("\nDenominador: "); scanf("%d", &deno);
pos = Crear_Racional(nume, deno, i);
}
Imprime_Racional();
return 0;
}
145
Bibliografa
147
25