# Diagramas de flujo

<span style="font-weight: 400;">Un **algoritmo** es una sucesión de pasos que se deben realizar para resolver un problema.</span>

<span style="font-weight: 400;">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.</span>

<span style="font-weight: 400;">Ejemplo de diagrama de flujo:</span>

[![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)

<span style="font-weight: 400;">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.  
</span>

### <span style="font-weight: 400; color: #000000;">Elementos del diagrama de flujo</span>

<span style="font-weight: 400;">Un diagrama de flujo está formado fundamentalmente por los siguientes elementos:  
</span>

- <span style="font-weight: 400;">**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.  
    </span>
- <span style="font-weight: 400;">**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.*</span>

[![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)

- <span style="font-weight: 400;">**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.</span>

[![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)

- <span style="font-weight: 400;">**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. </span>

[![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)

- <span style="font-weight: 400;">**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. </span>

[![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)

- <span style="font-weight: 400;">**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.</span>

[![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)

- <span style="font-weight: 400;">**Otros**: Como algunos tipos de bucles, los iremos viendo más adelante.  
    </span>

### <span style="font-weight: 400; color: #000000;">Ejemplos sencillos de diagramas de flujo</span>

##### <span style="color: #000000;"><span style="font-weight: 400;">Ejemplo 1: Diagrama de flujo de un programa que a partir de dos números los suma y muestra el resultado en pantalla</span></span>

<span style="font-weight: 400; color: #000000;">SOLUCIÓN:</span>

- <span style="font-weight: 400; color: #000000;">**Salidas**: tiene que pedir los dos números a sumar, y luego tiene que mostrar el resultado.</span>
- <span style="font-weight: 400; color: #000000;">**Entradas**: los dos números a sumar.</span>
- <span style="font-weight: 400; color: #000000;">**Almacenamiento**: dos variables que almacenen los números a sumar (num1 y num2) , y una tercera que almacene el resultado (resultado)</span>
- <span style="font-weight: 400; color: #000000;">**Operación**: suma.</span>

<span style="font-weight: 400; color: #000000;">Diagrama de flujo:</span>

[![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)

##### <span style="color: #000000;"><span style="font-weight: 400;">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.  
</span></span>

- <span style="font-weight: 400; color: #000000;">**Salidas**: tiene que pedir los dos números a comparar, y luego tiene que mostrar el resultado de la comparación.</span>
- <span style="font-weight: 400; color: #000000;">**Entradas**: los dos números a comparar.</span>
- <span style="font-weight: 400; color: #000000;">**Almacenamiento**: dos variables que almacenen los números a comparar (num1 y num2)   
    </span>
- <span style="font-weight: 400; color: #000000;">**Operación**: comparación lógica.</span>

<span style="font-weight: 400; color: #000000;">Diagrama de flujo:</span>

[![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}}