Control de Flujo
## Objetivos de Aprendizaje
- Dominar las sentencias if, else if, else
- Comprender las sentencias switch
- Aprender los ciclos for, while, do-while
- Usar break y continue
## Sentencia if
### if Básico
```java
int age = 18;
if (age >= 18) {
System.out.println("Adult");
}
```
### if-else
```java
int age = 15;
if (age >= 18) {
System.out.println("Adult");
} else {
System.out.println("Minor");
}
```
### if-else if-else
```java
int score = 85;
char grade;
if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
} else if (score >= 70) {
grade = 'C';
} else if (score >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade: " + grade);
```
## Operador Ternario
```java
int age = 20;
String status = (age >= 18) ? "adult" : "minor";
```
## Sentencia switch
### switch Básico
```java
int day = 3;
String dayName;
switch (day) {
case 1:
dayName = "Monday";
break;
case 2:
dayName = "Tuesday";
break;
case 3:
dayName = "Wednesday";
break;
case 4:
dayName = "Thursday";
break;
case 5:
dayName = "Friday";
break;
case 6:
dayName = "Saturday";
break;
case 7:
dayName = "Sunday";
break;
default:
dayName = "Invalid";
}
System.out.println(dayName);
```
### Switch con Flecha (Java 14+)
```java
String dayName = switch (day) {
case 1 -> "Monday";
case 2 -> "Tuesday";
case 3 -> "Wednesday";
case 4 -> "Thursday";
case 5 -> "Friday";
case 6 -> "Saturday";
case 7 -> "Sunday";
default -> "Invalid";
};
```
### Múltiples Casos
```java
switch (month) {
case 1, 3, 5, 7, 8, 10, 12:
days = 31;
break;
case 4, 6, 9, 11:
days = 30;
break;
case 2:
days = 28;
break;
}
```
## Ciclo for
### for Básico
```java
for (int i = 0; i < 5; i++) {
System.out.println(i); // 0, 1, 2, 3, 4
}
```
### for Mejorado (for-each)
```java
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
System.out.println(num);
}
```
### Con Múltiples Variables
```java
for (int i = 0, j = 10; i < 5; i++, j--) {
System.out.println(i + " - " + j);
}
```
## Ciclo while
### while Básico
```java
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
```
### while con Condición Primero
```java
Scanner scanner = new Scanner(System.in);
String input;
while (scanner.hasNext()) {
input = scanner.next();
if (input.equals("quit")) {
break;
}
System.out.println("You entered: " + input);
}
```
## Ciclo do-while
### Ejecuta al Menos Una Vez
```java
int i = 0;
do {
System.out.println(i);
i++;
} while (i < 5);
```
### Ejemplo de Menú
```java
Scanner scanner = new Scanner(System.in);
int choice;
do {
System.out.println("1. New Game");
System.out.println("2. Load Game");
System.out.println("3. Quit");
System.out.print("Choose: ");
choice = scanner.nextInt();
} while (choice < 1 || choice > 3);
```
## break y continue
### break - Salir del Ciclo
```java
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // Salir cuando i es 5
}
System.out.println(i); // 0, 1, 2, 3, 4
}
```
### continue - Saltar Iteración
```java
for (int i = 0; i < 5; i++) {
if (i == 2) {
continue; // Saltar cuando i es 2
}
System.out.println(i); // 0, 1, 3, 4
}
```
## Ciclos Anidados
```java
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.printf("(%d,%d) ", i, j);
}
System.out.println();
}
// Salida:
// (0,0) (0,1) (0,2)
// (1,0) (1,1) (1,2)
// (2,0) (2,1) (2,2)
```
## Etiquetas
### Ciclos con Nombre
```java
outer:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (j == 2) {
break outer; // Rompe el ciclo externo
}
System.out.println(i + "," + j);
}
}
```
## Patrones Comunes
### Sumar 1 a N
```java
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
```
### Buscar en Arreglo
```java
int[] numbers = {3, 7, 2, 9, 4};
int target = 9;
for (int num : numbers) {
if (num == target) {
System.out.println("Found!");
break;
}
}
```
### Contar Coincidencias
```java
int[] numbers = {1, 2, 3, 2, 4, 2, 5};
int target = 2;
int count = 0;
for (int num : numbers) {
if (num == target) {
count++;
}
}
System.out.println("Count: " + count);
```
## Resumen
- if/else if/else para lógica condicional
- switch para múltiples valores discretos
- ciclo for para iteraciones conocidas
- ciclo while para iteración basada en condición
- do-while para iteración de al menos una vez
- break sale del ciclo; continue salta la iteración
- Usa etiquetas para control de ciclos anidados
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →