Computadoras y Programación · ENES Juriquilla · UNAM
Sesión 6 · Computadoras y Programación
El mismo paso,
las veces que haga falta.
Tres formas de decirle a la máquina "otra vez" — y cómo saber, antes de escribir
una línea, cuál te conviene.
Ya tienen dos piezas
Secuencia y decisión. Falta repetir.
Hoy: MIENTRAS, PARA y REPETIR-HASTA.
Ya saben escribir pasos en orden, y ya saben elegir un camino según una condición.
Hoy resuelven el tercer problema: cuando un mismo paso hay que hacerlo una y otra vez,
sin copiar y pegar la línea cien veces.
El problema real
Sumar los primeros 1000 números
suma ← 0
suma ← suma + 1
suma ← suma + 2
suma ← suma + 3
… 996 líneas más …
suma ← suma + 1000
Con secuencia y decisión, esto se escribe. Nadie lo escribe así.
¿Y si un solo bloque de instrucciones
pudiera repetirse solo?
El símbolo no es nuevo
Regresa
Inicio
¿Condición?
Un paso, otra vez
Óvalo, rombo, rectángulo — los mismos tres de siempre. Lo único nuevo es la flecha:
en vez de seguir hacia adelante, regresa.
Primera forma — MIENTRAS
Pregunta antes de entrar.
MIENTRAS revisa la condición primero. Si es falsa desde el principio, el cuerpo del
ciclo no se ejecuta ni una sola vez.
Sintaxis
MIENTRAS condición HACER
instrucción 1
instrucción 2
FIN MIENTRAS
Diagrama de flujo
Sí, vuelve
Inicio
¿Condición?
Cuerpo del ciclo
El rombo va PRIMERO. Si la respuesta es "No" desde el inicio, el rectángulo de abajo
nunca se dibuja siquiera.
Regla práctica
No sé cuántas veces
Puede ser 0 veces
Condición previa
Úsalo cuando no sabes de antemano cuántas vueltas va a dar el ciclo —
depende de un dato que llega mientras el programa corre.
Ejemplo trabajado 1
Sumar los primeros N números,
donde N lo escribe el usuario.
Respuesta · MIENTRAS
Pseudocódigo
INICIO
LEER n
suma ← 0
contador ← 1
MIENTRAS contador <= n HACER
suma ← suma + contador
contador ← contador + 1
FIN MIENTRAS
ESCRIBIR suma
FIN
Diagrama
Inicio
Leer n
suma←0, contador←1
¿contador <= n?
Sí
suma←suma+contador; contador←contador+1; ↺
Segunda forma
¿Y si ya sabes
cuántas veces van a ser?
Cuando el número de vueltas es un dato conocido desde antes de empezar, hay una
forma más corta de escribirlo: PARA.
PARA — contador conocido
Un contador que se lleva solo.
PARA declara desde el inicio dónde empieza el contador, dónde termina, y que
avanza automáticamente en cada vuelta — sin que tú escribas "contador ← contador + 1" a mano.
Sintaxis
PARA i DESDE 1 HASTA n HACER
instrucción 1
instrucción 2
FIN PARA
"i" nace en 1, crece de uno en uno, y el ciclo termina solo cuando i pasa de n.
Diagrama de flujo
i++, vuelve
Inicio
i ← 1
¿i <= n?
Cuerpo del ciclo; i ← i + 1
Mismo rombo, misma flecha de retorno — el "i ← i + 1" va escondido dentro de la
palabra PARA, pero en el diagrama sigue siendo un paso explícito.
Comparación
MIENTRAS
Cuántas veces: no se sabe de antemano.
Condición: se revisa antes de cada vuelta.
Ejemplo: leer números hasta que el usuario escriba 0.
PARA
Cuántas veces: se sabe desde el inicio.
Condición: un contador que avanza solo.
Ejemplo: imprimir la tabla del 1 al 10.
Ejemplo trabajado 2
Mostrar la tabla de multiplicar
de un número que da el usuario.
Respuesta · PARA
Pseudocódigo
INICIO
LEER n
PARA i DESDE 1 HASTA 10 HACER
ESCRIBIR n × i
FIN PARA
FIN
Diagrama
Inicio
Leer n
i ← 1
¿i <= 10?
Sí
Escribir n × i; i ← i+1; ↺
Tercera forma
¿Y si el paso tiene
que hacerse al menos una vez?
Pedir un NIP, mostrar un menú, capturar una respuesta — a veces hay que actuar
primero, y preguntar "¿ya terminé?" después.
REPETIR ... HASTA QUE
Actúa primero. Pregunta después.
REPETIR ejecuta el cuerpo del ciclo una vez, y hasta ENTONCES revisa la condición.
Por diseño, el cuerpo corre mínimo una vez — nunca cero.
Sintaxis
REPETIR
instrucción 1
instrucción 2
HASTA QUE condición
Diagrama de flujo
No, repite
Inicio
Cuerpo del ciclo
¿Condición?
El rombo va AL FINAL. El rectángulo del cuerpo siempre se dibuja primero —
por eso se ejecuta al menos una vez.
Resumen
MIENTRAS
Condición: antes.
Mínimo: 0 veces.
Cuenta: no la conozco.
PARA
Condición: contador automático.
Mínimo: 0 veces (o las que definas).
Cuenta: la conozco desde antes.
REPETIR-HASTA
Condición: después.
Mínimo: 1 vez, siempre.
Cuenta: no importa, actúo primero.
Ejemplo trabajado 3
Un cajero: pide el NIP, y lo vuelve
a pedir si está mal — hasta acertar.
Respuesta · REPETIR-HASTA
Pseudocódigo
INICIO
REPETIR
LEER nip
HASTA QUE nip = nipCorrecto
ESCRIBIR "Acceso concedido"
FIN
Diagrama
Inicio
Leer nip
¿nip = correcto?
Nota las ramas invertidas: aquí el "No" es el que regresa — en REPETIR-HASTA,
el ciclo sigue mientras la condición sea FALSA.
Ahora, en equipos
Sigan la variable.
Cacen el error.
Tres dinámicas cortas para sentir un ciclo por dentro, antes de escribir uno.
Dinámica 1
La tabla de trazo.
1 · Se proyecta un cicloUn MIENTRAS corto, con dos variables que cambian en cada vuelta.
2 · Dibujan la tablaUna columna por variable, una fila por vuelta — SIN correr el código, solo con la mano.
3 · Llenan fila por filaEn cada vuelta, anotan el valor nuevo de cada variable — hasta que la condición se vuelve falsa.
4 · ComparanEl último valor de su tabla debe coincidir con lo que el algoritmo escribe al final.
En vivo · llenen la tabla
INICIO
contador ← 1
suma ← 0
MIENTRAS contador <= 5 HACER
suma ← suma + contador
contador ← contador + 1
FIN MIENTRAS
ESCRIBIR suma
FIN
| Vuelta | contador | suma |
| 1 | | |
| 2 | | |
| 3 | | |
| 4 | | |
| 5 | | |
Dinámica 2
Cacen el ciclo infinito.
1 · Se proyecta un ciclo rotoUn MIENTRAS que, tal como está escrito, nunca termina.
2 · 60 segundosEn equipos, encuentran la línea exacta que falta o está mal.
3 · Levantan la manoEl primer equipo en señalar la línea correcta explica POR QUÉ el ciclo no para.
4 · Proponen la correcciónEn pseudocódigo, dicen exactamente qué línea agregar o cambiar.
⏱ 60 segundos · ¿por qué no para?
INICIO
contador ← 1
MIENTRAS contador <= 10 HACER
ESCRIBIR contador
FIN MIENTRAS
FIN
Respuesta · el ciclo infinito
- El bug: "contador" nunca cambia dentro del ciclo — sigue valiendo 1 para siempre, así que "contador <= 10" nunca se vuelve falsa.
- La corrección: agregar contador ← contador + 1 como última línea, dentro del cuerpo del MIENTRAS.
- La regla general: toda variable que aparece en la condición del ciclo tiene que cambiar DENTRO del ciclo — si no, la condición nunca cambia de opinión.
Dinámica 3 · relámpago, en voz alta
A
Imprimir los números del 1 al 20.
B
Pedir la contraseña hasta que sea correcta.
C
Sumar números hasta que el usuario escriba 0.
Respuesta · Dinámica 3
A → PARA (cuento conocido: 1 a 20)
B → REPETIR-HASTA (al menos una vez)
C → MIENTRAS (no sé cuántos van a ser)
El mensaje de hoy
Secuencia, decisión, iteración.
Con estas tres, cualquier algoritmo se escribe.
No hay una cuarta estructura de control que necesiten — cada programa que existe
se construye combinando estas tres piezas, una y otra vez.
Lo que sigue
Del papel a un lenguaje real: C.
MIENTRAS será while. PARA será
for. SI será
if. La lógica que ya dominan no cambia —
solo cambia el idioma en que se la dictan a la máquina.
Gracias
Walter Rosales
CEO & Co-Founder, iGalenus
walter.rosales@igalenus.com
@walterr_rosales
walter-rosales.com