Algoritmos

18,867 views

Published on

Definición y elementos de los algoritmos

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
18,867
On SlideShare
0
From Embeds
0
Number of Embeds
1,249
Actions
Shares
0
Downloads
403
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Algoritmos

  1. 1. ALGORITMOS Ing. David Arturo Ríos Muñoz Informática II
  2. 2. Definiciones <ul><li>Un conjunto de pasos que nos permite obtener la solución a un problema. </li></ul><ul><li>Una serie de pasos organizados que describe el proceso que se debe seguir para dar solución a un problema específico. </li></ul><ul><li>Una secuencia finita de instrucciones realizables, no ambiguas, cuya ejecución conduce a la resolución de un problema. </li></ul>
  3. 4. Origen de Algoritmo <ul><li>Se deriva del nombre latinizado del matemático árabe Mohamed Ibn Al Kow Rizmi. Quien encontró un método para encontrar un máximo común divisor, al igual que Euclides. </li></ul>
  4. 5. Ejemplo del algoritmo de Euclides <ul><li>Se tienen las cifras a = 945 y b = 651 entonces: </li></ul><ul><li>945/651 = 1 y quedan 294, luego: </li></ul><ul><li>651/294 = 2 y quedan 63 </li></ul><ul><li>294/63 = 4 y quedan 42 </li></ul><ul><li>62/42 = 1 y quedan 21 </li></ul><ul><li>42/21 = 2 y quedan 0 </li></ul><ul><li>Entonces el máximo común divisor será 21. </li></ul>
  5. 6. Clasificación de métodos <ul><li>Los métodos que utilizan algoritmos para la resolución de algún problema o tarea se conocen como algorítmicos. </li></ul><ul><li>Los métodos que no utilizan un proceso establecido sino que implican algún juicio o interpretación se conocen como métodos heurísticos. </li></ul><ul><li>Para la informática, el uso de programas representa el uso de algoritmos para resolver algún problema o tarea en específico. </li></ul><ul><li>La codificación de estos algoritmos se realiza en algún lenguaje informático como C+, Java, Qbasic, entre otros… </li></ul>
  6. 7. Representación de los algoritmos <ul><li>Existen dos maneras de representar un algoritmo: </li></ul><ul><li>Gráfica: es con símbolos, utilizando algún tipo de diagrama por ejemplo el diagrama de flujo. </li></ul><ul><li>No gráfica: describiendo las operaciones que se llevarán a cabo, utilizando un pseudocódigo (lenguaje simulado donde se pueden describir las tareas a realizar sin conocer los comandos de un lenguaje especifico). </li></ul>
  7. 8. Otra clasificación puede ser: <ul><li>Deterministas: en cada paso del algoritmo se determina, de forma única, el siguiente paso (lineal no muy complejo). </li></ul><ul><li>No deterministas: deben decidir en cada paso de la ejecución entre varias alternativas y agotarlas todas antes de encontrar la solución. </li></ul><ul><li>Ejemplos: la diferencia en el arreglo de un hombre y una mujer. </li></ul>
  8. 10. Diagrama no determinista
  9. 11. Diagrama determinista
  10. 12. CARACTERISTICAS DE LOS ALGORITMOS <ul><li>Finito. Qué se acaba después de un número finito de pasos. </li></ul><ul><li>Definido. Definirse en forma precisa para cada paso, si se sigue dos veces se obtiene el mismo resultado. </li></ul><ul><li>Preciso. Todas sus operaciones deben ser lo suficientemente claras (no ambiguas). </li></ul>
  11. 13. Partes de un algoritmo <ul><li>Entrada. Cantidades dadas antes de empezar que representan al mundo real. </li></ul><ul><li>Proceso. Descripción de las operaciones que se llevarán a cabo con las entradas anteriores. </li></ul><ul><li>Salida. Producto obtenido después del algoritmo (dato o producto final). </li></ul>
  12. 14. Características de calidad de un algoritmo. <ul><li>Corrección. Que siempre lleve a un resultado correcto. </li></ul><ul><li>Funcionalidad. Que funcione para lo que fue hecho. </li></ul><ul><li>Eficiencia. Que utilice la menor cantidad de recursos. </li></ul><ul><li>Claridad. Puede estar documentado para comprender mejor su funcionamiento. </li></ul>
  13. 15. Actividad individual <ul><li>Contesta las siguientes preguntas: </li></ul><ul><li>¿Cuál es la definición formal de algoritmo? </li></ul><ul><li>¿Cuándo podemos decir que un algoritmo funciona? </li></ul><ul><li>¿Qué relación tiene un algoritmo claro con uno eficiente? </li></ul><ul><li>¿Cuál es la función del proceso de salida de un algoritmo? </li></ul><ul><li>¿Por qué un algoritmo debe ser claro? </li></ul>
  14. 16. Ejercicio en parejas <ul><li>Elabora un algoritmo de la vida escolar cotidiana donde se incluyan al menos la tres partes que lo integran (entrada, proceso y salida). </li></ul>
  15. 17. DEFINICION BASICA <ul><li>Problema.- Asunto o conjunto de cuestiones que se plantean para ser resueltas. </li></ul><ul><li>Son situaciones nuevas que requieren que la gente responda con comportamientos nuevos, y varían de acuerdo al contexto en el que se plantean: ejemplo, problemas matemáticos, químicos, filosóficos, etcétera … </li></ul>
  16. 18. Elementos de un problema: <ul><li>Situación inicial </li></ul><ul><li>Situación final u objetivo a alcanzar. </li></ul><ul><li>Restricciones o pautas respecto a métodos, actividades, tipos de operaciones, etc… </li></ul>
  17. 19. EJEMPLO
  18. 20. PASOS PARA LA SOLUCION DE PROBLEMAS <ul><li>No existe una metodología universal pero generalmente se utilizan las siguientes fases. </li></ul><ul><li>Definición del problema. Es el enunciado del problema, con el cual se delimita (¿qué se desea realizar?). </li></ul><ul><li>Análisis del problema. Se realiza una lista de los requisitos o restricciones que posee el problema para su mejor delimitación. </li></ul><ul><ul><li>NOTA: Para definir el problema es necesario desarrollar un enunciado definitivo del problema por resolver e incluir un a definición de la situación actual, las restricciones y las metas que se lograrán. </li></ul></ul><ul><li>Diseño del algoritmo. Se busca desarrollar de manera teórica los pasos que seguiremos par resolver dicho problema </li></ul>
  19. 21. PASOS PARA LA SOLUCION DE PROBLEMAS <ul><li>Codificación. Se traducen las instrucciones o pasos de la etapa anterior (en informática se utiliza un lenguaje de alto nivel para obtener un programa). </li></ul><ul><li>Prueba y depuración. Se lleva a cabo los pasos del codificado y se comprueba que se llegue a la solución esperada, de detectan errores y se van corrigiendo, además de busques la eficiencia. </li></ul><ul><li>Documentación: En informática es el desarrollo de manuales para los usuarios del programa. </li></ul><ul><li>Mantenimiento. Es la actualización y modificación del programa para resolver necesidades nuevas del usuario. </li></ul>
  20. 22. MÉTODOS DE SOLUCIÓN DE PROBLEMAS <ul><li>Para el desarrollo de nuevos algoritmos se tienen los siguientes métodos: </li></ul><ul><li>METODO DE FUERZA BRUTA. </li></ul><ul><li>No es un esquema algorítmico sino más bien una solución directa poco reflexionada. Puede dar una aproximación a la solución final y se basa primordialmente en el método de prueba y error. </li></ul><ul><li>DIVIDE Y VENCERÁS </li></ul><ul><li>Consiste en descomponer el problema en subproblemas que se resuelven independientemente para después combinar las soluciones o resolver el problema original. Se puede aplicar con éxito a problemas matemáticos como multiplicación de matrices, algebra, etc.. </li></ul>
  21. 23. MÉTODOS DE SOLUCIÓN DE PROBLEMAS <ul><li>MÉTODO VORAZ </li></ul><ul><li>Trata de producir un mejor resultados a partir de un conjunto de opciones. Se procede paso a paso realizando la mejor elección entre las posibles. Se emplea en la optimización, por lo que parte de una solución que puede mejorarse. </li></ul><ul><li>El algoritmo se orienta a la selección de la mejor solución con base a ciertas candidatas a solución. </li></ul><ul><li>Ejemplo: desglosar una cantidad en el menor número de monedas posible </li></ul>
  22. 24. MÉTODOS DE SOLUCIÓN DE PROBLEMAS <ul><li>PROGRAMACIÓN DINAMICA. </li></ul><ul><ul><li>Permite resolver un problema mediante una secuencia de decisiones, menos directo que el método voraz. </li></ul></ul><ul><ul><li>Solamente al final se sabe la mejor decisión de todas. </li></ul></ul><ul><ul><li>Inventada por el matemático Richard Bellman en 1953. </li></ul></ul><ul><ul><li>Se utiliza una tabla para ir identificando los resultados de cada alternativa y se basa en ecuaciones. </li></ul></ul>
  23. 25. MÉTODOS DE SOLUCIÓN DE PROBLEMAS <ul><li>ALGORITOMOS VUELTA ATRÁS O BACKTRACKING. </li></ul><ul><ul><ul><li>No siguen reglas para la búsqueda de una solución, simplemente efectúan una búsqueda sistemática, probar todo lo posible hasta encontrar una solución. </li></ul></ul></ul><ul><ul><ul><li>Se llaman de vuelta atrás porque en caso de no encontrar una solución en alguna subtarea, se regresa a la tarea original y comienza con otra subtarea o alternativa. </li></ul></ul></ul><ul><ul><ul><li>Se asemejan al recorrido dentro de un diagrama de árbol. </li></ul></ul></ul>
  24. 26. DIAGRAMAS <ul><li>Una forma de representar los algoritmos es mediante el uso de diagramas, principalmente diagramas de flujo. </li></ul><ul><li>Definición. Diagrama es una representación gráfica que muestra las relaciones entre diferentes partes de un conjunto o sistema. </li></ul>
  25. 27. Funciones de un diagrama <ul><li>Muestran gráficamente las acciones que se realizaran de acuerdo con el programa. </li></ul><ul><li>Ayudan a pensar claramente. </li></ul><ul><li>Ayudan a detectar errores. </li></ul><ul><li>Facilitan cambios en el programa. </li></ul><ul><li>EXISTEN DIFERENTES TIPOS DE </li></ul><ul><li>PROGRAMAS </li></ul>
  26. 28. Diagramas de entrada-proceso-salida (IPO) <ul><li>Siglas en inglés (input-process-output) </li></ul><ul><li>Es simple, donde se presenta una entrada desde el usuario, un dispositivo, o un programa, se procesa la información y se obtiene un resultado. </li></ul><ul><li>Su funcionamiento es realmente claro y presenta las siguientes etapas: </li></ul><ul><ul><li>Entrada. Es la información que se obtiene para resolver el problema. </li></ul></ul><ul><ul><li>Proceso. Involucra todo aquello que se hace para manipular o alterar los datos de entrada. Son los pasos necesarios para obtener el resultado de salida, ocupa generalmente la mayor parte del programa. </li></ul></ul><ul><ul><li>Salida. Es la meta de la solución del problema. </li></ul></ul>
  27. 29. Ejemplo de un algoritmo
  28. 30. DIAGRAMA HIPO (Hierarchy-Input-Process-Output) <ul><li>Fueron desarrollados por la IBM como esquemas de representación para un desarrollo jerárquico de arriba abajo. </li></ul><ul><li>Contiene una tabla visual de contenidos, un conjunto de diagramas generales y otro de detalles. </li></ul>
  29. 31. DIAGRAMA DE FLUJO <ul><li>Son representaciones gráficas de los pasos a seguir para lograr un resultado. </li></ul><ul><li>Se utilizan para representar algoritmos pequeños, ya que requieren espacio y tiempo para su elaboración. </li></ul><ul><li>Debe ilustrar gráficamente los pasos o procesos a seguir . </li></ul><ul><li>Se constituye principalmente de la siguiente manera: inicia, recibe datos, realiza el procesamiento, muestra resultados y finaliza. </li></ul>
  30. 32. Ejemplos de diagramas de flujo
  31. 33. SIMBOLOGIA DE LOS DIAGRAMAS DE FLUJO <ul><li>PROCESO. Se utiliza para representar operaciones de proceso. Son símbolos de entrada y salida. </li></ul><ul><li>Usualmente se colocan dentro de el instrucciones aritméticas y movimiento de datos. </li></ul><ul><li>TERMINAL. Represente el comienzo (Inicio) y el final (fin) de un programa o algoritmo. </li></ul><ul><li>DECISION. Tiene una entrada y por lo menos dos salidas o transferencias, indica operaciones de lógica o comparación y las salidas por lo general indican un sí o un no para una instrucción condicional. </li></ul>
  32. 34. SIMBOLOGIA DE LOS DIAGRAMAS DE FLUJO <ul><li>CONECTOR. Indican una salida a otra parte del diagrama o indican una entrada hacia cierta parte del diagrama, sirven para evitar confusiones con las líneas de flujo. </li></ul><ul><li>PROCESO PREDETERMINADO. Indican una parte del programa que se repite, se escribe una sola vez y luego se integra donde se requiera. </li></ul><ul><li>ANOTACION. Se emplean para añadir comentarios y se dibujan a un lado de los símbolos u operaciones a comentar. </li></ul>
  33. 35. SIMBOLOGIA DE LOS DIAGRAMAS DE FLUJO <ul><li>PROCESO MANUAL. </li></ul><ul><li>Entrada/ Salida de datos. </li></ul><ul><li>Pantalla </li></ul><ul><li>Impresora </li></ul><ul><li>Disco. </li></ul><ul><li>Cinta magnética. </li></ul>
  34. 36. SIMBOLOGIA DE LOS DIAGRAMAS DE FLUJO SIMBOLO OPERACIÓN SIMBOLO OPERACIÓN + Sumar ≥ Mayor o igual que - Menos ≤ Menor o igual que * Multiplicación ≠ <> Diferente de / División Si ± Más o menos No = Equivalente True > Mayor que False < Menor que
  35. 37. ETAPAS EN CONSTRUCCION DE DIAGRAMAS DE FLUJO <ul><li>Todo diagrama debe tener un inicio y un fin. </li></ul><ul><li>Las líneas de conexión deben ser rectas verticales y horizontales (ni inclinadas ni cruzadas) </li></ul><ul><li>Todas las líneas deben estar conectadas por un símbolo. </li></ul><ul><li>La notación utilizada es independiente al lenguaje de programación. </li></ul><ul><li>Debe construirse de arriba abajo y de izquierda a derecha. </li></ul><ul><li>Si se requiere más de una hoja se deben utilizar conectores fuera de página. </li></ul><ul><li>No puede legar más de una línea en un símbolo. </li></ul>
  36. 38. Ejemplos <ul><li>Diseñar un algoritmo que dando como dato la calificación de un alumno en un examen escriba «Aprobado» si su calificación es mayor que 8 y «Reprobado» en caso contrario. </li></ul><ul><li>Diagrama de flujo que encuentre la suma de los primeros 15 números naturales. </li></ul>
  37. 39. Caso 1. EJEMPLO INICIO LEER «CALIFICACION CALIFICACION >= 8 IMPRIMIR «APROBADO» FIN IMPRIMIR «REPROBADO» SI NO
  38. 40. Caso 2. EJEMPLO INICIO FIN SUMA = 0 N = 0 N = N + 1 SUMA = SUMA + N N = 15 MUESTRA SUMA NO SI
  39. 41. PSEUDOCODIGO <ul><li>Es un lenguaje de especificaciones de algoritmos. </li></ul><ul><li>Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. </li></ul><ul><li>Utiliza palabras que indican el proceso a realizar. </li></ul><ul><li>El pseudocódigo siempre comienza con la palabra inicio y termina con la palabra fin. </li></ul>
  40. 42. Componentes del pseudocódigo <ul><li>ASIGNACIÓN DE DATOS. Consiste en el paso de valores o resultados de una zona de memoria (variable) a otra. </li></ul><ul><ul><li>Simple. Dar un valor constante a una variable. </li></ul></ul><ul><ul><li>Contador. Se utiliza como un verificador de número de veces que se realiza el algoritmo. </li></ul></ul><ul><ul><li>Acumulador. Se usa como un sumador en el proceso. </li></ul></ul><ul><ul><li>De trabajo. Puede recibir resultados de operaciones matemáticas. </li></ul></ul><ul><ul><li>FORMATO </li></ul></ul><ul><ul><li><nombre de variable> ← <expresión> </li></ul></ul>
  41. 43. Componentes del pseudocódigo <ul><li>ESCRITURA O SALIDA DE DATOS. Consiste en mandar por un dispositivo de salida un resultado o mensaje («mensaje«, valor). </li></ul><ul><ul><li>FORMATO </li></ul></ul><ul><ul><li>salida: (<lista de expresiones>) </li></ul></ul>
  42. 44. Componentes del pseudocódigo <ul><li>LECTURA DE DATOS. Consiste en recibir desde un dispositivo de entrada un valor o un dato, que se almacena en una variable. </li></ul><ul><ul><li>FORMATO </li></ul></ul><ul><ul><li>LEA <variable> </li></ul></ul>
  43. 45. Ventajas del pseudocódigo frente al diagrama de flujo <ul><li>Ocupa menos espacio en una hoja de papel. </li></ul><ul><li>Permite representar en forma fácil operaciones repetitivas complejas. </li></ul><ul><li>Es muy fácil de pasar del pseudocódigo a un lenguaje de programación. </li></ul><ul><li>Si se da seguimiento a las reglas se pueden observar los niveles que tiene cada operación. </li></ul>
  44. 46. ESTRUCTURAS DE CONTROL DE LOS ALGORITMOS. <ul><li>Son un grupo de formas de trabajo que permiten realizar ciertos procesos para llegar a la solución del problema. </li></ul><ul><ul><li>Existen tres grupos o estructuras de los algoritmo: </li></ul></ul><ul><ul><li>Secuencial. </li></ul></ul><ul><ul><li>Alternativa. </li></ul></ul><ul><ul><li>Repetitiva. </li></ul></ul>
  45. 47. 1. Secuencial. <ul><li>Es una estructura con una entrada y una salida, con una serie de acciones con ejecución lineal y un orden. </li></ul><ul><ul><li>Las reglas o acciones del algoritmo deben cumplir las siguientes propiedades: </li></ul></ul><ul><ul><li>Deben ser seguidas de una secuencia definida de pasos. </li></ul></ul><ul><ul><li>Sólo puede ejecutarse una operación a la vez. </li></ul></ul>
  46. 48. 2. Alternativa. <ul><li>Es una estructura con una entrada y dos o más salidas. </li></ul><ul><li>Se realiza una acción elegida entre varias de acuerdo a una condición. </li></ul><ul><li>Puede ser simple o compuesta. </li></ul><ul><ul><li>Se clasifica en: </li></ul></ul><ul><ul><li>ESTRUCTURA DE DOS SALIDAS. </li></ul></ul><ul><ul><li>ESTURTURA DE TRES O MÁS SALIDAS. </li></ul></ul><ul><li>Utiliza palabras de control como si, no, entonces o if, then, else) </li></ul>
  47. 49. 3. Repetititva <ul><li>Es una estructura con una entrada y una salida en la cual se repite una acción un número determinado o indeterminado de veces. </li></ul><ul><li>Se condiciona al cumplimiento de una condición. </li></ul><ul><li>Estas estructuras pueden ser: </li></ul><ul><ul><li>Estructura para (for). Una acción se repite un número fijo de veces. </li></ul></ul><ul><ul><li>Estructura mientras (while). Se repite una acción mientras se cumpa una condición que controla el ciclo o bucle. LA CONDICIÓN SE EVALÚA SIMPRE ANTES DE CADA REPETICIÓN. </li></ul></ul><ul><ul><li>Estructura Hasta (until). Se repite la acción hasta que se cumpla una condición </li></ul></ul>
  48. 50. Ejemplos Estructura Secuencial <ul><li>Pseudocódigo </li></ul><ul><li>INICIO </li></ul><ul><li>LEA <CAL1> <CAL2> <CAL3> </li></ul><ul><li>SUMA ← CAL1 + CAL2 + CAL3 </li></ul><ul><li>PROM ← SUMA/3 </li></ul><ul><li>SALIDA: «TU PROMEDIO ES:» PROM </li></ul><ul><li>FIN </li></ul><ul><li>Diagrama </li></ul>INICIO LEA <CAL1><CAL2><CAL3> SUMA ← CAL1 + CAL2 +CAL3 PROM ← SUMA/3 IMPRIMIR «TU PROMEDIO ES» PROM FIN
  49. 51. Ejemplos Estructura Alternativa <ul><li>Pseudocódigo </li></ul><ul><li>INICIO </li></ul><ul><li>LEA <CAL> </li></ul><ul><li>SI CAL>=8 </li></ul><ul><li>ENTONCES </li></ul><ul><li>SALIDA: «APROBADO» </li></ul><ul><li>SI_NO </li></ul><ul><li>SALIDA: «REPROBADO» </li></ul><ul><li>FIN </li></ul><ul><li>Diagrama </li></ul>INICIO LEER «CAL» CALI >= 8 IMPRIMIR «APROBADO» FIN IMPRIMIR «REPROBADO» SI NO
  50. 52. Ejemplos Estructura REPETITIVA <ul><li>Diagrama </li></ul>INICIO FIN SUMA = 0 N = 0 N = N + 1 SUMA = SUMA + N N = 15 MUESTRA SUMA NO SI

×