Usa el diálogo del navegador para guardar este tutorial como PDF.

FPCode
Material educativo FPCode

FPCode

Diagramas de flujo

Representación visual de algoritmos mediante diagramas de flujo para comprender y planificar la lógica de un programa.

Autor
José Luís Ferrer Rodríguez
Actualizado
01/07/2025
Publicado
01/07/2025
Generado
25/07/2026

Introducción

Antes de escribir un programa, es fundamental comprender la lógica del problema que se quiere resolver. Una de las herramientas más útiles y potentes para representar esa lógica de forma clara y visual son los diagramas de flujo. Estos diagramas permiten representar procesos o algoritmos utilizando símbolos gráficos conectados por flechas que indican el flujo de la ejecución.

Gracias a los diagramas de flujo, podemos entender y comunicar la secuencia de pasos de un algoritmo sin necesidad de escribir código, facilitando la planificación, el análisis y la detección de errores en fases tempranas del desarrollo.

Conocimiento previo

Referencias

Índice

  1. ¿Qué es un diagrama de flujo?
  2. Usos habituales
  3. Elementos de un diagrama de flujo
    3.1. Símbolos básicos 3.2. Otros símbolos
  4. Diagrama de Nassi-Shneiderman
  5. Sintaxis y estructuras de programación
    5.1. Instrucciones básicas
    5.2. Estructuras de control
    5.3. Estructuras iterativas
    5.4. Estructuras modulares
  6. Ejemplos
  7. Consideraciones para diseñar diagramas
  8. Herramientas para trabajar diagramas de flujo
  9. Ejercicios

1. ¿Qué es un diagrama de flujo?

Un diagrama de flujo, ordinograma o flujograma es una representación gráfica que utiliza símbolos para mostrar la secuencia lógica de pasos que se deben seguir para resolver un problema o realizar una tarea. Es una herramienta visual para planificar algoritmos y procesos, facilitando la comprensión y comunicación de ideas complejas. Puede ser utilizado en diversas áreas como la programación, la ingeniería, la gestión de proyectos y más. Además, puede ser un complemento útil para el pseudocódigo, ya que ambos sirven para representar la lógica de un algoritmo antes de implementarlo en un lenguaje de programación.

2. Usos habituales

Como ya se ha mencionado, los diagramas de flujo se utilizan en diversas áreas y contextos. Algunos de los usos más habituales que nos podemos encontrar son:

En este recurso nos centraremos en los diagramas de flujo de programación, que son útiles para:

3. Elementos de un diagrama de flujo

Los diagramas de flujo utilizan una simbología estandarizada para representar los distintos tipos de acciones, decisiones y conexiones que forman parte de un proceso o algoritmo. Cada símbolo tiene un significado específico, y es fundamental respetar estos estándares para garantizar que cualquier persona pueda interpretar el diagrama correctamente, independientemente de su contexto o experiencia previa.

El uso de esta simbología está regulado por el American National Standards Institute (ANSI) X3.5-1970 , que establece las normas oficiales sobre cómo deben representarse los elementos de un diagrama de flujo. Estas normas aseguran que los diagramas sean claros, coherentes y universales, facilitando la comunicación entre profesionales de diferentes áreas y mejorando la documentación de procesos.

3.1. Símbolos básicos

Los símbolos más comunes en los diagramas de flujo son:

Elementos básicos diagrama de flujo

Con estos símbolos es suficiente para representar la mayoría de los algoritmos básicos.

3.2. Otros símbolos

Existen otros símbolos menos comunes pero útiles en diagramas de flujo más complejos:

Otros elementos del diagrama de flujo

4. Diagrama de Nassi-Shneiderman

Existe otro diagrama muy parecido a los diagramas de flujo, pero que se utiliza menos. Se trata del diagrama de Nassi-Shneiderman, también conocido como diagramas estructurados o diagramas de bloques. Aunque ambos tipos de diagramas sirven para representar la lógica de un algoritmo, tienen enfoques y estilos diferentes.

Su principal objetivo es representar la estructura de un algoritmo de manera jerárquica y ordenada, evitando las ambigüedades que pueden surgir en los diagramas de flujo tradicionales. Su principal diferencia es que no utilizan flechas para conectar los pasos, sino que se organizan en bloques anidados que representan la jerarquía y el flujo de control de manera más clara.

Sus principales características son:

Este tipo de diagramas es muy útil para programadores, porque se parece mucho a la estructura real de un programa en pseudocódigo o código fuente. También favorece el diseño de algoritmos sin desviaciones innecesarias en el flujo, lo que promueve buenas prácticas de programación.

A continuación se muestran sus elementos principales:

Elementos diagrama Nassi-Shneiderman

5. Sintaxis y estructuras de programación

Como se ha explicado previamente, mediante un diagrama de flujo es posible representar gráficamente cualquier elemento relacionado con la programación, tal y como se explica en el recurso pseudocódigo.

5.1. Instrucciones básicas

En los diagramas, al igual que ocurre en la estructura secuencial de cualquier programa, el flujo de ejecución transcurre de arriba hacia abajo. Las instrucciones comienzan tras el terminador de inicio y finalizan al llegar al terminador de fin.

Forma clásica

Representación iterativa

Nassi-Shneiderman

Representación iterativa Nassi-Shneiderman

Mediante las instrucciones es posible representar distintas acciones, como por ejemplo:

Además, se pueden añadir comentarios, que aunque no tienen ningún efecto sobre la ejecución del programa, sirven para aclarar el funcionamiento del algoritmo o explicar pasos complejos. Los comentarios son útiles para mejorar la comprensión y el mantenimiento del código.

Forma clásica

Representación comentarios

Nassi-Shneiderman

Representación comentarios Nassi-Shneiderman

5.2. Estructuras de control

Las estructuras de control alternativas permiten que un programa tome decisiones y ejecute diferentes caminos según ciertas condiciones. Se pueden representar de diversas formas:

Conocida como if en inglés, se utiliza cuando se desea ejecutar una instrucción o un bloque de instrucciones solo si se cumple una condición.

Forma clásica

Representación alternativa simple

Nassi-Shneiderman

Representación alternativa simple Nassi-Shneiderman

En inglés if-else, permite ejecutar un bloque de instrucciones si se cumple una condición y, en caso contrario, ejecutar un bloque diferente.

Forma clásica

Representación alternativa doble

Nassi-Shneiderman

Representación alternativa doble Nassi-Shneiderman

Se utiliza cuando existen varias opciones posibles. Según el valor evaluado, se ejecuta uno de los casos disponibles. Es la representación gráfica del switch/case en muchos lenguajes de programación.

Forma clásica

Representación alternativa múltiple

Nassi-Shneiderman

Representación alternativa múltiple Nassi-Shneiderman

Esta estructura evalúa una expresión única y compara su resultado con los diferentes valores definidos en los diferentes casos. No se trata de una serie de condiciones booleanas independientes, sino de un único proceso de selección basado en el valor del evaluador. Si no existe un caso definido, cogerá la opción alternativa default que en la imagen se puede ver con el texto De otro modo.

5.3. Estructuras iterativas

Las estructuras iterativas permiten que un programa repita un bloque de instrucciones varias veces, siempre bajo unas condiciones determinadas. Son fundamentales para automatizar tareas repetitivas, evitando tener que escribir el mismo código múltiples veces.

Podemos encontrar diferentes formas de representar la repetición:

Conocido en inglés como while, esta estructura evalúa la condición de repetición al principio del ciclo. Si la condición se cumple, se ejecutan las instrucciones del bucle. En caso contrario, el ciclo no se ejecuta y el flujo continúa.

Esto significa que puede ocurrir que las instrucciones a repetir no se ejecuten nunca, si desde el inicio la condición resulta falsa.

Forma clásica

Representación mientras

Nassi-Shneiderman

Representación mientras Nassi-Shneiderman

A diferencia del mientras, la estructura repetir (en algunos lenguajes conocida como do...while) evalúa la condición al final del ciclo.

Esto significa que el bloque de instrucciones se ejecuta al menos una vez, ya que la condición se comprueba después de la primera ejecución.

Forma clásica

Representación repetir

Nassi-Shneiderman

Representación repetir Nassi-Shneiderman

La estructura para (for en inglés) permite repetir un bloque de instrucciones un número conocido y controlado de veces.

Es muy similar al mientras, pero está orientada a bucle con contador, donde se sabe de antemano cuántas veces se repetirá la operación.

Forma clásica

Representación para

Nassi-Shneiderman

Representación para Nassi-Shneiderman

Como se puede ver en la imagen, para esta estructura es necesario:

5.4. Estructuras modulares

Hasta ahora, hemos visto diagramas de flujo que representan programas donde todas las instrucciones se encuentran en un único bloque. El flujo comenzaba después de la instrucción Inicio y terminaba con Fin. Sin embargo, en la programación modular, las instrucciones no siempre están en el mismo bloque de código.

En lugar de un único algoritmo, podemos tener varios bloques o módulos independientes, cada uno con su propio nombre y funcionalidad. Esto es muy útil porque permite dividir el programa en partes más pequeñas y fáciles de entender, reutilizar y mantener.

Identificación de los bloques

Para trabajar con estructuras modulares, las instrucciones de inicio y fin pueden ir acompañadas de un nombre que identifica el bloque. Por ejemplo:

Esto nos ayuda a saber qué instrucciones pertenecen a cada bloque y cómo se llaman.

Tipos de bloque modular

Cada uno de estos bloques independientes se puede invocar (llamar) desde otro bloque, simplemente escribiendo su nombre. De esta forma, un algoritmo principal puede delegar tareas concretas a otros módulos.

Podemos encontrar dos tipos principales de bloques modulares:

Un procedimiento es un bloque de instrucciones que realiza una acción concreta. Cuando termina su ejecución, no devuelve ningún valor al bloque que lo llamó. Su función es realizar tareas como mostrar información, calcular un valor o modificar datos, pero sin retornar un resultado explícito.

Forma clásica

Representación procedimiento

Nassi-Shneiderman

Representación procedimiento Nassi-Shneiderman

En el ejemplo, podemos ver un subproceso llamado Procedimiento. Desde el programa principal se invoca escribiendo su nombre seguido de paréntesis vacíos.

Las funciones son muy similares a los procedimientos, pero tienen una diferencia importante: al finalizar su ejecución, devuelven un valor al bloque que las llamó.

Forma clásica

Representación funcion

Nassi-Shneiderman

Representación funcion Nassi-Shneiderman

En el diagrama podemos observar que, además del bloque llamado Funcion, aparece una referencia a una variable donde se guardará el valor que devuelve la función.

Además, es obligatorio que se incluya una instrucción de retorno al final de su bloque, indicando qué dato va a devolver al invocante.

Parámetros o Argumentos

Tanto los procedimientos como las funciones pueden recibir información de entrada, conocida como parámetros o argumentos. Esto les permite trabajar con datos concretos, haciendo el bloque más flexible y reutilizable.

Para definir un parámetro, se escribe después del nombre del bloque, entre paréntesis y separados por comas si hay varios. Cada parámetro recibe un nombre y se comporta como una variable local, es decir, se podrá utilizar dentro del propio bloque modular como si fuera una variable propia.

A la hora de invocar un procedimiento o función, se debe indicar su nombre seguido de paréntesis, y dentro de ellos se pasarán los valores concretos (uno por cada parámetro definido). Estos valores se asignarán en el mismo orden en el que se declararon los parámetros.

Forma clásica

Representación funcion con parámetros

Nassi-Shneiderman

Representación funcion con parámetros Nassi-Shneiderman

6. Ejemplos

Solicitar un número al usuario y lo muestra por pantalla.

Forma clásica

Ejemplo 1 Diagrama de flujo

Nassi-Shneiderman

Ejemplo 1 Diagrama de Nassi-Shneiderman

Se muestra por pantalla la cuenta atrás de 10.

Forma clásica

Ejemplo 2 Diagrama de flujo

Nassi-Shneiderman

Ejemplo 2 Diagrama de Nassi-Shneiderman

Solicita un número entero positivo al usuario y muestra por pantalla los dígitos que tiene. La funcionalidad de conocer los dígitos que hay se realiza en un bloque aparte.

Forma clásica

Ejemplo 3 Diagrama de flujo

Nassi-Shneiderman

Ejemplo 3 Diagrama de Nassi-Shneiderman

7. Consideraciones para diseñar diagramas

Antes de ponerte a diseñar un diagrama de flujo, es importante tener en cuenta algunos aspectos para evitar errores y ahorrar tiempo. Un mal planteamiento puede provocar que el diagrama resulte confuso o poco útil, incluso aunque técnicamente sea correcto.

A continuación, tienes algunos consejos prácticos:

  1. Aunque existen herramientas que facilitan su creación, elaborar un diagrama de flujo requiere tiempo y atención al detalle. Por eso, es recomendable dejar su diseño para el final, una vez que tengas claro cómo funciona el programa.

  2. Primero escribe el pseudocódigo. Cuando tengas una versión definitiva y revisada, entonces es el momento adecuado para crear el diagrama de flujo.

  3. En las primeras versiones del diagrama, intenta reflejar todas las instrucciones completas. Más adelante, cuando comprendas bien el funcionamiento, podrás simplificar o resumir algunos bloques, omitiendo detalles evidentes para centrarte en la lógica principal.

Además de seguir los consejos anteriores, debes respetar algunas reglas y buenas prácticas para que el diagrama sea claro, ordenado y fácil de entender:

8. Herramientas para trabajar diagramas de flujo

Existen múltiples herramientas tanto gratuitas como de pago que permiten crear diagramas de flujo con distintas funcionalidades adaptadas a diferentes necesidades: desde el uso educativo hasta la documentación profesional de procesos.

A continuación, se describen algunas de las más utilizadas:

  1. Draw.io (diagrams.net) 👉 https://app.diagrams.net/ 👈
    Actualmente conocido como diagrams.net, es una de las herramientas más populares para crear diagramas de flujo y otros tipos de esquemas gráficos. Es gratuita y no requiere registro permite trabajar de forma online con el navegador y con su aplicación de escritorio. Además, se puede integrar con servicios de almacenamiento en la nube como Google Drive, OneDrive o Dropbox.
Draw.io
  1. Lucidchart 👉 https://lucid.app/ 👈
    Lucidchart es una herramienta online muy utilizada en entornos profesionales y educativos para crear diagramas de flujo, organigramas, mapas mentales y otros esquemas visuales. Dispone de una interfaz intuitiva y permite la colaboración en tiempo real, lo que facilita el trabajo en equipo. Cuenta con una versión gratuita con ciertas limitaciones y varias opciones de pago para usos más avanzados.
LucidChart
  1. Canva 👉 https://www.canva.com/ 👈
    Canva es una plataforma de diseño gráfico online que, además de permitir crear presentaciones, infografías y otros contenidos visuales, ofrece la opción de crear diagramas de flujo de forma sencilla y atractiva. Es especialmente útil si se quiere dar un enfoque estético o visual al diagrama, ya que combina facilidad de uso con una gran cantidad de elementos gráficos y plantillas. Dispone de versión gratuita y de opciones premium.
Canva
  1. PseInt 👉 https://pseint.sourceforge.net/ 👈 PseInt es una herramienta diseñada principalmente para aprender programación mediante pseudocódigo. Aunque su enfoque principal no son los diagramas, permite generar automáticamente y editar diagramas de flujo a partir del pseudocódigo escrito. Es gratuita y solo cuenta con aplicación de escritorio.
PseInt
  1. Word 👉 https://www.office.com/?omkt=es 👈
    Aunque Microsoft Word no es una herramienta específica para diagramas de flujo, permite crear esquemas sencillos utilizando las formas prediseñadas (rectángulos, óvalos, flechas, etc.). Es útil cuando se necesita incluir diagramas básicos dentro de un documento de texto sin recurrir a herramientas externas. Word forma parte de la suite ofimática de Microsoft, por lo que requiere licencia o suscripción.
Word

9. Ejercicios

Ejercicio 1: Operaciones Básicas

Declara tres variables numéricas: a, b y resultado. Pide al usuario que introduzca los valores de a y b, y luego muestra en pantalla la suma, resta y multiplicacion de ambos.

Ejercicio 2: Operaciones para la figura de un círculo

Define una constante llamada PI. Pide al usuario que introduzca el radio de un círculo y calcula su área utilizando la fórmula área = PI * radio².

Ejercicio 3: Control de mayoría de edad

Pide al usuario una edad y muestra un mensaje que indique si es mayor de edad o no.

Ejercicio 4: Login

Pide al usuario una contraseña y verifica si coincide con la cadena “1234”. Repite la solicitud hasta que acierte.

Ejercicio 5: Cuadrado de un número

Crea una función llamada Cuadrado que reciba un número y devuelva su cuadrado. Luego, en el algoritmo principal, pide un número al usuario, llama a la función y muestra el resultado.

Ejercicio 6: Saludar Usuario

Define un procedimiento llamado SaludarUsuario que pida el nombre del usuario y lo salude. Llama al procedimiento desde el algoritmo principal.

🧠 Estos ejercicios son solo una pequeña introducción. Para dominar la lógica de programación, es fundamental seguir practicando de forma constante.

🛠️ Puedes encontrar más actividades para desarrollar tus habilidades en el siguiente enlace: 👉ejercicios👈