La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Metodología para la Creación de Algoritmos

Presentaciones similares


Presentación del tema: "Metodología para la Creación de Algoritmos"— Transcripción de la presentación:

1 Metodología para la Creación de Algoritmos
Introducción a la Informática Departamento de Sistemas Universidad del Cauca 2006

2 Agenda Definiciones Importantes Algoritmo Programa
Metodología de Resolución de Problemas con Algoritmos Análisis Diseño Implementación Notación y Representación de Algoritmos Diagramas de Flujo Diseño del Algoritmo en Pseudo-código Otros tipos de diseño algorítmico

3 Algoritmo Ejemplos: Receta de Cocina Mapa del Tesoro Partitura Musical
Un algoritmo es una lista de actividades que se preparan para la realización de una tarea. Esta idea no sólo está relacionada con las computadoras, sino que pertenece al campo de casi todas las actividades humanas. Ejemplos: Receta de Cocina Mapa del Tesoro Partitura Musical Para expresarlo en términos intuitivos, un programa es una lista de actividades que se preparan para la realización de una tarea. Esta idea no sólo está relacionada con las computadoras, sino que pertenece al campo de casi todas las actividades humanas. Ejemplos de programas pueden ser: Una receta de cocina que indica los pasos que se deben seguir, uno a uno para preparar determinado alimento Un mapa de Tesoro: para indicar la posición del tesoro, el mapa generalmente tiene una serie de instrucciones que deben ser descifradas por quien desea desenterrarlo. Una partitura musical que instruye al ejecutante sobre las notas, los silencios, la intensidad del sonido y otros aspectos de la pieza que quiere tocar.

4 Qué es un algoritmo? Es una secuencia ordenada de pasos, sin ambigüedades, que conducen a la solución de un problema dado. Es la definición de los procesos definidos en el análisis. Se representa en un lenguaje natural. La exactitud es determinante. Es independiente del lenguaje de programación. Solo puede ejecutarse una operación a la vez. Algoritmo= Traducción al latín de la palabra árabe Alkhowarizmi, nombre de un matemático y astrónomo árabe.

5 Características de un algoritmo
Debe tener un punto particular de inicio. Preciso: Indica el orden de realización de cada paso. Definido: Si se sigue varias veces los mismos pasos con los mismos datos, se debe obtener siempre los mismos resultados. No debe permitir dobles interpretaciones. Finito: Debe terminar en algún momento, debe tener un número finito de pasos. Eficiente: Debe realizar los pasos con un mínimo de utilización de recursos. Independiente del lenguaje de Programación: Su implementación debe ser posible en cualquier lenguaje de programación Características de un Algoritmo: Preciso: Se refiere al orden de realización de los pasos Definido: Un algoritmo es definido cuando al ejecutarse con datos iguales en ocasiones distintas, producen resultados iguales en todas las ocasiones Finito: Los algoritmos deben estar constituidos por un número finito de pasos Independiente del lenguaje de Programación: Los algoritmos deben ser diseñados de forma independiente al lenguaje de programación en el que se implemente. Es decir, su implementación debe ser posible en cualquier lenguaje de programación

6 Programa Cuando un programa contiene precisamente el conjunto de instrucciones que resuelven un problema específico y completan correctamente una tarea propuesta, decimos que el programa es una materialización de un Algoritmo. Un algoritmo es el planteamiento general de la solución, mientras el programa es la solución misma y contiene todos sus detalles en forma ejecutable. La diferencia entre programa y algoritmo estriba en que un algoritmo es el planteamiento general de la solución, mientras el programa es la solución misma y contiene todos sus detalles en forma ejecutable. Resulta así, que un mismo algoritmo pueden corresponder distintos programas. Ej: Las instrucciones del mapa del tesoro escritas en ingles y en español son dos materializaciones distintas (dos programas del mismo algoritmo). Tenemos entonces, que aunque el algoritmo para resolver determinado problema no se modifique, puede haber varios programas que lo materialicen. Además la solución de un problema puede ser emprendida por varios programadores y cada uno puede formular su propio algoritmo para ejecutar la misma tarea. Los algoritmos se consideran correctos si resuelven el problema planteado, y normalmente ocurre que son muchas las soluciones correctas que se pueden encontrar, pero ciertamente algunos algoritmos serán preferibles a otros porque resultan más económicos al emplear los recursos (tiempo de CPU, memoria de la computadora, etc) o porque resultan más comprensibles. Normalmente sucede que lo que se gana al optimizar un aspecto, ocasiona pérdida en algún otro sentido, por lo que no es posible de una vez por todas cuál es el algoritmo óptimo que le corresponde ni existe una fórmula general que indique como diseñar la realización de una tarea para obtener el mejor algoritmo.

7 Elementos de un Programa
La principal razón para que las personas empiecen a programar, es porque se utiliza el computador como una herramienta para solucionar problemas. Elementos: El Objetivo El Programador Las Instrucciones El Ejecutor Restricciones: Instrucciones comprensibles para el ejecutor Realizable desde la situación del ejecutor No deben imposibilitar continuar la ejecución No repeticiones infinitas Elementos de un programa: El Objetivo: Es la tarea que se debe realizar cuando se ejecute el programa. Para que se pueda satisfacer el objetivo, debe contarse con las herramientas y los medios adecuados para la actividad propuesta; y cuando se prepara el programa es necesario tener en cuenta cuáles son los recursos que se utlilizan. El Programador: Es el encargado de preparar el plan o programa. Normalmente, se trata de una persona o un conjunto de personas, pero nada impide que sea una máquina (por ejemplo las que componen música) Las Instrucciones: Constituyen el núcleo del programa y tienen las siguientes características: Deben estar Materializadas en alguna forma accesible al ejecutor Pueden presentarse en un escrito, como un manual de procedimientos Pueden ser expresadas como un conjunto de señales grabadas en una cinta electromagnética, disquetes, etc. Como los programas de computador Ejemplo: Mapa del Tesoro: El objetivo es dirigir al ejecutor hacia el cofre que contiene el tesoro El programador es, con seguridad un malvado pero inteligente bucanero El ejecutor es aquel que tenga el mapa en su poder, sea capaz de seguir las instrucciones y posea los medios para llegar hasta la isla del tesoro después de sortear todas las dificultades normales de un viaje de esta naturaleza: complots, motines, tormentas, naufragios, etc. Las instrucciones en este caso, por lo general no están diseñadas para facilitar la tarea sino para entorpecerla, pues se supone que el bucanero lo único que pretendió fue dejar un registro que le permitiera a él mismo regresar por el botín una vez se hubiera desecho de todos los compañeros, los cuales deseaban también eliminarlo y apropiarse de todo. Restricciones de un programa. Para que un conjunto de instrucciones pueda constituir un programa válido: Cada una de ellas debe ser comprensible para el ejecutor (es decir, ser correcta en sintaxis): Por ejemplo, no es posible conducir un automovil normal explicándole verbalmente a la máquina, antes de salir, cuál es el comino que debe tomar y las precaucionesa que debe tener en cuenta, en ese caso las instrucciones son incomprensibles para el ejecutor. Cada una debe ser realizable desde la situación en que se encuentra el ejecutor. Ej: Para quien ha llegado a la cima de una montaña, lejos del agua, siguiendo el mapa, sería imposible obedecer una instrucción como: “nadar ahora hasta el fondo”. Aunque es una orden comprensible, no es posible obedecerla en estas circunstancias. Ninguna debe tener como consecuencia la imposibilidad de seguir ejecutando las instrucciones siguientes. Ej: Al borde de un precipicio, la orden “dar un paso al frente” puede conducir a un descalabro. No se deben presentar situaciones en las cuales el ejecutor se vea forzado a repetir indefinidamente una misma porción del programa. Ej: Para una persona que está buscando una dirección en una ciudad desconocida, no sería de ninguna ayuda decirle: “Dé la vuelta a la manzana y cada vez que llegue a este punto repita la misma acción” Para conseguir unas galletas bien horneadas, no existe manera de ejecutar la orden “sacarlas del horno 5 minutos antes de que se quemen”, a menos que se conozca el tiempo que les toma quemarse.

8 Metodología de Resolución de Problemas con Algoritmos
¿Qué pasaría, si el ingeniero civil o el arquitecto construye una casa o un edificio sin hacer sus planos, proyectos o maquetas? ¿Permitirías a tu abogado que te defendiera sin conocer las pruebas y sin un plan para tu defensa? ¿Permitirías que tu propio cirujano te interviniera sin hacer los estudios respectivos para obtener las evidencias del problema de salud que te aqueja?

9 Metodología de Resolución de Problemas con Algoritmos
El desarrollo de una solución a la medida de un problema requiere una metodología que gradualmente nos lleve a una efectiva solución del problema. Para poder realizar programas, además de conocer la metodología mencionada, también se debe de conocer las funciones que puede realizar el computador y las formas en que se pueden manejar los elementos que hay en el mismo. Mas aun, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos.

10 FASES IMPLEMENTACIÓN ANÁLISIS Codificación del algoritmo Compilación y
ejecución del programa DISEÑO Desarrollo de Algoritmos Prueba y Depuración Verificación del Algoritmo Documentación Mantenimiento

11 Análisis Que se va a hacer?
Ayuda a comprender la naturaleza del problema Los problemas deben estar bien definidos Realizar un examen bien cuidadoso del problema: “Lo que piden” Vs “Lo que necesitan” Vs “Lo posible” Mientras no se conozca totalmente el problema y lo que se desea que realice el computador, no tiene mucho caso continuar con la siguiente etapa.

12 Pasos para realizar un buen Análisis
1. Trabajo de campo 2. Indagar otros datos, condiciones y restricciones que afecten la resolución del problema. a. Idea General: se hace un estudio superficial del problema (enunciado del problema). b. Se especifican los Requisitos, se hace un estudio profundo (definición clara y precisa). - Datos de entrada. - Datos de salida: información que se desea producir. - Datos auxiliares: datos que pueden servir para realizar mejor un proceso, pero que no son de gran importancia para que éste cumpla su objetivo final. - Proceso: Métodos y fórmulas que se necesitan para procesar los datos.

13 Diseño ¿Cómo se va a hacer?
Se determina como el programa va a hacer la tarea solicitada. Debe estar bien definido, no se debe permitir dobles interpretaciones.

14 Pasos para realizar un buen diseño
1. Desarrollo del algoritmo 2. Verificación del algoritmo Partes de un algoritmo Pasos para el desarrollo de un algoritmo Notación y representación de algoritmos Prueba de Escritorio

15 Partes de un algoritmo Entradas: Información dada al algoritmo
Instrucciones: Operaciones necesarias para realizar un proceso Salidas: Respuestas obtenidas al finalizar el algoritmo

16 Pasos para el desarrollo de un algoritmo
1. Diseño ascendente: (Top-Down Design): Dividir el problema original en otros más simples y luego dividir estos subproblemas en otros más simples, y así sucesivamente. Se hace un esbozo.  2. Refinamiento sucesivo: Descripción mas detallada con pasos más específicos del problema. Se hacen varios niveles de refinamiento hasta que la solución sea clara, precisa y completa.  3. Representación del algoritmo en una herramienta de programación: El lenguaje del algoritmo debe ser independiente del lenguaje de programación. Herramientas: Diagramas de flujo, Pseudocódigo, Diagrama Nassi-Schneiderman (N-S).

17 Qué hacer para ver la película Superman Regresa?
Ejemplo Qué hacer para ver la película Superman Regresa? Ir al Cine Comprar una entrada Ver la película Regresar a casa si hay fila entonces ponerse en ella mientras haya personas delante avanzar en la cola si hay entradas entonces comprar una entrada pasar a la sala localizar la butaca mientras proyectan la película ver la película si no refunfuñar ver cartelera de cine en el periódico si proyectan “Superman Regresa” ir hasta el cine si no buscar otra actividad ...

18 localizar la butaca Inicio ver cartelera de cine en el periódico
si proyectan “Superman Regresa” ir hasta el cine si no buscar otra actividad fin fin_si si hay fila entonces ponerse en ella mientras haya personas delante avanzar en la cola fin_mientras si hay entradas entonces comprar una entrada pasar a la sala localizar la butaca mientras proyectan la película ver la película refunfuñar volver a casa Fin Inicio caminar hasta llegar a la primera fila repetir comparar números de fila si no son iguales pasar a la siguiente fila hasta que se localice la fila correcta mientras número de silla no coincida avanzar a la siguiente silla fin_mientras sentarse en la butaca Fin localizar la butaca

19 Notación y Representación de Algoritmos
Lenguajes Algorítmicos: Serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. Tipos:  Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (Diagrama de flujo o Diagrama Nassi-Schneiderman (N-S) ).  No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocódigo).

20 Diagrama de Flujo Diagrama Nassi-Schneiderman (N-S)
Un Diagrama de Flujo representa la esquematización gráfica de un algoritmo. Se diseña para permitir observar las estructuras y la forma como ellas se conectan entre sí al configurar un programa. Para facilitar la comprensión de las soluciones y la comunicación entre los programadores, es costumbre representar las estructuras gráficamente y organizarlas en esquemas que permiten visualizar el programa como un todo. Diagrama Nassi-Schneiderman (N-S) Escribir un programa en seudocódigo tiene varias ventajas importantes: El programa generalmente queda expresado en una forma que puede ser comprendida incluso por quienes no conocen mucho de programación. Así entonces, esta forma se presta para facilitar la comunicación entre diversos programadores y entre estos y su cliente Antes de poner en funcionamiento un programa es importante verificar que es capaz de producir el efecto que se espera. Cuando se requiere poner a prueba un mismo algoritmo en diferentes lenguajes, la forma mas usual no es traducir de un lenguaje inicial a otros, sino partir de la definición en seudo código y de ahí derivar las posibles implementaciones particulares. También conocido como diagrama de Chapin. Similar al Diagrama de Flujo, en el que se omiten los conectores y las cajas son contiguas. Las actividades que hacemos, en su mayoría siguen una serie consecutiva y ordenada de pasos o algoritmos. Desde el momento en que estamos planeando hacer algo, estamos diseñando un algoritmo. Por ejemplo, estando en casa, de pronto se daña una bombilla, nuestro primer movimiento es el de cambiarla por una nueva. El primer acto reflejo sería tomar la bombilla dañada y bajarla de su sitio. Después de un corto tiempo empezamos a analizar el problema con mayor detenimiento y nos preguntamos ciertas cosas que nos hacen falta (datos de entrada) Donde están las bombillas nuevas? Como bajo la bombilla dañada siendo el caso que se encuentre en un sitio alto o difícil de alcanzar? Resolviendo estas dudas se ve que lo primero es apagar el ciuruito o en caso dado cortar la energía en la caja de electricidad. Luego buscar una butaca para alcanzar la bombilla quemada, pero antes debo proteger mi mano por si la bombilla aún está caliente, pero si es de neon no me preocupo mucho, pues esta no calienta mucho (datos auxiliares), luego debo ir por la bombilla nueva, enroscarla y colocarla con mucho cuidado y prender el circuito para verificar que quedó bien instala da la bombilla (datos de salida) De esta manera podemos establecer unas etapas o pasos que nos permitan solucionar problemas de forma algorítmica.

21 Seudocódigo Calcular las posibles raíces para una ecuación de segundo grado: ax2+bx+c=0 +Algoritmo raíces | | Variables reales a,b,c,x,y | Escribir "Introduzca los coeficientes de mayor a menor grado." | Leer a,b,c | +Si sqr(b)>= 4*a*c entonces | | x=(-b+sqrt(b^2-4*a*c))/2a | +Sino | | Escribir "No existen raíces reales." | +Finsi +Final Para expresar el contenido de un programa de computadora, se requiere el uso de un lenguaje de programación. Cuando expresamos dicho contenido en nuestra lengua natural, utilizando ciertas expresiones simples que lo abrevian un poco, se dice que está escrito en seudocódigo.

22 Verificación del Algoritmo
Comprobar que el programa realiza las tareas para las que ha sido diseñado y produce el resultado correcto y esperado. Prueba de Escritorio: Dar diferentes datos de entrada al programa y seguir la lógica del mismo hasta obtener el resultado exacto al esperado. Si es necesario, hacer ajustes y volver a realizar la prueba hasta que cumpla con el propósito del cual ha sido creado.

23 Implementación Donde se va a hacer?
Culminación del sistema, aunque en realidad nunca termina su proceso . PASOS: Codificación Compilación y Ejecución Prueba y Depuración Documentación Mantenimiento

24 Compilación y Ejecución
Codificación Es la escritura del algoritmo en un lenguaje de programación (Código Fuente).  El código puede ser escrito en cualquier leguaje, ya que el diseño es independiente de este. Compilación y Ejecución Traduce el programa fuente a programa en código de maquina y lo ejecuta, introduciendo el programa en memoria. Si se presentan errores de “sintaxis” o de compilación, se vuelve a editar el programa.  Se corrigen los errores y se compila de nuevo hasta que no salgan errores.

25 Prueba y Depuración Este paso se realiza debido a que los errores humanos dentro de la programación de computadores son muchos y aumentan considerablemente con la complejidad del problema. Se refiere a ejecutar el programa con varios datos de entrada; así se determina si el programa tiene errores “lógicos” y se corrigen. También se encuentran errores de “ejecución” (errores que el computador puede entender pero no ejecutar). Ej: Divisiones por cero. Para esto se utilizan valores de entrada: Normales. Extremos, limites. Especiales.

26 Documentación Son comentarios que facilitan la comprensión del programa, debido a que a menudo un programa escrito por una persona, es usado por otra. Clases de documentación: INTERNA: - Se incluyen dentro del programa fuente. - Son comentarios que ayudan a la comprensión del código y el entendimiento de los procesos. EXTERNA: -  Es un archivo donde se documenta todos los pasos realizados para el desarrollo del programa y la solución del problema. -  Incluye: Análisis, diseño, manual de usuario (como funciona el programa), manual técnico (como se implementó el programa en el lenguaje de programación seleccionado), pruebas, etc. 

27 Mantenimiento Se lleva a cabo después de terminado el programa.
Se utiliza para hacerle soporte al programa: Cuando es necesario hacer algún cambio, ajuste o complemento al sistema para que siga trabajando de manera correcta. Para esto la documentación debe ser correcta, completa y actualizada.

28 ESQUEMA GENERAL DE LA RESOLUCIÓN DE UN PROBLEMA

29

30

31

32

33 Bibliografía Algoritmo: http://es.wikipedia.org/wiki/Algoritmo
Diagrama de Flujo, Seudocódigo Imágenes:


Descargar ppt "Metodología para la Creación de Algoritmos"

Presentaciones similares


Anuncios Google