Flujo de control en Java: Condicionales y bucles

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, te sumergirás en el mundo de las estructuras de control de flujo en Java. Estas son herramientas esenciales que permiten a tus programas tomar decisiones y repetir acciones. Cubriremos tres conceptos principales:

  1. Sentencias if-else para la toma de decisiones
  2. Bucles for para repetir acciones un número conocido de veces
  3. Bucles while para repetir acciones cuando no se sabe cuántas veces se necesitará repetir

No te preocupes si estos términos suenan desconocidos; explicaremos cada uno en detalle. Al final de este laboratorio, podrás escribir programas en Java que puedan tomar decisiones y repetir acciones, abriendo un mundo nuevo de posibilidades en tu viaje de programación.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/variables("Variables") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/while_loop("While Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") subgraph Lab Skills java/variables -.-> lab-413751{{"Flujo de control en Java: Condicionales y bucles"}} java/if_else -.-> lab-413751{{"Flujo de control en Java: Condicionales y bucles"}} java/for_loop -.-> lab-413751{{"Flujo de control en Java: Condicionales y bucles"}} java/while_loop -.-> lab-413751{{"Flujo de control en Java: Condicionales y bucles"}} java/output -.-> lab-413751{{"Flujo de control en Java: Condicionales y bucles"}} java/user_input -.-> lab-413751{{"Flujo de control en Java: Condicionales y bucles"}} end

Comprendiendo las sentencias if-else

Imagina que estás creando un programa que da consejos sobre el clima. Quieres que sugiera diferentes cosas según la temperatura. ¡Aquí es donde las sentencias if-else son útiles!

  1. Abre el archivo WeatherAdvisor.java en el WebIDE. Verás este código:

    public class WeatherAdvisor {
        public static void main(String[] args) {
            int temperature = 28; // Temperature in Celsius
    
            System.out.println("The temperature is " + temperature + "°C.");
    
            // TODO: Add if-else statements here to provide weather advice
        }
    }

    Aquí está un desglose del código:

    1. public class WeatherAdvisor:

      • Esta línea declara una clase pública llamada WeatherAdvisor.
      • En Java, cada programa debe tener al menos una clase, y el nombre de la clase debe coincidir con el nombre del archivo (en este caso, WeatherAdvisor.java).
    2. public static void main(String[] args):

      • Este es el método principal, que es el punto de entrada de cualquier programa Java.
      • public: Este método se puede acceder desde fuera de la clase.
      • static: Este método pertenece a la clase misma, no a ninguna instancia específica de la clase.
      • void: Este método no devuelve ningún valor.
      • main: Este es el nombre del método. Java busca un método llamado "main" para comenzar a ejecutar el programa.
      • (String[] args): Esto permite que el método acepte argumentos de línea de comandos (aunque no los estamos usando en este ejemplo).
    3. int temperature = 28;:

      • Esta línea declara una variable entera llamada temperature y la inicializa con el valor 28.
      • int es el tipo de dato para números enteros en Java.
      • El comentario // Temperature in Celsius explica lo que representa este valor.
    4. System.out.println("The temperature is " + temperature + "°C.");:

      • Esta línea imprime un mensaje en la consola.
      • System.out.println() es un método que muestra texto y pasa a la siguiente línea.
      • El operador + se utiliza aquí para la concatenación de cadenas, combinando el texto con el valor de la variable temperature.
      • El °C al final agrega el símbolo de grados Celsius a la salida.

    Esta estructura básica configura un programa que define una temperatura y la imprime. Proporciona una base para agregar lógica más compleja, como las sentencias if-else que agregaremos más adelante para dar consejos sobre el clima según el valor de la temperatura.

  2. Reemplaza el comentario TODO con el siguiente código:

    if (temperature > 30) {
        System.out.println("It's a hot day. Remember to stay hydrated!");
    } else if (temperature > 20) {
        System.out.println("It's a nice warm day. Enjoy the weather!");
    } else if (temperature > 10) {
        System.out.println("It's a bit cool. You might need a light jacket.");
    } else {
        System.out.println("It's cold. Wear warm clothes!");
    }
If else code example

Desglosemos esto:

  • La sentencia if comprueba si la temperatura es superior a 30°C.
  • Si no lo es, pasa al primer else if y comprueba si es superior a 20°C.
  • Esto continúa hasta que encuentra una condición que sea verdadera, o llega al else al final.
  • Solo uno de estos bloques se ejecutará; tan pronto como una condición sea verdadera, Java omitirá el resto.
  1. Guarda el archivo. En la mayoría de los IDE, incluyendo el WebIDE, puedes guardar presionando Ctrl+S (o Cmd+S en Mac).

  2. Ahora compilemos el programa. En la terminal en la parte inferior de tu WebIDE, escribe:

    javac ~/project/WeatherAdvisor.java

    Este comando le dice a Java que compile tu código. Si no ves salida alguna, ¡eso es bueno! Significa que no hubo errores.

  3. Para ejecutar el programa, escribe:

    java -cp ~/project WeatherAdvisor

    La parte -cp ~/project le dice a Java dónde encontrar tu código compilado.

  4. Deberías ver esta salida:

    The temperature is 28°C.
    It's a nice warm day. Enjoy the weather!

    Esto coincide con nuestro código porque 28°C es superior a 20°C pero no superior a 30°C.

  5. ¡Experimentemos! Cambia el valor de temperature en el código a 35, luego guarda, compila y ejecuta de nuevo. Deberías ver:

    The temperature is 35°C.
    It's a hot day. Remember to stay hydrated!
  6. Intenta cambiar la temperatura a 15 y 5, compilar y ejecutar cada vez. ¡Observa cómo cambia la salida!

¡Felicidades! Acabas de escribir un programa que toma decisiones. Este es un concepto fundamental en la programación que usarás todo el tiempo.

Trabajando con bucles for

Ahora, aprendamos sobre los bucles for. Son excelentes cuando quieres repetir algo un número específico de veces, como crear una tabla de multiplicar.

  1. Abre el archivo MultiplicationTable.java en el WebIDE. Verás:

    public class MultiplicationTable {
        public static void main(String[] args) {
            int number = 5;
            System.out.println("Multiplication table for " + number + ":");
    
            // TODO: Add a for loop here to print the multiplication table
        }
    }
  2. Reemplaza el comentario TODO con este bucle for:

    for (int i = 1; i <= 10; i++) {
        int result = number * i;
        System.out.println(number + " x " + i + " = " + result);
    }

    Desglosemos esto:

    • for (int i = 1; i <= 10; i++) es la sentencia del bucle for:
      • int i = 1 crea una variable i y la establece en 1. Esto sucede una vez al principio.
      • i <= 10 es la condición. El bucle continúa mientras esta sea verdadera.
      • i++ incrementa i en 1 cada vez que el bucle termina.
    • Dentro del bucle, multiplicamos number por i e imprimimos el resultado.
    • Esto se repetirá 10 veces, con i variando de 1 a 10.
  3. Guarda el archivo.

  4. Compila el programa:

    javac ~/project/MultiplicationTable.java
  5. Ejecuta el programa:

    java -cp ~/project MultiplicationTable
  6. Deberías ver la tabla de multiplicar del 5:

    Multiplication table for 5:
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    5 x 10 = 50

    ¿Ves cómo imprimió la tabla del 1 al 10? ¡Ese es nuestro bucle for en acción!

  7. ¡Experimentemos! Cambia la variable number a 7, luego guarda, compila y ejecuta de nuevo. Deberías ver la tabla de multiplicar del 7.

  8. ¿Quieres ver más? Intenta cambiar i <= 10 a i <= 15 en el bucle for. Esto hará que la tabla llegue hasta 15 en lugar de 10.

Los bucles for son increíblemente útiles cuando sabes exactamente cuántas veces quieres repetir algo. Los usarás mucho en tu viaje de programación.

Explorando los bucles while

Los bucles while son perfectos para situaciones en las que no sabes de antemano cuántas veces necesitas repetir algo. Usemos uno para crear un juego de adivinar el número.

  1. Abre el archivo GuessTheNumber.java en el WebIDE. Verás:

    import java.util.Random;
    import java.util.Scanner;
    
    public class GuessTheNumber {
        public static void main(String[] args) {
            Random random = new Random();
            int numberToGuess = random.nextInt(100) + 1; // Random number between 1 and 100
            Scanner scanner = new Scanner(System.in);
            int guess;
            int attempts = 0;
    
            System.out.println("I'm thinking of a number between 1 and 100. Can you guess it?");
    
            // TODO: Add a while loop here to implement the guessing game
    
            scanner.close();
        }
    }

    Este código configura un número aleatorio que el jugador debe adivinar y un scanner para leer la entrada del jugador.

  2. Reemplaza el comentario TODO con este bucle while:

    while (true) {
        System.out.print("Enter your guess: ");
        guess = scanner.nextInt();
        attempts++;
    
        if (guess < numberToGuess) {
            System.out.println("Too low! Try again.");
        } else if (guess > numberToGuess) {
            System.out.println("Too high! Try again.");
        } else {
            System.out.println("Congratulations! You guessed the number in " + attempts + " attempts.");
            break;
        }
    }

    Desglosemos esto:

    • while (true) crea un bucle infinito. Seguirá ejecutándose hasta que le digamos que se detenga.
    • Dentro del bucle, pedimos una suposición y aumentamos el contador de intentos.
    • Usamos sentencias if-else para comprobar si la suposición es demasiado baja, demasiado alta o correcta.
    • Si la suposición es correcta, imprimimos un mensaje de felicitación y usamos break para salir del bucle.
  3. Guarda el archivo.

  4. Compila el programa:

    javac ~/project/GuessTheNumber.java
  5. Ejecuta el programa:

    java -cp ~/project GuessTheNumber
GuessTheNumber program output
  1. ¡Ahora juega al juego! Sigue ingresando números hasta que adivines correctamente. El programa te dirá si tu suposición es demasiado alta o demasiado baja.

Este bucle while sigue ejecutándose hasta que se adivina el número correcto. No sabemos cuántos intentos llevará, por lo que un bucle while es perfecto aquí.

Combinando estructuras de control

Para nuestro desafío final, combinaremos sentencias if-else, bucles for y bucles while para crear un buscador de números primos.

  1. Abre el archivo PrimeNumberFinder.java en el WebIDE. Verás:

    import java.util.Scanner;
    
    public class PrimeNumberFinder {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int count = 0;
            int number = 2;
    
            System.out.print("How many prime numbers do you want to find? ");
            int maxPrimes = scanner.nextInt();
    
            System.out.println("First " + maxPrimes + " prime numbers:");
    
            // TODO: Implement the prime number finding logic here
    
            scanner.close();
        }
    }
  2. Reemplaza el comentario TODO con este código:

    while (count < maxPrimes) {
        boolean isPrime = true;
    
        for (int i = 2; i <= Math.sqrt(number); i++) {
            if (number % i == 0) {
                isPrime = false;
                break;
            }
        }
    
        if (isPrime) {
            System.out.print(number + " ");
            count++;
        }
    
        number++;
    }

    Esto parece complejo, pero desglosémoslo:

    • Usamos un bucle while para seguir buscando números primos hasta obtener la cantidad deseada.
    • Para cada número, usamos un bucle for para comprobar si es primo.
    • Usamos Math.sqrt(number) como una optimización; solo necesitamos comprobar hasta la raíz cuadrada del número.
    • Si encontramos un divisor, sabemos que el número no es primo, así que establecemos isPrime en false y salimos del bucle interno.
    • Si isPrime sigue siendo true después del bucle for, imprimimos el número y aumentamos nuestro contador.
    • Siempre aumentamos number al final para pasar al siguiente número.
  3. Guarda el archivo.

  4. Compila el programa:

    javac ~/project/PrimeNumberFinder.java
  5. Ejecuta el programa:

    java -cp ~/project PrimeNumberFinder
  6. Cuando se te solicite, ingresa un número (como 10) para encontrar esa cantidad de números primos. Deberías ver una salida como esta:

    How many prime numbers do you want to find? 10
    First 10 prime numbers:
    2 3 5 7 11 13 17 19 23 29

Este programa demuestra lo poderoso que puede ser Java cuando se combinan diferentes estructuras de control. Ahora eres capaz de crear programas que pueden tomar decisiones, repetir acciones y resolver problemas complejos.

Resumen

¡Trabajo fantástico! En este laboratorio, has dominado algunos de los conceptos más importantes en la programación Java:

  1. Sentencias if-else: Las utilizaste para tomar decisiones en tu programa de consejos meteorológicos.
  2. Bucles for: Los empleaste para crear una tabla de multiplicar, repitiendo una acción un número específico de veces.
  3. Bucles while: Los aplicaste en tu juego de adivinanza, repitiendo una acción hasta que se cumpliera una condición.
  4. Combinación de estructuras de control: Las uniste todas para crear un buscador de números primos.

Estas estructuras de flujo de control son los bloques de construcción de programas complejos. Con ellas, puedes crear programas que tomen decisiones, repitan acciones y resuelvan problemas intrincados.

Recuerda, la práctica hace al maestro. Intenta modificar estos programas o crear nuevos utilizando estos conceptos. ¿Puedes hacer un programa que dé diferentes consejos para cada día de la semana? ¿O uno que imprima una tabla de multiplicar para cualquier número hasta 100? ¡Las posibilidades son infinitas!

Sigue programando, sigue aprendiendo y, lo más importante, ¡diviértete! Estás en el camino correcto para convertirse en un experto en Java.