Materia: Programación Visual ACTIVIDAD FUNDAMENTAL 1: Realizar una investigación del tema algoritmo y diagramas de flujo NOMBRE MATRICULA CARRERA Raúl Daríel Peña González 1723069 IMA David Zamarripa García 1800977 IAS Mauricio Ramírez Mendoza 1994657 IME Carlos Zaid Carrizales 2000153 IME Valladares Melannie Rubi Guerra 2007290 IEC Samaniego DOCENTE: ING. MISSAEL ANTONIO GUEVARA CORREA ¿Qué es un diagrama de flujo? Un diagrama de flujo es un diagrama que describe un proceso, sistema o algoritmo informático. Se usan ampliamente en numerosos campos para documentar, estudiar, planificar, mejorar y comunicar procesos que suelen ser complejos en diagramas claros y fáciles de comprender. Los diagramas de flujo emplean rectángulos, óvalos, diamantes y otras numerosas figuras para definir el tipo de paso, junto con flechas conectoras que establecen el flujo y la secuencia. Pueden variar desde diagramas simples y dibujados a mano hasta diagramas exhaustivos creados por computadora que describen múltiples pasos y rutas. Si tomamos en cuenta todas las diversas figuras de los diagramas de flujo, son uno de los diagramas más comunes del mundo, usados por personas con y sin conocimiento técnico en una variedad de campos. Los diagramas de flujo a veces se denominan con nombres más especializados, como "diagrama de flujo de procesos", "mapa de procesos", "diagrama de flujo funcional", "mapa de procesos de negocios", "notación y modelado de procesos de negocio (BPMN)" o "diagrama de flujo de procesos (PFD)". Están relacionados con otros diagramas populares, como los diagramas de flujo de datos (DFD) y los diagramas de actividad de lenguaje unificado de modelado (UML). Símbolos de diagramas de flujo A continuación, te enseñaremos algunos de los símbolos de diagramas de flujo más comunes. Terminal/Terminador Proceso Documento Decisión Datos o entrada/salida Datos almacenados Flecha de flujo Comentario o anotación Proceso predefinido Referencia/conector dentro de la página Referencia/conector fuera de la página Diagramas de flujo para algoritmos/programación informática Como una representación visual del flujo de datos, los diagramas de flujo son útiles para escribir un programa o algoritmo y explicárselo a otros o colaborar con otros en el mismo. Puedes usar un diagrama de flujo para explicar detalladamente la lógica detrás de un programa antes de empezar a codificar el proceso automatizado. Puede ayudar a organizar una perspectiva general y ofrecer una guía cuando llega el momento de codificar. Más específicamente, los diagramas de flujo pueden: • Demostrar cómo el código está organizado. • Visualizar la ejecución de un código dentro de un programa. • Mostrar la estructura de un sitio web o aplicación. • Comprender cómo los usuarios navegan por un sitio web o programa. A menudo, los programadores pueden escribir un pseudocódigo, una combinación de lenguaje natural y lenguaje informático que puede ser leído por personas. Esto puede permitir más detalle que el diagrama de flujo y servir como reemplazo del diagrama de flujo o como el próximo paso del código mismo. Los diagramas relacionados que se emplean en el software informático incluyen: • Lenguaje unificado de modelado (UML): este es el lenguaje de propósito general usado en la ingeniería de software para el modelado. • Diagramas Nassi-Shneiderman (NSD): usados para la programación informática estructurada. Llevan el nombre de sus creadores: Isaac Nassi y Ben Shneiderman, quienes los desarrollaron en 1972 en la Universidad Estatal de Nueva York en Stony Brook. También se denominan "estructogramas". • Diagramas DRAKON: DRAKON es un lenguaje de programación visual de algoritmos empleado para crear diagramas de flujo. Cómo se usan los diagramas de flujo en muchos otros campos Más allá de la programación informática, los diagramas de flujo pueden tener muchos usos en diversos campos. • En cualquier campo pueden: Documentar y analizar un proceso. • Estandarizar un proceso para obtener eficiencia y calidad. • Comunicar un proceso para capacitar a otros sectores de la organización o lograr el entendimiento de su parte. • Identificar cuellos de botellas, redundancias y pasos innecesarios en un proceso y mejorarlo. Educación: • Planificar los requisitos académicos y las tareas del curso. • Crear una presentación oral o un plan de clase. • Organizar un proyecto grupal o individual. • Mostrar un proceso civil o legal, como el registro de votantes. • Planificar y estructurar la escritura creativa, como poesía o poesía lírica. • Demostrar el desarrollo de un personaje en la literatura y el cine. • Representar el flujo de algoritmos o acertijos lógicos. • Comprender un proceso científico, como el ciclo de Krebs. • Dibujar un proceso anatómico, como la digestión. • Trazar síntomas y tratamientos para enfermedades o trastornos. • Comunicar hipótesis y teorías, como la pirámide de Maslow o jerarquía de las necesidades humanas. • Ventas y marketing: Trazar el flujo de una encuesta. • Dibujar un proceso de ventas. • Planificar estrategias de investigación. • Mostrar flujos de registro. • Difundir políticas de comunicación, como un plan de R.R. P.P. de emergencia. • Negocios: Comprender procesos de pedidos y compras. • Representar la rutina diaria o las tareas de un empleado. • Comprender las rutas que toman los usuarios en un sitio web o en una tienda. • Desarrollar un plan de negocio o un plan de desarrollo de un producto. • Documentar un proceso en preparación para una auditoría, incluido el cumplimiento normativo, por ejemplo, en virtud de la Ley Sarbanes-Oxley. • Documentar un proceso en preparación para una venta o consolidación. • Manufactura: Indicar la composición química o física de un producto. • Ilustrar el proceso de manufactura de principio a fin. • Descubrir y resolver ineficiencias en un proceso de manufactura o adquisición. Ingeniería: • Representar flujos de proceso o de sistema. • Diseñar y actualizar procesos químicos y de planta. • Evaluar el ciclo de vida de una estructura. • Diagramar un flujo de ingeniería inversa. • Demostrar la fase de prototipo y diseño de una estructura o producto nuevos. Características y clasificaciones de los algoritmos Partes del algoritmo y generalidades Independientemente de la clasificación y el tipo de algoritmo, básicamente todos están compuestos de tres partes principales: • • • Entrada: Se trata del conjunto de datos que el algoritmo necesita como insumo para procesar. Proceso: Son los pasos necesarios aplicados por el algoritmo a la entrada recibida para poder llegar a una salida o resolución del problema. Salida: Es el resultado producido por el algoritmo a partir del procesamiento de la entrada una vez terminada la ejecución del proceso. Además del tipo de algoritmo existen una serie de características comunes a todos, a continuación, se mencionan alguna de ellas. • • • • • • Exactitud: el algoritmo tiene que indicar un orden claro de la ejecución de cada paso, estos no pueden ser ambiguos (debe existir una confiabilidad). Estar definido: si se realiza la ejecución de un mismo algoritmo en distintas instancias utilizando la misma entrada, debe resultar en la misma salida. Completo: en la solución se deben considerar todas las posibilidades del problema. Finito: necesariamente un algoritmo debe tener un número finito de pasos. Instrucciones entendibles: Las instrucciones que lo describen deben ser claras y legibles. General: debe poder abarcar problemas de un mismo tema soportando las distintas variantes que se presentan en la definición del problema. Criterios de clasificación de los algoritmos Según el criterio utilizado se aplican diferentes clasificaciones a los algoritmos. Por ejemplo, si usamos la clasificación por el sistema de signos con el cual se describen los pasos a seguir del algoritmo, podemos diferenciar dos tipos, • • Algoritmos cualitativos: aquellos que sus pasos son instrucciones verbales Algoritmos cuantitativos: aquellos que se siguen instrucciones de cálculos numéricos. Si se clasifican en base a su función se pueden establecer tres grupos principales como son los algoritmos de búsqueda, algoritmos de ordenamiento y algoritmos de encaminamiento o enrutamiento. El tercer criterio que puede usarse para su clasificación es en base a su estrategia para alcanzar un resultado. En este grupo podemos mencionar a los algoritmos probabilísticos, heurísticos, voraces, de escalada y deterministas.