09 — Lazo Mientras


Concepto clave

El lazo Mientras repite un bloque de instrucciones mientras una condición sea verdadera. La condición se evalúa antes de cada iteración, por lo que si es falsa desde el inicio, el cuerpo nunca se ejecuta.


Sintaxis

Mientras <condición> Hacer
    <instrucciones>
FinMientras

Flujo de ejecución

        ┌─────────────┐
        │  Evaluar    │
        │  condición  │
        └──────┬──────┘
               │
       ┌───────┴────────┐
       │                │
   Verdadero          Falso
       │                │
       ▼                ▼
  ┌─────────┐      Continúa el
  │ Ejecutar│      programa
  │ cuerpo  │
  └────┬────┘
       │
       └──────── (volver a evaluar)

Ejemplo básico — Contar del 1 al 10

Proceso ContarHasta10
    Definir i Como Entero;
    i <- 1;
    Mientras i <= 10 Hacer
        Escribir i;
        i <- i + 1;
    FinMientras;
FinProceso

¡Cuidado con los ciclos infinitos!

El cuerpo del ciclo debe contener alguna instrucción que modifique la variable de la condición. Si i nunca cambia, el Mientras nunca termina.


Ejemplo — Suma acumulativa

Proceso SumaHastaN
    Definir n, i, suma Como Entero;
    Escribir "¿Hasta qué número sumar? ";
    Leer n;
    suma <- 0;
    i <- 1;
    Mientras i <= n Hacer
        suma <- suma + i;
        i <- i + 1;
    FinMientras;
    Escribir "La suma de 1 a ", n, " es: ", suma;
FinProceso

Ejemplo — Validación de entrada (centinela)

Uno de los usos más comunes del Mientras es validar datos ingresados:

Proceso PedirEdadValida
    Definir edad Como Entero;
    edad <- -1;     // valor inicial inválido para entrar al ciclo
    Mientras (edad < 0) | (edad > 120) Hacer
        Escribir "Ingrese una edad válida (0-120): ";
        Leer edad;
    FinMientras;
    Escribir "Edad registrada: ", edad;
FinProceso

Ejemplo — Menú repetitivo

Proceso MenuConSalida
    Definir opcion Como Entero;
    opcion <- 0;
    Mientras opcion <> 3 Hacer
        Limpiar Pantalla;
        Escribir "1. Opción A";
        Escribir "2. Opción B";
        Escribir "3. Salir";
        Leer opcion;
        Segun opcion Hacer
            1: Escribir "Elegiste A";
            2: Escribir "Elegiste B";
            3: Escribir "Hasta luego";
            De Otro Modo: Escribir "Opción inválida";
        FinSegun;
    FinMientras;
FinProceso

Mientras con condición compuesta

Proceso BuscarEnArreglo
    Definir datos(10) Como Entero;
    Definir i, buscado Como Entero;
    Definir encontrado Como Logico;
    // (suponemos datos ya cargados)
    Leer buscado;
    i <- 1;
    encontrado <- Falso;
    Mientras (i <= 10) & ~encontrado Hacer
        Si datos(i) = buscado Entonces
            encontrado <- Verdadero;
        FinSi;
        i <- i + 1;
    FinMientras;
    Si encontrado Entonces
        Escribir "Encontrado en posición ", i - 1;
    SiNo
        Escribir "No encontrado";
    FinSi;
FinProceso

Comparación con otros lazos

LazoCondición evaluadaEjecuciones mínimas
MientrasAntes de cada iteración0 (puede no ejecutarse)
RepetirDespués de cada iteración1 (siempre ejecuta al menos una vez)
ParaVariable contadora automáticaDepende del rango

¿Cuándo usar Mientras?

Úsalo cuando no sabes de antemano cuántas veces se repetirá el ciclo y la condición debe verificarse antes de ejecutar el cuerpo. Si el cuerpo debe ejecutarse al menos una vez, considera 10 - Lazo Repetir–Hasta Que.


Relación con otros temas


Creado con Quartz v4.5.2 © 2026 | Contribución: Alexis Carrillo | Círculo Interno • EvoClub