Estructuras de Control: Condicionales y Bucles

Estructuras Condicionales

Sentencia if

La sintaxis básica de la sentencia if es similar a otros lenguajes de programación:

if (expresión booleana) {
    // Código que se ejecuta si la expresión es verdadera
}

Para manejar el caso cuando la expresión booleana es falsa, se utiliza la cláusula else:

if (expresión booleana) {
    // Código que se ejecuta si la expresión es verdadera
} else {
    // Código que se ejecuta si la expresión es falsa
}

Cuando necesitas evaluar múltiples condiciones de forma secuencial, puedes usar else if:

if (expresión booleana 1) {
    // Código que se ejecuta si la expresión 1 es verdadera
} else if (expresión booleana 2) {
    // Código que se ejecuta si la expresión 2 es verdadera
} else if (expresión booleana 3) {
    // Código que se ejecuta si la expresión 3 es verdadera
} else {
    // Código que se ejecuta si todas las expresiones son falsas
}

Sentencia switch

La sentencia switch permite ejecutar diferentes bloques de código según el valor de una variable:

switch(expresión){
    case valor1 :
       // Código para este caso
       break; // Opcional
    case valor2 :
       // Código para este caso
       break; // Opcional
    // Puedes tener tantos casos como necesites
    default : // Opcional
       // Código por defecto
}

  • El tipo de dato en la expresión del switch puede ser: byte, short, int, char o String (a partir de Java 7). No puede ser long, float o double.
  • Cuando el valor de la expresión coincide con un caso, se ejecuta el código correspondiente hasta encontrar un break.
  • Si no se incluye un break, la ejecución continúa con el siguiente caso (esto se conoce como "fall-through").
  • La cláusula default se ejecuta cuando ninguno de los casos coincide con el valor de la expresión.

Ejemplo de comportamiento de fall-through:

public class DemoSwitch {
    public static void main(String[] args) {
        int valor = 1;
        switch(valor){
            case 0:
                System.out.println("Cero");
            case 1:
                System.out.println("Uno");
            case 2:
                System.out.println("Dos");
            default:
                System.out.println("Por defecto");
        }
    }
}

El resultado de este código sería:

Uno
Dos
Por defecto

Estructuras Iterativas (Bucles)

Java proporciona tres tipos principales de bucles:

  • Bucle for
  • Bucle while
  • Bucle do-while

Bucle for

La sintaxis del bucle for es:

for(inicialización; condición; actualización) {
    // Código del bucle
}

Bucle while

La sintaxis del bucle while es:

while( condición ) {
    // Código del bucle
}

Bucle do-while

El bucle do-while tiene la siguiente sintaxis:

do {
    // Código del bucle
} while( condición );

La principal diferencia con el bucle while es que do-while se ejecuta al menos una vez, ya que la condición se evalúa después de ejecutar el bloque de código.

Aplicaciones comunes del bucle do-while:

  • Menús interactivos de usuario
import java.util.Scanner;

public class SistemaMenu {
    public static void main(String[] args) {
        Scanner lector = new Scanner(System.in);
        double saldo = 500.0;
        double montoTransaccion = 50.0;
        int opcion;
        
        do {
            // Mostrar el menú
            System.out.println("\n=== Menú Principal ===");
            System.out.println("1. Consultar saldo");
            System.out.println("2. Realizar depósito");
            System.out.println("3. Realizar retiro");
            System.out.println("0. Salir");
            System.out.print("Seleccione una opción: ");
            
            // Obtener la opción del usuario
            opcion = lector.nextInt();
            
            // Procesar la opción seleccionada
            switch (opcion) {
                case 1:
                    System.out.println("Su saldo actual es: " + saldo + " euros");
                    break;
                case 2:
                    saldo += montoTransaccion;
                    System.out.println("Depósito realizado. Nuevo saldo: " + saldo + " euros");
                    break;
                case 3:
                    if (saldo >= montoTransaccion) {
                        saldo -= montoTransaccion;
                        System.out.println("Retiro realizado. Nuevo saldo: " + saldo + " euros");
                    } else {
                        System.out.println("Saldo insuficiente para realizar el retiro");
                    }
                    break;
                case 0:
                    System.out.println("Gracias por usar nuestro sistema. ¡Hasta pronto!");
                    break;
                default:
                    System.out.println("Opción no válida. Por favor, inténtelo de nuevo.");
            }
        } while (opcion != 0);
        
        lector.close();
    }
}

Con un bucle while, necesitarías duplicar el código del menú (una vez antes del bucle y otra dentro), lo que haría el código redundante.

Otros usos comodos del bucle do-while:

  • Validación de entrada de datos
  • Bucle principla en juegos (como juegos de adivinanzas)
  • ...

Bucle for mejorado (enhanced for)

El bucle for mejorado (también conocido como for-each) tiene una sintaxis más simpilficada para recorrer colecciones:

for(tipo elemento : colección){
    // Código que utiliza el elemento
}

Diferencias entre break y continue

  • break termina inmediatamente la ejecución del bucle actual. Si hay bucles anidados, solo se rompe el bucle más interno.
  • continue salta a la siguiente iteración del bucle actual, omitiendo el resto del código en la iteración actual.

Ejemplo con break:

public class EjemploBreak {
    public static void main(String[] args) {
        int[] numeros = {15, 25, 35, 45, 55};
        
        for(int num : numeros) {
            // Si encontramos el número 35, rompemos el bucle
            if(num == 35) {
                break;
            }
            System.out.println(num);
        }
    }
}

Salida:

15
25

Ejemplo con continue:

public class EjemploContinue {
    public static void main(String[] args) {
        int[] numeros = {15, 25, 35, 45, 55};
        
        for(int num : numeros) {
            // Si encontramos el número 35, saltamos a la siguiente iteración
            if(num == 35) {
                continue;
            }
            System.out.println(num);
        }
    }
}

Salida:

15
25
45
55

Etiquetas: java Condicionales bucles Control de flujo programación

Publicado el 7-31 23:34