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.
| Diagrama | Pregunta | Sí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
- 1Un símbolo, un significado.
La flecha siempre es flujo o siempre es información: nunca ambas sin leyenda.
- 2Nombrá todo.
Caja sin nombre es adorno; flecha sin etiqueta es adivinanza.
- 3Un diagrama, una pregunta.
El que cuenta todo no cuenta nada: separá estructura, acumulación y modos.
- 4Leyenda 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
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.
El mismo tanque, tres lenguajes
bloques · flujos · estados
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
- ¿Qué estilo muestra el tope del tanque? ¿Y la bomba por umbral?
- Apagá las etiquetas. ¿El dibujo sigue programable?
- ¿Qué diagrama pedirías para discutir capacidad? ¿Y para discutir modos?
Ver respuestas sugeridas
- El tope se ve en flujos (límite del stock); la bomba, en estados (modo con guarda). Cada lenguaje ve lo suyo.
- No: sin nombres ni tasas el dibujo es decoración. Etiquetar es programar por adelantado.
- 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.