Ejercicio: Realización de una actividad de desafío para marcar la diferencia entre las instrucciones de iteración do y while

Completado

Los desafíos de código refuerzan lo que ha aprendido y le ayudan a tener más confianza antes de continuar.

Examinar la diferencia entre las iteraciones de instrucción do y while

Como ha visto, C# admite cuatro tipos de instrucciones de iteración: for, foreach, do-while y while. La documentación de referencia del lenguaje de Microsoft describe estas instrucciones de la siguiente manera:

  • La instrucción for ejecuta su cuerpo mientras una expresión booleana especificada (la condición) se evalúa como true.
  • La instrucción foreach enumera los elementos de una colección y ejecuta su cuerpo para cada elemento de la colección.
  • La instrucción do-while ejecuta condicionalmente su cuerpo una o varias veces.
  • La instrucción while no ejecuta condicionalmente su cuerpo o lo hace varias veces.

Las iteraciones for y foreach parecen estar claramente diferenciadas entre sí y de las iteraciones do-while y while. Sin embargo, las definiciones de las instrucciones do-while y while parecen ser bastante similares. Saber cuándo elegir entre un do-while y un while parece más arbitrario, e incluso puede ser un poco confuso. Algunos proyectos de desafío pueden ayudar a aclarar las diferencias.

En este desafío, se le presentarán condiciones para tres proyectos de codificación independientes. Cada proyecto requerirá que implemente un bloque de código de iteración mediante una instrucción do-while o while. Deberá evaluar las condiciones especificadas para elegir entre las instrucciones do-while y while. Puede cambiar después de comenzar si su primera opción no funciona tan bien como esperaba.

Nota

Las condiciones del proyecto de codificación se pueden usar para ayudarle a seleccionar entre las instrucciones do-while y while. Lo que sabe, o no sabe, sobre la expresión booleana que se evaluará, a veces puede ayudarle a seleccionar entre las instrucciones do-while y while. En este ejercicio de desafío, las condiciones del proyecto incluyen información que se usará para construir la expresión booleana.

Administrar la entrada de usuario durante este desafío

Cuando se usa una instrucción Console.ReadLine() para obtener la entrada de usuario, es habitual usar una cadena de tipo que acepta valores NULL (designada string?) para la variable de entrada y, a continuación, evaluar el valor especificado por el usuario. El siguiente ejemplo de código utiliza una cadena de tipo que acepta valores NULL para capturar la entrada del usuario. La iteración continúa mientras el valor proporcionado por el usuario es NULL:

string? readResult;
Console.WriteLine("Enter a string:");
do
{
    readResult = Console.ReadLine();
} while (readResult == null);

La expresión booleana evaluada por la instrucción while se puede usar para asegurarse de que la entrada del usuario cumple un requisito especificado. Por ejemplo, si un mensaje pide al usuario que escriba una cadena que incluya al menos tres caracteres, se podría usar el siguiente código:

string? readResult;
bool validEntry = false;
Console.WriteLine("Enter a string containing at least three characters:");
do
{
    readResult = Console.ReadLine();
    if (readResult != null)
    {
        if (readResult.Length >= 3)
        {
            validEntry = true;
        }
        else
        {
            Console.WriteLine("Your input is invalid, please try again.");
        }
    }
} while (validEntry == false);

Si desea usar la entrada Console.ReadLine() para valores numéricos, debe convertir el valor de la cadena en un tipo numérico.

El método int.TryParse() se puede usar para convertir un valor de cadena en un entero. El método usa dos parámetros, una cadena que se evaluará y el nombre de una variable de entero a la que se asignará un valor. Este método devuelve un valor booleano. El código de ejemplo siguiente muestra el uso de int.TryParse():

// capture user input in a string variable named readResult

int numericValue = 0;
bool validNumber = false;

validNumber = int.TryParse(readResult, out numericValue);

Si el valor de cadena asignado a readResult representa un entero válido, el valor se asignará a la variable de entero denominada numericValue y true se asignará a la variable booleana denominada validNumber. Si el valor asignado a readResult no representa un entero válido, a validNumber se le asignará un valor de false. Por ejemplo, si readResult es igual a "7", el valor 7 se asignará a numericValue.

Proyecto de código 1: escritura de código que valida la entrada de enteros

Estas son las condiciones que el primer proyecto de codificación debe implementar:

  • La solución debe incluir una iteración do-while o while.

  • Antes del bloque de iteración: la solución debe usar una instrucción Console.WriteLine() para solicitar al usuario un valor de enteros entre 5 y 10.

  • Dentro del bloque de iteración:

    • La solución debe usar una instrucción Console.ReadLine() para obtener la entrada del usuario.
    • La solución debe asegurarse de que la entrada es una representación válida de un entero.
    • Si el valor del entero no está comprendido entre 5 y 10, el código debe usar una instrucción Console.WriteLine() para solicitar al usuario un valor del entero entre 5 y 10.
    • La solución debe garantizar que el valor de enteros está comprendido entre 5 y 10 antes de salir de la iteración.
  • Debajo (después) del bloque de código de iteración, la solución debe usar una instrucción Console.WriteLine() para informar al usuario de que se ha aceptado su valor de entrada.

  1. Asegúrese de que tiene un archivo Program.cs vacío abierto en Visual Studio Code.

    Si es necesario, abra Visual Studio Code y, luego, lleve a cabo los pasos siguientes para preparar un archivo Program.cs en el editor:

    1. En el menú Archivo , seleccione Abrir carpeta.

    2. Use el cuadro de diálogo Abrir carpeta para ir a y, a continuación, abrir la carpeta CsharpProjects .

    3. En el panel EXPLORADOR de Visual Studio Code, seleccione Program.cs.

    4. En el menú Selección de Visual Studio Code, seleccione Seleccionar todo y presione la tecla Eliminar.

  2. Escriba el código que implementa cada condición para el proyecto de código 1.

  3. Ejecute la aplicación y compruebe que el código valida la entrada de usuario en función de los requisitos especificados.

    Por ejemplo, al ejecutar la aplicación, debe rechazar valores de entrada como "two" y "2", pero debe aceptar un valor de entrada de "7".

    En el ejemplo descrito anteriormente, la salida de la consola debe ser similar a la siguiente:

    Enter an integer value between 5 and 10
    two
    Sorry, you entered an invalid number, please try again
    2
    You entered 2. Please enter a number between 5 and 10.
    7
    Your input value (7) has been accepted.
    

Proyecto de código 2: escritura de código que valida la entrada de cadena

Estas son las condiciones que el segundo proyecto de codificación debe implementar:

  • La solución debe incluir una iteración do-while o while.

  • Antes del bloque de iteración, la solución debe usar una instrucción Console.WriteLine() para solicitar al usuario uno de los tres nombres de rol: Administrador, Director o Usuario.

  • Dentro del bloque de iteración:

    • La solución debe usar una instrucción Console.ReadLine() para obtener la entrada del usuario.
    • La solución debe garantizar que el valor especificado coincide con una de las tres opciones de rol.
    • La solución debe usar el método Trim() en el valor de entrada para omitir los caracteres de espacio iniciales y finales.
    • La solución debe usar el método ToLower() en el valor de entrada para omitir el caso.
    • Si el valor especificado no coincide con una de las opciones de rol, el código debe usar una instrucción Console.WriteLine() para solicitar al usuario una entrada válida.
  • Debajo (después) del bloque de código de iteración, la solución debe usar una instrucción Console.WriteLine() para informar al usuario de que se ha aceptado su valor de entrada.

  1. Marcar como comentario todo el código en el panel editor de Visual Studio Code

    1. Selección de todas las líneas de código en el editor de código
    2. En el menú Editar , seleccione Alternar bloquear comentario.
  2. Escriba el código que implementa cada condición para el proyecto de código 2.

  3. Ejecute la aplicación y compruebe que el código valida la entrada de usuario en función de los requisitos especificados.

    Por ejemplo, al ejecutar la aplicación, debe rechazar valores de entrada como "Admin", pero debe aceptar un valor de entrada de "administrator".

    La salida de la consola de este ejemplo debe ser similar a la siguiente:

    Enter your role name (Administrator, Manager, or User)
    Admin
    The role name that you entered, "Admin" is not valid. Enter your role name (Administrator, Manager, or User)
       Administrator
    Your input value (Administrator) has been accepted.
    

Proyecto de código 3: escritura de código que procesa el contenido de una matriz de cadenas

Estas son las condiciones que el tercer proyecto de codificación debe implementar:

  • La solución debe usar la siguiente matriz de cadenas para representar la entrada en la lógica de codificación:

    string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
    
  • La solución debe declarar una variable de enteros denominada periodLocation que se pueda usar para contener la ubicación del carácter de punto dentro de una cadena.

  • La solución debe incluir un bucle externo foreach o for que se pueda usar para procesar cada elemento de cadena de la matriz. La variable de cadena que procesará dentro de los bucles debe denominarse myString.

  • En el bucle externo, la solución debe usar el método IndexOf() de la clase String para obtener la ubicación del primer carácter de punto de la variable myString. La llamada al método debe ser similar a myString.IndexOf("."). Si no hay ningún carácter de punto en la cadena, se devolverá un valor de -1.

  • La solución debe incluir un bucle interno do-while o while que se pueda usar para procesar la variable myString.

  • En el bucle interno, la solución debe extraer y mostrar (escribir en la consola) cada frase contenida en cada una de las cadenas que se procesan.

  • En el bucle interno, la solución no debe mostrar el carácter de punto.

  • En el bucle interno, la solución debe usar los métodos Remove(), Substring() y TrimStart() para procesar la información de cadena.

  1. Marcar como comentario todo el código en el panel editor de Visual Studio Code

    1. Selección de todas las líneas de código en el editor de código
    2. En el menú Editar , seleccione Alternar bloquear comentario.
  2. Escriba el código que implementa cada condición enumerada para el proyecto de código 3.

  3. Ejecute la aplicación y compruebe que la salida cumple los requisitos.

    Si la lógica de código funciona correctamente, la salida debe ser similar a la siguiente:

    I like pizza
    I like roast chicken
    I like salad
    I like all three of the menu choices
    

Tanto si tiene dificultades y necesita echar un vistazo a la solución como si finaliza el ejercicio correctamente, continúe para ver los proyectos de solución a este desafío.