Los Bucles en Programación

Los Bucles en Programación

Concepto: Repetición de un bloque de código lógico según una condición específica

I. Bucle while

Sintaxis: while(expresión booleana){

//código lógico (operación del bucle)

}

Flujo de ejecución:

  • Primero se evalúa la expresión booleaan, si el resultado es true, se ejecuta el código lógico
  • Después de cada ejecución, se vuelve a evaluar la expresión, si sigue siendo true, se ejecuta nuevamente
  • Solo cuando el resultado de la expresión booleana sea false, se sale de la estructura del bucle y se continúa con el código siguiente

Ejemplo uno: Imprimir "HolaMundo" 100 veces

public class PruebaWhile{
	
	public static void main(String[] args){
		
		//Imprimir "HolaMundo" 100 veces
		
		int contador = 1;//1. Parte inicial: variable para la evaluación
		
		while (contador <= 100){//2. Condición del bucle: determina si se continúa
			System.out.println("HolaMundo");//3. Operación del bucle: lógica que se ejecuta
			contador++;//4. Parte iterativa: incremento que controla la condición
		}
		
		System.out.println("Programa finalizado...");
	}
}


Ejemplo dos: Calcular la suma de todos los números del 1 al 100

public class PruebaSuma{
	
	public static void main(String[] args){
		/*
			Calcular la suma de todos los números del 1 al 100
			1. Problema de 100 iteraciones
			2. Suma durante el proceso del bucle
		*/
		int numero = 1;//parte inicial
		
		int total = 0;
		
		while(numero <= 100){//condición del bucle
			
			total = total + numero;//operación del bucle
			
			numero++;//parte iterativa
		}
		
		System.out.println("La suma total es: " + total);
		
		System.out.println("Programa finalizado...");
		
	}
}


Ejemplo tres: Calcular la suma de todos los números pares del 1 al 100

public class PruebaSumaPares{
	
	public static void main(String[] args){
		
		/*
			Calcular la suma de todos los números pares del 1 al 100
			
			Enfoque 1: Obtener todos los números pares y sumarlos
			
			Enfoque 2: Recorrer cada número del 1 al 100, verificar si es par y sumar si cumple
		*/
		
		int actual = 1;
		
		int acumulador = 0;
		
		while(actual <= 100){
			
			if(actual % 2 == 0){//verificar si es par
			
				acumulador = acumulador + actual;//suma
			}
			
			actual++;
		}
		System.out.println("La suma de pares es: " + acumulador);
	}
}


Nota: Un bucle consta de cuatro partes

Características del while:

  • Si la primera evaluación no se cumple, nunca se ejecuta (número de ejecuciones: 0~n)
  • Tiene una condición de entrada desde el principio, evalúa primero y luego ejecuta, adecuado para casos con número de iteraciones definido

II. Bucle do-while

Sintaxis: do{

código lógico (operación del bucle)

}while(expresión booleana);

Flujo de ejecución:

  • Primero se ejecuta la operación del bucle, luego se evalúa la expresión booleana
  • Si el resultado es true, se vuelve a ejecutar la operación del bucle
  • Si el resultado es false, se sale de la estructura del bucle y se continúa con el código siguiente

Ejemplo cuatro: Imprimir "HolaMundo" 100 veces

public class PruebaDoWhile{
   
   public static void main(String[] args){
   	
   	//Imprimir "HolaMundo" 100 veces
   	
   	int iteracion = 1;
   	
   	do{
   		System.out.println("Imprimiendo HolaMundo por la " + iteracion + " vez");
   		iteracion++;
   	}while(iteracion <= 100);
   	
   	System.out.println("Programa finalizado...");
   }
}


Ejemplo cinco: Profesor corrigiendo trabajos de estudiantes

import java.util.Scanner;

public class PruebaDoWhile2{
	
	public static void main(String[] args){
		
		//Operación del bucle: estudiantes copian código, profesor ingresa comentarios
		Scanner entrada = new Scanner(System.in);
		
		char respuesta;//registra el comentario del profesor
		do{
			System.out.println("Copie el código del trabajo........");
			
			System.out.println("Ingrese el comentario del profesor:");
			respuesta = entrada.next().charAt(0);//ingresar 's' significa aprobado, salir del bucle; de lo contrario continuar
		}while(respuesta != 's');
		
		System.out.println("El trabajo ha sido completado");
		
	}
}


Características del do-while:

  • No tiene condición de entrada al principio, ejecuta primero y luego evalúa
  • Si la evaluación se cumple, repite; si no, se ejecuta al menos una vez (número de ejecuciones: 1~n)
  • Caso de uso: adecuado para situaciones donde el número de iteraciones no está definido

III. Bucle for

Sintaxis:

for(parte inicial; condición del bucle; parte iterativa){

//operación del bucle

}

Flujo de ejecución:

  • Primero se ejecuta la parte inicial (solo una vez)
  • Se evalúa la expresión booleana, si el resultado es true, se ejecuta el código lógico
  • Después de cada ejecución, se realiza la parte iterativa, se vuelve a evaluar, y si sigue siendo true, se ejecuta nuevamente el código lógico
  • Solo cuando el resultado de la expresión booleana sea false, se sale de la estructura del bucle y se continúa con el código siguiente

Ejemplo seis: Imprimir "HolaMundo" 100 veces

public class PruebaFor{
	
	public static void main(String[] args){
		
		//Imprimir "HolaMundo" 100 veces
		//1. parte inicial (solo una vez) 2. condición del bucle 3. operación del bucle 4. parte iterativa
		for(int posicion = 1; posicion <= 100; posicion++){
			
			System.out.println("HolaMundo " + posicion);
		}
		System.out.println("Programa finalizado...");
	}
}
//El bucle for es igual al while, si la primera evaluación no se cumple, nunca se ejecuta. (número de ejecuciones: 0~n)


Ejemplo siete: Calcular el promedio de cinco estudiantes

import java.util.Scanner;

public class PruebaFor2{
	
	public static void main(String[] args){
		
		Scanner teclado = new Scanner(System.in);
		
		//Calcular el promedio de 5 estudiantes
		
		double acumulador = 0.0;//suma total
		
		for(int estudiante = 1; estudiante <= 5; estudiante++){
			//1. Control de entrada de calificaciones por consola
			System.out.println("Ingrese la calificación del estudiante " + estudiante + ":");
			
			double nota = teclado.nextDouble();
			//2. Acumulación total
			acumulador = acumulador + nota;
			
		}
		
		double promedio = acumulador / 5;
		System.out.println("El promedio es: " + promedio);
	}

}


Características: Tiene una condición de entrada desde el principio, evalúa primero y luego ejecuta, adecuado para casos con número de iteraciones definido

Sentencias de control de flujo:

  • break: Finaliza todo el bucle
  • Continue: Durante la ejecución del bucle, si se encuentra continue, se saltea la iteración actual y continúa con la siguiente

Ejemplo ocho: break

import java.util.Scanner;

public class PruebaBreak{
	
	public static void main(String[] args){
		
		Scanner teclado = new Scanner(System.in);
		//Entrada de calificaciones de 5 estudiantes, si alguna calificación no está en el rango (0-100), se considera inválida y se sale del bucle
		double suma = 0.0;
		
		boolean valido = true;//indica validez
		for(int posicion = 1; posicion <= 5; posicion++){
			
			System.out.println("Ingrese la calificación del estudiante " + posicion + ":");
			
			double calificacion = teclado.nextDouble();
			
			if(calificacion < 0 || calificacion > 100){
				valido = false;//dato inválido
				break;
			}
			
			suma = suma + calificacion;
			
		}
		
		if(valido == true){//según la marca válida se decide si calcular el promedio
			
			double promedio = suma / 5;
			
			System.out.println("El promedio es: " + promedio);
		}else{
			
			System.out.println("Dato inválido, ejecute nuevamente el programa para calcular el promedio");
		}
		
		
		
	}
}


Ejemplo nueve: continue

import java.util.Scanner;

public class PruebaContinue{
	
	public static void main(String[] args){
		
		Scanner teclado = new Scanner(System.in);
		//Entrada de calificaciones de 5 estudiantes, si alguna calificación no está en el rango (0-100), se considera inválida, se continúa ingresando hasta que sea válida, luego se calcula el promedio
		double suma = 0.0;
		
		for(int contador = 1; contador <= 5; ){
			
			System.out.println("Ingrese la calificación del estudiante " + contador + ":");
			
			double nota = teclado.nextDouble();
			
			if(nota < 0 || nota > 100){
				
				continue;
			}
			
			suma = suma + nota;
			
			contador++;
		}
			
		double promedio = suma / 5;
			
		System.out.println("El promedio es: " + promedio);
		
		
	}
}


IV. Bucles anidados

Concepto: Dentro de una estructura de bucle completa, se anida otra estructura de bucle completa

Ejemplo diez: Imprimir tres filas de cinco asteriscos *

public class PruebaForAnidado{
	/*
			
			*****
			*****
			*****
		*/
	public static void main(String[] args){
		for(int fila = 1; fila <=3; fila++){//repite el código interno 3 veces
			for(int columna = 1; columna <=5; columna++){//imprime cinco estrellas en una fila
			
			System.out.print("*");
			}
			System.out.println();
			
		}
		
	}
}


Ejemplo once: Calcular el promedio de cinco estudiantes en tres clases

import java.util.Scanner;

public class PruebaForAnidado2{
	
	public static void main(String[] args){
		
		Scanner teclado = new Scanner(System.in);
		
		for(int salon = 1; salon <= 3; salon++){
			
			System.out.println("------Clase " + salon + "------");
			
			double suma = 0.0;
			
			for(int estudiante = 1; estudiante <=5; estudiante++){
			
				System.out.println("Ingrese la calificación del estudiante " + estudiante + ":");
				
				double calificacion = teclado.nextDouble();
			
				suma += calificacion;
			}
			
			double promedio = suma / 5;
			
			System.out.println("El promedio de los cinco estudiantes de la clase " + salon + " es: " + promedio);
		}
		
	}
}


Ejemplo doce: Imprimir un triángulo rectángulo con *

public class PruebaForAnidado3{
	
	public static void main(String[] args){
		
		/*
			Imprimir triángulo rectángulo
			
			*
			**
			***
			****
			*****
		*/
		for(int fila =1; fila <= 5; fila++){//capa externa controla filas
			for(int columna = 1; columna <= fila; columna++){//capa interna controla columnas
				
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println("Programa finalizado");
	}
}


Ejemplo trece: Tabla de multiplicar del 9x9

public class PruebaForAnidado4{
	
	public static void main(String[] args){
		
		for(int multiplicador = 1; multiplicador <= 9; multiplicador++){
			
			for(int multiplicando = 1; multiplicando <= multiplicador; multiplicando++){
				
				System.out.print(multiplicando + "x" + multiplicador + " = " + (multiplicando*multipador) + " ");
			}
			System.out.println();
		}
		System.out.println("Programa finalizado");
	}
}


Ejemplo catorce: Imprimir un triángulo isósceles

public class PruebaForAnidado5{
	
	public static void main(String:: args){
		
	/*
		Imprimir triángulo isósceles
			
		
	*/
	  for (int nivel = 1; nivel <= 5; nivel++){
            for (int espacio = 5; espacio >=nivel; espacio--) {
                System.out.print(" ");
            }
            for (int asterisco = 1; asterisco <= nivel; asterisco++) {
                System.out.print("*");
            }
            for (int asterisco = 1; asterisco < nivel; asterisco++) {
                System.out.print("*");
            }
            System.out.println();
	  }
	  System.out.println("Programa finalizado");
	}
}


Etiquetas: bucles while do-while for java

Publicado el 6-5 20:15