Baixe o app para aproveitar ainda mais
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:
Compartilhar