Algoritmos y Diagramas de Flujo 2 Programación Java – NetBeans 7.0 RPC Contenido 2.1 Algoritmo .........................................................................................................................1 Fase de creación de un algoritmo ...........................................................................................1 Herramientas de un algoritmo .................................................................................................2 2.2 Diagrama de Flujo .........................................................................................................2 Símbolos para dibujar un Diagrama de Flujo ........................................................................3 Símbolos matemáticos y lógicos .............................................................................................3 Reglas para la creación de Diagramas ..................................................................................3 2.3 Ejemplo de Aplicación ...................................................................................................4 2.4 Cuestionario ...................................................................................................................5 Bibliografía..................................................................................................................................5 r.penarrieta.c@gmail.com 2011 II Algoritmos1 y diagramas de flujo 2.1 Algoritmo En un sentido amplio, dado un problema y un dispositivo donde resolverlo, es necesario proporcionar un método preciso que lo resuelva, adecuado al dispositivo. A tal método se lo denomina algoritmo (Guerequeta y Vallecillo, 2000). Algoritmo se define como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida). De manera más particular, es el método que describe la solución teórica de un problema computacional mediante una serie de procesos (pasos) definidos y finitos. Un algoritmo deberá cumplir: - Preciso, indicar el orden de realización en cada caso; Definido, repetir los pasos n veces para obtener el mismo resultado; Finito, tiene un número determinado de pasos. La solución de un algoritmo se define en tres etapas: - Entrada, datos que se necesita para poder ejecutarse; Proceso, acciones y cálculos necesarios; Salida, resultado esperado. Los algoritmos son la base de la programación de ordenadores estructurados en un orden rígido: no se puede escribir lo que deseáramos; su escritura no debe dejar posibilidad de duda pero deberá recoger la posibilidad más factible de solución a un determinado problema. Características que deben cumplir un algoritmo: - Debe resolver el problema para el que fuera formulado; Un algoritmo es independiente del lenguaje de programación; Debe ser preciso: los resultados de los cálculos deben ser exactos; no es válido un algoritmo que aproxime una solución; Debe ser finito: empezar (entrada), procesar y terminar (salir). Debe ser repetitivo: deben permitir su ejecución tantas veces haga la falta resolver un problema; no son válidos los algoritmos que al ejecutarse una vez, ya no se pueda reutilizarlo. Fase de creación de un algoritmo 1. Análisis; se determina el problema a resolver y se colectan los datos de entrada del algoritmo y qué datos deberán obtenerse a la salida; 2. Diseño; Elaboración del algoritmo; 3. Prueba; Comprobación y validación del resultado. 1 La palabra algoritmo procede de la latinización del nombre del matemático Persa Mohamed Ibn Al Kow Rizmi (Al juarismi) que en su obra Quitab Al-Mugabala recogió el sistema de numeración hindú y el concepto del cero que fuera traducida por el matemático Fibonacci al latín y la llamó: Algoritmi Dicit (Dixit Algorithmus). 1 Herramientas de un algoritmo - Diagramas de flujo (flow chart); Diagrama de Flujo, es una representación gráfica que utiliza símbolos por ANSI2 y expresa las sucesivas instrucciones que se deben realizar para resolver un problema. Las instrucciones no dependen de la sintaxis de ningún lenguaje de programación, sino sirven únicamente para su codificación en un lenguaje dado. - Diagramas N-S (Nassi-Schneiderman); conocido también como diagrama de Chapín, la estructura es similar a la de un diagrama de flujo pero sin visualizar las flechas, se representa dentro de una sola caja. - Pseudocódigo (falso lenguaje); Permite expresar las instrucciones en un lenguaje común con la finalidad única de facilitar la escritura, lectura y solución de un problema (en lo futuro programa). No existen reglas para escribir pseudocódigo. Es posible que como única regla, el signo igualdad (=) es reemplazado por ←; p.e. a= b+c ; a ← b+ c. 2.2 Diagrama de Flujo Los diagramas de flujo son una manera de representar visualmente el flujo de datos a través de sistemas de tratamiento de información. Los diagramas de flujo describen que operaciones y en que secuencia se requieren para solucionar un problema dado. Un diagrama de flujo u organigrama es una representación diagramática que ilustra la secuencia de las operaciones que se realizarán para conseguir la solución de un problema. Los diagramas de flujo se dibujan generalmente antes de comenzar a programar el código frente a la computadora. Los diagramas de flujo facilitan la comunicación entre los programadores y la gente del negocio. Estos diagramas de flujo desempeñan un papel vital en la programación de un problema y facilitan la comprensión de problemas complicados y sobre todo muy largos. Una vez que se dibuja el diagrama de flujo, llega a ser fácil escribir el programa en cualquier idioma de alto nivel. Vemos a menudo cómo los diagramas de flujo nos dan ventaja al momento de explicar el programa a otros. Por lo tanto, está correcto decir que un diagrama de flujo es una necesidad para la documentación mejor de un programa complejo. 2 Siglas del American National Institute. 2 Símbolos para dibujar un Diagrama de Flujo Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares; sin embargo, algunos símbolos especiales pueden también ser desarrollados cuando sean requeridos. Algunos símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestran a continuación: Inicio o fin del programa Disco magnético Pasos, procesos o líneas de instrucción de programa de computo Operaciones de entrada y salida Conector de pagina Toma de Ramificación Anotación decisiones Líneas de flujo y Conector para unir el flujo a otra parte del diagrama Pantalla, para mostrar datos Cinta magnética Envía datos a la impresora Teclado o escritura manual SubAlgoritmo Símbolos matemáticos y lógicos Dentro de los símbolos fundamentales para la creación de diagramas de flujo, los símbolos gráficos son utilizados específicamente para operaciones aritméticas y relaciones condicionales: + * / \ ^ = Mod Suma Resta Multiplicación División División entera Exponenciación Igualdad Módulo (resto de una división) > < >= <= <> Y O No Mayor que Menor que Mayor o igual que Menor o igual que Diferente que Y lógico O lógico No lógico Reglas para la creación de Diagramas Los Diagramas de flujo3 deben escribirse de arriba hacia abajo, y/o de izquierda a derecha. Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la dirección que fluye la información procesos, se deben de utilizar solamente líneas de flujo horizontal o verticales (nunca diagonales). Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se van a utilizar conectores cuando sea estrictamente necesario. No deben quedar líneas de flujo sin conectar. 3 Los Diagramas de Flujo han sido elaborados con la Aplicación Diaw.exe 0.97.1. 3 Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras. Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final. Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida. Diagrama flujo Diagrama N-S n: Entero r: Cadena Leer n n: Mod 3=0 Y n Mod 5=0 F V r: Cadena R ←“NO ES MULTIPLO DE 3 Y 5” R ←“SI ES MULTIPLO DE 3 Y 5” Escribir r 2.3 Ejemplo de Aplicación Dados dos números enteros (n1 y n2) encuentre la suma: Diagrama de Flujo Pseudocódigo Inicio Código java //Variables n1, n2, s : Entero //Entrada Leer n1, n2 //Proceso s ← n1 + n2 //Salida Escribir s Fin Si introducimos n1= 5 y n2= 3 tenemos: 4 2.4 Cuestionario 1 2 3 ¿Qué es un algoritmo? ¿Porqué es importante planificar (haciendo uso de algoritmos) una aplicación? Dados dos números a y b, elabore el algoritmo para hallar el resto. Bibliografía GUEREQUETA, R.; VALLECILLO, A. (2000) [en línea] “Técnicas de Diseño de Algoritmos” Universidad de Málaga, España. p. 1-6. <http://www.lcc.uma.es/~av/Libro/> [Acceso: 10, mar. 2011]. FREE SOFTWARE FOUNDATION (2009) [en línea] “Diaw.exe 0.97.1: Programa para Dibujar Diagramas Estructurados” <http://live.gnome.org/Dia> [Acceso: 6, mar. 2011]. VILLALOBOS, R. (2008) “Fundamentos de Programación Java” Ed. Macro, Lima, Perú. p. 28-40. 5