Contexto

El flujo de control es el sistema circulatorio de cualquier programa: determina qué caminos lógicos tomar y qué bloques repetir. Un sistema de atención al cliente en una sucursal bancaria o centro médico debe:

  1. Recorrer turnos uno a uno (bucle for).
  2. Omitir turnos donde el cliente no se presentó (instrucción continue).
  3. Tomar decisiones según el tipo de trámite (estructura switch).
  4. Cobrar en partes hasta que el saldo llegue a cero (bucle while).
  5. Exigir al menos un control de auditoría de seguridad (bucle do-while).
  6. Cerrar la ventanilla si se cumplió el tiempo límite del día (instrucción break).

Construir este simulador te permitirá dominar con precisión milimétrica cuándo utilizar cada estructura de control en Java.

Consigna

Escribí la clase SimuladorTurnos.java que modele la jornada de atención de una oficina.

1. Variables de Control y Acumuladores

Inicializá antes del bucle las variables necesarias para el balance diario:

  • tiempoTotal (int, minutos acumulados).
  • recaudacionTotal (double, dinero cobrado).
  • atendidos (int, cantidad de clientes exitosos).
  • cancelados (int, clientes que faltaron).
  • limiteMinutos (final int = 60).

2. Estructura Principal (for)

Iterá sobre 8 turnos:

for (int turno = 1; turno <= 8; turno++) {
    // 1. Calcular código de trámite
    int codigo = (turno * 3) % 4 + 1;

    // 2. Evaluar trámite con switch
    // ...
}

3. Manejo de Saltos y Bucles Internos

  • continue: cuando codigo == 4, incrementá el contador de cancelados, mostrá el aviso y llamá a continue. Esto salta inmediatamente el resto del cuerpo del bucle y pasa al siguiente turno.
  • while: para trámites de tipo 2 ($2500), inicializá una variable local saldoPendiente = 2500; y en un while (saldoPendiente > 0) descontá pagos de $1000 (o el remanente si es menor) hasta llegar a 0.
  • do-while: ejecutá una verificación de firma digital simulada. La condición se evalúa al final, asegurando que se realice al menos una comprobación.
  • break: tras atender un turno, evaluá si tiempoTotal >= limiteMinutos. Si es así, avisá por consola y salí del bucle principal con break.