Las estructuras de control sirven para poder manejar el flujo de la ejecución dentro del programa. Para la programación organizada el métodos este tipo de ejecuciones facilita mucho el trabajo y ahorra en gran medida el número de líneas de código a utilizar. Las principales estructuras de control de flujo son:

if else

Estructura que ejecutará el bloque de código que cumpla con la condición a evaluar. La sintaxis de la estructura es la siguiente:

[ezcol_2third]

if (condición){
    //sentencias a ejecutar
}
else{
    //sentencias a ejecutar si no se cumple la condición anterior
}

[/ezcol_2third] [ezcol_1third_end]

[/ezcol_1third_end]

Un ejemplo de este tipo de estructura con una variable sería el siguiente

public class ControlDeFlujo {
    
    int nota;
    public void estructuraIfBasica(){
        nota = 7;
        if (nota <5){
            System.out.println("El examen está suspenso");
        }
        else{
            System.out.println("El examen está aprobado");
        }
    }
    
    public static void main(String[]args){
        ControlDeFlujo control = new ControlDeFlujo();
        control.estructuraIfBasica();
    }  
}

En este caso la salida será «El examen esta aprobado» ya que la primera condición del if no se cumple

Adicionalmente se puede construid un bloque if con condiciones alternativas, donde se evaluará cada condición si la anterior no se ha cumplido. Si ninguna de las anteriores se ha cumplido se ejecutará las sentencias escritas en el bloque del else. Modificando el ejemplo anterior una posibilidad sería

public class ControlDeFlujo {
    
    int nota;
      
    public void estructuraIfAlternativa(){
        nota = 7;
        if (nota <5){
            System.out.println("El examen está suspenso");
        }
        else if (nota == 5){
            System.out.println("El examen se ha aprobado justo");
        }
        else if (nota <9){
            System.out.println("El examen se ha aprobado con buena nota");
        }
        else if (nota ==9){
            System.out.println("El examen se ha aprobado con muy buena nota");
        }
        else{
            System.out.println("El examen está perfecto");
        }
    }
    
    public static void main(String[]args){
        ControlDeFlujo control = new ControlDeFlujo();
        control.estructuraIfAlternativa();
    } 
}

En este caso la salida sería «El examen se ha aprobado con buena nota»  ya que las condiciones anteriores no se cumplen

switch

La sentencias switch evalúa un valor de entrada para ejecutar un caso concreto. De la misma forma que la sentencia anterior, también hay una salida en el caso de no cumplirse ninguna de los valores expuestos. Es recomendable utilizar este tipo de estructura si se deben poner más de dos casos alternativos en la estructura if else. La sintaxis de la estructura es la siguiente:

[ezcol_2third]

switch(evaluar){
   case opcion1:
   break

   case opcion2:
   break

   default:
   break
}

[/ezcol_2third] [ezcol_1third_end][/ezcol_1third_end]
Modificando el ejemplo anterior una posibilidad sería

public class ControlDeFlujo {

    int nota;

    public void estructuraSwitch() {
        nota = 8;
        switch (nota) {
            case 1:
                System.out.println("La note obtenida es un 1");
                break;
            case 5:
                System.out.println("La nota obtenida es un 5");
                break;
            case 10:
                System.out.println("La nota obtenida es un 10");
                break;
            default:
                System.out.println("La nota obtenida no está contemplada en este bloque");
                break;
        }
    }

    public static void main(String[] args) {
        ControlDeFlujo control = new ControlDeFlujo();
        control.estructuraSwitch();
    }
}

En este caso la salida sería «La nota obtenida no está contemplada en el bloque» ya que ninguno de los case anteriores se cumple

Dentro de la variable a evaluar se pueden poner tanto números como caracteres, teniendo en cuenta que cada uno de los case deberá reflejar la posibilidad a cumplir

for

Una sentencia for es utilizada cuando se necesita recorrer un conjunto de datos determinado, como por ejemplo un array de datos. Para ello lo que se necesita indicar el inicio, el final y el incremente utilizado cada vez que se realice un recorrido. La sintaxis de esta estructura es:

[ezcol_2third]

//inicio =0
//final <10
//incremento 1
for (int i =0;i<10;i++){
    //Ejecucaiones a realiar
    //Como útlima acción se incrementa en 1 la variable i que realiza el recorrido del bucle
}

[/ezcol_2third] [ezcol_1third_end][/ezcol_1third_end]
Un ejemplo de este tipo de estructura sería el siguiente

public class ControlDeFlujo {
    
    public void estructuraFor(){
        for (int i =1;i<6;i++){
            System.out.println("Recorrido número = " + i);
            System.out.println("La variable i actualizará su valor...");
        }        
    }

    public static void main(String[] args) {
        ControlDeFlujo control = new ControlDeFlujo();
        control.estructuraFor();
    }
}

En este caso la salida sería la siguiente

Recorrido número = 1
La variable i actualizará su valor...
Recorrido número = 2
La variable i actualizará su valor...
Recorrido número = 3
La variable i actualizará su valor...
Recorrido número = 4
La variable i actualizará su valor...
Recorrido número = 5
La variable i actualizará su valor...

Existe una construcción especial del bucle for que recorre de forma completa una colección de datos sin necesidad de indicarle cual es el principio y le final de la misma. Este tipo de estructura recibe el nombre de foreach donde se indica el tipo de elementos que tiene la colección y la colección a recorrer. Automáticamente iterará sobre la colección hasta recorrerla de forma completa

public class ControlDeFlujo {

    public void estructuraForeach(){
        int[] elementos = {1,2,3,4,5,6,7,8,9};
        int suma = 0;
        for (int temp : elementos) {
            System.out.println("Se sumará el elemento "+temp);
            suma = suma + temp;      
        }
        System.out.println("La suma de todos los números es "+suma);
    }

    public static void main(String[] args) {
        ControlDeFlujo control = new ControlDeFlujo();
        control.estructuraForeach();
    }
}

En este caso la salida sería:

Se sumará el elemento 1
Se sumará el elemento 2
Se sumará el elemento 3
Se sumará el elemento 4
Se sumará el elemento 5
Se sumará el elemento 6
Se sumará el elemento 7
Se sumará el elemento 8
Se sumará el elemento 9
La suma de todos los números es 45

do while / while

Una sentencia do o do while ejecuta un conjunto de líneas de código siempre y cuando la condición a evaluar se cumpla y devuelva un valor verdadero. Este tipo de estructura se utiliza para evaluar los valores de la colección de datos o una señal que puede actuar como semáforo. Hay que tener cuidado ya que para no convertir este tipo de estructuras en un bucle infinito se debe modificar el valor de la variable que está incluida en la condición para que así en algún momento se pueda obtener un resultado diferente (o bien utilizar la sentencia break / continue). Dependiendo del orden de ejecución – evaluación se utilizará una sentencia y otra:

do

Esta estructura ejecuta una serie de líneas de código para después evaluar si una condición es verdadera. En este tipo de ejecuciones las líneas de código se ejecutan al menos una vez. La sintaxis de esta estructura es:

[ezcol_2third]

do{
    //líneas de código que se quieren ejecutar
    //importante es modificar el valor de la condición 
    //que está dentro del while
}while(condición)
//siempre que la condición se cumpla como verdadera las lineas de código ubicadas dentro del while se volverán a ejecuar

[/ezcol_2third] [ezcol_1third_end] [/ezcol_1third_end]
Un ejemplo de este tipo de estructura sería:

public class ControlDeFlujo {

    int nota;
    
    public void estructuraDo(){
        nota = 10;
        do{
            System.out.println("El examen está aprovbado con un "+nota);
            nota--;
        }while(nota>4);
    }

    public static void main(String[] args) {
        ControlDeFlujo control = new ControlDeFlujo();
        control.estructuraDo();
    }
}

La salida del programa sería:

El examen está aprovbado con un 10
El examen está aprovbado con un 9
El examen está aprovbado con un 8
El examen está aprovbado con un 7
El examen está aprovbado con un 6
El examen está aprovbado con un 5

while

Una estructura while es exactamente lo mismo que la anterior con la diferencia de que antes de ejecutar las líneas de código se evalúa la condición de entrada, donde en el caso de ser verdadera ejecuta las líneas de código. La sintaxis a utilizar es:

[ezcol_2third]

while(condición){
    //líneas de código a ejecutar
    //es importante modificar el valor de la variable que se evalúa en la condición
}

[/ezcol_2third] [ezcol_1third_end][/ezcol_1third_end]
Un ejemplo de esta estructura sería:

public class ControlDeFlujo {

    int nota;

   public void estructuraWhile(){
        nota = 0;
        while(nota<5){
            System.out.println("El examen está suspenso con un "+nota);
            nota++;
        }
    }
    
    public static void main(String[] args) {
        ControlDeFlujo control = new ControlDeFlujo();
        control.estructuraWhile();
    }
}

La salida sería:

El examen está suspenso con un 0
El examen está suspenso con un 1
El examen está suspenso con un 2
El examen está suspenso con un 3
El examen está suspenso con un 4

Los códigos se pueden descargar desde el repositorio