Está en la página 1de 38

Diseño y Análisis de

Algoritmos - II
Presentado por:
Ing. Claudio Gutiérrez, MBA.
Objetivos
Al Finalizar el Curso el Alumno será capaza de:
•Conocer conceptos básicos de análisis de rendimiento.

•Comprender el análisis, verificación y eficiencia de un


algoritmo.
•Comprender un Tipo de dato abstracto, su estructura y
ventajas
•Comprender el análisis de algoritmos de POO
Análisis de Rendimiento
• Complejidad del espacio de un programa es la
cantidad de memoria que se necesita para
ejecutarlo hasta la terminación.

• La complejidad del tiempo de un programa es la


cantidad de tiempo de computadora que se
necesita para ejecutarlo.
Función T(n)

• Se utiliza la función T(n), para representar el


numero de unidades de tiempo tomadas por
un programa o algoritmo para cualquier
entrada de tamaño n.
Ejemplo
• Tiempo de ejecución lineal de una función que
calcula un serie de n términos.

La función T(n) del método es:


T(n) = t1 + n*t2 + n*t3 + t4
Ejemplo 1: de Algoritmo

• Diagrama de flujo que representa un


algoritmo que lea el radio de un circulo,
calcule el perímetro y su área.
• Se declaran las variables reales r,
longitud y área, así como la constante pi.
Ejemplo 2: de Algoritmos

• Realizar un algoritmo que lea tres


números; si el primero es positivo
calcule el producto de los tres
números, y en otro caso calcule la
suma
Solución: Ejemplo 2 de algoritmos
• Se usan tres variables enteras (Numero1,
Numero2, Numero3, en las que se leen los
datos, y otras dos variables Producto y
Suma en las que se calcula, o bien el
producto, o bien la suma.
Continua…
Algoritmo en seudocódigo
Continua…
Algoritmo en C++
Ejemplo 3: de Algoritmos
• Diseñar un algoritmo que permita saber si
un numero entero positivo es primo o no.
Un numero es primo si solo se puede
dividirse por si mismo (es decir, no tiene
mas divisores que el mismo y la unidad).

• Ejemplo: 9, 8, 6, 4, 12, 16 y 20, etc. No son


primos ya que son divisibles por números
distintos a ellos mismos y a la unidad. Así 9
es divisible por 3, 8, lo que es por 2.
Tipos de datos Abstractos (TDA)
• Un tipo abstracto de datos puede definirse
mediante la ecuación:

TAD = Representación(datos) + Operaciones


(funciones y procedimientos)
Estructura de un TAD
Ventajas de los TAD
1. Permite una mejor conceptualización y
modelización (modelado) del mundo real.
2. Mejora la robustez del sistema. (Permite la
especificación del tipo de cada variable).
3. Mejora el rendimiento
4. Separa la implementación de la especificación
5. Permite la extensibilidad del sistema
6. Localizan las operaciones y representación de
atributos
Ejemplo:
• Clase hora que tiene datos separados del tipo int para horas,
minutos y segundos. Un constructor inicializara este dato a
0, y otro lo inicializara a valores fijos. Una función miembro
deberá visualizar la hora en formato 11:59:59. Otra función
sumara dos objetos de tipo hora pasados como argumentos.

• Una función principal main() creara dos objetos inicializados


y otro que no esta inicializado. Se suman los dos valores
inicializados y se deja el resultado en el objeto no
inicializado. Por ultimo se muestra el valor resultante.
Solución
Datos locales y Datos Globales
Programa Procedimental
Programación Orienta a Objetos
Ejemplo: Diferentes modelos de abstracción del
termino coche(carro)
• Un coche (carro) es la combinación de
diferentes partes, tales como motor,
carrocería, cuatro ruedas, cinco puertas.

• Un coche (carro) es un concepto común para


diferentes tipos de coches. Pueden clasificarse
por el nombre del fabricante, por el
carburante que utilizan.
Continua…
Importante!
• La abstracción coche se utilizara siempre que
la marca, la categoría o el carburante no sean
significativos.

• Así un caro (coche) se utilizara para


trasnportar personas o ir de carche-lejo o car
Encapsulación de Datos
• Es el proceso de agrupar datos y
operaciones relacionadas bajo la
misma unidad de programación.

• En el caso de los objetos, poseen las


mismas características y
comportamiento se agrupan en
clases que no son mas que unidades
que encapsulan datos y operaciones.
Pasos del diseño de un POO
• Identificar los objetos del sistema
• Agrupar en clases a todos los
objetos que tengan características y
comportamientos comunes.
• Identificar los datos y operaciones
de cada una de las clases.
• Identificar las relaciones que
pueden existir entre las clases.
Objetos

• Es algo que visualiza, se utiliza y


juega un rol o papel.
• En la POO intenta descubrir e
implementar los objetos que
juegan el rol en el dominio del
problema y en consecuencia
del programa.
Representación de Objetos
Clases
• Es un tipo de datos al igual que
cualquier otro tipo de dato definido
en un lenguaje de programación.

• Describe muchos objetos y es


preciso definirla, aunque no
implique la creación de objetos
Representación de Clases
Generalización: Herencia
• Es la propiedad que permite
compartir información entre dos
entidades evitando la redundancia.

• Herencia: permite definir nuevas


clases a partir de otras clases ya
existentes, de modo que presentan
las mismas características
Ejemplo: Herencia de Clases
Polimorfismo
• Es la propiedad de que un operador o una función
actúen de modo diferente en función del objeto
sobre el que se aplican.

• Significa la capacidad de una operación de ser


interpretada solo por el propio objeto que lo invoca.
Ejemplo:

• Definir una jerarquía de clases para: animal,


insecto, mamífero, pájaros, persona hombre y
mujer. Realizar una definición en seudocódigo
de las clases.
Solución

• Las clases de objeto mamífero, pájaro e


insecto se definen como subclases de animal;
la clase de objeto Persona como una subclase
de mamífero, y un hombre y una mujer son
subclases de persona.
Continua…
Definición de clases con la siguiente
estructura
Continua…
Conclusiones
• Conoce conceptos básicos de análisis de
rendimiento.
• Comprende el análisis, verificación y eficiencia de un
algoritmo.
• Comprende un Tipo de dato abstracto, su estructura
y ventajas
• Comprende el análisis de algoritmos de POO

También podría gustarte