Computadoras y Programación · ENES Juriquilla · UNAM
Módulo 2 · Sesión 1 · Extra de práctica

Piénsalo en mapa.
Escríbelo en pasos.

Diez problemas, un reto de equipos — la misma lógica de siempre, en pseudocódigo y en diagrama de flujo, hasta que te salga sin pensarlo.
Por
Walter Rosales
No es contenido nuevo
Es la misma sesión, con las manos en la masa.

Repaso rápido. Diez problemas. Un reto en equipo.

Primero un repaso visual y breve de los siete conceptos de hoy. Después, diez ejercicios cortos —de básico a intermedio— para resolver en pseudocódigo y en diagrama de flujo. Y al final, un reto de equipos con un algoritmo real, propio, para exponer.
Repaso · 7 piezas, 2 minutos
Variable Tipo de dato Asignación Entrada / Salida Secuencia Condicional Ciclo
Variable · tipo de dato
edad : entero
18
altura : decimal
1.75
nombre : texto
"Ana"
activo : booleano
verdadero
Una variable es una caja con nombre. El tipo de dato dice qué clase de valor cabe adentro.
Asignación
x ← 5
La flecha manda: el valor de la derecha entra en la caja de la izquierda. Nunca al revés.
Entrada · salida
Leer
Escribir
El mismo símbolo —paralelogramo— para los dos: algo entra al algoritmo, o algo sale de él.
Secuencia
Inicio
Paso 1
Paso 2
Fin
Un paso sigue al otro, en el orden en que se escribieron. Nada más.
Condicional — SI / SINO
¿Condición?
Sí
Camino A
No
Camino B
El rombo divide el flujo en dos caminos. Solo uno se recorre, nunca los dos.
Ciclo — MIENTRAS
¿Continuar?
Sí
Repetir el paso ↺
No
Salir
El mismo rombo — pero aquí el "Sí" no avanza, regresa. Eso es un ciclo.
Ahora, a resolver

Diez problemas.
De básico a intermedio.

Cada uno en dos láminas: el problema, y la respuesta en pseudocódigo + diagrama de flujo lado a lado.
Ejercicio 1 de 10 · básico
Convertir una temperatura de Celsius a Kelvin.
K = C + 273.15
Respuesta · Ejercicio 1
Pseudocódigo
INICIO
  LEER C
  K ← C + 273.15
  ESCRIBIR K
FIN
Diagrama
Inicio
Leer C
K ← C + 273.15
Escribir K
Fin
Ejercicio 2 de 10 · básico
Calcular el promedio de 5 calificaciones.
Respuesta · Ejercicio 2
Pseudocódigo
INICIO
  LEER n1, n2, n3, n4, n5
  promedio ← (n1+n2+n3+n4+n5) / 5
  ESCRIBIR promedio
FIN
Diagrama
Inicio
Leer n1..n5
promedio ← suma / 5
Escribir promedio
Fin
Ejercicio 3 de 10 · básico
Decidir si un número es par o impar.
Respuesta · Ejercicio 3
Pseudocódigo
INICIO
  LEER numero
  SI numero MOD 2 = 0 ENTONCES
    ESCRIBIR "Par"
  SINO
    ESCRIBIR "Impar"
  FIN SI
FIN
Diagrama
Inicio
Leer numero
¿numero MOD 2 = 0?
Sí
Escribir "Par"
No
Escribir "Impar"
Ejercicio 4 de 10 · intermedio
Encontrar el mayor de tres números.
Respuesta · Ejercicio 4
Pseudocódigo
INICIO
  LEER a, b, c
  SI a > b Y a > c ENTONCES
    mayor ← a
  SINO SI b > c ENTONCES
    mayor ← b
  SINO
    mayor ← c
  FIN SI
  ESCRIBIR mayor
FIN
Diagrama (simplificado)
Inicio
Leer a, b, c
¿a > b y a > c?
Sí
mayor ← a
No
¿b > c?
El diagrama completo anida un segundo rombo dentro del "No" — dibújalo tú en tu cuaderno.
Ejercicio 5 de 10 · intermedio
Calcular el factorial de un número.
Respuesta · Ejercicio 5
Pseudocódigo
INICIO
  LEER n
  factorial ← 1
  contador ← 1
  MIENTRAS contador <= n HACER
    factorial ← factorial × contador
    contador ← contador + 1
  FIN MIENTRAS
  ESCRIBIR factorial
FIN
Diagrama
Inicio
Leer n
factorial←1, contador←1
¿contador <= n?
Sí
factorial ← factorial × contador; contador ← contador+1; ↺
No
Escribir factorial
Ejercicio 6 de 10 · intermedio
Mostrar la tabla de multiplicar de un número (1 a 10).
Respuesta · Ejercicio 6
Pseudocódigo
INICIO
  LEER n
  contador ← 1
  MIENTRAS contador <= 10 HACER
    ESCRIBIR n × contador
    contador ← contador + 1
  FIN MIENTRAS
FIN
Diagrama
Inicio
Leer n
¿contador <= 10?
Sí
Escribir n × contador; contador++; ↺
No
Fin
Ejercicio 7 de 10 · básico-intermedio
Validar que una contraseña tenga al menos 8 caracteres.
Respuesta · Ejercicio 7
Pseudocódigo
INICIO
  LEER contraseña
  SI LONGITUD(contraseña) >= 8 ENTONCES
    ESCRIBIR "Válida"
  SINO
    ESCRIBIR "Muy corta"
  FIN SI
FIN
Diagrama
Inicio
Leer contraseña
¿longitud >= 8?
Sí
Escribir "Válida"
No
Escribir "Muy corta"
Ejercicio 8 de 10 · intermedio
Sumar N números capturados uno por uno.
Respuesta · Ejercicio 8
Pseudocódigo
INICIO
  LEER n
  suma ← 0
  contador ← 1
  MIENTRAS contador <= n HACER
    LEER numero
    suma ← suma + numero
    contador ← contador + 1
  FIN MIENTRAS
  ESCRIBIR suma
FIN
Diagrama
Inicio
Leer n
suma←0, contador←1
¿contador <= n?
Sí
Leer numero; suma←suma+numero; contador++; ↺
No
Escribir suma
Ejercicio 9 de 10 · intermedio
Encontrar el número más grande de una lista de N números.
Respuesta · Ejercicio 9
Pseudocódigo
INICIO
  LEER n
  LEER numero
  máximo ← numero
  contador ← 2
  MIENTRAS contador <= n HACER
    LEER numero
    SI numero > máximo ENTONCES
      máximo ← numero
    FIN SI
    contador ← contador + 1
  FIN MIENTRAS
  ESCRIBIR máximo
FIN
Diagrama (ciclo con decisión anidada)
Leer n, primer numero
máximo ← numero
¿contador <= n?
Sí
Leer numero;
¿numero > máximo?
No
Escribir máximo
Ejercicio 10 de 10 · intermedio
Clasificar una edad en: niño, adolescente, adulto o adulto mayor.
Respuesta · Ejercicio 10
Pseudocódigo
INICIO
  LEER edad
  SI edad < 13 ENTONCES
    ESCRIBIR "Niño"
  SINO SI edad < 18 ENTONCES
    ESCRIBIR "Adolescente"
  SINO SI edad < 60 ENTONCES
    ESCRIBIR "Adulto"
  SINO
    ESCRIBIR "Adulto mayor"
  FIN SI
FIN
Diagrama (cadena de rombos)
Leer edad
¿edad < 13?
Sí
"Niño"
No
¿edad < 18?
…y así sucesivamente
Segunda ronda — sube el nivel

Diez resueltos.
Siete más, de los que sí se usan.

Los mismos dos lenguajes —pseudocódigo y diagrama de flujo— para problemas que ya se parecen a los que vas a programar de verdad.
Avanzado 1 de 7 · alto
Buscar un número en una lista YA ORDENADA, partiendo la búsqueda a la mitad en cada paso.
Respuesta · Avanzado 1
Pseudocódigo
INICIO
  LEER lista, n, objetivo
  inicio ← 1
  fin ← n
  encontrado ← falso
  MIENTRAS inicio <= fin Y NO encontrado HACER
    medio ← (inicio + fin) DIV 2
    SI lista[medio] = objetivo ENTONCES
      encontrado ← verdadero
    SINO SI lista[medio] < objetivo ENTONCES
      inicio ← medio + 1
    SINO
      fin ← medio - 1
    FIN SI
  FIN MIENTRAS
  ESCRIBIR encontrado, medio
FIN
Diagrama (ciclo con decisión doble)
Leer lista, n, objetivo
inicio←1, fin←n
¿inicio<=fin y no encontrado?
Sí
medio←(inicio+fin)/2;
¿lista[medio]=objetivo?
No
Escribir encontrado, medio
Si no coincide, mueve "inicio" o "fin" según sea mayor o menor — y vuelve a partir a la mitad.
Avanzado 2 de 7 · alto
Ordenar una lista de menor a mayor, comparando e intercambiando parejas vecinas.
Respuesta · Avanzado 2
Pseudocódigo
INICIO
  LEER lista, n
  PARA i DESDE 1 HASTA n-1 HACER
    PARA j DESDE 1 HASTA n-i HACER
      SI lista[j] > lista[j+1] ENTONCES
        intercambiar lista[j], lista[j+1]
      FIN SI
    FIN PARA
  FIN PARA
  ESCRIBIR lista
FIN
Diagrama (ciclos anidados)
Leer lista, n
¿quedan pasadas i?
Sí
¿lista[j] > lista[j+1]?
(recorre j)
No
Escribir lista ordenada
Cada pasada completa "empuja" el número más grande restante hasta el final — por eso "burbujea".
Avanzado 3 de 7 · alto
Calcular el máximo común divisor de dos números, con residuos sucesivos.
Respuesta · Avanzado 3
Pseudocódigo
INICIO
  LEER a, b
  MIENTRAS b <> 0 HACER
    residuo ← a MOD b
    a ← b
    b ← residuo
  FIN MIENTRAS
  ESCRIBIR a
FIN
Diagrama
Inicio
Leer a, b
¿b <> 0?
Sí
residuo←a MOD b; a←b; b←residuo; ↺
No
Escribir a
Cuando el residuo llega a 0, el número que queda en "a" es el MCD.
Avanzado 4 de 7 · alto
Convertir un número decimal a binario, con divisiones sucesivas entre 2.
Respuesta · Avanzado 4
Pseudocódigo
INICIO
  LEER n
  binario ← ""
  MIENTRAS n > 0 HACER
    residuo ← n MOD 2
    binario ← residuo + binario
    n ← n DIV 2
  FIN MIENTRAS
  ESCRIBIR binario
FIN
Diagrama
Leer n
binario ← ""
¿n > 0?
Sí
residuo←n MOD 2; binario←residuo+binario; n←n DIV 2; ↺
No
Escribir binario
Cada residuo se acomoda AL FRENTE del resultado — el primero que sale es el último dígito.
Avanzado 5 de 7 · alto
Generar los primeros N números de Fibonacci —cada uno es la suma de los dos anteriores.
Respuesta · Avanzado 5
Pseudocódigo
INICIO
  LEER n
  anterior ← 0
  actual ← 1
  contador ← 1
  ESCRIBIR anterior
  MIENTRAS contador < n HACER
    ESCRIBIR actual
    siguiente ← anterior + actual
    anterior ← actual
    actual ← siguiente
    contador ← contador + 1
  FIN MIENTRAS
FIN
Diagrama
Leer n
anterior←0, actual←1, contador←1
Escribir anterior
¿contador < n?
Sí
Escribir actual; siguiente←anterior+actual; anterior←actual; actual←siguiente; ↺
No
Fin
Avanzado 6 de 7 · alto
Decidir si una palabra se lee igual al derecho y al revés.
Respuesta · Avanzado 6
Pseudocódigo
INICIO
  LEER palabra
  izquierda ← 1
  derecha ← LONGITUD(palabra)
  esPalindromo ← verdadero
  MIENTRAS izquierda < derecha Y esPalindromo HACER
    SI palabra[izquierda] <> palabra[derecha] ENTONCES
      esPalindromo ← falso
    FIN SI
    izquierda ← izquierda + 1
    derecha ← derecha - 1
  FIN MIENTRAS
  ESCRIBIR esPalindromo
FIN
Diagrama (dos punteros)
Leer palabra
izq←1, der←longitud
¿izq<der y esPalindromo?
Sí
¿palabra[izq]<>palabra[der]?
izq++, der--
No
Escribir esPalindromo
Dos "dedos" —uno en cada extremo— se acercan al centro comparando letras. Si alguno no coincide, ya no es palíndromo.
Avanzado 7 de 7 · alto
Simular un cajero automático: hasta 3 intentos para escribir el NIP correcto.
Respuesta · Avanzado 7
Pseudocódigo
INICIO
  intentos ← 0
  acceso ← falso
  MIENTRAS intentos < 3 Y NO acceso HACER
    LEER nip
    SI nip = nipCorrecto ENTONCES
      acceso ← verdadero
    SINO
      intentos ← intentos + 1
    FIN SI
  FIN MIENTRAS
  SI acceso ENTONCES
    ESCRIBIR "Acceso concedido"
  SINO
    ESCRIBIR "Tarjeta bloqueada"
  FIN SI
FIN
Diagrama
intentos←0, acceso←falso
¿intentos<3 y no acceso?
Sí
Leer nip;
¿nip=nipCorrecto?
No
Escribir "Acceso" o "Bloqueada"
El ciclo revisa DOS condiciones a la vez: que no se acaben los intentos, y que aún no haya acceso.
Último reto — en equipos

Ahora el algoritmo
lo eligen ustedes.

No de la vida de una computadora — de la vida real. Algo que ya hacen, paso a paso, sin pensarlo.
En equipos
Tres pasos, un algoritmo real.
1 · Elijan
Su algoritmo favorito de la vida real —el suyo propio, o uno de los tres de la siguiente lámina.
2 · Escriban
El mismo algoritmo en pseudocódigo Y en diagrama de flujo — con INICIO/FIN, al menos una decisión o un ciclo si aplica.
3 · Expongan
Cada equipo pasa al frente y explica su algoritmo: qué entra, qué pasos sigue, qué sale.
Si no se les ocurre uno propio, elijan entre estas tres
A
Preparar un café
Entrada: agua, café, taza. Decisión: ¿con azúcar o sin? Salida: la bebida lista.
B
Cruzar la calle con seguridad
Entrada: lo que ven a los dos lados. Ciclo: revisar hasta que esté despejado. Salida: cruzar.
C
Elegir qué ver en streaming
Entrada: tiempo disponible y ánimo. Decisión: ¿serie o película? Ciclo: seguir viendo capítulos hasta terminar o dormirse.
Cierre · dinámica en vivo

El pizarrón es de todos.

Un algoritmo, un equipo, un cronómetro — y los demás compitiendo por encontrar el error.
Dinámica final · pizarrón en vivo
En vivo, por rondas
Cuatro pasos, un cronómetro.
1 · Sorteo
Se sortea qué equipo pasa y qué algoritmo resuelve — uno de los que ya vimos hoy.
2 · Resuelven en vivo
Pseudocódigo O diagrama de flujo, a su elección — el cronómetro corre desde que empiezan.
3 · Cazan errores
Cualquier otro equipo puede levantar la mano y señalar un error real mientras tanto — si tiene razón, se lleva puntos.
4 · Rotan
El siguiente equipo sortea otro algoritmo — hasta que todos hayan pasado al menos una vez.
Puntos por velocidad y por qué tan correcto quedó. Cazar un error ajeno también suma.
Cada comodín se usa UNA sola vez por equipo
1
Línea directa
Una sola pregunta puntual a la IA proyectada en pantalla — una sola respuesta, y siguen solos.
2
Consulta al público
Piden ayuda a los demás equipos — el equipo que ayuda de verdad también gana puntos.
3
Pista del profe
Walter da una pista — nunca la respuesta completa.
El mensaje de hoy

Practicar pseudocódigo y diagramas de flujo
es aprender a pensar antes de programar.

Diez problemas resueltos, y uno más —el suyo— diseñado desde cero. Eso es exactamente lo que la próxima sesión, con selección e iteración a fondo, va a construir encima.
Gracias
Walter Rosales
CEO & Co-Founder, iGalenus
walter.rosales@igalenus.com
@walterr_rosales
walter-rosales.com
Escanear · esta charla