Introducción a C#
Por Nacho Cabanes, versión 0.93 de 16-abr-2010


(Nota: Estás viendo una versión del curso antigua, creada en 2009. Es recomendable que sigas la versión 2015, mucho más actualizada, con contenidos más detallados, más ejemplos y más ejercicios propuestos)

3.3. Sentencia break: termina el bucle

Podemos salir de un bucle "for" antes de tiempo con la orden "break":

/*---------------------------*/
/*  Ejemplo en C# nº 30:     */
/*  ejemplo30.cs             */
/*                           */
/*  "for" interrumpido con   */
/*  "break"                  */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
public class Ejemplo30
{
  public static void Main()
  {
 
    int contador;
 
    for (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).

3.4. Sentencia continue: fuerza la siguiente iteración

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

/*---------------------------*/
/*  Ejemplo en C# nº 31:     */
/*  ejemplo31.cs             */
/*                           */
/*  "for" interrumpido con   */
/*  "continue"               */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
public class Ejemplo31
{
  public static void Main()
  {
 
    int contador;
 
    for (contador=1; contador<=10; contador++)
    {
      if (contador==5) continue;
      Console.Write("{0} ", contador);
    }
 
  }
}
 

El resultado de este programa es:


  1 2 3 4 6 7 8 9 10

En él podemos observar que no aparece el valor 5.

Ejercicios resueltos:

* ¿Qué escribiría en pantalla este fragmento de código?

for (i=1; i<4; i++) Console.Write("{0} ",i);

Respuesta: los números del 1 al 3 (se empieza en 1 y se repite mientras sea menor que 4).

* ¿Qué escribiría en pantalla este fragmento de código?

for (i=1; i>4; i++) Console.Write("{0} ",i);

Respuesta: no escribiría nada, porque la condición es falsa desde el principio.

* ¿Qué escribiría en pantalla este fragmento de código?

for (i=1; i<=4; i++); Console.Write("{0} ",i);

Respuesta: escribe un 5, porque hay un punto y coma después del "for", de modo que repite cuatro veces una orden vacía, y cuando termina, "i" ya tiene el valor 5.

* ¿Qué escribiría en pantalla este fragmento de código?

for (i=1; i<4; ) Console.Write("{0} ",i);

Respuesta: escribe "1" continuamente, porque no aumentamos el valor de "i", luego nunca se llegará a cumplir la condición de salida.

* ¿Qué escribiría en pantalla este fragmento de código?

for (i=1; ; i++) Console.Write("{0} ",i);

Respuesta: escribe números crecientes continuamente, comenzando en uno y aumentando una unidad en cada pasada, pero sin terminar.

* ¿Qué escribiría en pantalla este fragmento de código?

for ( i= 0 ; i<= 4 ; i++) {
    if ( i == 2 ) continue ; 
    Console.Write("{0} ",i); 
}

Respuesta: escribe los números del 0 al 4, excepto el 2.

* ¿Qué escribiría en pantalla este fragmento de código?

for ( i= 0 ; i<= 4 ; i++) {
    if ( i == 2 ) break ; 
    Console.Write("{0} ",i); 
}

Respuesta: escribe los números 0 y 1 (interrumpe en el 2).

* ¿Qué escribiría en pantalla este fragmento de código?

for ( i= 0 ; i<= 4 ; i++) {
    if ( i == 10 ) continue ; 
    Console.Write("{0} ",i); 
}

Respuesta: escribe los números del 0 al 4, porque la condición del "continue" nunca se llega a dar.

* ¿Qué escribiría en pantalla este fragmento de código?

for ( i= 0 ; i<= 4 ; i++) 
    if ( i == 2 ) continue ; 
    Console.Write("{0} ",i); 

Respuesta: escribe 5, porque no hay llaves tras el "for", luego sólo se repite la orden "if".

3.5. Sentencia goto

El lenguaje C# también permite la orden "goto", para hacer saltos incondicionales. Su uso indisciplinado está muy mal visto, porque puede ayudar a hacer programas llenos de saltos, difíciles de seguir. Pero en casos concretos puede ser muy útil, por ejemplo, para salir de un bucle muy anidado (un "for" dentro de otro "for" que a su vez está dentro de otro "for": en este caso, "break" sólo saldría del "for" más interno).

El formato de "goto" es


   goto donde;

y la posición de salto se indica con su nombre seguido de dos puntos (:)


   donde:

como en el siguiente ejemplo:

/*---------------------------*/
/*  Ejemplo en C# nº 32:     */
/*  ejemplo32.cs             */
/*                           */
/*  "for" y "goto"           */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
public class Ejemplo32
{
  public static void Main()
  {
 
    int i, j;
 
    for (i=0; i<=5; i++)
        for (j=0; j<=20; j+=2)
        {
            if ((i==1) && (j>=7)) goto salida;
            Console.WriteLine("i vale {0} y j vale {1}.", i, j);
        }
    salida:
        Console.Write("Fin del programa");
 
  }
}
 

El resultado de este programa es:


  i vale 0 y j vale 0.
  i vale 0 y j vale 2.
  i vale 0 y j vale 4.
  i vale 0 y j vale 6.
  i vale 0 y j vale 8.
  i vale 0 y j vale 10.
  i vale 0 y j vale 12.
  i vale 0 y j vale 14.
  i vale 0 y j vale 16.
  i vale 0 y j vale 18.
  i vale 0 y j vale 20.
  i vale 1 y j vale 0.
  i vale 1 y j vale 2.
  i vale 1 y j vale 4.
  i vale 1 y j vale 6.
  Fin del programa

Vemos que cuando i=1 y j>=7, se sale de los dos "for".