# Diagramas de flujo
Un **algoritmo** es una sucesión de pasos que se deben realizar para resolver un problema.
Un **diagrama de flujo** es una forma de representar un proceso o algoritmo de manera visual, estructurada y organizada. Es una herramienta muy útil para organizar y estructurar una tarea de programación antes de entrar directamente con el código.
Ejemplo de diagrama de flujo:
[![image-1654533440823.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654533440823.png)](https://www.epitech-it.es/wp-content/uploads/2021/05/diagrama-de-flujo-de-programacion.png)
Aunque existen diversos programas informáticos para la realización de diagramas de flujo, en este curso utilizaremos una funcionalidad de PSeInt que lo permite. No obstante, y atendiendo a la cada vez más abundante [evidencia científica](https://www.youtube.com/watch?v=3raf9qVJrQw&t=11872s) al respecto, recomendamos que los diagramas de flujo se aborden con el alumnado en primer lugar **con papel y boli, y si es pertinente de forma colaborativa**, dejando para el software simplemente su edición final para incluir como documentación del programa.
### Elementos del diagrama de flujo
Un diagrama de flujo está formado fundamentalmente por los siguientes elementos:
- **Línea o flechas del flujo**: Indica la instrucción que se va a realizar, o la dirección del flujo del proceso. Muestra el carácter secuencial del programa.
- **Terminal o inicio y final**: Es la forma en la cual se indica el “inicio del proceso” y “final del proceso”. Su icono suele ser un *rectángulo con las esquinas redondeadas.*
[![image-1654535499072.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654535499072.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654535499072.png)
- **Asignación/ definición**: Permite asignar un valor o definir una variable, donde se almacenan los datos que se necesitan para resolver el problema. Suele representarse con un rectángulo.
[![image-1654535632765.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654535632765.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654535632765.png)
- **Datos de entrada**: Indica la recepción de datos en la entrada. Se representa con un recuadro con las esquinas inclinadas y una flecha hacia dentro.
[![image-1654535451517.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654535451517.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654535451517.png)
- **Datos de salida**: Indica la impresión de datos en la salida. Se representa con un recuadro con las esquinas inclinadas y una flecha hacia fuera.
[![image-1654535421186.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654535421186.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654535421186.png)
- **Decisión**: Indica que desde el punto en que nos encontramos, puede haber más de un camino para seguir, según la condición dada. En este caso se usa un rombo.
[![image-1654535543002.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654535543002.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654535543002.png)
- **Otros**: Como algunos tipos de bucles, los iremos viendo más adelante.
### Ejemplos sencillos de diagramas de flujo
##### Ejemplo 1: Diagrama de flujo de un programa que a partir de dos números los suma y muestra el resultado en pantalla
SOLUCIÓN:
- **Salidas**: tiene que pedir los dos números a sumar, y luego tiene que mostrar el resultado.
- **Entradas**: los dos números a sumar.
- **Almacenamiento**: dos variables que almacenen los números a sumar (num1 y num2) , y una tercera que almacene el resultado (resultado)
- **Operación**: suma.
Diagrama de flujo:
[![image-1654535965816.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654535965816.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654535965816.png)
##### Ejemplo 2: Diagrama de flujo de un programa que a partir de dos números compara cuál es mayor y lo muestra en pantalla.
- **Salidas**: tiene que pedir los dos números a comparar, y luego tiene que mostrar el resultado de la comparación.
- **Entradas**: los dos números a comparar.
- **Almacenamiento**: dos variables que almacenen los números a comparar (num1 y num2)
- **Operación**: comparación lógica.
Diagrama de flujo:
[![image-1654536227461.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654536227461.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654536227461.png)
{{@5685}}