Aprender a criar estruturas de condição é fundamental para programar a lógica de negócio de um sistema. Essas estruturas permitem a execução de diferentes linhas de código (diferentes fluxos de execução) a partir da avaliação de uma condição. Na linguagem C# temos dois recursos com esse propósito: if/else e switch/case.
Neste documento apresentamos a opção if/else e o operador ternário.
if/else
A estrutura condicional if/else é um recurso que indica quais instruções o sistema deve processar de acordo com uma expressão booleana. Assim, o sistema testa se uma condição é verdadeira e então executa comandos de acordo com esse resultado.
Sintaxe do if/else:
if (expressão booleana)
{
// código 1
}
else
{
// código 2
}
Caso a expressão booleana seja verdadeira, as instruções entre chaves presentes no código 1 serão executadas; caso contrário, serão executadas as instruções presentes no código 2.
As chaves, ou delimitadores de bloco, têm a função de agrupar um conjunto de instruções. O uso desses delimitadores é opcional caso haja apenas uma linha de código. Ainda assim, seu uso é recomendado, pois essa prática facilita a leitura e manutenção do código, tornando-o mais legível.
Nota: A declaração do else não é obrigatória. Para muitas situações apenas o if é suficiente para a lógica sendo implementada.else if
Complementar ao if/else temos o operador else if que traz uma nova condição a ser testada no caso de falha no teste da condição anterior.
Sintaxe do else if:
if (expressão booleana 1)
{
// código 1
}
else if (expressão booleana 2)
{
// código 2
}
else
{
// código 3
}
Dessa forma, é testada a expressão booleana 1. Caso ela seja atendida, o bloco de código 1 é executado. Caso não seja, testamos a expressão 2. Sendo atendida, o bloco de código 2 é executado. Não sendo atendida, o programa executa o bloco de código 3.
Saiba que podemos criar vários else if, o que nos possibilita atender a cenários com três ou mais condições a serem avaliadas.
Nota: Em casos com muitos else if, considere o uso da estrutura switch/case, ou mesmo padrões de projeto.Operador ternário
O operador ternário é um recurso para tomada de decisões com objetivo similar ao do if/else mas que é codificado em apenas uma linha.
Sintaxe do operador ternário:
expressão booleana ? código 1 : código 2;
Caso a expressão booleana retorne verdadeiro, é executado o código declarado logo após o ponto de interrogação (?); do contrário, o sistema irá executar o código que vem após os dois pontos (:).
As principais diferenças entre a estrutura condicional if/else e o operador ternário é que esse último, como já mencionado, é descrito em apenas uma linha de código, executando apenas uma instrução, e geralmente está contido em uma instrução maior.
Exemplo prático
Para demonstrar a estrutura condicional if/else, considere um programa que verifica se um aluno foi aprovado, se está em recuperação ou se foi reprovado. Para ser aprovado, o aluno precisa ter média maior ou igual (>=) a 7. Para a recuperação, ele precisa ter média menor (<) que 7 e (&&) maior ou igual (>=) a 5. Por fim, para ser reprovado, precisa ter média menor (<) do que 5.
Note que temos três condições a serem verificadas, o que nos leva à necessidade de uso do if, else if, else.
Exemplo de uso:
double media = 8;
if (media >= 7)
{
Console.WriteLine("Aluno aprovado!");
}
else if (media < 7 && media >=5)
{
Console.WriteLine("Aluno em recuperação!");
}
else
{
Console.WriteLine("Aluno reprovado!");
}
Para demonstrar um exemplo de uso do operador ternário, suponha que precisamos apresentar ao aluno o resultado com base na sua média. Para isso, criamos uma variável que recebe um texto padrão e que depois será incrementado para informar se o aluno está aprovado ou reprovado. Essa concatenação será feita a partir do resultado obtido com o operador ternário, que, neste caso, também nos devolve um texto.
Exemplo de uso:
double media = 8;
string resultado = "Olá aluno, você foi ";
resultado += media >= 7 ? "aprovado." : "reprovado.";
Console.WriteLine(resultado);