Compartir a través de


Instrucciones y bucles de C# if : tutorial de lógica condicional

En este tutorial se explica cómo escribir código de C# que examina las variables y cambia la ruta de acceso de ejecución en función de esas variables. Escriba código de C# y vea los resultados de la compilación y ejecución. El tutorial contiene una serie de lecciones que exploran construcciones de bifurcación y bucle en C#. Estas lecciones le enseñan los aspectos básicos del lenguaje C#.

Sugerencia

Cuando un bloque de fragmento de código incluye el botón "Ejecutar", ese botón abre la ventana interactiva o reemplaza el código existente en la ventana interactiva. Cuando el fragmento de código no incluye un botón "Ejecutar", puede copiar el código y agregarlo a la ventana interactiva actual.

Ejecute el código siguiente en la ventana interactiva. Seleccione Ejecutar:

int a = 5;
int b = 6;
if (a + b > 10)
    Console.WriteLine("The answer is greater than 10.");

Modifique la declaración de b para que la suma sea inferior a 10:

int b = 3;

Vuelva a seleccionar el botón Ejecutar . Dado que la respuesta es menor que 10, no se imprime nada. La condición que está probando es falsa. No tiene ningún código para ejecutar porque solo ha escrito una de las bifurcaciones posibles para una instrucción if: la bifurcación true.

Sugerencia

Al explorar C# (o cualquier lenguaje de programación), se cometen errores al escribir código. El compilador de encuentra esos errores y los notifica a usted. Cuando la salida contiene mensajes de error, examine detenidamente el código de ejemplo y el código de la ventana interactiva para ver qué corregir. Este ejercicio le ayuda a aprender la estructura del código de C#.

En este primer ejemplo se muestra la potencia de los tipos if y booleanos. Un valor booleano es una variable que puede tener uno de los dos valores: true o false. C# define un tipo especial para bool variables booleanas. La instrucción if comprueba el valor de un bool. Cuando el valor es true, se ejecuta la instrucción que sigue a if . De lo contrario, se omite.

Este proceso de comprobación de condiciones y ejecución de instrucciones basadas en esas condiciones es eficaz. Vamos a explorar más.

Hacer que if y else trabajen juntos

Para ejecutar código diferente en las ramas verdadero y falso, se crea una rama else que se ejecuta cuando la condición es falsa. Pruebe el código siguiente:

int a = 5;
int b = 3;
if (a + b > 10)
    Console.WriteLine("The answer is greater than 10");
else
    Console.WriteLine("The answer is not greater than 10");

La instrucción que sigue a la else palabra clave se ejecuta solo cuando la condición que se está probando es false. La combinación de if y else con condiciones booleanas proporciona toda la potencia que necesita.

Importante

La sangría debajo de las instrucciones if y else se utiliza para los lectores humanos. El lenguaje C# no considera significativos los espacios en blanco ni las sangrías. La instrucción que sigue a la if palabra clave o else se ejecuta en función de la condición . Todos los ejemplos de este tutorial siguen una práctica común para aplicar sangría a las líneas en función del flujo de control de las instrucciones.

Dado que la sangría no es significativa, debe usar { y } para indicar si desea que más de una instrucción forme parte del bloque que se ejecuta de forma condicional. Los programadores de C# suelen usar esas llaves en todas las cláusulas if y else. El siguiente ejemplo es igual al que usted creó. Pruébelo.

int a = 5;
int b = 3;
if (a + b > 10)
{
    Console.WriteLine("The answer is greater than 10");
}
else
{
    Console.WriteLine("The answer is not greater than 10");
}

Sugerencia

En el resto de este tutorial, todos los ejemplos de código incluyen las llaves, siguiendo las prácticas aceptadas.

Puede probar condiciones más complicadas:

int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) && (a == b))
{
    Console.WriteLine("The answer is greater than 10");
    Console.WriteLine("And the first number is equal to the second");
}
else
{
    Console.WriteLine("The answer is not greater than 10");
    Console.WriteLine("Or the first number is not equal to the second");
}

El == símbolo comprueba la igualdad. Usar == permite distinguir la prueba de igualdad de la asignación, que verá en a = 5.

&& representa "y". Significa que ambas condiciones deben cumplirse para ejecutar la instrucción en la bifurcación true. Estos ejemplos también muestran que puede tener varias instrucciones en cada rama condicional, siempre que las incluya en { y }.

También puede usar || para representar "o":

if ((a + b + c > 10) || (a == b))

Modifique los valores de a, by c cambie entre && y || para explorar. Ganas más comprensión sobre cómo funcionan los operadores && y ||.

Uso de bucles para repetir operaciones

El bucle es otro concepto importante para crear programas más grandes. Use bucles para repetir instrucciones que desee ejecutar más de una vez. Pruebe este código en la ventana interactiva:

int counter = 0;
while (counter < 10)
{
    Console.WriteLine($"Hello World! The counter is {counter}");
    counter++;
}

La while instrucción comprueba una condición y ejecuta la instrucción después de while. La comprobación de la condición y la ejecución de dichas instrucciones se repiten hasta que la condición es false.

Hay otro operador nuevo en este ejemplo. El ++ después de la variable counter es el operador de incremento. Agrega 1 al valor de counter y almacena ese valor en la variable counter.

Importante

Asegúrese de que la condición del while bucle se convierta en falso mientras ejecuta el código. De lo contrario, se crea un bucle infinito en el que el programa nunca termina. Eso no lo vamos a demostrar, porque el motor que ejecuta el código agotará el tiempo de espera y el programa no generará ninguna salida.

El while bucle prueba la condición antes de ejecutar el código después de .while El do bucle ... while ejecuta primero el código y, a continuación, comprueba la condición. Tiene este aspecto:

int counter = 0;
do
{
    Console.WriteLine($"Hello World! The counter is {counter}");
    counter++;
} while (counter < 10);

Este do bucle y el bucle anterior while funcionan igual.

Ahora vamos a pasar a una última instrucción del bucle.

Operaciones con el bucle for

Otra instrucción de bucle común que se ve en el código de C# es el for bucle . Pruebe este código en la ventana interactiva:

for (int counter = 0; counter < 10; counter++)
{
    Console.WriteLine($"Hello World! The counter is {counter}");
}

El bucle anterior for hace el mismo trabajo que el while bucle y el do bucle que ya usó. La for instrucción tiene tres partes que controlan cómo funciona:

  • La primera parte es para el inicializador: int counter = 0; declara que counter es la variable de bucle y establece su valor inicial en 0.
  • La parte central es la condición for: counter < 10 declara que este for bucle continúa ejecutándose siempre y cuando el valor del contador sea inferior a 10.
  • La parte final es para iterador: counter++ especifica cómo modificar la variable de bucle después de ejecutar el bloque siguiendo la for instrucción . Aquí se especifica que counter se incrementa en 1 cada vez que se ejecuta el bloque.

Experimente con estas condiciones usted mismo. Pruebe cada uno de los cambios siguientes:

  • Cambie el inicializador para que se inicie en un valor diferente.
  • Cambie la condición para que se detenga en un valor diferente.

Cuando haya terminado, escriba algo de código para practicar con lo que ha aprendido.

Hay otra instrucción de bucle que no se trata en este tutorial: el foreach. La foreach instrucción repite su instrucción para cada elemento de una secuencia de elementos. Se usa con más frecuencia en colecciones. Se trata en el siguiente tutorial.

Bucles anidados creados

Un while, do o for bucle se puede anidar dentro de otro bucle para crear una matriz mediante la combinación de cada elemento del bucle externo con cada elemento del bucle interno. Vamos a hacerlo para crear un conjunto de pares alfanuméricos para representar filas y columnas.

Un for bucle puede generar las filas:

for (int row = 1; row < 11; row++)
{
    Console.WriteLine($"The row is {row}");
}

Otro bucle puede generar las columnas:

for (char column = 'a'; column < 'k'; column++)
{
    Console.WriteLine($"The column is {column}");
}

Puede anidar un bucle dentro de otro para formar pares:

for (int row = 1; row < 11; row++)
{
    for (char column = 'a'; column < 'k'; column++)
    {
        Console.WriteLine($"The cell is ({row}, {column})");
    }
}

Puede ver que el bucle externo se incrementa una vez para cada ejecución completa del bucle interno. Invierta el anidamiento de filas y columnas, y vea los cambios por sí mismo.

Combinación de ramas y bucles

Ahora que ha visto la if instrucción y las construcciones de bucle en el lenguaje C#, vea si puede escribir código de C# para encontrar la suma de todos los enteros del 1 al 20 que son divisibles en 3. Estas son algunas sugerencias:

  • El operador % proporciona el resto de una operación de división.
  • La if instrucción proporciona la condición para ver si un número debe formar parte de la suma.
  • El for bucle puede ayudarle a repetir una serie de pasos para todos los números del 1 al 20.

Pruébelo tú mismo. Entonces comprueba cómo lo hiciste. Sugerimos que obtenga 63 como respuesta.

¿Se te ocurrió algo como esto?

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/BranchesAndLoops/Program.cs" id="Challenge":::

Has completado el tutorial interactivo de "ramas y bucles". Puede seleccionar el vínculo de colección de listas para iniciar el siguiente tutorial interactivo, o bien puede visitar el sitio de .NET para descargar el SDK de .NET, crear un proyecto en la máquina y seguir codificando. La sección "Pasos siguientes" lo conduce de nuevo a estos tutoriales.

Puede aprender más sobre estos conceptos en los artículos siguientes: