Buscar

Instruções de decisão em C#

Prévia do material em texto

4Instruções de decisão
 9 Instruções de decisão.
152
C# 2013 - Módulo I (online)
4.1. Introdução
Nesta leitura, veremos de que formas é possível instruir o C# a tomar determinadas decisões 
em alguns pontos específicos do programa. Para que esta ou aquela ação seja realizada, o 
programa deve avaliar expressões e, a partir dessa avaliação, especificamos o que deve ser 
feito.
4.2. Instruções de decisão
Para decidirmos qual ação deverá ser tomada em determinada parte de um programa, solicitamos 
que este avalie uma expressão. Caso essa expressão seja avaliada como verdadeira, uma 
sequência de comandos será executada, caso contrário, uma nova decisão poderá ser tomada 
ou outra sequência de instruções poderá ser executada, ou, ainda, nada será executado e a 
próxima linha de comando abaixo do bloco de decisão será executada.
A seguir, serão abordadas as instruções de decisão if / else e switch / case.
4.2.1. If / else
Quando utilizamos uma instrução if, apenas expressões com resultados booleanos podem ser 
avaliadas. Para definir uma instrução if, deve-se empregar a seguinte sintaxe:
if (teste lógico)
{
 Comandos se o teste lógico for verdadeiro
}
else // é opcional
{
 Comandos se o teste lógico for falso
}
O teste lógico precisa estar entre parênteses e pode ser qualquer expressão que retorne 
true ou false. Em caso verdadeiro, o bloco de instruções que se encontra entre as chaves 
({ }) será executado. Se o resultado for falso, o bloco de comandos não será executado, e 
o processamento prossegue para o próximo bloco de comandos, no caso, o else, que será 
executado quando a condição for falsa.
Instruções de decisão
153
As chaves ({ }) do bloco verdadeiro ou do falso poderão ser omitidas caso estes blocos possuam 
apenas uma única linha de instrução, porém, para melhor legibilidade do código, é interessante 
que as chaves sejam utilizadas.
A maneira como empregamos a instrução if em conjunto com a instrução else 
no C# é bastante similar ao seu uso em outras linguagens de programação.
Vejamos no código a seguir alguns exemplos com a instrução if / else:
 private void exemploButton_Click(object sender, EventArgs e)
 {
 //Definir as variáveis
 int a;
 int b; 
 //------------------------
 exemploListBox.Items.Add(“Exemplo 1”);
 a = 20;
 b = 100;
 //Como a condição é verdadeira, o texto será exibido
 if(a < b)
 { 
 exemploListBox.Items.Add(a + “ é menor que “ + b);
 }
 exemploListBox.Items.Add(new string(‘-’, 30));
 //------------------------
 exemploListBox.Items.Add(“Exemplo 2”);
 a = 20;
 b = 10;
154
C# 2013 - Módulo I (online)
 //Como a condição é falsa, o texto NÃO será exibido
 if (a < b)
 {
 exemploListBox.Items.Add(a + “ é menor que “ + b);
 }
 exemploListBox.Items.Add(new string(‘-’, 30));
 //------------------------
 exemploListBox.Items.Add(“Exemplo 3”);
 a = 20;
 b = 10;
 //Como a condição é falsa, será exibido o texto do else
 if (a < b)
 {
 exemploListBox.Items.Add(a + “ é menor que “ + b);
 }
 else 
 {
 exemploListBox.Items.Add(a + “ é maior que “ + b);
 }
 exemploListBox.Items.Add(new string(‘-’, 30));
 //------------------------
 exemploListBox.Items.Add(“Exemplo 4 - com erro”);
 a = 20;
 b = 20;
 //Como a condição é falsa, será exibido o texto do else
 //que nesse caso será um erro
 if (a < b)
 {
 exemploListBox.Items.Add(a + “ é menor que “ + b);
 }
 else
 {
 exemploListBox.Items.Add(a + “ é maior que “ + b);
 }
 exemploListBox.Items.Add(new string(‘-’, 30));
 //------------------------
Instruções de decisão
155
 exemploListBox.Items.Add(“Exemplo 4 - corrigido”);
 a = 20;
 b = 20;
 //Para corrigir esta decisão 
 //precisaremos de mais uma comparação
 if (a < b)
 {
 exemploListBox.Items.Add(a + “ é menor que “ + b);
 }
 else if (a > b)
 {
 exemploListBox.Items.Add(a + “ é maior que “ + b);
 }
 else
 {
 exemploListBox.Items.Add(a + “ é igual a “ + b);
 }
 exemploListBox.Items.Add(new string(‘-’, 30));
 }
O resultado desse código pode ser visto a seguir:
156
C# 2013 - Módulo I (online)
4.2.2. Switch / case
Quando temos diversas instruções if em cascata avaliando uma expressão idêntica, podemos 
usar switch / case, desde que sejam atendidas as seguintes exigências:
 • A expressão avaliada pelo switch tem que ser de um tipo INTEIRO, BOOL, STRING ou 
ENUMERADO;
 • O resultado avaliado tem que ser exato, ou seja, não podemos usar maior, menor, &&, || 
etc.
Vejamos a sintaxe de switch:
switch (expressão) 
{
case valor1:
instruções a executar se a expressão for igual a valor1
break;
case valor2:
instruções a executar se a expressão for igual a valor2
break;
case valor3:
instruções a executar se a expressão for igual a valor3
break;
default
instruções a executar se a expressão for diferente 
 dos valores anteriores
break;
}
O funcionamento da sintaxe de switch pode ser descrito da seguinte forma:
1. A expressão é avaliada;
2. O controle passa para o bloco de código em que valor é igual à expressão;
3. A execução do código é realizada até que se atinja a instrução break;
4. A instrução switch é finalizada;
5. O programa prossegue em sua execução a partir da instrução localizada após a chave de 
fechamento de switch.
Instruções de decisão
157
Apenas nos casos em que não for encontrado um valor igual à expressão, 
as instruções do rótulo default serão executadas. Se tal rótulo não tiver 
sido criado, a execução continuará a partir da instrução imediatamente 
após a chave de fechamento de switch.
A seguir, temos um exemplo do uso de switch / case:
 private void exemploButton_Click(object sender, EventArgs e)
 {
 //Definir as variáveis
 string diaSemana = exemploTextBox.Text;
 string resultado = “”;
 //Verificar a existência de algum valor para a variável diaSemana
 if (diaSemana.Trim() == “”)
 {
 return;
 }
 //Utilizar a instrução switch
 switch (diaSemana)
 {
 case “1”:
 resultado = “Domingo”;
 break;
 case “2”:
 resultado = “Segunda-Feira”;
 break;
 case “3”:
 resultado = “Terça-Feira”;
 break;
 case “4”:
 resultado = “Quarta-Feira”;
 break;
 case “5”:
 resultado = “Quinta-Feira”;
 break;
158
C# 2013 - Módulo I (online)
 case “6”:
 resultado = “Sexta-Feira”;
 break;
 case “7”:
 resultado = “Sábado”;
 break;
 default:
 resultado = “Informe um valor entre 1 e 7”;
 break;
 }
 exemploListBox.Items.Add(resultado);
 exemploListBox.Items.Add(new string(‘-’, 30));
 }
O resultado desse código pode ser visto a seguir:
Instruções de decisão
159
Para executar as mesmas instruções para mais de um valor, deve-se inserir uma lista de 
rótulos case com as instruções localizadas apenas ao final da lista. Se para algum rótulo 
existir uma ou mais instruções associadas, será gerado um erro pelo compilador, impedindo 
que a execução prossiga para os próximos rótulos. Portanto, quando uma opção case possui 
o mesmo resultado de outra opção case, podemos escrever o código da seguinte forma:
 private void exemploButton_Click(object sender, EventArgs e)
 {
 //Definir as variáveis
 string diaSemana = exemploTextBox.Text;
 string resultado = “”;
 //Verificar a existência de algumvalor para a variável diaSemana
 if (diaSemana.Trim() == “”)
 {
 return;
 }
 //Utilizar a instrução switch
 switch (diaSemana)
 {
 case “1”:
 resultado = “Domingo”;
 break;
 case “2”:
 case “3”:
 case “4”:
 case “5”:
 case “6”:
 resultado = “Dia útil”;
 break;
 case “7”:
 resultado = “Sábado”;
 break;
 default:
 resultado = “Informe um valor entre 1 e 7”;
 break;
 }
 exemploListBox.Items.Add(resultado);
 exemploListBox.Items.Add(new string(‘-’, 30));
 }
160
C# 2013 - Módulo I (online)
O resultado desse código pode ser visto a seguir:

Outros materiais