Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


3.5. Forzar la siguiente iteración: continue

Podemos saltar alguna repetición de un bucle con la orden "continue":

/*  ej030501.c                 */
/*  "for" interrumpido con     */
/*  "continue"                 */
/*  Ejemplo del apartado 3.5   */
/*  Curso de C, Nacho Cabanes  */

#include 

int main()
{
    int i;

    for (i=0; i<=10; i++)
    {
        if (i==5) 
            continue;
       
        printf("%d ", i);
    }

    return 0;
}

El resultado de este programa es:

0 1 2 3 4 6 7 8 9 10

En él podemos observar que no aparece el valor 5. Como alternativa más legible, se podría haber utilizado un "if" opuesto al anterior, que escriba los valores que no sean 5, así:

/*  ej030502.c                 */
/*  Alternativa a "continue"   */
/*  Ejemplo del apartado 3.5   */
/*  Curso de C, Nacho Cabanes  */

#include 

int main()
{
    int i;

    for (i=0; i<=10; i++)
    {
        if (i!=5) 
            printf("%d ", i);
    }

    return 0;
}

La orden "continue" hace que un "for" no siempre se comporte igual que un "while". En el siguiente ejemplo, el "for" se comporta de forma correcta, pero en el "while" puede existir un efecto inesperado: el "continue" hace que no se incremente el contador, lo que provoca un bucle sin fin:

/*  ej030503.c                */
/*  "while" distinto de "for" */ 
/*  Ejemplo del apartado 3.5  */
/*  Curso de C, Nacho Cabanes */

#include 

int main()
{
    int i;
    
    /* Contar de 1 a 5 con "for"... con "continue" */ 
    for (i=1; i<=5; i++)
    {
        printf("%d ", i);
        if (i==3)
            continue;
    }
    

    /* Contar de 1 a 5 con "while"... con "continue"
       (bucle sin fin) */
    i=1;
    while (i<=5)
    {
        printf("%d ", i);
        if (i==3)
            continue;
        i++;
    }

    return 0;
}

Ejercicio propuesto 3.5.1: Crea un programa que pida un número al usuario (entre 1 y 20) y muestre los números el 1 al 20, excepto el indicado por el usuario, usando "continue" para evitar ese valor.
Ejercicio propuesto 3.5.2: Crea una versión alternativa del ejercicio anterior, usando un "if" con la condición contraria, en vez de "continue".