Algoritmo .pdf
Document Details
Uploaded by RightfulSlideWhistle
Full Transcript
CONCEPTO DE ALGORITMO por Luis Arriaza ÍNDICE 1. Definición de algoritmo 2. Características de un buen algoritmo 3. Ejemplos de algoritmos simples 4. Notación y representación de algoritmos (pseudocódigo y diagramas de flujo) DEFINICIÓN DE 1 ALGORITMO DEFINICIÓN DE ALGORITMO Un alg...
CONCEPTO DE ALGORITMO por Luis Arriaza ÍNDICE 1. Definición de algoritmo 2. Características de un buen algoritmo 3. Ejemplos de algoritmos simples 4. Notación y representación de algoritmos (pseudocódigo y diagramas de flujo) DEFINICIÓN DE 1 ALGORITMO DEFINICIÓN DE ALGORITMO Un algoritmo es en realidad un procedimiento por etapas. Es un conjunto de reglas que hay que seguir para realizar una tarea o resolver un problema. Por ejemplo: Las recetas de cocina, las operaciones matemáticas o incluso las instrucciones para montar un mueble pueden considerarse algoritmos. DEFINICIÓN DE ALGORITMO EN PROGRAMACIÓN INFORMÁTICA En el campo de la programación informática, los algoritmos son conjuntos de reglas que indican al ordenador cómo ejecutar una tarea. En realidad, un programa informático es un algoritmo que indica al ordenador qué pasos debe realizar y en qué orden para llevar a cabo una tarea específica. Se escriben utilizando un lenguaje de programación. ¿CUÁLES SON LOS DIFERENTES TIPOS DE ALGORITMOS? DIVIDE Y VENCERÁS 1 Los algoritmos “divide y vencerás” permiten dividir un problema en varios subproblemas del mismo tipo. FUERZA BRUTA 2 Los algoritmos de fuerza bruta consisten en probar todas las soluciones posibles hasta encontrar la mejor. VORAZ 3 Un algoritmo voraz encuentra la solución óptima localmente, con el objetivo de encontrar una solución óptima para el problema global. ¿CUÁLES SON LOS DIFERENTES TIPOS DE ALGORITMOS? VUELTA ATRÁS 4 Un algoritmo de vuelta atrás divide el problema en subproblemas que se pueden intentar resolver uno tras otro. Si no se encuentra la solución, basta con retroceder en el problema hasta encontrar la manera de seguir avanzando.o. PROGRAMACIÓN DINÁMICA 5 Por último, un algoritmo de programación dinámica. Todos estos subproblemas se resuelven una vez, y su solución se almacena para su uso futuro. Esto evita tener que volver a calcular sus soluciones. CARACTERÍSTICAS DE 2 UN BUEN ALGORITMO CARACTERÍSTICAS DE UN BUEN ALGORITMO CLARIDAD Y SIMPLICIDAD Un algoritmo claro y simple es más fácil de entender y mantener. Su estructura debe ser tal que cualquier programador, incluso sin ser el autor, pueda seguirlo sin dificultades. Fácil de entender: El algoritmo debe ser comprensible no solo por quien lo escribe, sino también por otros desarrolladores o usuarios que lo lean posteriormente. Esto reduce el riesgo de errores y facilita su modificación en el futuro. Pasos bien definidos: Cada paso debe ser claro y evitar ambigüedades. Cada operación debe tener un propósito definido que contribuya a resolver el problema. CARACTERÍSTICAS DE UN BUEN ALGORITMO EFICIENCIA Un algoritmo eficiente utiliza la menor cantidad posible de recursos, como tiempo y memoria, para completar una tarea. Tiempo de ejecución: El número de operaciones que realiza el algoritmo debe ser mínimo. El tiempo de ejecución se mide comúnmente en función de la complejidad temporal. Espacio de memoria: Además del tiempo, un buen algoritmo debe utilizar eficientemente la memoria, sobre todo en aplicaciones de gran escala Ejemplo: Un algoritmo recursivo mal diseñado puede consumir una gran cantidad de memoria debido a la acumulación de llamadas recursivas. CARACTERÍSTICAS DE UN BUEN ALGORITMO CORRECIÓN Un algoritmo es correcto si proporciona la solución esperada para todos los casos posibles de entrada. Es crucial verificar que funcione adecuadamente con diversos escenarios. Pruebas exhaustivas: El algoritmo debe ser probado con una variedad de casos, incluidos casos extremos, para garantizar que siempre da una respuesta correcta. Ejemplo: Si se desarrolla un algoritmo que calcule la raíz cuadrada de un número, se necesita probarlo con valores positivos, cero, y posiblemente negativos (dependiendo del contexto). CARACTERÍSTICAS DE UN BUEN ALGORITMO TERMINACIÓN El algoritmo debe garantizar que termina después de un número finito de pasos. Un algoritmo que no termina (por ejemplo, entrando en un bucle infinito) no es útil. Evitar bucles infinitos: Un mal diseño puede hacer que el algoritmo no termine nunca. Ejemplo: En un algoritmo que recorre una lista enlazada, es crucial tener una condición de salida para evitar un ciclo infinito, como verificar que se haya alcanzado el final de la lista. CARACTERÍSTICAS DE UN BUEN ALGORITMO MODULARIDAD La modularidad permite que el algoritmo se divida en partes o funciones independientes, cada una cumpliendo una tarea específica. Facilidad de mantenimiento: Al dividir el algoritmo en módulos, es más sencillo identificar errores, hacer mejoras o modificaciones. Además, las funciones modulares pueden reutilizarse en otros algoritmos. Ejemplo: En un algoritmo de búsqueda, se podría tener un módulo que realice la búsqueda binaria, otro que maneje la entrada de datos, y otro que maneje el formato de salida. CARACTERÍSTICAS DE UN BUEN ALGORITMO ADAPTABILIDAD El algoritmo debe ser flexible y fácil de modificar si cambian los requisitos del problema o el entorno en el que se ejecuta. Fácil adaptación: Los algoritmos que son rígidos y difíciles de modificar no son deseables, ya que los problemas suelen evolucionar con el tiempo. Un buen algoritmo debe poder ajustarse a nuevas condiciones sin grandes reestructuraciones. Ejemplo: Un algoritmo de búsqueda que pueda adaptarse fácilmente a diferentes tipos de datos o estructuras, como listas o árboles, será más útil a largo plazo. CARACTERÍSTICAS DE UN BUEN ALGORITMO DOCUMENTACIÓN Un buen algoritmo debe estar bien documentado para facilitar su comprensión, uso y mantenimiento. Comentarios: El código debe estar debidamente comentado, explicando el propósito de las funciones y las partes más complejas del algoritmo. Ejemplo: En un algoritmo que implementa el algoritmo de Dijkstra para encontrar el camino más corto, los comentarios pueden indicar qué parte del código actualiza las distancias mínimas y cuál se encarga de seleccionar el siguiente nodo. EJEMPLOS DE 3 ALGORITMOS SIMPLES EJEMPLOS DE ALGORITMOS SIMPLES ALGORITMO DE BÚSQUEDA LINEAL Tendiendo una lista de números, encontrar si el número ingresado está en la lista de números. Para resolver este problema se debe pensar en lo siguiente: recorrer cada elemento de la lista uno por uno y comparar con el elemento buscado. Si se encuentra, devolver su posición. Si se llega al final sin encontrarlo, devolver que no está presente. EJEMPLOS DE ALGORITMOS SIMPLES ALGORITMO DE SUMA DE DOS NÚMEROS Recibiendo dos números realizar la suma correspondiente. Este algoritmo es sencillo ya que únicamente lo más complicado es guardar los dos números y poder sumarlos para posteriormente mostrar su resultado. EJEMPLOS DE ALGORITMOS SIMPLES ENCONTRAR EL NÚMERO MÁXIMO Dada una lista de números, encontrar el número máximo de la lista. Para resolver este problema, hacemos lo siguiente: Recorrer la lista comparando cada número con el valor máximo actual. Si se encuentra un número mayor, actualizar el valor máximo. EJEMPLOS DE ALGORITMOS SIMPLES ALGORITMO DE FACTORIAL Consiste en multiplicar un número desde n hasta 1. Este algoritmo es famoso porque se puede facilitar mediante el uso de una técnica llamada recursividad. La recursividad se puede pensar como algo que se repite, cambia algo durante cada iteración hasta llegar a una solución. NOTACIÓN Y REPRESENTACIÓN 4 DE ALGORITMOS (PSEUDOCÓDIGO Y DIAGRAMAS DE FLUJO) ¿QUÉ ES UN PSEUDOCÓDIGO? El pseudocódigo es un conjunto estructurado de sentencias que se utiliza en informática para representar un algoritmo. No está escrito en ningún lenguaje de programación específico, sino que utiliza un lenguaje natural y símbolos fácilmente comprensibles para el ser humano. Utiliza las convenciones estructurales de un lenguaje de programación normal, pero está pensado para ser leído por un ser humano y no por máquinas. CARACTERÍSTICAS DE UN PSEUDOCÓDIGO El pseudocódigo no es específico de un lenguaje, 1 lo que significa que puede ser escrito y leído por cualquier programador independientemente del lenguaje de programación. 2 Se centra en el algoritmo y no en características específicas del lenguaje. CARACTERÍSTICAS DE UN PSEUDOCÓDIGO Está pensado para que lo entiendan tanto los 3 humanos como los ordenadores, lo que facilita la conversión del pseudocódigo en un lenguaje de programación. Por último, el pseudocódigo puede utilizarse con el 4 fin de modelar problemas del mundo real, así como algoritmos informáticos, lo que ayuda a los programadores a resolver problemas complejos. EJEMPLO DE PSEUDOCÓDIGO Las palabras en azul son instrucciones del programa. Este algoritmo nos muestra un mensaje indicando que el usuario debe de ingresar un numero. Luego se lee el número. Mediante una condición se determina si el numero ingresado es par o impar. En este caso MOD determina esa condición. MOD obtiene el residuo de una división. Este pseudocódigo es usado para determinar si un numero Al final de muestra un mensaje indicando si el numero es es par o impar. El programa usado en PSeInt. par o impar. ¿QUÉ ES UN DIAGRAMA DE FLUJO? Un diagrama de flujo es una forma visual la cual nos permite representar un algoritmo o proceso. En un diagrama de flujo se usan diferentes elementos y conexiones las cuales son permiten representar el algoritmo de una manera visual, estructurada y organizada Es ideal, que antes de programar un algoritmo, lo representemos en un diagrama de flujos, diseñando así su lógica. Gracias a ello, ya dispondremos de una gran parte del trabajo realizado, únicamente quedará plasmarlo en formato de código. ESTAS SON ALGUNAS FORMAS QUE AYUDAN A REPRESENTAR EL DIAGRAMA DE FLUJO: El rectángulo indica acciones. El rectángulo con bordes curvos representa la entrada o salida de datos. El rombo representa decisiones que afectan el flujo del proceso. EJEMPLO DE DIAGRAMA DE FLUJO Este diagrama está explicando que un cliente necesita solicitar un software a un desarrollador que crea una solución si esta es rechazada se crea una nueva solución, se revisa y se aprueba. O directamente se aprueba la primera solución que crea el desarrollador. MUCHAS GRACIAS