Ir para conteúdo

Seleção If-Else e Switch


Lordfire

Posts Recomendados

Instruções de seleção

Uma instrução de seleção é uma parte de código que altera o fluxo de acordo com o valor de uma condição, ou seja, há um teste para determinar se algo é true ou false e o resultado é processado de acordo com isso. No C#, temos 2 tipos: o bloco if-else e o bloco switch.

 

If-Else

O if-else executa uma instrução com base em um teste que retorne um valor true. Em um exemplo bem simples, eu declaro uma variável lendo da tela e escrevo algo de acordo com o valor dela:

http://pastebin.com/JCxKsKHL

 

São usadas todas as estruturas if-else.

O if inicialmente testa se o número é maior que 0: caso ele seja, escreve na tela que o número é positivo e ignora todo o resto da estrutura; caso não seja, o código é ignorado e pula para o else seguinte.

O else seguinte testa se o número é menor que 0: caso ele seja, escreve na tela que o número é negativo e ignora o resto da estrutura; caso não seja, o código é ignorado e pula para o else seguinte.

O próximo else, que não contém um teste, então é sempre executado quando nenhum dos testes anteriores seja verdadeiro, neste caso se o número for igual a 0, e escrene na tela que o número é neutro.

é possível também usar um if-else dentro do else para obter o mesmo resultado. Este bloco teria exatamente a mesma saída que no exemplo acima:

http://pastebin.com/4PT5DBgP

 

Um bloco if não precisa ter um else. Se, por exemplo, você quer escrever na tela que o número é positivo se for maior que 0, mas não fazer nada caso não seja, você pode simplesmente usar apenas o if:

http://pastebin.com/PJH7EEjj

 

Se quiser também que ele apenas diga se é positivo ou negativo e ignore o zero, basta usar apenas o if e o else if:

http://pastebin.com/nPUs1zP0

 

Em um terceiro caso, se deseja apenas dizer que o número é ou "positivo" ou "neutro ou negativo", você pode fazer da seguinte maneira:

http://pastebin.com/XwPjeN09

 

Aqui, em um exemplo mais complexo e completo, eu escrevo se um caractere informado é letra maiúscula, letra minúscula, número, sinal de pontuação ou nenhum destes:

http://pastebin.com/76wFDyin

As funções que talvez você não conheça estão comentadas. Repare no cascateamento entre um if e outro que está dentro.

 

Existe um "encurtamento" do if (popularmente chamado de if shortcut) que é basicamente uma estrutura if-else para definir um valor de uma forma mais curta e economizando espaço. Por exemplo, você deseja ver se um aluno foi reprovado ou aprovado pegando 2 notas fazendo a média aritmética:

http://pastebin.com/05Dbcm9K

A sintaxe é "<condição> ? <valor caso true> : <valor caso false>". Neste caso, a condição é "(n1 + n2) / 2 >= 7", ou seja, a média das notas lidas for maior ou igual a 7. Caso true, retorna a palavra "aprovado", caso false retorna a palavra "reprovado".

 

Switch

O switch executa uma instrução a partir de uma lista de ações (chamada de seção switch) de acordo com o valor de uma variável. A palavra para o teste se chama case e a ação padrão (que tem função semelhante ao else) se chama default. Em um exemplo bem simplista:

http://pastebin.com/viqQLD4B

 

é possível pular de um case para outro se não houver ações, porém é proibido que as ações não tenham um break antes do próximo case, inclusive na última ação (o default, geralmente). Também é possível usar expressões (repare no 5-2 que equivale a 3):

http://pastebin.com/kNWGVm2a

 

Há também a palavra "goto", que continua a ação em outro case. Cuidado com loops infinitos. Em um exemplo adaptado do site da Microsoft:

http://pastebin.com/pyyuQZXd

 

O preço dos cafés é crescente de acordo com o tamanho: 0.25 para o café pequeno, 0.50 para o grande e 0.75 para p pequeno. Repare o reaproveitamento de código, algo que é bom (mas em tão pequena escala não faz diferença). Veja o mesmo exemplo, com o mesmo resultado, porém sem reaproveitamento de código:

http://pastebin.com/sD5uuq8G

 

O resultado mostrado no final será o mesmo, mas o método para chegar neste resultado muda.

Como o else no bloco do if, o default é completamente opcional. Você pode tratar isso em outro lugar, como neste exemplo do café, há um teste para indicar o preço do café se ele for maior que 0, ou seja, caiu em algum dos cases. é possível omitir o default e usar um else para avisar que o usuário escolheu um número inválido.

 

Utilizar o if em conjunto com o switch é muito eficiente e prático ;)

Editado por Lordfire
Link para o comentário
Compartilhar em outros sites

Muito bom! Também existe uma forma alternativa do uso do if, que você pode usar ao chamar uma função, por exemplo:

 

argumentos ? verdadeiro : falso

 

bool condicao = true;
MessageBox.Show(condicao ? "É verdade!" : "Mas que mentiroso!");

 

Como visto no exemplo acima, caso a variável condicao tenha o valor true, a primeira string "É verdade!" será usada na caixa de mensagem, caso contrário, a string "Mas que mentiroso!" é a que será utilizada na mesma.

 

EDIT: Você também pode colocar uma condição dentro da outra usando esse método, mas fica por sua conta experimentar :)

Editado por Blazingfire
Link para o comentário
Compartilhar em outros sites

Muito bom! Também existe uma forma alternativa do uso do if, que você pode usar ao chamar uma função, por exemplo:

 

argumentos ? verdadeiro : falso

 

bool condicao = true;
MessageBox.Show(condicao ? "É verdade!" : "Mas que mentiroso!");

 

Como visto no exemplo acima, caso a variável condicao tenha o valor true, a primeira string "É verdade!" será usada na caixa de mensagem, caso contrário, a string "Mas que mentiroso!" é a que será utilizada na mesma.

 

EDIT: Você também pode colocar uma condição dentro da outra usando esse método, mas fica por sua conta experimentar :)

Uso bastante mas não achei interessante falar na hora. Adicionando no tópico! :p

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...