Exercício - Avaliar uma expressão
- 11 minutos
A lógica de decisão é usada para estabelecer caminhos alternativos através do seu código, onde a decisão sobre qual caminho seguir é baseada na avaliação de uma expressão. Por exemplo, você pode escrever algum código que execute um dos dois caminhos com base na entrada de um usuário. Se o usuário inserir a letra "a", seu código executará um bloco de código. Se eles inserirem a letra "b", seu código executará um bloco de código diferente. Neste exemplo, você está controlando o caminho de execução com base no valor atribuído a uma cadeia de caracteres. Seu código seleciona um caminho de execução com base em uma expressão, como essa expressão é avaliada e a lógica subjacente usada para definir os caminhos.
Examinar como construir e avaliar uma expressão é um bom ponto de partida.
O que é uma expressão?
Uma expressão é qualquer combinação de valores (literal ou variável), operadores e métodos que devolvem um só valor. Uma instrução é uma instrução completa em C#, e as instruções compreendem uma ou mais expressões. Por exemplo, a if a seguir contém uma única expressão que retorna um único valor:
if (myName == "Luiz")
Você pode estar pensando que o valor retornado por uma expressão seria um número ou talvez uma cadeia de caracteres. É verdade que os desenvolvedores de aplicativos usam diferentes tipos de expressões para diferentes propósitos. Nesse caso, ao desenvolver uma if instrução de seleção, você estará usando uma expressão que retorna um true ou false. Os desenvolvedores se referem a esse tipo de expressão como uma expressão booleana. Quando seu código inclui uma expressão booleana, o valor de retorno é sempre um único true ou false valor.
As expressões booleanas são importantes porque seu código pode usar essas expressões para decidir qual bloco de código executar.
Há muitos tipos diferentes de operadores que você pode usar dentro de uma expressão booleana. Por exemplo, a if instrução acima usa o operador == equality para verificar se uma variável string é atribuída a um determinado valor. O operador escolhido dependerá dos caminhos de código disponíveis, das condições associadas aos caminhos e da lógica subjacente do aplicativo.
Avaliar a igualdade e a desigualdade
Uma das avaliações de código mais comuns é uma verificação para ver se dois valores são iguais. Ao verificar a igualdade, você localizará o operador == de igualdade entre os dois valores que estão sendo verificados. Se os valores em ambos os lados do operador de igualdade forem equivalentes, a expressão retornará true. Caso contrário, irá devolver false.
Por outro lado, você também pode precisar verificar se dois valores não são iguais. Para verificar a desigualdade, você usará o operador != de desigualdade entre os dois valores.
Você pode se perguntar por que você precisa de operadores de igualdade e desigualdade. O motivo será mais claro à medida que aprender como criar instruções de ramificação e começar a escrever código no mundo real. Dois operadores que realizam tarefas opostas permitem-lhe ser mais expressivo e compacto.
Agora é hora de preparar seu ambiente de codificação e começar a escrever código que avalia expressões booleanas.
Prepare seu ambiente de codificação
Este módulo inclui atividades práticas que o guiam através do processo de criação e execução de código de demonstração. Você é incentivado a concluir essas atividades usando o Visual Studio Code como seu ambiente de desenvolvimento. Usar o Visual Studio Code para essas atividades ajudará você a se sentir mais confortável escrevendo e executando código em um ambiente de desenvolvedor usado por profissionais em todo o mundo.
Abra o Visual Studio Code.
Você pode usar o menu Iniciar do Windows (ou recurso equivalente para outro sistema operacional) para abrir o Visual Studio Code.
No menu Arquivo de código do Visual Studio, selecione Abrir pasta.
Na caixa de diálogo Abrir pasta , navegue até a pasta Área de trabalho do Windows.
Se você tiver um local de pasta diferente onde você mantém projetos de código, você pode usar esse local de pasta em vez disso. Para este treinamento, o importante é ter um local que seja fácil de localizar e lembrar.
Na caixa de diálogo Abrir pasta , selecione Selecionar pasta.
Se vir uma caixa de diálogo de segurança a perguntar se confia nos autores, selecione Sim.
No menu Terminal de código do Visual Studio, selecione Novo terminal.
Observe que um prompt de comando no painel Terminal exibe o caminho da pasta atual. Por exemplo:
C:\Users\someuser\Desktop>Nota
Se você estiver trabalhando em seu próprio PC em vez de em uma área restrita ou ambiente hospedado e tiver concluído outros módulos do Microsoft Learn nesta série C#, talvez já tenha criado uma pasta de projeto para exemplos de código. Se esse for o caso, você pode pular a próxima etapa, que é usada para criar um aplicativo de console na pasta TestProject.
No prompt de comando do Terminal, para criar um novo aplicativo de console em uma pasta especificada, digite o seguinte prompt:
dotnet new console -o ./CsharpProjects/TestProjectEste comando .NET CLI usa um modelo de programa .NET para criar um novo projeto de aplicativo de console C# no local da pasta especificada. O comando cria as pastas CsharpProjects e TestProject para você e usa TestProject como o nome do seu
.csprojarquivo.Se for exibida uma mensagem informando que os arquivos já existem, continue com as próximas etapas. Você reutilizará os arquivos de projeto existentes.
Na visualização EXPLORER, expanda a pasta CsharpProjects .
Você deve ver a pasta TestProject e dois arquivos, um arquivo de programa C# chamado Program.cs e um arquivo de projeto C# chamado TestProject.csproj.
No menu Arquivo de código do Visual Studio, selecione Abrir pasta.
Na caixa de diálogo Abrir pasta , selecione a pasta CsharpProjects e, em seguida, selecione Selecionar pasta.
No modo de exibição EXPLORER, expanda a pasta TestProject e selecione Program.cs.
Exclua as linhas de código existentes.
Você usará este projeto de console C# para criar, compilar e executar exemplos de código durante este módulo.
Feche o painel Terminal.
Use o operador de igualdade
Verifique se você tem o Visual Studio Code aberto e Program.cs exibido no painel Editor.
Nota
Program.cs deve estar vazio. Se não estiver, selecione e exclua todas as linhas de código.
Digite o seguinte código no Editor de Códigos do Visual Studio.
Console.WriteLine("a" == "a"); Console.WriteLine("a" == "A"); Console.WriteLine(1 == 2); string myValue = "a"; Console.WriteLine(myValue == "a");No menu Ficheiro do Visual Studio Code, selecione Guardar.
O arquivo Program.cs deve ser salvo antes de criar ou executar o código.
No painel EXPLORER, para abrir um Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.
Um painel Terminal será aberto. O Terminal deve incluir um prompt de comando mostrando que o Terminal está aberto para o local da pasta TestProject.
No prompt de comando do Terminal, para executar o código, digite dotnet run e pressione Enter.
Nota
Se você vir uma mensagem dizendo "Não foi possível encontrar um projeto para executar", verifique se o prompt de comando do Terminal exibe o local esperado da pasta TestProject. Por exemplo:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Deverá ver o seguinte resultado.
True False False True
Melhorar a verificação da igualdade de cadeia de caracteres usando os métodos auxiliares internos da cadeia de caracteres
Você pode se surpreender que as saídas de Console.WriteLine("a" == "A");linha false . Ao comparar cadeias, as maiúsculas e minúsculas são relevantes.
Além disso, veja esta linha de código:
Console.WriteLine("a" == "a ");
Aqui você adicionou um caractere de espaço no final da cadeia de caracteres. Esta expressão também produzirá false.
Em alguns casos, ter um caractere de espaço antes ou depois do texto pode ser perfeitamente aceitável. No entanto, se você precisar aceitar uma correspondência que não seja exata, você pode "massagear" os dados primeiro. "Massajar" os dados significa que você realiza alguma limpeza antes de realizar uma comparação para igualdade.
Por exemplo, considere o caso em que você está coletando a entrada do usuário dentro de um loop. Depois que cada valor for inserido, você poderá fornecer ao usuário um prompt para determinar se ele deseja continuar, como Do you want to continue (Y/N)?. Se o usuário quiser continuar, ele provavelmente digitará um y ou Y. Você desejará que seu código interprete ambos os valores igualmente, mesmo que y não seja equivalente a Y.
Antes de verificar dois valores de cadeia de caracteres para igualdade, especialmente quando um ou ambos os valores foram inseridos por um usuário, você deve:
- Certificar-se de que ambas as cadeias estão todas em maiúsculas ou todas em minúsculas, ao utilizar o método auxiliar
ToUpper()ouToLower()em qualquer valor de cadeia. - Remova todos os espaços em branco à esquerda ou à direita usando o
Trim()método auxiliar em qualquer valor de cadeia de caracteres.
Você pode melhorar a verificação de igualdade anterior encadeando esses dois métodos auxiliares em ambos os valores, conforme mostrado na seguinte listagem de código:
Substitua o código no Editor de Códigos do Visual Studio com o seguinte código:
string value1 = " a"; string value2 = "A "; Console.WriteLine(value1.Trim().ToLower() == value2.Trim().ToLower());Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código.
Observe que quando você executa o código desta vez, ele gera True.
Use o operador de desigualdade
Utilize o operador de comentário de linha
//para transformar em comentário todo o código do passo anterior.Digite o seguinte código no Editor de Códigos do Visual Studio.
Console.WriteLine("a" != "a"); Console.WriteLine("a" != "A"); Console.WriteLine(1 != 2); string myValue = "a"; Console.WriteLine(myValue != "a");Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código.
Deverá ver o seguinte resultado.
False True True False
Como seria de esperar, o resultado ao usar o operador de desigualdade é o oposto do que você viu ao usar o operador de igualdade. Isso significa que seu código também será ramificado da maneira oposta, que pode ser exatamente o que você deseja.
Avaliar comparações
Ao trabalhar com tipos de dados numéricos, convém determinar se um valor é maior ou menor do que outro valor. Use os seguintes operadores para executar esses tipos de comparações:
- Maior do que
> - Menor do que
< - Maior do que ou igual a
>= - Menor do que ou igual a
<=
Naturalmente, os == operadores e != que você usou para comparar valores de cadeia de caracteres acima também funcionarão ao comparar tipos de dados numéricos.
Use os operadores de comparação
Use o operador
//de comentário de linha para comentar todo o código da tarefa anterior.Digite o seguinte código no Editor de Códigos do Visual Studio.
Console.WriteLine(1 > 2); Console.WriteLine(1 < 2); Console.WriteLine(1 >= 1); Console.WriteLine(1 <= 1);Salve seu arquivo de código e, em seguida, use o Visual Studio Code para criar e executar seu código.
Deverá ver o seguinte resultado:
False True True True
Métodos que devolvem um valor booleano
Alguns métodos retornam um valor booleano (true ou false). No exercício a seguir, você usará um método interno da classe para determinar se uma cadeia de String caracteres maior contém ou não uma palavra ou frase específica que seja significativa para seu aplicativo.
Nota
Alguns tipos de dados têm métodos que realizam tarefas práticas úteis. O String tipo de dados tem muitos deles. Muitos deles devolvem um valor booleano, incluindo Contains(), StartsWith() e EndsWith(). Pode aprender mais sobre os mesmos no módulo do Microsoft Learn, "Manipular dados alfanuméricos através de métodos de Classe de Cadeia em C#".
Usar um método que retorna um Boolean
Utilize o operador de comentário de linha
//para transformar em comentário todo o código do passo anterior.Digite o seguinte código no Editor de Códigos do Visual Studio.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(pangram.Contains("fox")); Console.WriteLine(pangram.Contains("cow"));Salve seu arquivo de código e, em seguida, use o Visual Studio Code para criar e executar seu código.
Deverá ver o seguinte resultado.
True False
O que é a negação lógica?
O termo "Negação Lógica" refere-se ao operador !de negação unária. Algumas pessoas chamam este operador de "não operador". Quando você coloca o ! operador antes de uma expressão condicional (ou qualquer código que é avaliado para um true ou false), ele força seu código a reverter sua avaliação do operando. Quando a negação lógica é aplicada, a avaliação produz true , se o operando avalia para false , e false , se o operando avalia para true.
Aqui está um exemplo que pode ajudá-lo a ver a conexão entre essas ideias. As duas linhas de código a seguir produzem o mesmo resultado. A segunda linha é mais compacta.
// These two lines of code will create the same output
Console.WriteLine(pangram.Contains("fox") == false);
Console.WriteLine(!pangram.Contains("fox"));
Usar o operador Logical Negation
Utilize o operador de comentário de linha
//para transformar em comentário todo o código do passo anterior.Digite o seguinte código no Editor de Códigos do Visual Studio.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(!pangram.Contains("fox")); Console.WriteLine(!pangram.Contains("cow"));Salve seu arquivo de código e, em seguida, use o Visual Studio Code para criar e executar seu código.
Deverá ver o seguinte resultado.
False True
Operador de desigualdade versus negação lógica
O operador != de desigualdade inclui um ! personagem, mas não deve ser confundido com negação lógica. O operador de desigualdade retorna true se seus operandos não forem iguais e retorna false se os operandos forem iguais. Para os operandos dos tipos internos, a expressão x != y produz o mesmo resultado que a expressão !(x == y) (um exemplo de negação lógica).
O exemplo de código a seguir demonstra o uso do != operador:
int a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: False
Recapitulação
Eis os pontos principais a reter daquilo que aprendeu até agora sobre como avaliar expressões booleanas:
- Existem muitos tipos diferentes de expressões que avaliam com o resultado
trueoufalse. - Avalie a igualdade com o operador
==. - A avaliação da igualdade de cadeias de caracteres requer que você considere a possibilidade de que as cadeias de caracteres tenham maiúsculas e minúsculas diferentes e espaços à esquerda ou à direita. Consoante a sua situação, utilize os métodos auxiliares
ToLower()ouToUpper(), e o método auxiliarTrim()para melhorar a probabilidade de duas cadeias serem iguais. - Avalie a desigualdade com o operador
!=. - Avalie as operações maior do que, menor do que e outras semelhantes através de operadores de comparação como
>,<,>=e<=. - Se um método devolver um resultado booleano, pode ser utilizado como uma expressão booleana.
- Utilize o operador de negação lógica
!para avaliar o oposto de uma determinada expressão.