Diagrames de flux
Representació visual d’algoritmes mitjançant diagrames de flux per comprendre i planificar la lògica d’un programa.
Introducció
Abans d’escriure un programa, és fonamental comprendre la lògica del problema que es vol resoldre. Una de les eines més útils i potents per representar aquesta lògica de manera clara i visual són els diagrames de flux. Aquests diagrames permeten representar processos o algorismes utilitzant símbols gràfics connectats per fletxes que indiquen el flux de l’execució.
Gràcies als diagrames de flux, podem entendre i comunicar la seqüència de passos d’un algorisme sense necessitat d’escriure codi, facilitant la planificació, l’anàlisi i la detecció d’errors en fases primerenques del desenvolupament.
Coneixement previ
Referències
- Viquipèdia - Diagrama de flux
- Viquipèdia - Diagrama Nassi-Shneiderman
- Lucidchart - Flowchart Symbols
- Baskanderi, N. (2017). UX Glossary: Task Flows, User Flows, Flowcharts and some new-ish stuff
Índex
- Què és un diagrama de flux?
- Usos habituals
- Elements d’un diagrama de flux
3.1. Símbols bàsics
3.2. Altres símbols - Diagrama de Nassi-Shneiderman
- Sintaxi i estructures de programació
5.1. Instruccions bàsiques
5.2. Estructures de control
5.3. Estructures iteratives
5.4. Estructures modulars - Exemples
- Consideracions per dissenyar diagrames
- Eines per treballar amb diagrames de flux
- Exercicis
1. Què és un diagrama de flux?
Un diagrama de flux, ordinograma o fluxgrama és una representació gràfica que utilitza símbols per mostrar la seqüència lògica de passos que s’han de seguir per resoldre un problema o realitzar una tasca. És una eina visual per planificar algorismes i processos, facilitant la comprensió i comunicació d’idees complexes. Pot ser utilitzat en diverses àrees com la programació, l’enginyeria, la gestió de projectes i més. A més, pot ser un complement útil per al pseudocodi, ja que ambdós serveixen per representar la lògica d’un algorisme abans d’implementar-lo en un llenguatge de programació.
2. Usos habituals
Com ja s’ha esmentat, els diagrames de flux s’utilitzen en diverses àrees i contextos. Alguns dels usos més habituals que ens podem trobar són:
-
Diagrama de flux de processos (DFP)
Representa de manera gràfica els passos seqüencials d’un procés general o empresarial. S’utilitza molt en gestió de qualitat o anàlisi de processos. -
Diagrama de flux de dades (DFD)
Representa com circula la informació dins d’un sistema, identificant entrades, processos, emmagatzematge i sortides. És molt utilitzat en enginyeria de programari i anàlisi de sistemes. -
Diagrama de flux de treball (workflow)
Descriu el flux de tasques o activitats entre persones, departaments o sistemes, mostrant com es coordina el treball. -
Diagrama de flux de control (DFC)
Representa el flux de control d’un programa, mostrant les decisions, bifurcacions i cicles d’execució. Es centra en l’estructura lògica. -
Diagrama de flux de sistemes (DFS)
Mostra com interactuen els components d’un sistema, incloent programari, maquinari, usuaris i processos. -
Diagrama de flux de negoci (DFN)
Específic de l’àmbit empresarial, descriu processos clau de negoci de manera visual i comprensible. -
Diagrama de flux de decisions
Similar a un diagrama de flux convencional, però centrat en representar visualment decisions complexes i les seves possibles conseqüències o camins. -
Diagrama de flux de programació
S’utilitza per descriure la lògica d’un algorisme o programa de manera visual abans d’implementar-lo en codi. És molt habitual en l’ensenyament de la programació i en fases de disseny. -
Diagrama d’activitat (UML)
És un tipus especial de diagrama dins d’UML (Unified Modeling Language) , utilitzat per representar fluxos de treball o processos dins del desenvolupament de programari. Tot i que no és estrictament un diagrama de flux tradicional, se’l considera un derivat adaptat a metodologies orientades a objectes.
En aquest recurs ens centrarem en els diagrames de flux de programació, que són útils per a:
- Planificar i dissenyar algorismes abans d’escriure codi.
- Visualitzar la lògica d’un programa de manera clara i ordenada, identificant entrades, processos, decisions i sortides.
- Facilitar la comunicació com a part documental entre desenvolupadors i altres persones interessades que necessiten entendre la lògica d’un procés sense visualitzar el codi font.
- Detectar errors o inconsistències en la lògica abans d’implementar el codi.
- Documentar processos i sistemes existents, permetent-ne l’anàlisi, millora o manteniment posterior.
3. Elements d’un diagrama de flux
Els diagrames de flux utilitzen una simbologia estandarditzada per representar els diferents tipus d’accions, decisions i connexions que formen part d’un procés o algorisme. Cada símbol té un significat específic, i és fonamental respectar aquests estàndards per garantir que qualsevol persona pugui interpretar el diagrama correctament, independentment del seu context o experiència prèvia.
L’ús d’aquesta simbologia està regulat per l’American National Standards Institute (ANSI) X3.5-1970, que estableix les normes oficials sobre com s’han de representar els elements d’un diagrama de flux. Aquestes normes asseguren que els diagrames siguin clars, coherents i universals, facilitant la comunicació entre professionals de diferents àrees i millorant la documentació de processos.
3.1. Símbols bàsics
Els símbols més comuns en els diagrames de flux són:
- Òval: Es fa servir per indicar el punt d’inici i el punt de finalització del diagrama de flux. És obligatori en qualsevol diagrama i sol tenir només una entrada (per a l’inici) i una sortida (per al final).
- Rectangle: Representa un procés, instrucció o acció específica. Dins d’un algorisme, sol correspondre a càlculs, assignacions de variables, crides a funcions o qualsevol operació seqüencial.
- Rombe: Representa una pregunta o condició que pot tenir dues sortides: “Sí” i “No” (true/false).
- Paral·lelogram: Representa entrada o sortida de dades, com llegir informació de l’usuari o mostrar resultats a la pantalla.
- Rectangle amb la part superior corbada (cònca): Representa una sortida per pantalla. Es pot utilitzar d’aquesta manera o amb el paral·lelogram.
- Rectangle amb un costat superior inclinat: Representa una entrada manual. Es sol·licita a l’usuari que introdueixi dades manualment, per exemple, per consola.
- Fletxes: Indiquen la seqüència i direcció del flux d’execució. Connecten la resta de símbols entre si i mostren l’ordre en què s’han d’executar les instruccions. Poden aparèixer fletxes sense indicació explícita de direcció; en aquests casos, la direcció sempre serà de dalt a baix o d’esquerra a dreta.
- Rectangle amb línies dobles: Representa un subprocess, mòdul o funció, és a dir, un procés que es detalla en un altre diagrama o part del sistema.

Amb aquests símbols n’hi ha prou per representar la majoria dels algorismes bàsics.
3.2. Altres símbols
Existeixen altres símbols menys habituals però útils en diagrames de flux més complexos:
- Cercle: Connector per unir diferents parts del diagrama, especialment en diagrames grans on no és pràctic dibuixar fletxes llargues.
- Pentàgon: Un altre tipus de connector, però aquest s’utilitza per especificar diferents pàgines o seccions d’un diagrama de flux.
- Rectangle amb la part inferior ondulada (corbada): Representa un document o informe generat, rebut o utilitzat en un procés.
- Diversos documents: Representen múltiples documents superposats.
- Semicercle en forma de “D”: Indica un retard, pausa o període d’espera en un procés. Serveix per aturar temporalment el flux d’execució.
- Cilindre: Representa l’emmagatzematge en una base de dades.

4. Diagrama de Nassi-Shneiderman
Existeix un altre tipus de diagrama molt semblant als diagrames de flux, però que s’utilitza menys. Es tracta del diagrama de Nassi-Shneiderman, també conegut com a diagrama estructurat o diagrama de blocs. Tot i que ambdós tipus de diagrames serveixen per representar la lògica d’un algorisme, tenen enfocaments i estils diferents.
El seu principal objectiu és representar l’estructura d’un algorisme de manera jeràrquica i ordenada, evitant les ambigüitats que poden sorgir en els diagrames de flux tradicionals. La seva diferència principal és que no utilitzen fletxes per connectar els passos, sinó que s’organitzen en blocs anidats que representen la jerarquia i el flux de control de forma més clara.
Les seves característiques principals són:
- Els processos es representen amb blocs rectangulars anidats.
- La seqüència s’expressa de dalt cap a baix, de manera ordenada.
- Les estructures condicionals i els bucles s’integren de forma estructurada mitjançant divisions dins del bloc.
- No hi ha bifurcacions arbitràries; tot segueix una jerarquia lògica.
Aquest tipus de diagrama és molt útil per als programadors, ja que s’assembla molt a l’estructura real d’un programa en pseudocodi o en codi font. També ajuda a dissenyar algorismes evitant desviacions innecessàries en el flux, fet que fomenta les bones pràctiques de programació.
A continuació es mostren els seus elements principals:
- Funció o Programa: Representa un bloc que conté un conjunt d’instruccions, funcions o procediments. Pot incloure altres blocs anidats.
- Procés: És la unitat més simple d’un algorisme, un únic pas que representa una acció o instrucció. No pot contenir altres elements dins seu.
- Condició (Decisió o Branca): Permet escollir entre diferents camins segons una condició. Les opcions es representen en blocs horitzontals, un al costat de l’altre.
- Bucle (Repetició): Representa un bloc que s’executa mentre es compleixi una condició. La condició es pot comprovar abans o després d’executar el bloc. Pot contenir altres elements en el seu interior (el cos del bucle).
- Processos concurrents (Paral·lel): Representa accions que s’executen al mateix temps. Els blocs paral·lels es col·loquen un al costat de l’altre, de forma horitzontal.

5. Sintaxi i estructures de programació
Tal com s’ha explicat prèviament, mitjançant un diagrama de flux és possible representar gràficament qualsevol element relacionat amb la programació, tal com s’explica al recurs pseudocodi.
5.1. Instruccions bàsiques
En els diagrames, igual que passa en l’estructura seqüencial de qualsevol programa, el flux d’execució transcorre de dalt cap a baix. Les instruccions comencen després del terminador d’inici i finalitzen en arribar al terminador de fi.
Forma clàssica

Nassi-Shneiderman

Mitjançant les instruccions es poden representar diferents accions, com per exemple:
- Declaració de variables
- Assignació de valors
- Operacions lògiques, matemàtiques, etc.
A més, es poden afegir comentaris, que encara que no tenen cap efecte sobre l’execució del programa, serveixen per aclarir el funcionament de l’algorisme o explicar passos complexos. Els comentaris són útils per millorar la comprensió i el manteniment del codi.
Forma clàssica

Nassi-Shneiderman

5.2. Estructures de control
Les estructures de control alternatives permeten que un programa prengui decisions i executi diferents camins segons certes condicions. Es poden representar de diverses formes:
- Alternativa simple (Si)
Conegut com a if
en anglès, s’utilitza quan es vol executar una instrucció o un bloc d’instruccions només si es compleix una condició.
Forma clàssica

Nassi-Shneiderman

- Alternativa doble (Si/No)
En anglès if-else
, permet executar un bloc d’instruccions si es compleix una condició i, en cas contrari, executar un bloc diferent.
Forma clàssica

Nassi-Shneiderman

- Alternativa múltiple (Segons)
S’utilitza quan existeixen diverses opcions possibles. Segons el valor avaluat, s’executa un dels casos disponibles. És la representació gràfica del switch/case
en molts llenguatges de programació.
Forma clàssica

Nassi-Shneiderman

Aquesta estructura avalua una expressió única i compara el seu resultat amb els diferents valors definits en els diversos casos. No es tracta d’una sèrie de condicions booleanes independents, sinó d’un únic procés de selecció basat en el valor de l’avaluador. Si no existeix cap cas definit, s’executarà l’opció alternativa default, que en la imatge es pot veure amb el text D'altra banda
.
5.3. Estructures iteratives
Les estructures iteratives permeten que un programa repeteixi un bloc d’instruccions diverses vegades, sempre sota unes condicions determinades. Són fonamentals per automatitzar tasques repetitives i evitar haver d’escriure el mateix codi múltiples vegades.
Podem trobar diferents formes de representar la repetició:
- Iteració amb sortida al principi (Mentres)
Conegut en anglès com a while
, aquesta estructura avalua la condició de repetició al principi del cicle. Si la condició es compleix, s’executen les instruccions del bucle. En cas contrari, el cicle no s’executa i el flux continua.
Això significa que pot passar que les instruccions del bucle no s’executin mai si des del començament la condició és falsa.
Forma clàssica

Nassi-Shneiderman

- Iteració amb sortida al final (Repetir)
A diferència de mentres
, l’estructura repetir
(en alguns llenguatges coneguda com a do...while
) avalua la condició al final del cicle.
Això implica que el bloc d’instruccions s’executa com a mínim una vegada, ja que la condició es comprova després de la primera execució.
Forma clàssica

Nassi-Shneiderman

- Iteració amb comptador (Per a)
L’estructura per a
(for
en anglès) permet repetir un bloc d’instruccions un nombre conegut i controlat de vegades.
És molt similar al mentres
, però està orientada a bucles amb comptador, on es sap per endavant quantes vegades es repetirà l’operació.
Forma clàssica

Nassi-Shneiderman

Com es pot veure a la imatge, per a aquesta estructura és necessari:
- Identificador variable: És la variable que actua com a índex o comptador del bucle i controla l’avanç de la repetició.
- Valor inicial: Defineix el valor pel qual començarà el comptador.
- Increment/Decrement: És l’operació que modifica el valor de la variable comptador en cada repetició. Pot ser positiu (increment) o negatiu (decrement).
- Valor final: Indica el límit que determina quan ha de finalitzar el bucle. Quan la variable comptador arriba a aquest valor, el cicle es deté.
5.4. Estructures modulars
Fins ara, hem vist diagrames de flux que representen programes on totes les instruccions es troben en un únic bloc. El flux començava després de la instrucció Inici
i acabava amb Fi
. Tanmateix, en la programació modular, les instruccions no sempre es troben en el mateix bloc de codi.
En lloc d’un únic algorisme, podem tenir diversos blocs o mòduls independents, cadascun amb el seu propi nom i funcionalitat. Això és molt útil perquè permet dividir el programa en parts més petites i fàcils d’entendre, reutilitzar i mantenir.
Per treballar amb estructures modulars, les instruccions d’inici i fi poden anar acompanyades d’un nom que identifica el bloc. Per exemple:
Inici Principal
–Fi
Algorisme Nom
–Fi Algorisme
Procés Nom
–Fi Procés
Subprocés Nom
–Fi Subprocés
Això ens ajuda a saber quines instruccions pertanyen a cada bloc i com s’anomenen.
Cada un d’aquests blocs independents es pot invocar (cridar) des d’un altre bloc, simplement escrivint el seu nom. D’aquesta manera, un algorisme principal pot delegar tasques concretes a altres mòduls.
Podem trobar dos tipus principals de blocs modulars:
- Procediments
Un procediment és un bloc d’instruccions que realitza una acció concreta. Quan acaba la seva execució, no retorna cap valor al bloc que l’ha cridat. La seva funció és realitzar tasques com mostrar informació, calcular un valor o modificar dades, però sense retornar un resultat explícit.
Forma clàssica

Nassi-Shneiderman

En l’exemple, podem veure un subprocés anomenat Procediment
. Des del programa principal s’invoca escrivint el seu nom seguit de parèntesis buits.
- Funcions
Les funcions són molt semblants als procediments, però tenen una diferència important: quan finalitzen la seva execució, retornen un valor al bloc que les ha cridat.
Forma clàssica

Nassi-Shneiderman

En el diagrama podem observar que, a més del bloc anomenat Funció
, apareix una referència a una variable on es guardarà el valor que retorna la funció.
A més, és obligatori incloure una instrucció de retorn al final del bloc, indicant quin valor es retornarà al bloc que ha fet la crida.
Paràmetres o Arguments
Tant els procediments com les funcions poden rebre informació d’entrada, coneguda com a paràmetres o arguments. Això els permet treballar amb dades concretes, fent que el bloc sigui més flexible i reutilitzable.
Per definir un paràmetre, s’escriu després del nom del bloc, entre parèntesis i separats per comes si n’hi ha més d’un. Cada paràmetre rep un nom i es comporta com una variable local, és a dir, es podrà utilitzar dins del propi bloc modular com si fos una variable pròpia.
A l’hora de cridar un procediment o funció, s’ha d’indicar el seu nom seguit de parèntesis, i dins d’ells es passaran els valors concrets (un per cada paràmetre definit). Aquests valors es col·locaran en el mateix ordre en què es van declarar els paràmetres.
Forma clàssica

Nassi-Shneiderman

6. Exemples
- Exemple 1
Sol·licitar un número a l’usuari i mostrar-lo per pantalla.
Forma clàssica

Nassi-Shneiderman

- Exemple 2
Es mostra per pantalla la compte enrere des de 10.
Forma clàssica

Nassi-Shneiderman

- Exemple 3
Sol·licita un número enter positiu a l’usuari i mostra per pantalla els dígits que té. La funcionalitat de conèixer els dígits es realitza en un bloc apart.
Forma clàssica

Nassi-Shneiderman

7. Consideracions per dissenyar diagrames
Abans de començar a dissenyar un diagrama de flux, és important tenir en compte alguns aspectes per evitar errors i estalviar temps.
Un plantejament erroni pot provocar que el diagrama sigui confús o poc útil, encara que tècnicament sigui correcte.
A continuació, tens alguns consells pràctics:
-
Tot i que existeixen eines que faciliten la seva creació, elaborar un diagrama de flux requereix temps i atenció al detall. Per això, és recomanable deixar el seu disseny per al final, un cop tinguis clar com funciona el programa.
-
Primer escriu el pseudocodi. Quan tinguis una versió definitiva i revisada, llavors és el moment adequat per crear el diagrama de flux.
-
En les primeres versions del diagrama, intenta reflectir totes les instruccions completes.
Més endavant, quan comprenguis bé el funcionament, podràs simplificar o resumir alguns blocs, ometent detalls evidents per centrar-te en la lògica principal.
A més de seguir aquests consells, cal respectar algunes regles i bones pràctiques perquè el diagrama sigui clar, ordenat i fàcil d’entendre:
- Ha d’haver-hi un únic punt d’inici i un únic punt de fi.
- Anomena adequadament cada bloc, procés o algorisme.
- Les fletxes han d’indicar de forma clara la direcció del flux. En les decisions (per exemple, un IF), sempre ha d’haver-hi com a mínim dues sortides: veritable i fals.
- Dibuixa el diagrama de dalt a baix o d’esquerra a dreta, seguint un ordre lògic i evitant canvis de direcció innecessaris.
- Usa símbols estàndard reconeguts internacionalment, perquè qualsevol persona pugui interpretar el teu diagrama sense dificultats.
- Evita creuar fletxes sempre que sigui possible. Els creuaments poden fer que el diagrama sigui confús o difícil de seguir.
- Etiqueta o comenta clarament cada pas o decisió, escrivint descripcions breus però precises dins de cada símbol.
- Si el diagrama és molt gran, utilitza connectors de pàgina. Aquests serveixen per enllaçar parts del diagrama que estan en pàgines diferents o molt allunyades dins del mateix document.
8. Eines per treballar amb diagrames de flux
Hi ha moltes eines, tant gratuïtes com de pagament, que permeten crear diagrames de flux amb diferents funcionalitats adaptades a diverses necessitats: des de l’ús educatiu fins a la documentació professional de processos.
A continuació es descriuen algunes de les més utilitzades:
- Draw.io (diagrams.net) 👉 https://app.diagrams.net/ 👈
Actualment conegut com diagrams.net, és una de les eines més populars per crear diagrames de flux i altres tipus d’esquemes gràfics. És gratuïta i no requereix registre, permet treballar de forma online amb el navegador i amb la seva aplicació d’escriptori. A més, es pot integrar amb serveis d’emmagatzematge al núvol com Google Drive, OneDrive o Dropbox.

- Lucidchart 👉 https://lucid.app/ 👈
Lucidchart és una eina online molt utilitzada en entorns professionals i educatius per crear diagrames de flux, organigrames, mapes mentals i altres esquemes visuals. Disposa d’una interfície intuïtiva i permet la col·laboració en temps real, cosa que facilita el treball en equip. Compten amb una versió gratuïta amb certes limitacions i diverses opcions de pagament per a usos més avançats.

- Canva 👉 https://www.canva.com/ 👈
Canva és una plataforma de disseny gràfic online que, a més de permetre crear presentacions, infografies i altres continguts visuals, ofereix l’opció de crear diagrames de flux de forma senzilla i atractiva.
És especialment útil si es vol donar un enfocament estètic o visual al diagrama, ja que combina facilitat d’ús amb una gran quantitat d’elements gràfics i plantilles. Disposa de versió gratuïta i de opcions premium.

- PseInt 👉 https://pseint.sourceforge.net/ 👈
PseInt és una eina dissenyada principalment per aprendre programació mitjançant pseudocodi. Tot i que el seu enfocament principal no són els diagrames, permet generar automàticament i editar diagrames de flux a partir del pseudocodi escrit. És gratuïta i només compta amb aplicació d’escriptori.

- Word 👉 https://www.office.com/?omkt=es 👈
Tot i que Microsoft Word no és una eina específica per a diagrames de flux, permet crear esquemes senzills utilitzant les formes predissenyades (rectangles, òvals, fletxes, etc.). És útil quan es necessita incloure diagrames bàsics dins d’un document de text sense recórrer a eines externes. Word forma part de la suite ofimàtica de Microsoft, per la qual cosa requereix llicència o subscripció.

9. Exercicis
Exercici 1: Operacions bàsiques
Declara tres variables numèriques: a
, b
i resultat
. Demana a l’usuari que introdueixi els valors de a
i b
, i després mostra per pantalla la suma, la resta i la multiplicació de tots dos.
Exercici 2: Operacions per a la figura d’un cercle
Defineix una constant anomenada PI
. Demana a l’usuari que introdueixi el radi d’un cercle i calcula la seva àrea utilitzant la fórmula àrea = PI * radi².
Exercici 3: Control de majoria d’edat
Demana a l’usuari una edat i mostra un missatge que indiqui si és major d’edat o no.
Exercici 4: Login
Demana a l’usuari una contrasenya i verifica si coincideix amb la cadena “1234”. Repeteix la sol·licitud fins que encerti.
Exercici 5: Quadrat d’un nombre
Crea una funció anomenada Quadrat
que rebi un nombre i retorni el seu quadrat. Després, en l’algoritme principal, demana un nombre a l’usuari, crida la funció i mostra el resultat.
Exercici 6: Saludar Usuari
Defineix un procediment anomenat SaludarUsuari
que demani el nom de l’usuari i el saludi. Crida el procediment des de l’algoritme principal.
🧠 Aquests exercicis són només una petita introducció. Per dominar la lògica de programació, és fonamental seguir practicant de manera constant.
🛠️ Pots trobar més activitats per desenvolupar les teves habilitats en l’enllaç següent: 👉exercicis👈