Saltar al contenido

Un completo recorrido por las declaraciones iterativas de C# Parte 1 – mientras que, hacer

Escenario

Imagina este escenario:

mientras que y hacen mientras que los bucles son adecuados en esta situación.

Un completo recorrido por las declaraciones iterativas de C# Parte 1 – mientras que, hacer
Un completo recorrido por las declaraciones iterativas de C# Parte 1 – mientras que, hacer

mientras que

Sintaxis

Antes de esto, permítanme presentarles la gramática de mientras en Do#. Esta es la plantilla del código:

1234while(condition){ code_block;}

csharp

La sentencia while está compuesta por una condición y un bloque de código:

  • code_block representa la lógica ejecutada en el bucle. Puede incluir múltiples declaraciones, incluso otro bloque de bucle.
  • La condición es una expresión booleana. Decide si debe continuar el bucle o salir del bucle.

Diagrama de flujo

Dibujaré un diagrama de flujo de un bucle de tiempo para ayudarte a entender mejor el control del flujo.

El proceso de bucle de espera es el siguiente:

  1. Comprueba si satisface la condición.
  2. Si la condición es verdadera, procesa la lógica del bucle en code_block.
  3. Repita el proceso anterior hasta que la condición sea falsa y luego salga del bucle.

Práctica

Ahora estamos listos para implementar este tonto robot de chat por mientras:

123456789Console.WriteLine("bienvenido al chat conmigo");string command;// leer el comando de entrada, y continuar en bucle mientras el comando != "terminar la conversación "while((command = Console.ReadLine())!="terminar la conversación"){ Console.WriteLine("lo siento, no entiendo el significado de {0}", command);}Console.WriteLine("encantado de charlar con usted, adiós~");

csharp

Intentémoslo. El robot de chat se mantendrá en el bucle de conversación hasta que introduzcamos «terminar la conversación».

1234567bienvenido a charlar conmigo; hisorry, no entiendo el significado de hi~; ¿qué sabes? perdón, no entiendo el significado de qué sabes?; fin de la conversación-me encantaría charlar contigo, adiós~

hacer mientras

Escenario

Modifiquemos un poco el escenario anterior:

Para esta situación, hacer mientras es una mejor opción.

Sintaxis

Además, la plantilla de código de do while se da. code_block y la condición son los mismos que en el bucle while, consulte la sección anterior si necesita refrescar.

123do{ code_block;}while(condition)

csharp

Diagrama de flujo

Aquí está el diagrama de flujo de do while loop:

El proceso de hacer mientras que el bucle es:

  1. Lógica de bucle de proceso en code_block.
  2. Evaluar la condición después de code_block.
  3. Si la condición es cierta, vuelve al paso 1, lo que significa continuar con el bucle. Si la condición es falsa, salir del bucle.

Práctica

En el nuevo escenario, si tendemos a ejecutar la salida antes de salir, hazlo mientras reutilizas el código al máximo.

123456789Console.WriteLine("bienvenido al chat conmigo");string command;do{ command = Console.ReadLine();// leer el comando de la entrada Console.WriteLine("lo siento, no entiendo el significado de {0}", comando);}while(command ! ="end conversation");// continue looping until "end conversation "Console.WriteLine("hah, I$0027m kidding with that, and glad to chat with you, bye~");

csharp

Intentémoslo de nuevo:

12345678bienvenido a charlar conmigo; dime un chiste, no entiendo el significado de dime un chiste; byesorry, no entiendo el significado de bye~

; fin de las conversaciones, perdón, no entiendo el significado de fin de las conversacioneshah, estoy bromeando con eso, y encantado de charlar contigo, bye~

hacer mientras funciona bien para completar lo que queremos: procesar la lógica del bucle antes de la comprobación de la condición.

while vs. do while

A partir de la plantilla de código y el diagrama de flujo, podemos descubrir que la única diferencia es que hacen mientras que los procesos hacen bucles de lógica primero, y luego evalúan la condición. Así que puedes considerar do while como la extensión de while. En realidad, do while puede ser reescrito por while, con un poco de redundancia:

123456789101112// do while templatedo{do_something();}while(condition);// reescrito do-while por whiledo_something();while(condition){do_something();}

csharp

Pero la versión llamada do_something dos veces, viola la regla de no repetirse.

Así que, para la lógica del bucle de situación antes de la comprobación de la condición, hacer mientras es la mejor práctica.