Lordfire 309 Postado Dezembro 28, 2012 Share Postado Dezembro 28, 2012 (editado) 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 Dezembro 30, 2012 por Lordfire Link para o comentário Compartilhar em outros sites More sharing options...
Blazingfire 13 Postado Dezembro 29, 2012 Share Postado Dezembro 29, 2012 (editado) 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 Dezembro 29, 2012 por Blazingfire Link para o comentário Compartilhar em outros sites More sharing options...
Lordfire 309 Postado Dezembro 30, 2012 Autor Share Postado Dezembro 30, 2012 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! Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados