Modelos y Simulación · Tema 23

Diagramas y representación

Bloques, flujos y estados: tres lenguajes visuales para el mismo modelo.

01 · Punto de partida

Un dibujo acordado vale páginas

El mismo tanque se dibuja de tres maneras: bloques (quién se conecta con quién), flujos (qué se acumula y a qué tasa) y estados (en qué modo está y cómo cambia). Cada diagrama responde una pregunta distinta del mismo modelo.

  • ¿Quiero mostrar estructura, acumulación o modos?
  • ¿Cada símbolo significa lo mismo para todos?
  • ¿El diagrama alcanza para programar sin preguntar?
  • ¿Dibujo y código cuentan la misma historia?

02 · Tres lenguajes

Bloques, flujos y estados

▭

Bloques

Cajas y flechas: quién existe y quién se conecta con quién. El mapa general.

≋

Flujos

Stocks y tasas: qué se acumula, qué entra y qué sale por unidad de tiempo.

○

Estados

Burbujas y transiciones: en qué modo está el sistema y qué lo cambia.

Cada diagrama responde lo suyo.
DiagramaPreguntaSímbolos
Bloques¿Qué se conecta con qué?Cajas, flechas, marco
Flujos¿Qué se acumula y a qué tasa?Stocks, válvulas, nubes
Estados¿En qué modo está y cómo sale?Burbujas, transiciones, guardas

03 · Gramática

Reglas para que se entienda

  1. 1
    Un símbolo, un significado.

    La flecha siempre es flujo o siempre es información: nunca ambas sin leyenda.

  2. 2
    Nombrá todo.

    Caja sin nombre es adorno; flecha sin etiqueta es adivinanza.

  3. 3
    Un diagrama, una pregunta.

    El que cuenta todo no cuenta nada: separá estructura, acumulación y modos.

  4. 4
    Leyenda y frontera.

    Qué significa cada forma y dónde termina el dibujo.

Buen diagrama

Se programa solo

Cada caja es una variable y cada flecha una regla: el código es traducción.

Mal diagrama

Decora la duda

Flechas cruzadas, símbolos mezclados y nombres vagos: nadie puede programarlo.

Stock
Acumulación: nivel, cola, stock. Lo que guarda memoria.
Tasa
Flujo por unidad de tiempo con su válvula de control.
Transición
Cambio de modo con su guarda explícita.
Leyenda
Diccionario visual de símbolos del diagrama.

04 · Del dibujo al código

Traducción directa

Caja → variable→Flecha → regla→Rombo → if→Programa

Si el diagrama está bien hecho, programar es traducir: cada símbolo tiene su línea de código esperándolo.

05 · En Python

Diagramas como datos que se ejecutan

Python en tu navegador. El diagrama es un diccionario de nodos y aristas que el código recorre.

diagrama = {
    "nodos": ["entradas", "tanque", "salida"],
    "aristas": [("entradas", "tanque"), ("tanque", "salida")],
}


def roto(diagrama):
    # Toda flecha debe unir nodos existentes.
    nodos = set(diagrama["nodos"])
    return [(a, b) for a, b in diagrama["aristas"] if a not in nodos or b not in nodos]


print("roto:", roto(diagrama))

Motor guiado por el diagrama

def correr(pasos, entrada, salida):
    # Nodos en orden: entradas -> tanque -> salida.
    tanque = 10
    historia = []
    for t in range(pasos):
        tanque = max(tanque + entrada - salida, 0)
        historia.append(tanque)
    return historia


print(correr(4, 3, 2))

06 · Exploración

Laboratorio: tres dibujos, un tanque

Cambiá de estilo y compará cómo se ve el mismo sistema en bloques, flujos y estados. Activá etiquetas y resaltado para leer cada gramática.

EXPERIMENTO 23

El mismo tanque, tres lenguajes

bloques · flujos · estados

Los resultados numéricos aparecen debajo.
Estilobloques
Nodos3
Aristas2
LecturaEstructura

Bloques: 3 nodos y 2 aristas muestran la estructura.

Bloques cuenta conexiones, flujos cuenta acumulación y estados cuenta modos: tres preguntas, tres dibujos.

Preguntas para explorar

  1. ¿Qué estilo muestra el tope del tanque? ¿Y la bomba por umbral?
  2. Apagá las etiquetas. ¿El dibujo sigue programable?
  3. ¿Qué diagrama pedirías para discutir capacidad? ¿Y para discutir modos?
Ver respuestas sugeridas
  1. El tope se ve en flujos (límite del stock); la bomba, en estados (modo con guarda). Cada lenguaje ve lo suyo.
  2. No: sin nombres ni tasas el dibujo es decoración. Etiquetar es programar por adelantado.
  3. Flujos para capacidad (tasas y stocks); estados para modos (guardas y transiciones).

07 · Comprensión

Confusiones frecuentes

«Un diagrama alcanza para todo»

Cada uno responde una pregunta: estructura, acumulación o modos. El diagrama único lo mezcla todo y no responde nada.

«Flecha es flecha»

No: flujo de material, señal de información y transición de modo son cosas distintas con el mismo dibujo. La leyenda las separa.

«El diagrama se dibuja al final»

Al final ilustra; al principio decide. El diagrama temprano ahorra código tardío.

«Si está lindo, está bien»

La prueba es programarlo sin preguntar: belleza sin traducibilidad es decoración.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: auditar el dibujo

¿Este diagrama tiene flechas rotas? Ejecutá el validador.

def roto(diagrama):
    nodos = set(diagrama["nodos"])
    return [(a, b) for a, b in diagrama["aristas"] if a not in nodos or b not in nodos]


bueno = {"nodos": ["a", "b"], "aristas": [("a", "b")]}
malo = {"nodos": ["a"], "aristas": [("a", "b")]}
print(roto(bueno), roto(malo))
Ver solución razonada

Da [] y [('a', 'b')]: el segundo apunta a un nodo inexistente. El validador caza dibujos rotos antes que el código.

Ejercicio 2: motor mínimo

Corré 4 pasos con entrada 3 y salida 2 desde 10. ¿Historia?

def correr(pasos, entrada, salida):
    tanque = 10
    historia = []
    for t in range(pasos):
        tanque = max(tanque + entrada - salida, 0)
        historia.append(tanque)
    return historia


print(correr(4, 3, 2))
Ver solución

Da [11, 12, 13, 14]: el motor recorre los nodos en orden, como las flechas mandan.

Ejercicio 3: elegir el lenguaje

Asigná diagrama a cada pregunta: ¿quién se conecta?, ¿dónde se acumula?, ¿cuándo conmuta la bomba?

Ver una posible respuesta
asignacion = {
    "quien se conecta": "bloques",
    "donde se acumula": "flujos",
    "cuando conmuta": "estados",
}
for p, d in asignacion.items():
    print(p, "->", d)

Cada pregunta tiene su lenguaje: estructura, acumulación y modos no se dibujan igual.

09 · Síntesis

Ideas para recordar

  • Bloques: estructura. Flujos: acumulación. Estados: modos.
  • Un símbolo, un significado; todo nombrado; un diagrama, una pregunta.
  • El buen diagrama se programa sin preguntar.
  • Dibujo y código se versionan juntos o divergen.
  • En Python: diagramas como datos con validadores.

En el próximo tema escribiremos el modelo en su idioma más preciso: la formulación matemática.