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. ×


2.2.12. Equivalencia entre for y while

En la gran mayoría de condiciones, un bucle "for" equivale a un "while" compactado, de modo que casi cualquier "for" se puede escribir de forma alternativa como un "while", como en este ejemplo:

// Ejemplo_02_02_12a.cs
// "for" y "while" equivalente
// Introducción a C#, por Nacho Cabanes

using System;

public class Ejemplo_02_02_12a
{
    public static void Main()
    {
        for (int contador=1; contador<=10; contador++)
        {
            Console.Write("{0} ", contador);
        }
        
        Console.WriteLine();
        
        int n=1;
        while (n<=10)
        {
            Console.Write("{0} ", n);
            n++;
        }
    }
}

Incluso se comportarían igual si no se avanza de uno en uno, o se interrumpe con "break", pero no en caso de usar un "continue", como muestra este ejemplo:

// Ejemplo_02_02_12b.cs
// "for" y "while" equivalente... con "continue"
// Introducción a C#, por Nacho Cabanes

using System;

public class Ejemplo_02_02_12b
{
    public static void Main()
    {
        for (int contador=1; contador<=10; contador++)
        {
            if (contador == 5)
                continue;
            Console.Write("{0} ", contador);
        }
        
        Console.WriteLine();
        
        int n=1;
        while (n<=10)
        {
            if (n == 5)
                continue;
            Console.Write("{0} ", n);
            n++;
        }
    }
}

En este caso, el "for" muestra todos los valores menos el 5, pero en el "while" se provoca un bucle sin fin y el programa se queda "colgado" tras escribir el número 4, porque cuando se llega al número 5, la orden "continue" hace que dicho valor no se escriba, pero que tampoco se incremente la variable, de modo que nunca se llega a pasar del 5.

Ejercicios propuestos:

Ejercicio propuesto 2.2.12.1: Crea un programa que escriba los números del 100 al 200, separados por un espacio, sin avanzar de línea, usando "for". En la siguiente línea, vuelve a escribirlos usando "while".
Ejercicio propuesto 2.2.12.2: Crea un programa que escriba los números pares del 20 al 10, descendiendo, excepto el 14, primero con "for" y luego con "while".