La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ing. Albino Goncalves. Mayo 2007 Algoritmo Definiciones: – Consiste en una secuencia de pasos que hay que seguir para obtener resultados. – Consiste en.

Presentaciones similares


Presentación del tema: "Ing. Albino Goncalves. Mayo 2007 Algoritmo Definiciones: – Consiste en una secuencia de pasos que hay que seguir para obtener resultados. – Consiste en."— Transcripción de la presentación:

1 Ing. Albino Goncalves. Mayo 2007 Algoritmo Definiciones: – Consiste en una secuencia de pasos que hay que seguir para obtener resultados. – Consiste en una descomposición de acciones que deben ser ejecutados a través de una descripción de los datos que son manipulados por las acciones. – Los algoritmos permiten describir algo con pasos o sea una secuencia de pasos finitos que resuelve un problema en particular.

2 Ing. Albino Goncalves. Mayo 2007 Algoritmo Características: – Debe ser preciso e indicar un orden de realización de cada paso. – Debe ser definido, es decir, si se repite varias veces, debe de dar el mismo resultado. – Debe ser finito, es decir, debe terminar en algún momento.

3 Ing. Albino Goncalves. Mayo 2007 Algoritmo Ejemplo: Algoritmo que calcule (A+B)*C 1.- Obtener A, B y C. (ENTRADA DE DATOS) 2.- Sumar A, B y asignarlo en resultado_suma. 3.- Multiplicar resultado_suma y C y guardar en resultado. (ASIGNACION) 4.- Mostrar resultado(SALIDA DE DATOS) S E C U E N CI A

4 Ing. Albino Goncalves. Mayo 2007 Resolución de un problema Para resolver un problema se debe seguir los siguientes pasos: Análisis del problema Diseño del Algoritmo Codificación (Programación) Ejecución y Validación

5 Ing. Albino Goncalves. Mayo 2007 Estructuras de Control Secuencial: – Es aquella en la cual una acción sigue a otra en forma secuencial. – Ejemplo: 8.- Calcular la suma y el producto de 2 números. Inicio Acción 1 Acción 2 …. Acción n Fin

6 Ing. Albino Goncalves. Mayo 2007 Selectivas: – Permiten en base a una condición de selección (toma de decisión ) realizar una bifurcación del programa. Estructuras de Control

7 Ing. Albino Goncalves. Mayo 2007 Selectivas: – Simple (si/entonces) Estructuras de Control Si condición entonces acción; fin si. Acciones VF

8 Ing. Albino Goncalves. Mayo 2007 Selectivas: – Doble (si/entonces/sino) Estructuras de Control Si condición entonces acción_1; sino acción 2; fin si. acción_3 Acciones 1 VF Acciones 2

9 Ing. Albino Goncalves. Mayo 2007 Selectivas: – Múltiple: Cuando se desea que existan más de dos decisiones (según sea). Estructuras de Control En caso que (Variable) hacer caso e1: acción 1; caso e2: acción 2; ….. caso en: acción n; fin en caso que. Acciones 1 Acciones 2 Acciones N e1 e2 en

10 Ing. Albino Goncalves. Mayo 2007 Selectivas: – Múltiple con cualquier otro caso: Cuando se desea que existan más de dos decisiones (según sea) y una por default. Estructuras de Control En caso que (Variable) hacer caso e1: acción 1; caso e2: acción 2; ….. caso en: acción n; cualquier otro caso acción_otra fin en caso que. Acciones 1 Acciones 2 Acciones N e1 e2 en Accion_otra

11 Ing. Albino Goncalves. Mayo 2007 Repetitivas: – Permiten la ejecución de un conjunto de pasos repetidas veces. Una iteración posee una condición de iteración que en algún momento finalizará la iteración Estructuras de Control

12 Ing. Albino Goncalves. Mayo 2007 Estructuras de Control Repetitivas: Mientras: Permite repetir una acción o un bloque de acciones hasta que la condición sea falsa. Mientras (condición sea verdadera) hacer acciones fin_mientras Acciones FV

13 Ing. Albino Goncalves. Mayo 2007 Repetitivas: Repetir: Permite repetir una acción o un bloque de acciones hasta que la condición sea verdadera. Estructuras de Control Repetir acciones; Hasta (condición sea verdadera); acción_2 Acciones 1 F V

14 Ing. Albino Goncalves. Mayo 2007 Repetitivas: Desde/Para: Cuando se conoce de antemano el número de veces que se quiere repetir el ciclo. Estructuras de Control Para variable=inicio hasta valor final hacer acción_1; fin para; acción_2 Acciones FV

15 Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Preguntar Buscar familiaridad Resolver por analogía Análisis de medios y fines Divide y vencerás Construcción de bloques Combinación

16 Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Preguntar: Si el problema no es claro, debemos preguntar el porqué, cómo, cuando, etc. hasta saber exactamente lo que hay que hacer Buscar Familiaridad: No se trata de reinventar las cosas. Sí ya existe una solución para algo similar, hay que utilizarla

17 Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Resolver por analogía: No hay que limitarse a soluciones orientadas a la computación, hay que ver más allá y encontrar similitudes con otras áreas Análisis de medios y fines: Cuando se nos da el estado inicial y final, y al haberlos identificado, debemos encontrar los medios para llegar del principio al fin

18 Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Divide y vencerás: Dividir el problema en partes más pequeñas para que se haga más sencillo Construcción de bloques: Se puede ver como armar un rompecabezas. La solución de algunas partes del problema nos ayudarán a encontrar la solución general

19 Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Combinación: Similar a las anteriores, pero con la característica de que pequeñas soluciones forman parte de la solución general

20 Ing. Albino Goncalves. Mayo 2007 Representación Formal Ya dijimos que una de las características que debe tener un algoritmo es que pueda estar especificado o representado formalmente El objetivo es que cualquier persona interesada en el algoritmo sea capaz de entenderle Utilizaremos: Diagramas de flujo Diagramas N-S Pseudocódigo

21 Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo Es una representación esquemática del algoritmo o proceso Se les llama “de flujo” por que muestran el flujo de información dentro del algoritmo, desde el inicio hasta el fin Es una manera rápida y sencilla de visualizar la secuencia de pasos del algoritmo de forma general o específica

22 Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo Los diagramas de flujo utilizan diversos símbolos estándares: Inicio/Fin del programa Entrada/Salida de datos Cualquier tipo de operación Condición o desición Conector

23 Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo Conector fuera de página Líneas de flujo Archivo Subrutina

24 Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo El diagrama debe empezar de arriba abajo, o izquierda a derecha No deben existir líneas cruzadas Solamente el símbolo de decisión tiene más de una línea de salida Todos los símbolos deben estar conectados

25 Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo Factorial de un número x: Inicio Leer x n = 1 f = 1 f = f * n n = x? Imprime f Fin n = n + 1 NO SI

26 Ing. Albino Goncalves. Mayo 2007 Diagramas N-S (Nassi-Scheiderman) Es una representación gráfica del algoritmo y maneja una forma estructurada, a diferencia del anterior Hace uso de palabras reservadas para especificar acciones, algunas son: Inicio, Fin, Leer, Escribir Mientras, Repetir, Hasta, Para Incrementar, Decrementar, Hacer, Función Entero, Real, Carácter, Cadena

27 Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Algunas operaciones básicas son: Declaración de variables (Entero a, b) Asignación de valores (a = 3) Leer / Escribir (Escribir b)

28 Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Hace uso de bloques o estructuras para definir procesos, ciclos y condicionales El bloque de proceso es un rectangulo que contiene una operación o instrucción a realizar f = f * n Escribir f

29 Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Los bloques de condición permiten irnos por diferentes caminos Bloque de condición simple: Condición Camino 1Camino 2 SiNo

30 Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Bloque de condición múltiple: variable 1 2 3... otro Acción 1 2 3 n m

31 Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Los bloques de repetición permiten repetir una serie de instrucciones mientras se cumpla alguna condición Bloque de repetición mientras (while): Instrucciones Mientras condición

32 Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Bloque de repetición para (for): Para var = valor_inicial hasta valor_final Instrucciones Bloque de repetición hasta (do-while): Instrucciones Hasta condición

33 Ing. Albino Goncalves. Mayo 2007 Factorial de un número x: Diagramas N-S Inicio Entero x, f, n Leer x f = 1, n = 0 n = n + 1 Hasta x = n f = f * n Imprime f Fin

34 Ing. Albino Goncalves. Mayo 2007 Pseudocódigo Es una descripción compacta e informal del algoritmo usando lenguaje natural No obedece alguna regla de sintaxis, por lo que cada persona tiene diferentes formas de escribirlo Se puede especificar, por ejemplo, que se utilizará un estilo de escritura tipo C, para que el lector tenga una idea de cómo leerlo

35 Ing. Albino Goncalves. Mayo 2007 Pseudocódigo Factorial de un número x: Declarar x, n, f como enteros n = 0; f = 1 Hacer n = n + 1 f = f * n Mientras n != x Imprimir f

36 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Una vez que se tiene un algoritmo es posible analizarlo y evaluarlo para medir su factibilidad y efectividad Dicho análisis se llevará a cabo con respecto a los recursos que utilizará en la computadora: Tiempo: periodo que transcurre entre el inicio y final del algoritmo Espacio: cantidad de memoria que se necesita para la ejecución del algortimo

37 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Lo primero que podemos hacer es realizar un análisis experimental Escribimos el programa y lo implementamos en la computadora Realizamos una serie de pruebas al ejecutar el programa con diferentes tipos de entradas y medimos el tiempo Gráficamos los resultados y evaluamos el algoritmo comparándolo con otros resultados

38 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos El análisis experimental es útil pero tiene una serie de limitaciones: Es necesario implementar el algoritmo, lo cuál algunas veces es muy complicado o imposible No es posible ejecutar el programa con todas las entradas posibles, por lo que los resultados son solo una aproximación Sí queremos comparar nuestros resultados con otro algoritmo debemos usar el mismo software y hardware

39 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Se requiere realizar entonces un análisis teórico Utiliza una descripción de alto nivel (pseudocódigo) del algoritmo en lugar de su implementación Caracteriza el tiempo de ejecución y el espacio como función del tamaño de entrada, n Toma en cuenta todas las posibles entradas Permite evaluar el algoritmo independientemente del software y hardware utilizado

40 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos La mayoría de los problemas tienen un parámetro de entrada, que es el número de datos que hay que procesar, es decir, n Entonces la cantidad de recursos se especifica como una función de n Así podemos establecer una relación entre nuestro algoritmo con alguna de las siguientes funciones:

41 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos 1: Tiempo de ejecución constante. La mayoría de las instrucciones se ejecuta una vez o muy pocas log n: Tiempo logarítmico. Se puede considerar una constante en muchos casos n: Tiempo lineal. n log n: Si n se duplica, el tiempo de ejecución será un poco mayor al doble

42 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos n 2 : Tiempo cuadrático. n k : Tiempo polinomial. Incluye al cuadrático. Son en general algoritmos factibles b n : Tiempo exponencial. En general son algoritmos infactibles, excepto que la entrada n sea pequeña

43 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Para realizar el análisis teórico es necesario especificar el modelo de computadora en el que supondremos que se encuentra el algoritmo Se especifica el modelo de Máquina de Acceso Aleatorio (RAM – Random Access Machine) Este modelo es muy simple para eliminar cualquier complejidad que encontramos en las computadoras reales

44 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos El modelo de Máquina de Acceso Aleatorio (RAM – Random Access Machine): Tiene un CPU Y tiene un banco de celdas de memoria que pueden almacenar un número arbitrario de caracteres El CPU puede acceder a cualquier celda de memoria y esto lo hace en 1 unidad de tiempo

45 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Nuestro análisis se basará en la identificación y evaluación de operaciones primitivas Estas operaciones primitivas son computaciones básicas que realiza el algoritmo y pueden ser: Evaluación de expresiones (e.g. a = 3 + b) Asignación de valores (e.g. a = 6) Indexación a un arreglo (e.g. c[3] = 5) Llamada a un método Regresar de un método

46 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Algoritmo arregloMax (A, n) maxActual  A[0] for i  1 to n –1 do if A[i] > maxActual then maxActual  A[i] {incrementar i} return maxActual # Operaciones 2 2 + n 2 (n - 1) 1 Total: 7n - 1

47 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos El peor de los casos para arregloMax es 7n – 1, que especificamos como T(n) T(n) se ejecuta, en este caso, con tiempo lineal Por lo general, nos interesa saber el peor de los casos para evaluar un algoritmo. Aunque también podemos calcular el mejor de los casos y en algunas otras ocasiones el caso promedio

48 Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Existe una notación que nos indica el límite superior de la razón de crecimiento de una función, se le conoce como notación O- grande No veremos esta notación en este curso, pero es importante que conozcan de su existencia, ya que el análisis de algoritmos se especifica utilizando esta notación asintótica Por ejemplo, para arregloMax se tiene: 7n – 1 es O(n). Ya que podemos despreciar las constantes 7 y 1 para indicar que a lo mucho es una función lineal


Descargar ppt "Ing. Albino Goncalves. Mayo 2007 Algoritmo Definiciones: – Consiste en una secuencia de pasos que hay que seguir para obtener resultados. – Consiste en."

Presentaciones similares


Anuncios Google