Escenario
Imagina este escenario:
mientras que y hacen mientras que los bucles son adecuados en esta situación.
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:
- Comprueba si satisface la condición.
- Si la condición es verdadera, procesa la lógica del bucle en code_block.
- 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:
- Lógica de bucle de proceso en code_block.
- Evaluar la condición después de code_block.
- 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.