Exercício – Concluir uma atividade de desafio em que é preciso diferenciar entre instruções de iteração do e while

Concluído

Os desafios de código reforçarão o que você aprendeu e ajudarão você a adquirir confiança antes de continuar.

Examine a diferença entre as iterações de instrução do e while

Como você deve ter visto, o C# dá suporte a quatro tipos de instruções de iteração: for, foreach, do-while e while. A documentação de referência de linguagem da Microsoft descreve essas instruções da seguinte maneira:

  • A instrução for: executa seu corpo enquanto uma expressão Booliana especificada (a "condição") é avaliada como verdadeira.
  • A instrução foreach: enumera os elementos de uma coleção e executa o corpo para cada um deles.
  • A instrução do-while: executa condicionalmente o corpo uma ou mais vezes.
  • A instrução while: executa condicionalmente o corpo zero ou mais vezes.

As iterações for e foreach parecem ser claramente diferentes umas das outras e das iterações do-while e while. As definições para as instruções do-while e while, no entanto, parecem ser bastante semelhantes. Saber quando escolher entre do-while e while parece mais arbitrário e pode ser até um pouco confuso. Alguns projetos de desafio podem ajudar a esclarecer as diferenças.

Neste desafio, serão apresentadas as condições para três projetos de codificação separados. Cada projeto exigirá que você implemente um bloco de código de iteração usando uma instrução do-while ou while. Você precisará avaliar as condições especificadas para escolher entre as instruções do-while e while. É possível mudar depois de começar, caso a primeira escolha não esteja funcionando tão bem quanto esperado.

Observação

As condições do projeto de codificação podem ser usadas para ajudar na seleção da instrução do-while ou da instrução while. Às vezes, o que você sabe ou não sabe sobre a expressão booliana que será avaliada pode ajudar você na seleção da instrução do-while ou da instrução while. Neste exercício de desafio, as condições do projeto incluem informações que serão usadas para criar a expressão booliana.

Gerencie a entrada do usuário durante esse desafio

Ao usar uma instrução Console.ReadLine() para obter a entrada do usuário, é prática comum utilizar uma cadeia de caracteres do tipo anulável (designada string?) para a variável de entrada e, em seguida, avaliar o valor inserido pelo usuário. O código de exemplo a seguir utiliza uma cadeia de caracteres do tipo anulável para capturar a entrada do usuário. A iteração continuará enquanto o valor fornecido pelo usuário for nulo:

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

A expressão booliana avaliada pela instrução while pode ser utilizada para garantir que a entrada do usuário atenda a um requisito especificado. Por exemplo, se um prompt solicitar que o usuário insira uma cadeia de caracteres que inclua pelo menos três caracteres, o código a seguir poderá ser utilizado:

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);

Se você desejar utilizar a entrada Console.ReadLine() para valores numéricos, precisará converter o valor da cadeia de caracteres para um tipo numérico.

O método int.TryParse() pode ser utilizado para converter um valor de cadeia de caracteres em um número inteiro. O método utiliza dois parâmetros, uma cadeia de caracteres que será avaliada e o nome de uma variável inteira à qual será atribuído um valor. O método retorna um valor Booliano. O código de exemplo a seguir demonstra o uso do método int.TryParse():

// capture user input in a string variable named readResult

int numericValue = 0;
bool validNumber = false;

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

Se o valor da cadeia de caracteres atribuído a readResult representar um número inteiro válido, o valor será atribuído à variável de número inteiro chamada numericValue e true será atribuído à variável booliana denominada validNumber. Se o valor atribuído a readResult não representar um número inteiro válido, validNumber receberá um valor de false. Por exemplo, se readResult for igual a "7", o valor 7 será atribuído a numericValue.

Projeto de código 1 – escrever o código que valida a entrada de inteiro

Veja as seguintes condições que seu primeiro projeto de codificação deve implementar:

  • A solução deve incluir uma iteração do-while ou while.

  • Antes do bloco de iteração: a solução deve usar uma instrução Console.WriteLine() para solicitar ao usuário um valor inteiro entre 5 e 10.

  • Dentro do bloco de iteração:

    • A solução deve usar uma instrução Console.ReadLine() para obter uma entrada do usuário.
    • A solução deve garantir que a entrada seja uma representação válida de um inteiro.
    • Se o valor inteiro não estiver entre 5 e 10, o código deverá usar uma instrução Console.WriteLine() para solicitar ao usuário um valor inteiro entre 5 e 10.
    • A solução deve garantir que o valor inteiro esteja entre 5 e 10 antes de sair da iteração.
  • Abaixo (depois) do bloco de código de iteração: a solução deve usar uma instrução Console.WriteLine() para informar ao usuário que o valor de entrada foi aceito.

  1. Verifique se você tem o arquivo Program.cs vazio aberto no Visual Studio Code.

    Se necessário, abra o Visual Studio Code e conclua as seguintes etapas para preparar o arquivo Program.cs no Editor:

    1. No menu Arquivo, selecione Abrir Pasta.

    2. Use a caixa de diálogo Abrir Pasta para navegar e, em seguida, abra a pasta CsharpProjects.

    3. No painel EXPLORER do Visual Studio Code, selecione Program.cs.

    4. No menu Seleção do Visual Studio Code, escolha Selecionar Tudo e pressione a tecla Delete.

  2. Escreva o código que implementa cada condição do projeto de código 1.

  3. Execute o aplicativo e verifique se o código valida a entrada do usuário com base nos requisitos especificados.

    Por exemplo, quando você executa o aplicativo, ele deve rejeitar valores de entrada como "dois" e "2", mas aceitar um valor de entrada de "7".

    No exemplo descrito acima, a saída do console deve ser semelhante à seguinte:

    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.
    

Projeto de código 2 – escrever o código que valida a entrada de cadeia de caracteres

Veja as seguintes condições que seu segundo projeto de codificação deve implementar:

  • A solução deve incluir uma iteração do-while ou while.

  • Antes do bloco de iteração: a solução deve usar uma instrução Console.WriteLine() para solicitar ao usuário um dos três nomes de função: Administrador, Gerente ou Usuário.

  • Dentro do bloco de iteração:

    • A solução deve usar uma instrução Console.ReadLine() para obter uma entrada do usuário.
    • A solução deve garantir que o valor inserido corresponda a uma das três opções de função.
    • Sua solução deve usar o método Trim() no valor de entrada para ignorar caracteres de espaço de entrelinhamento e à direita.
    • A solução deve usar o método ToLower() no valor de entrada para ignorar maiúsculas e minúsculas.
    • Se o valor inserido não corresponder a uma das opções de função, o código deverá usar uma instrução Console.WriteLine() para solicitar ao usuário uma entrada válida.
  • Abaixo (depois) do bloco de código de iteração: a solução deve usar uma instrução Console.WriteLine() para informar ao usuário que o valor de entrada foi aceito.

  1. Remover todo o código no painel Editor do Visual Studio Code

    1. Selecionar todas as linhas de código no editor de código
    2. No menu Editar, selecione Ativar comentário de bloco.
  2. Escreva o código que implementa cada condição do projeto de código 2.

  3. Execute o aplicativo e verifique se o código valida a entrada do usuário com base nos requisitos especificados.

    Por exemplo, quando você executa o aplicativo, ele deve rejeitar um valor de entrada como "Admin", mas aceitar um valor de entrada "administrador".

    A saída do console para este exemplo deve ser semelhante à seguinte:

    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.
    

Projeto de código 3: escreva um código que processe o conteúdo de uma matriz de caracteres

Veja as seguintes condições que seu terceiro projeto de codificação deve implementar:

  • A solução deve usar a seguinte matriz de cadeia de caracteres para representar a entrada para a lógica de codificação:

    string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
    
  • A solução deve declarar uma variável inteira chamada periodLocation que pode ser usada para manter o local do caractere de ponto dentro de uma cadeia de caracteres.

  • A solução deve incluir um loop foreach ou for externo que possa ser usado para processar cada elemento da cadeia de caracteres na matriz. A variável da cadeia de caracteres que será processada dentro dos loops deve ser chamada de myString.

  • No loop externo, a solução deve usar o método IndexOf() da classe String para obter a localização do primeiro caractere de ponto na variável myString. A chamada de método deve ser semelhante a: myString.IndexOf("."). Se não houver nenhum caractere de ponto na cadeia de caracteres, um valor de -1 será retornado.

  • A solução deve incluir um loop do-while ou while interno que possa ser usado para processar a variável myString.

  • No loop interno, a solução deve extrair e exibir (gravar no console) cada frase contida em cada uma das cadeias de caracteres processadas.

  • No loop interno, a solução não deve exibir o caractere de ponto.

  • No loop interno, a solução deve usar os métodos Remove(), Substring() e TrimStart() para processar as informações da cadeia de caracteres.

  1. Remover todo o código no painel Editor do Visual Studio Code

    1. Selecionar todas as linhas de código no editor de código
    2. No menu Editar, selecione Ativar comentário de bloco.
  2. Escreva o código que implementa cada condição listada para o projeto de código 3.

  3. Execute o aplicativo e verifique se a saída atende aos requisitos.

    Se a lógica do código funcionar corretamente, a saída será semelhante à seguinte:

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

Se você não souber o que fazer e quiser conferir a solução ou se tiver concluído tudo com sucesso, basta continuar para ver os projetos de solução deste desafio.