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.10. Interrumpir un bucle: break

Podemos salir de un bucle antes de tiempo si lo interrumpimos con la orden "break":

// Ejemplo_02_02_10a.cs
// "for" interrumpido con "break"
// Introducción a C#, por Nacho Cabanes

using System;

public class Ejemplo_02_02_10a
{
    public static void Main()
    {
        for (int contador=1; contador<=10; contador++)
        {
            if (contador==5) 
                break;

            Console.Write("{0} ", contador);
        }
    }
}

El resultado de este programa es:

  1 2 3 4

(en cuanto se llega al valor 5, se interrumpe el "for", por lo que no se alcanza el valor 10).

Es una orden que se debe tratar de evitar, porque puede conducir a programas difíciles de leer, en los que no se cumple la condición de repetición del bucle, sino que se interrumpe por otros criterios. Como norma general, es preferible reescribir la condición del bucle de otra forma. En el ejemplo anterior, bastaría que la condición fuera "contador < 5". Un ejemplo ligeramente más complejo podría ser mostrar los números del 105 al 120 hasta encontrar uno que sea múltiplo de 13, que no se mostrará. Lo podríamos hacer de esta forma (poco correcta):

// Ejemplo_02_02_10b.cs
// "for" interrumpido con "break" (2)
// Introducción a C#, por Nacho Cabanes

using System;

public class Ejemplo_02_02_10b
{
    public static void Main()
    {
        for (int contador=105; contador<=120; contador++)
        {
            if (contador % 13 == 0) 
                break;

            Console.Write("{0} ", contador);
        }
    }
}

O reescribirlo de esta otra (preferible):

// Ejemplo_02_02_10c.cs
// alternativa a un "for" interrumpido con "break"
// Introducción a C#, por Nacho Cabanes

using System;

public class Ejemplo_02_02_10c
{
    public static void Main()
    {
        int contador=105;
        
        while ( (contador<=120) && (contador % 13 != 0) )
        {
            Console.Write("{0} ", contador);
            contador++;
        }
    }
}

(Sí, en la mayoría de los casos, un "for" se puede convertir en un "while"; veremos más detalles dentro de muy poco).

Ejercicios propuestos:

Ejercicio propuesto 2.2.10.1: Crea un programa que pida al usuario dos números y escriba su máximo común divisor (pista: una solución lenta pero sencilla es probar con un "for" todos los números descendiendo a partir del menor de ambos, hasta llegar a 1; cuando encuentres un número que sea divisor de ambos, interrumpes la búsqueda).
Ejercicio propuesto 2.2.10.2: Crea un programa que pida al usuario dos números y escriba su mínimo común múltiplo (pista: una solución lenta pero sencilla es probar con un "for" todos los números a partir del mayor de ambos, de forma creciente; cuando encuentres un número que sea múltiplo de ambos, interrumpes la búsqueda).