Exercício – Concluir uma atividade de desafio em que é preciso diferenciar entre instruções de iteração do e while
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
ouwhile
.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.
- A solução deve usar uma instruçã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.
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:
No menu Arquivo, selecione Abrir Pasta.
Use a caixa de diálogo Abrir Pasta para navegar e, em seguida, abra a pasta CsharpProjects.
No painel EXPLORER do Visual Studio Code, selecione Program.cs.
No menu Seleção do Visual Studio Code, escolha Selecionar Tudo e pressione a tecla Delete.
Escreva o código que implementa cada condição do projeto de código 1.
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
ouwhile
.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.
- A solução deve usar uma instruçã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.
Remover todo o código no painel Editor do Visual Studio Code
- Selecionar todas as linhas de código no editor de código
- No menu Editar, selecione Ativar comentário de bloco.
Escreva o código que implementa cada condição do projeto de código 2.
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
oufor
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 demyString
.No loop externo, a solução deve usar o método
IndexOf()
da classeString
para obter a localização do primeiro caractere de ponto na variávelmyString
. 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
ouwhile
interno que possa ser usado para processar a variávelmyString
.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()
eTrimStart()
para processar as informações da cadeia de caracteres.
Remover todo o código no painel Editor do Visual Studio Code
- Selecionar todas as linhas de código no editor de código
- No menu Editar, selecione Ativar comentário de bloco.
Escreva o código que implementa cada condição listada para o projeto de código 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.