Computadoras y Programación · ENES Juriquilla · UNAM
Módulo 2 · Sesión 1

El mapa
antes del código.

Qué es un algoritmo, cómo se piensa un problema antes de programarlo, y cómo se traza esa lógica en pseudocódigo y en diagramas de flujo — antes de que exista una sola línea de código real.
Por
Walter Rosales
Retomando desde el Módulo 1
Ya sabes de qué está hecha.
Hardware y software Sistemas numéricos Metodología

Hoy empieza el cómo pensar el problema.

Todo el Módulo 1 fue la máquina: piezas, historia, cómo representa cantidades. Ahora toca la otra mitad — cómo un humano organiza una idea para que esa máquina pueda ejecutarla. Antes del código, hay un método. Ese método es el Módulo 2 completo.
Antes de la palabra "algoritmo"

¿Qué tiene en común una receta de cocina
con el software de tu celular?

Las dos son
lo mismo.

Un conjunto de pasos, en orden, para llegar a un resultado. Eso es un algoritmo — con o sin computadora de por medio. Hoy vas a aprender a escribirlos, leerlos y dibujarlos.
2.1 — Qué es un algoritmo
El primer algoritmo que seguiste hoy no tenía código

Una receta es un algoritmo.
Un instructivo de armado es un algoritmo.

"Precalienta el horno. Mezcla los ingredientes secos. Agrega el líquido. Hornea 25 minutos." Cuatro pasos, en orden, con un inicio y un final claros. Nadie necesita saber programar para reconocer que eso es exactamente la misma estructura que vas a usar el resto del semestre.
De la receta
a la definición

Un algoritmo es una secuencia finita y ordenada de pasos
que resuelve un problema.

Eso vale para una receta, para las instrucciones de un mueble, y para el programa que calcula tu promedio en una app. La computadora no cambia la definición — solo exige que el algoritmo sea lo bastante preciso para que una máquina, que no interpreta ni asume nada, lo pueda ejecutar sin ambigüedad.
2.1 — Todo algoritmo cumple cuatro condiciones
1FinitoTermina después de un número determinado de pasos. Nunca corre para siempre.
2DefinidoCada paso es preciso, sin lugar a más de una interpretación posible.
3Entrada / salidaRecibe cero o más datos y produce al menos un resultado.
4EfectivoCada paso es lo bastante simple para poder ejecutarse de verdad, en tiempo finito.
La receta de hace dos láminas cumple las cuatro. Si a un algoritmo le falta una, no es un algoritmo todavía — es una idea a medio formar.

Nadie programa
de un solo salto.

Entre "tengo un problema" y "aquí está el código que lo resuelve" hay un método de cinco pasos — y saltarse los primeros tres es la razón número uno por la que un programa nuevo no funciona.
2.2 — El proceso de resolución de problemas
2.2 — De la idea al programa que corre
1Entender el problema
›
2Diseñar el algoritmo
›
3Representarlo
›
4Codificar
›
5Probar
Los pasos 2 y 3 —diseñar y representar en pseudocódigo o diagrama de flujo— son exactamente lo que vas a aprender hoy. Es el trabajo que ocurre antes de tocar un teclado con código real.
2.3 — Pseudocódigo

El primer paso 3
—representar la lógica— tiene dos idiomas.

Uno es texto estructurado: el pseudocódigo. El otro es visual: el diagrama de flujo. Empecemos por el texto, porque es el puente más directo entre cómo piensas y cómo se escribe código de verdad.
Ni español ni un lenguaje de programación

Pseudocódigo: español con la disciplina de un lenguaje real.

No compila, no corre en ninguna máquina — y esa es la ventaja. Te obliga a pensar en pasos precisos y ordenados, sin todavía preocuparte por la sintaxis exacta de Python, C o el lenguaje que sea. Es el puente entre "cómo lo explicarías en clase" y "cómo se lo dirías literalmente a la computadora".
Cuatro convenciones que vas a usar todo el semestre
INICIO
  LEER variable  ← entrada
  variable ← valor  ← asignación
  ESCRIBIR variable  ← salida
FIN
INICIO/FIN marcan los límites del algoritmo. ← asigna un valor a una variable. LEER pide un dato, ESCRIBIR lo muestra. Las estructuras de control —SI, MIENTRAS, PARA— las vas a ver a fondo en las próximas sesiones del módulo.

La misma lógica,
ahora en un mapa.

Un diagrama de flujo dice exactamente lo mismo que el pseudocódigo — pero se lee de un vistazo, sin leer una sola palabra completa. Cuatro figuras y una flecha son todo el lenguaje visual que necesitas.
2.4 — Diagramas de flujo
2.4 — Cuatro figuras, un significado fijo cada una
Inicio / Fin
Óvalo
Proceso
Rectángulo
Entrada / Salida
Paralelogramo
¿Condición?
Rombo — decisión
El rombo lo vas a usar a fondo hasta la próxima sesión, cuando veamos selección. Hoy solo necesitas reconocerlo — la estructura de esta sesión es puramente secuencial.
No es dibujo libre
Tres reglas, sin excepción.
Un solo inicio, un solo fin
Un óvalo de entrada y un óvalo de salida — nunca dos inicios ni un diagrama que termine en el aire.
El flujo tiene una sola dirección
De arriba hacia abajo, o de izquierda a derecha — nunca mezclado dentro del mismo diagrama.
Toda flecha conecta dos figuras
Sin cabos sueltos. Si una flecha no llega a ningún lado, el diagrama está incompleto, no es un estilo.
Reto en vivo · ¿qué símbolo va aquí? · ronda 1 de 3
"Leer la edad del usuario"
Reto en vivo · ¿qué símbolo va aquí? · ronda 2 de 3
"Calcular el total con impuesto"
Reto en vivo · ¿qué símbolo va aquí? · ronda 3 de 3
"¿La contraseña es correcta?"
Equipo izquierdo contra equipo derecho: la primera mano levantada con el símbolo correcto de las tres rondas gana el punto para el marcador de hoy.
Respuesta

Paralelogramo · Rectángulo · Rombo.

"Leer" siempre es entrada/salida. "Calcular" siempre es proceso. Una pregunta con dos posibles caminos —sí o no, verdadero o falso— siempre es una decisión, aunque esa ramificación la construyas a fondo hasta la próxima sesión.
2.5 — Estructura secuencial

La primera de tres estructuras de control — y la más simple.

Un paso sigue al otro, en el mismo orden en que se escribieron, sin saltos ni repeticiones. Todo lo que has visto hoy es secuencial. Selección (decidir entre caminos) e iteración (repetir pasos) llegan en las próximas sesiones del módulo — hoy dominas la base sobre la que se construyen.

Un problema.
Tres formas de escribirlo.

Calcular el promedio de tres calificaciones — resuelto en lenguaje natural, en pseudocódigo y en diagrama de flujo. Las tres dicen exactamente lo mismo.
2.6 — Un ejemplo completo
Paso 1 — en tus propias palabras

Calcular el promedio de tres calificaciones.

1. Pedir al usuario las tres calificaciones.
2. Sumar las tres calificaciones.
3. Dividir la suma entre tres.
4. Mostrar el resultado como el promedio.
Paso 2 — la misma lógica, con la disciplina del pseudocódigo
INICIO
  LEER nota1, nota2, nota3
  promedio ← (nota1 + nota2 + nota3) / 3
  ESCRIBIR promedio
FIN
Paso 2 · en símbolos
Inicio
Leer nota1, nota2, nota3
promedio ← (nota1 + nota2 + nota3) / 3
Escribir promedio
Fin
Cinco figuras, cuatro flechas, un solo camino de arriba hacia abajo — secuencial, sin una sola decisión.
2.6 — Comparación final
Lenguaje natural Pedir las tres notas, sumarlas, dividir entre tres, mostrar el resultado.
Pseudocódigo LEER notas → promedio ← suma/3 → ESCRIBIR promedio
Diagrama de flujo Óvalo → paralelogramo → rectángulo → paralelogramo → óvalo
Ninguna es "la correcta". Son la misma idea, escrita para tres lectores distintos: tú explicándotelo, tú documentándolo, y tú viéndolo de un vistazo antes de programarlo.
Reto en vivo · equipo izquierdo contra equipo derecho
Escribir F F ← (C × 9/5) + 32 Fin Inicio Leer temperatura en Celsius (C)
Estos cinco pasos convierten Celsius a Fahrenheit — pero están desordenados. El primer equipo que grite el orden correcto gana el punto.
Inicio
Leer temperatura en Celsius (C)
F ← (C × 9/5) + 32
Escribir F
Fin
Reto en vivo · construye el diagrama · problema nuevo
Área de un círculo, dado el radio.
área = 3.1416 × radio × radio
Por equipos: dicten en voz alta, símbolo por símbolo, el diagrama completo — desde el óvalo de inicio hasta el óvalo de fin. El primer equipo con la secuencia completa y correcta gana el punto.
Inicio
Leer radio
área ← 3.1416 × radio × radio
Escribir área
Fin
Reto en vivo · encuentra el error
Inicio
Leer num1, num2
promedio ← num1 + num2 / 2
Escribir promedio
Fin
Este diagrama tiene un error de lógica, no de símbolos. ¿Dónde está y qué resultado incorrecto produce?
Respuesta

Faltan paréntesis.

promedio ← num1 + num2 / 2 divide num2 entre 2 antes de sumarlo — el orden de las operaciones importa igual en pseudocódigo que en matemáticas. La corrección: promedio ← (num1 + num2) / 2.
Reto en vivo · traduce el pseudocódigo a diagrama
INICIO
  LEER km
  millas ← km × 0.6214
  ESCRIBIR millas
FIN
Digan en voz alta la secuencia completa de figuras — sin ver la respuesta.
Inicio
Leer km
millas ← km × 0.6214
Escribir millas
Fin
Votación rápida · levanta la mano
A
Algoritmo en lenguaje natural
Más rápido de escribir a mano, sin figuras ni sintaxis.
B
Diagrama de flujo
Se entiende de un vistazo, sin leer una sola palabra.
¿Cuál usarías para explicarle este problema a alguien que apenas empieza a programar? Vota primero — las dos son válidas: la mayoría de programadores piensa en diagrama para explicar, y escribe pseudocódigo para pasar directo a código.
Marcador en vivo
PuestoNombreReto · símboloReto · ordenReto · construirReto · errorReto · traducirVotaciónTotal
1
2
3
El mensaje de hoy

Un algoritmo es una idea. El pseudocódigo y el diagrama de flujo
son la misma idea, escrita para que la puedas pensar antes de programarla.

Todavía no escribiste una línea de código real hoy — y aun así ya sabes resolver un problema completo, de principio a fin, en tres idiomas distintos. Eso es exactamente lo que la próxima sesión va a construir encima.
04
Módulo 2 — próximas sesiones

Lo que viene:

— Estructuras de selección: cuando el algoritmo tiene que decidir entre dos o más caminos.
— Estructuras de iteración: cuando un mismo paso se repite, sin volver a escribirlo cada vez.
Explicación

Qué vimos en esta sesión

  • 2.1 · Qué es un algoritmo. Una secuencia finita y ordenada de pasos que resuelve un problema, con cuatro propiedades: finito, definido, con entrada/salida, y efectivo. Vale igual para una receta que para un programa.
  • 2.2 · El proceso de resolución de problemas. Entender el problema → diseñar el algoritmo → representarlo (pseudocódigo o diagrama de flujo) → codificar → probar. Los pasos 2 y 3 son el contenido central de esta sesión.
  • 2.3 · Pseudocódigo. Representación textual estructurada, puente entre lenguaje natural y código real. Convenciones: INICIO/FIN, asignación (←), entrada (LEER), salida (ESCRIBIR).
  • 2.4 · Diagramas de flujo. Simbología estándar: óvalo (inicio/fin), rectángulo (proceso), paralelogramo (entrada/salida), rombo (decisión). Reglas de construcción: un solo inicio y un solo fin, una sola dirección de flujo, ninguna flecha suelta.
  • 2.5 · Estructura secuencial. La primera y más simple de las tres estructuras de control: un paso sigue al otro, sin decisiones ni repeticiones. Selección e iteración se cubren en las próximas sesiones del módulo.
  • 2.6 · Ejemplo completo. Calcular el promedio de tres calificaciones, resuelto en lenguaje natural, pseudocódigo y diagrama de flujo — la misma lógica en tres representaciones equivalentes.
Verificable

Fuentes

Escuela Nacional de Estudios Superiores, Unidad Juriquilla — UNAM, Programa de estudios de la asignatura Computadoras y Programación, Plan de Estudios de la Licenciatura en Ingeniería en Computación, Sistema Escolarizado, Modalidad Presencial. Fuente del temario oficial: Unidad 2, metodología de la programación estructurada — algoritmos, pseudocódigo, diagramas de flujo y estructura secuencial.
Cairó Battistutti, O. (2005). Metodología de la Programación: Algoritmos, Diagramas de Flujo y Programas. México: Alfaomega. Referencia estándar en español para el tema exacto de esta sesión — definición de algoritmo, pseudocódigo y construcción de diagramas de flujo.
Joyanes Aguilar, L. (2008). Fundamentos de Programación: Algoritmos, Estructuras de Datos y Objetos (4ª ed.). Madrid: McGraw-Hill. Referencia complementaria para propiedades de un algoritmo y estructuras de control (secuencial, selección, iteración).
International Organization for Standardization (1985). ISO 5807:1985 — Information processing — Documentation symbols and conventions for data, program and system flowcharts, program network charts and system resources charts. Norma internacional de origen para la simbología estándar de diagramas de flujo usada en esta sesión (óvalo, rectángulo, paralelogramo, rombo).