Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ORDYBUUSREPASO
ORDYBUUSREPASO
ALGORITMOS DE
ORDENAMIENTO Y BUSQUEDA
JESUS ANTONIO NEVAREZ ACEVES
Correo Institucional: jnevarez@uadec.edu.mx
ELABORADO POR JESUS A. NEVAREZ ACEVES
ELABORADO POR JESUS A. NEVAREZ ACEVES 2
UNIDAD 1
TEMARIO
UNIDAD 1
ELABORADO POR JESUS A. NEVAREZ ACEVES 9
INTRODUCCION A LAS ESTRUCTURAS DE DATOS
TEMAS
RUBRICA DE EVALUACION
PRIMER EXAMEN PARCIAL 20%
EXAMEN TEORICO 50%
EXAMEN PRACTICO 50%
SEGUNDO EXAMEN PARCIAL 20%
EXAMEN TEORICO 50%
EXAMEN PRACTICO 50%
EXAMEN ORDINARIO 35%
EXAMEN TEORICO 40%
EXAMEN PRACTICO 60%
PROYECTO FINAL EN EQUIPO 15%
TAREAS Y ASISTENCIA 10%
ABSTRACCION
Proceso mental que consiste en realzar
los detalles relevantes, es decir, los que
nos interesan en un momento sobre el
objeto de estudio, mientras se ignoran
los detalles irrelevantes.
Esto nos lleva a una simplificación del
problema, ya que:
La cantidad de información que es
necesario manejar en un momento
dado disminuye y
Podemos tratar cosas diferentes
como si fueran la misma
ABSTRACCION
Este proceso de la mente humana es fundamental para
comprender y manejar complejos sistemas que
contienen múltiples detalles y relaciones.
Por ello, y dada la complejidad de los programas actuales, la
evolución de los paradigmas y lenguajes de programación
marca un uso creciente de la abstracción.
ABSTRACCION
Programación modular.
La programación modular constituye una metodología eficaz para
abordar problemas de cualquier tamaño y la abstracción es una forma
de llevarla a cabo.
Sin embargo, es necesario considerar detenidamente
las propiedades que deben cumplir para que la descomposición sea
útil:
1. Las conexiones de cada modulo con el resto del programa deben ser
mínimas, tanto en numero como en complejidad, para obtener
módulos mas independientes.
2. Cada modulo lleva a cabo una tarea bien definida en el nivel de
detalle correspondiente, para facilitar su solución y la independencia
con el resto del programa.
ABSTRACCION
Programación modular.
3. La solución de cada subproblema debe ser general, para obtener
módulos que, siendo igualmente
útiles para el problema a resolver, puedan adaptarse a futuras
modificaciones o incluso para otros
problemas.
4. La solución de los subproblemas se puede combinar para resolver el
problema original.
ABSTRACCION
Programación modular.
Facilita el desarrollo del programa al tener módulos
independientes en los que varios programadores pueden
trabajar en equipo.
Facilita el mantenimiento:
Facilita cambios y mejoras sobre uno o varios módulos
en particular.
Facilita la prueba y depuración de software, al ser
verificados por módulo.
Facilita la productividad evitando que un problema se haga
múltiples veces:
Elimina redundancias.
Permite reutilizar código.
ABSTRACCION
OCULTAMIENTO DE INFORMACION
La abstracción permite estudiar complejos sistemas usando un método
jerárquico de sucesivos niveles. Con módulos con el menor número de
características, que deben exportar la menor cantidad de información,
usando:
Parte Pública: Todas las partes que son visibles para los demás
módulos, el objetivo es que sean pocos y es la única información
necesaria y disponible para el uso correcto del módulo.
Parte privada: Todos los detalles que no son visibles para los
demás módulos. Normalmente numerosos, no necesarios para
utilizar el módulo.
ABSTRACCION
DOCUMENTACION
La naturaleza abstracta de una eficiente construcción de módulos
implica que el programador debe crear dos documentos diferentes:
ABSTRACCION
int IndiceMaximo (const int vector[], const int nelem)
{
ABSTRACCION FUNCIONAL int i,max;
max=0;
El primer tipo de abstracción que aparece en la historia es la for (i=1;i<nelem;i++)
FUNCIONAL o PROCEDIMENTAL que separa el propósito de una if (vector[max]<vector[i])
función de su implementación. Considera el QUE obviando el COMO max= i;
de la función. return max;
La función (ó método) de OPERACIÓN INDICEMAXIMO muestra que }
para usarlo solo requiero de saber un arreglo de n números enteros y la
cantidad de números del arreglo y el resultado que se obtiene, eso es Operación IndiceMaximo
PARTE PUBLICA en la PARTE PRIVADA corresponde al analista
programador detallar como lo hace.
ABSTRACCION
int IndiceMaximo (const int vector[], const int nelem)
{
ABSTRACCION FUNCIONAL int i,max;
max=0;
Especificación for (i=1;i<nelem;i++)
if (vector[max]<vector[i])
Son los aspectos sintácticos y semánticos necesarios para usar la max= i;
función, procedimiento (ahora métodos), sin conocer los detalles (parte return max;
privada), como son: }
La parte sintáctica es la forma correcta de hacer el llamado :
x=Indicemaximo(vector,nelem) Operación IndiceMaximo
La parte semántica se refiere a las condiciones que son necesarias Precondiciones:
antes y después de haber realizado una llama a la función, esto se - Nelem >0
- Vector arreglo con nelementos
refiere a:
Precondiciones: Condiciones que se deben dar antes de la
Postcondiciones:
ejecución de la función. - Devuelve la posición del primer maximo elemento del vector (
Postcondiciones: Condiciones que serán ciertas después de i tal que v[i]<=v[j] para 0<=j<=nelem)
la ejecución de la función.
ABSTRACCION
PARADIGMA
https://youtu.be/oBO01Cx_YwQ
Código UNICODE
https://unicode-table.com/es/#basic-latin
Atributos de un TAD
El encapsulamiento y la ocultación de información son atributos internos del
diseño.
Un TAD tiene estas propiedades:
– Encapsulamiento: La información referente a la definición del tipo y todas
las operaciones que pueden realizarse sobre el mismo se encuentran en el
mismo lugar.
– Ocultación de Información: La información acerca de la implementación
se encuentra oculta al usuario.
ELABORADO POR JESUS A. NEVAREZ ACEVES
40
Implementación de un TAD
Es importante comprender la diferencia entre un TAD y su implementación
Las implementaciones no dejan de ser importantes, y su elección es crítica
Al final, el usuario no debe preocuparse de cómo está implementado un TAD.
Su única preocupación debe ser el uso del mismo
ELABORADO POR JESUS A. NEVAREZ ACEVES
41
ARBOLES
GRAFOS