Estrutura de decisão SE / SENÃO (if / else) em C#

Na vida real todos os dias nos deparamos com decisões, por exemplo;

Se eu não tiver prova na segunda, vou tirar o domingo para dormir o dia todo.”

Na sentença acima temos uma condição, logo pensamos que se houver prova obviamente você passara o domingo estudando.

se eu conseguir uma grana neste final de semana, eu vou ao cinema, senão, eu assisto filme em casa pela internet.”

Esta outra sentença temos uma condição senão. Há uma necessidade desta condição pois não é possível saber qual a outra opção caso você não consiga grana, ou seja, a condição de conseguir uma grana pode ser falsa ou verdadeira.

se eu conseguir uma grana neste final de semana, eu vou ao cinema, senão, eu assisto filme em casa pela internet, ou, vou dormir”

Já esta outra sentença temos duas opções caso a sentença de conseguir uma grana grana no final de semana seja falsa. Você poderá optar por assistir um filme em casa ou dormir, isso pode depender de outros fatores.

Na computação estas decisões não são diferentes! A estrutura if / else (se / senão) existente em todas as linguagens de programação está associada a capacidade do computador em tomar decisões. Podemos programar o computador para que em determinada circunstância ele tome decisões e mude o curso do programa. 

Os Operadores Relacionais

As decisões do computador normalmente são tomadas após compararmos uma determinada situação. Portanto, antes de aprendemos a aplicar a estrutura if / else é importante aprendemos os operadores relacionais usados para fazermos estascomparações, que são eles;

==Igual
!=Diferente
<Menor que
>Maior que
<=Menor ou igual
>=Maior ou igual

Agora que conhecemos o operadores, vamos para alguns exemplos de raciocínio lógico.

“João tem 1.87 de altura e Pedro tem 1.73. Quem é maior?”.
O raciocino lógico desta pergunta seria: Se 1.87 é maior que 1.73, então João é maior.

“Apenas maiores de idade podem dirigir, você pode dirigir?”
O raciocino lógico desta pergunta seria: Se minha idade for maior ou igual a 18, então eu posso dirigir.

Estrutura de decisão IF / ELSE em C#

Agora vamos transformar isso em programa de computador usando C#. Como já vimos, o computador é capaz de tomar decisões, mas cabe a nós desenvolvedores programar estas circunstâncias. Em C#, usamos a seguinte estrutura;

if (condição) 
{
  // Código a ser executados caso a condição seja verdadeira
}

Caso seja necessária testar uma condição falsa, a estrutura ficaria assim;

if (condição)
{
  // Código a ser executados caso a condição seja verdadeira
} 
else 
{
  // Código a ser executados caso a condição seja falsa
}

Agora vamos trazer estes exemplos para C#, ficando assim;

“João tem 1.87 de altura e Pedro tem 1.73. Quem é maior?”.

if (1.87 > 1.73)
{
 Console.WriteLine("João é maior");
}


“Apenas maiores de idade podem dirigir, você pode dirigir?”

int idade = 16; // declara uma variável do tipo inteira.
if (minhaIdade >= 18)
{
Console.WriteLine("Posso dirigir");
}
senão
{
Console.WriteLine("Não posso dirigir");
}

Agora vamos para um exemplo no qual o usuário pode interagir;

int idade;

Console.WriteLine("Olá! Informe a sua idade.: ");
idade = Convert.ToInt32(Console.ReadLine()); // Conversão

if (idade >= 18)
{
Console.WriteLine("Posso dirigir");
}
else
{
Console.WriteLine("Não posso dirigir");
}

Console.WriteLine("Pressione uma tecla para encerrar");
Console.ReadKey();

Sua tela ficará assim;

O resultado será:

.

else if – Otimize vários testes seguidos com menos código.

Se apenas um teste de verdadeiro e falso não está sendo suficiente para resolver o seu problema, muito provavelmente você terá que colocar uma estrutura de IF / ELSE dentro de outra, por exemplo;

Supondo que você tenha um programa que verifica o status do estoque de um produto de uma mercado, sendo que existem 3 possíveis status para o estoque;

  • Estoque Maior que 10 itens = Estoque Suficiente, tudo OK
  • Estoque Entre 9 e 5 itens = Estoque abaixo do ideal
  • Estoque Entre 4 e 1 itens = Estoque quase acabando;
  • Estoque sem itens = Estoque esgotado

Uma solução interessante seria este longo teste de IF / ELSE

using System;
					
public class Program
{
  public static void Main()
  {
	Console.WriteLine("Informe o nome do produto");
	var nomeProd = Console.ReadLine();
		
	Console.WriteLine("Informe a quantidade em estoque");
	int estoque = Convert.ToInt16(Console.ReadLine());
		
	if (estoque >= 10)
	{
	  Console.WriteLine("Temos itens suficientes no estoque");	
	}
	else {
	  if (estoque < 10 && estoque >= 5) 
	  {	
            Console.WriteLine("ALERTA! Estoque abaixo do ideal");
	  } 
	  else
	  {
	    if (estoque < 5 && estoque > 1) 
	    {
	      Console.WriteLine("Estoque quase acabando");
	    }
	    else
	    {
	      if (estoque == 0) 
	      {
		Console.WriteLine("Estoque esgotado");
	      }
	    }
	 }
      }
   }
}

Agora, se aplicarmos o elseif este código ficará bem menor. A ideia do elseif é justamente substituir as junções de código que são escritas desta forma:

else
{
if (teste)
{
//instruções
}
}

por esta outra mais simples;

elsif (teste)
{
//instruções
}

O código reescrito ficaria assim;

using System;
					
public class Program
{
  public static void Main()
  {
		
	Console.WriteLine("Informe o nome do produto");
	var nomeProd = Console.ReadLine();
		
	Console.WriteLine("Informe a quantidade em estoque");
	int estoque = Convert.ToInt16(Console.ReadLine());
				
	if (estoque >= 10)
	{
	  Console.WriteLine("Temos itens suficientes no estoque");	
	}
	else if (estoque < 10 && estoque >= 5) 
	{	
	  Console.WriteLine("ALERTA! Estoque abaixo do ideal");
	} 
	else if (estoque < 5 && estoque > 1) 
	{
	  Console.WriteLine("Estoque quase acabando");
	}
	else if (estoque == 0) 
	{
	  Console.WriteLine("Estoque esgotado");
	}
  }
}