Exercício – Avaliar uma expressão
- 11 minutos
A lógica de decisão é usada para estabelecer caminhos alternativos por meio do código, em que a decisão sobre qual caminho seguir se baseia na avaliação de uma expressão. Por exemplo, você pode escrever algum código que execute um de dois caminhos com base na entrada de um usuário. Se o usuário inserir a letra "a", o 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 lugar para começar.
O que é uma expressão?
Uma expressão é qualquer combinação de valores (literais ou variáveis), operadores e métodos que retornam um único valor. Uma instrução é considerada uma instrução completa no C#, e as instruções englobam uma ou mais expressões. Por exemplo, a seguinte ifinstrução contém uma única expressão que retorna um único valor:
if (myName == "Luiz")
Você poderia 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 fins diferentes. Nesse caso, ao desenvolver uma instrução de seleção if, você usará uma expressão que retorna true ou false. Os desenvolvedores se referem a esse tipo de expressão como uma expressão booliana. Quando o código inclui uma expressão booliana, o valor retornado é sempre um valor único true ou false.
As expressões boolianas são importantes porque seu código pode usar essas expressões para decidir qual bloco de código deve ser executado.
Há muitos tipos diferentes de operadores que você pode usar em uma expressão booliana. Por exemplo, a instrução if acima usa o operador == de igualdade para verificar se uma variável de cadeia de caracteres é atribuída a um valor específico. O operador escolhido dependerá dos caminhos de código disponíveis, das condições associadas aos caminhos e da lógica do aplicativo subjacente.
Avaliando igualdade e desigualdade
Uma das avaliações de código mais comuns é uma marca para conferir 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, retornará false.
Por outro lado, talvez você também precise verificar se dois valores não são iguais. Para marcar a desigualdade, você usará o operador != de desigualdade entre os dois valores.
Talvez você se pergunte por que precisa de operadores de igualdade e desigualdade. O motivo ficará mais claro à medida que você aprender a criar instruções de ramificação e começar a escrever código do mundo real. Dois operadores que executam tarefas opostas permitem que você seja mais expressivo e compacto.
Agora é hora de preparar seu ambiente de codificação e começar a escrever código que avalia expressões boolianas.
Preparar o ambiente de codificação
Este módulo inclui atividades práticas que orientam você durante o processo de criação e execução do código de demonstração. Incentivamos você a concluir essas atividades usando o Visual Studio Code como ambiente de desenvolvimento. Usar o Visual Studio Code nessas atividades ajudará você a se sentir mais confortável escrevendo e executando o 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 em outro sistema operacional) para abrir o Visual Studio Code.
No Visual Studio Code, no menu Arquivo, 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 no qual mantém os projetos de código, poderá usar esse local de pasta. Neste 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 aparecer uma caixa de diálogo de segurança perguntando se confia nos autores, selecione Sim.
No Visual Studio Code, no menu Terminal, selecione Novo Terminal.
Observe que o prompt de comando no painel Terminal exibe o caminho da pasta atual. Por exemplo:
C:\Users\someuser\Desktop>Observação
Se você estiver trabalhando no próprio computador em vez de em uma área restrita ou em um ambiente hospedado e tiver concluído outros módulos do Microsoft Learn desta série C#, talvez já tenha criado uma pasta de projeto para exemplos de código. Se esse for o caso, você poderá ignorar a próxima etapa, que será usada para criar o aplicativo de console na pasta TestProject.
No prompt de comando terminal, para criar um novo aplicativo de console em uma pasta especificada, insira o seguinte prompt:
dotnet new console -o ./CsharpProjects/TestProjectEste comando da CLI do .NET usa um modelo de programa .NET para criar o 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 arquivo
.csproj.Se uma mensagem for exibida informando que os arquivos já existem, continue com as próximas etapas. Você reutilizará os arquivos de projeto existentes.
No modo de exibição EXPLORER, expanda a pasta CsharpProjects .
Você deverá ver a pasta TestProject e dois arquivos, um arquivo de programa C# chamado Program.cs e um arquivo de projeto em C# chamado TestProject.csproj.
No Visual Studio Code, no menu Arquivo, selecione Abrir Pasta.
Na caixa de diálogo Abrir Pasta , selecione a pasta CsharpProjects e 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á esse projeto de console C# para criar, compilar e executar exemplos de código durante este módulo.
Feche o painel do Terminal.
Use o operador de igualdade
Verifique se o Visual Studio Code está aberto e se o arquivo Program.cs está sendo exibido no painel do Editor.
Observação
Program.cs deve estar vazio. Se não estiver, selecione e exclua todas as linhas de código.
Digite o código de exemplo a seguir no Editor do Visual Studio Code.
Console.WriteLine("a" == "a"); Console.WriteLine("a" == "A"); Console.WriteLine(1 == 2); string myValue = "a"; Console.WriteLine(myValue == "a");No menu Arquivo do Visual Studio Code, selecione Salvar.
O arquivo Program.cs deve ser salvo antes da compilação ou execução do código.
No painel EXPLORER, para abrir o 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 no local da pasta TestProject.
No prompt de comando do Terminal, para executar o código, digite dotnet run e pressione Enter.
Observação
Se você vir a mensagem "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>A saída a seguir será exibida.
True False False True
Aprimore a verificação de igualdade de cadeia de caracteres usando os métodos auxiliares internos da cadeia de caracteres
Você pode se surpreender com a saída Console.WriteLine("a" == "A"); da linha false. Ao comparar cadeias de caracteres, o uso de maiúsculas e minúsculas faz diferença.
Além disso, considere esta linha de código:
Console.WriteLine("a" == "a ");
Aqui você adicionou um caractere de espaço ao final de uma cadeia de caracteres. Essa 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 precisar aceitar uma correspondência que é inexata, você poderá "moldar" os dados primeiro. "Moldar" os dados significa que você faça uma limpeza antes de executar uma comparação de igualdade.
Por exemplo, considere o caso quando você estiver 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 inserirá y ouY. Você desejará que seu código interprete os dois valores igualmente, mesmo que y não seja equivalente a Y.
Antes de marcar dois valores de cadeia de caracteres para igualdade, especialmente quando um ou ambos os valores foram inseridos por um usuário, você deve:
- Verificar se ambas as cadeias de caracteres são todas maiúsculas ou minúsculas usando o método auxiliar
ToUpper()ouToLower()em qualquer valor de cadeia de caracteres. - Remover qualquer espaço em branco à esquerda ou à direita usando o método auxiliar
Trim()em qualquer valor de cadeia de caracteres.
Você pode aprimorar a verificação de igualdade anterior encadeando esses dois métodos auxiliares em ambos os valores, como mostrado na listagem de código a seguir:
Substitua o código no Editor do Visual Studio Code pelo seguinte código:
string value1 = " a"; string value2 = "A "; Console.WriteLine(value1.Trim().ToLower() == value2.Trim().ToLower());Salve o arquivo de código e use o Visual Studio Code para executar o código.
Observe que, quando você executa o código desta vez, ele gera True.
Use o operador de desigualdade
Use o operador de comentário de linha
//para comentar todo o código da etapa anterior.Digite o código de exemplo a seguir no Editor do Visual Studio Code.
Console.WriteLine("a" != "a"); Console.WriteLine("a" != "A"); Console.WriteLine(1 != 2); string myValue = "a"; Console.WriteLine(myValue != "a");Salve o arquivo de código e use o Visual Studio Code para executar o código.
A saída a seguir será exibida.
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, o 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 que outro valor. Use os operadores a seguir para executar esses tipos de comparações:
- Maior que
> - Menor que
< - Maior que ou igual a
>= - Menor ou igual a
<=
Naturalmente, os operadores == e != usados 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 código de exemplo a seguir no Editor do Visual Studio Code.
Console.WriteLine(1 > 2); Console.WriteLine(1 < 2); Console.WriteLine(1 >= 1); Console.WriteLine(1 <= 1);Salve o arquivo de código e use o Visual Studio Code para compilar e executar o código.
A seguinte saída deve ser exibida:
False True True True
Métodos que retornam um valor booliano
Alguns métodos retornam um valor booliano (true or false). No exercício a seguir, você usará um método interno da classe String para determinar se uma cadeia de caracteres maior contém uma palavra ou frase específica que pode ser significativa para o seu aplicativo.
Observação
Alguns tipos de dados têm métodos que executam tarefas de utilitário bastante úteis. O tipo de dados String tem muitos deles. Vários retornam um valor booliano incluindo Contains(), StartsWith() e EndsWith(). Você pode aprender mais sobre eles no módulo do Microsoft Learn "Manipular dados alfanuméricos usando métodos da classe String no C#".
Usar um método que retorna um booliano
Use o operador de comentário de linha
//para comentar todo o código da etapa anterior.Digite o código de exemplo a seguir no Editor do Visual Studio Code.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(pangram.Contains("fox")); Console.WriteLine(pangram.Contains("cow"));Salve o arquivo de código e use o Visual Studio Code para compilar e executar o código.
A saída a seguir será exibida.
True False
O que é negação lógica?
O termo "negação lógica" refere-se ao operador de negação unário !. Algumas pessoas chamam esse operador de "operador not". Quando você coloca o operador ! antes de uma expressão condicional (ou qualquer código avaliado como 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 é avaliado como false, e false, se o operando for avaliado como 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"));
Use o operador de negação lógica
Use o operador de comentário de linha
//para comentar todo o código da etapa anterior.Digite o código de exemplo a seguir no Editor do Visual Studio Code.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(!pangram.Contains("fox")); Console.WriteLine(!pangram.Contains("cow"));Salve o arquivo de código e use o Visual Studio Code para compilar e executar o código.
A saída a seguir será exibida.
False True
Operador de desigualdade versus negação lógica
O operador de desigualdade != inclui um caractere !, mas não deve ser confundido com negação lógica. O operador de desigualdade retornará true se seus operandos não forem iguais e retornará 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
Aqui estão as principais novidades que você aprendeu sobre a avaliação de expressões boolianas até agora:
- Há muitos tipos diferentes de expressões que são avaliadas como
trueoufalse. - Avalie a igualdade usando o operador
==. - A avaliação da igualdade de cadeias de caracteres exige que você considere a possibilidade de que as cadeias de caracteres tenham diferenças no uso de maiúsculas e minúsculas e de espaços à esquerda ou à direita. Dependendo da sua situação, use os métodos auxiliares
ToLower()ouToUpper()e o método auxiliarTrim()para melhorar a probabilidade de duas cadeias de caracteres serem iguais. - Avalie a desigualdade usando o operador
!=. - Avalie maior que, menor que e operações semelhantes usando operadores de comparação como
>,<,>=e<=. - Se um método retornar um bool, ele poderá ser usado como uma expressão booliana.
- Use o operador de negação lógica
!para avaliar o oposto de uma determinada expressão.