← C EspañolChapter 04 of 13

Control de Flujo

## Objetivos de Aprendizaje - Dominar las declaraciones if, else if, else - Comprender las declaraciones switch - Aprender los bucles for, while, do-while - Usar break y continue ## Declaración if ### if Básico ```c int age = 18; if (age >= 18) { printf("Adult\n"); } ``` ### if-else ```c int age = 15; if (age >= 18) { printf("Adult\n"); } else { printf("Minor\n"); } ``` ### if-else if-else ```c 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'; } printf("Grade: %c\n", grade); ``` ## Operador Ternario ```c int age = 20; int status = (age >= 18) ? 1 : 0; ``` ## Declaración switch ### switch Básico ```c int day = 3; char *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"; } printf("%s\n", dayName); ``` ### Caída a través (Fall-through) ```c switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: days = 28; break; } ``` ## Bucle for ### for Básico ```c for (int i = 0; i < 5; i++) { printf("%d\n", i); // 0, 1, 2, 3, 4 } ``` ### Componentes del Bucle ```c // for (inicio; condición; incremento) for (int i = 0; i < 5; i++) { // cuerpo } ``` Es equivalente a: ```c int i = 0; // inicio while (i < 5) { // condición // cuerpo i++; // incremento } ``` ### Bucle Infinito ```c for (;;) { // Se ejecuta para siempre } while (1) { // También se ejecuta para siempre } ``` ### Operador Coma en for ```c for (int i = 0, j = 10; i < 5; i++, j--) { printf("%d - %d\n", i, j); } ``` ## Bucle while ### while Básico ```c int i = 0; while (i < 5) { printf("%d\n", i); i++; } ``` ### while con Condición Primero ```c #include int main(void) { char input[100]; while (scanf("%99s", input) == 1) { if (strcmp(input, "quit") == 0) { break; } printf("You entered: %s\n", input); } return 0; } ``` ## Bucle do-while ### Se Ejecuta al Menos Una Vez ```c int i = 0; do { printf("%d\n", i); i++; } while (i < 5); ``` ### Ejemplo de Menú ```c #include int main(void) { int choice; do { printf("1. New Game\n"); printf("2. Load Game\n"); printf("3. Quit\n"); printf("Choose: "); scanf("%d", &choice); } while (choice < 1 || choice > 3); return 0; } ``` ## break y continue ### break - Salir del Bucle ```c for (int i = 0; i < 10; i++) { if (i == 5) { break; // Sale cuando i es 5 } printf("%d\n", i); // 0, 1, 2, 3, 4 } ``` ### continue - Saltar Iteración ```c for (int i = 0; i < 5; i++) { if (i == 2) { continue; // Salta cuando i es 2 } printf("%d\n", i); // 0, 1, 3, 4 } ``` ## Bucles Anidados ```c for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("(%d,%d) ", i, j); } printf("\n"); } ``` Salida: ```text (0,0) (0,1) (0,2) (1,0) (1,1) (1,2) (2,0) (2,1) (2,2) ``` ### break desde Bucle Anidado ```c for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (j == 2) { break; // Solo sale del bucle interno } printf("%d,%d\n", i, j); } } ``` ## Declaración goto ### goto Básico ```c for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (j == 2) { goto done; // Salta a la etiqueta } } } done: printf("Found it!\n"); ``` ### Evitar goto **Nota:** goto dificulta seguir el código. Usa break/continue con indicadores en su lugar. ## Patrones Comunes ### Sumar 1 a N ```c int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } ``` ### Buscar en Arreglo ```c int numbers[] = {3, 7, 2, 9, 4}; int target = 9; int found = 0; for (int i = 0; i < 5; i++) { if (numbers[i] == target) { found = 1; break; } } ``` ### Contar Coincidencias ```c int numbers[] = {1, 2, 3, 2, 4, 2, 5}; int target = 2; int count = 0; for (int i = 0; i < 7; i++) { if (numbers[i] == target) { count++; } } ``` ### FizzBuzz ```c for (int i = 1; i <= 20; i++) { if (i % 15 == 0) { printf("FizzBuzz\n"); } else if (i % 3 == 0) { printf("Fizz\n"); } else if (i % 5 == 0) { printf("Buzz\n"); } else { printf("%d\n", i); } } ``` ## Resumen - if/else if/else para lógica condicional - switch para múltiples valores discretos - for para iteraciones conocidas - while para iteración basada en condición - do-while para iteración de al menos una vez - break sale del bucle; continue salta la iteración - Evitar goto (dificulta seguir el código)

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →