0Pricing
C++ Academy · Lección

Retornos anticipados, break, continue y goto

Refactorice condicionales anidados con retornos anticipados y use break, continue y goto con criterio.

Retornos anticipados, break, continue y goto es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.

La pirámide de la perdición

Las condicionales profundamente anidadas son difíciles de leer. Las salidas anticipadas aplanan considerablemente la estructura.

// Pyramid
int process(int n) {
    if (n >= 0) {
        if (n < 100) {
            if (isValid(n)) {
                return compute(n);
            }
        }
    }
    return -1;
}

Refactorizar con salidas anticipadas

Salga en cuanto falle una precondición. Cada cláusula de protección es una instrucción breve y directa.

int process(int n) {
    if (n < 0)      return -1;
    if (n >= 100)   return -1;
    if (!isValid(n)) return -1;
    return compute(n);
}

Cláusulas de protección

Una cláusula de protección rechaza las entradas no válidas al principio de una función. Así, el flujo principal queda claro.

break en bucles

Salga de un bucle cuando encuentre lo que busca o cuando un error haga inútil continuar.

continue: omitir el resto

Utilice continue para omitir los casos que no correspondan, sin anidar el resto del cuerpo.

for (auto& item : items) {
    if (item.skipped) continue;
    process(item);
}

Salir de bucles anidados

break solo sale de un nivel. Para salir de varios niveles, utilice una variable indicadora, extraiga la lógica a una función o recurra a goto como último recurso.

bool found = false;
for (int i = 0; i < n && !found; ++i) {
    for (int j = 0; j < m; ++j) {
        if (grid[i][j] == target) {
            found = true;
            break;
        }
    }
}

La instrucción goto

C++ hereda goto de C. El código moderno rara vez lo necesita, pero tiene un uso legítimo: salir de bucles anidados o de rutas de error.

for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
        if (error_condition) goto cleanup;
    }
}

cleanup:
free_resources();

Por qué se desaconseja goto

Los saltos arbitrarios dificultan seguir el flujo de control. Primero intente refactorizar o utilizar variables indicadoras. Reserve goto para rutas excepcionales de limpieza en código de bajo nivel.

Refactorizar para eliminar goto

La mayoría de los usos de goto se pueden reemplazar por:

  • Extraer el bloque interno a una función
  • Utilizar una variable indicadora
  • Lanzar y capturar una excepción

return en destructores

No puede salir antes de un destructor con return; al principio: los destructores no devuelven valores. Sin embargo, puede estructurarlos con condiciones anticipadas para omitir trabajo.

El estilo de salida única (antiguo)

El código antiguo a veces utilizaba un único return al final y una variable para el resultado. El C++ moderno favorece varias salidas anticipadas por claridad. RAII gestiona la limpieza automáticamente.

Comprobación rápida

¿Qué técnica de flujo de control reemplaza de forma más clara las cadenas de if-else anidadas en una función?

Resumen

Utilice salidas anticipadas como cláusulas de protección, break y continue con moderación para expresar claramente la intención, y goto solo para casos excepcionales de salida de bucles anidados o de limpieza. El objetivo es lograr un flujo de control legible y plano.

Preguntas frecuentes

¿La lección «Retornos anticipados, break, continue y goto» es gratis?

Sí — el texto completo de «Retornos anticipados, break, continue y goto» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Retornos anticipados, break, continue y goto»?

Refactorice condicionales anidados con retornos anticipados y use break, continue y goto con criterio. Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C++ Academy?

No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Retornos anticipados, break, continue y goto»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C++ Academy?

Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Ramificaciones: if-else, ternario y switch-case
  2. Patrones de bucle: for, while y do-while
  3. Bucle for basado en rangos con contenedores
  4. Retornos anticipados, break, continue y goto
← Volver a C++ Academy