Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estruturas condicionais Prof. Bruno Nogueira Até agora... Estruturas condicionais2 } Vimos estruturas sequenciais de programas } Consideramos sequências perfeitamente encadeadas } Nenhuma decisão era preciso ser tomada } Mas... Nem tudo é assim } Em diversas situações, temos opções de caminhos a seguir nos nossos códigos } Precisamos avaliar as condições e tomar uma decisão } Principalmente, quando lidamos com entrada do usuário Estrutura sequencial x Estrutura condicional Estruturas condicionais3 ? sim não Exemplo Estruturas condicionais4 } Vamos analisar o saldo da sua conta bancária. Se você tem dinheiro aplicado na sua conta, então o banco te paga uma pequena taxa de correção (rendimento). Por outro lado, se você tem um saldo negativo em sua conta, então o banco cobra de você uma taxa de juros e seu saldo fica ainda mais negativo. Exemplo Estruturas condicionais5 } Vamos analisar o saldo da sua conta bancária. Se você tem dinheiro aplicado na sua conta, então o banco te paga uma pequena taxa de correção (rendimento). Por outro lado, se você tem um saldo negativo em sua conta, então o banco cobra de você uma taxa de juros e seu saldo fica ainda mais negativo. Saldo >= 0? Saldo = Saldo – (Multa * Saldo) Saldo = Saldo + (Taxa * Saldo) sim não Comandos Se ... Então ... Senão Estruturas condicionais6 } Vamos traduzir o bloco condicional } Blocos condicionais têm a forma: Saldo >= 0? Saldo = Saldo – (Multa * Saldo) Saldo = Saldo + (Taxa * Saldo) sim não SE Condição é verdadeira ENTÃO Faça ... SENÃO Faça... SE Saldo >= 0 ENTÃO Saldo = Saldo + (Taxa * Saldo) SENÃO Saldo = Saldo – (Multa * Saldo) Comandos Se ... Então ... Senão Estruturas condicionais7 } Em linguagens de programação, tais comandos são possíveis por meio dos blocos IF ... ELSE SE Saldo >= 0 ENTÃO Saldo = Saldo + (Taxa * Saldo) SENÃO Saldo = Saldo – (Multa * Saldo) if (saldo >= 0) saldo = saldo + (taxa * saldo); else saldo = saldo – (multa * saldo); Em Java Comandos if ... else Estruturas condicionais8 } Diretivas if e else são utilizadas, respectivamente para fazer o teste lógico (if (TESTE)) e para especificar o que deve ser feito se o teste falhar (else ...) } Iniciam um novo escopo (nova indentação é recomendada) } É possível executar mais de um comando em if ou else } Comandos simples: uma única linha de código a ser executada } Comandos compostos: mais de uma linha de código é necessária para especificar o que tem que ser executado Comandos if ... else Estruturas condicionais9 } Comandos simples x comandos compostos if (saldo >= 0) saldo = saldo + (taxa * saldo); else saldo = saldo – (multa * saldo); if (saldo >= 0) { System.out.println(“Saldo positivo!”); saldo = saldo + (taxa * saldo); } else { System.out.println(“Saldo negativo!”); saldo = saldo – (multa * saldo); } Comandos simples não precisam de chaves. Nesse caso, compilador considera que deve executar apenas a próxima linha. Comandos compostos precisam de chaves para delimitar onde começa e onde termina o que precisa ser executado. Comandos if ... else Estruturas condicionais10 Comandos if ... else Estruturas condicionais11 Executado se o saldo for >= 0 Executado se o saldo for < 0 Estruturas condicionais12 Estruturas condicionais13 Executado se o saldo for >= 0 Executado se o saldo for < 0 Comandos if ... else Estruturas condicionais14 } Muito cuidado é necessário no uso das chaves! } É “comum” nos esquecermos de usar chaves para delimitar o bloco de comandos a ser executado } Isso pode interferir diretamente nos resultados dos nossos programas! Estruturas condicionais15 Estruturas condicionais16 Somente isso é executado se Saldo < 0 Isso é executado SEMPRE. Gera resultados indesejados. Comandos if ... else – Expressões booleanas Estruturas condicionais17 } O teste de um comando if(Expressao) é sempre uma expressão booleana } Resultado dessa expressão pode ser somente verdadeiro ou falso (true ou false) } Exemplos: if (saldo >= 0) ... if (nota < 6) ... if (temperatura == 60) ... if (velocidade > velocidadeMaxima) ... if (resultado != gabarito) ... if (estaLigado == true) ... Comandos if ... else – Expressões booleanas Estruturas condicionais18 } Em expressões booleanas envolvendo valores de tipos primitivos, usamos os operadores de comparação Notação Matemática Nome Notação Java Exemplo = Igual a == saldo == 0 resposta == ‘s’ ≠ Não igual a != saldo != 0 resposta != ‘s’ > Maior que > saldo > 100 ≥ Maior ou igual a >= nota >= 6 < Menor que < nota < minimo ≤ Menor ou igual a <= nota <= minimo Comandos if ... else – Expressões booleanas Estruturas condicionais19 } Comparações de Strings não usam esses operadores } São de tipo classe } A classe String nos dá dois métodos para comparar valores de strings: equals() e equalsIgnoreCase() String palavra1, palavra2; ... if (palavra1.equals(palavra2)) System.out.println(“São iguais!”); else System.out.println(“São diferentes!”); String palavra1, palavra2; ... if (palavra1.equalsIgnoreCase(palavra2)) System.out.println(“São iguais!”); else System.out.println(“São diferentes!”); O método equals retorna true se palavra1 e palavra2 tiverem EXATAMENTE o mesmo conteúdo O método equalsIgnoreCase retorna true se palavra1 e palavra2 tiverem o mesmo conteúdo, independente de se escritos em maiúsculas e minúsculas Estruturas condicionais20 Expressões booleanas complexas Estruturas condicionais21 } Em alguns casos, queremos fazer mais de um teste booleano em uma mesma expressão } Podemos formar expressões mais complexas por meio da união de expressões mais simples } Exemplo: } Imagine a situação em que você quer alertar um motorista se a pressão do óleo do motor do carro dele está ou não correta. Considera-se correta se a pressão do óleo estiver acima de uma pressão mínima e abaixo de uma pressão máxima if (Pressão Mínima < Pressão atual < Pressão Máxima) ERRADO! Operadores de comparação só podem ser utilizados para comparar dois valores do mesmo tipo (numérico com numérico, lógico com lógico, ...) Expressões booleanas complexas Estruturas condicionais22 } Para combinar expressões simples, podemos usar os operadores lógicos && (and, e) e || (or, ou) } Sintaxe: (SUB_EXPRESSÃO_1) && (SUB_EXPRESSÃO_2) Resulta em true se SUB_EXPRESSÃO_1 E SUB_EXPRESSÃO_2 forem verdadeiras (true) (SUB_EXPRESSÃO_1) || (SUB_EXPRESSÃO_2) Resulta em true se SUB_EXPRESSÃO_1 OU SUB_EXPRESSÃO_2 forem verdadeiras (true) Expressões booleanas complexas Estruturas condicionais23 } Exemplo: } Imagine a situação em que você quer alertar um motorista se a pressão do óleo do motor do carro dele está ou não correta. Considera-se correta se a pressão do óleo estiver acima de uma pressão mínima e abaixo de uma pressão máxima if ((pressao > pressaoMinima) && (pressao < pressaoMaxima) ) System.out.println(“Pressão correta! Boa viagem!”); else System.out.println(“Pressão incorreta! Verifique o óleo!”); Expressões booleanas complexas Estruturas condicionais24 } Exemplo: } Agora, você quer alertar um motorista se a velocidade em que ele trafega não é permitida. Uma velocidade não é permitida se ela é menor que a metade da velocidade máxima ou maior que a velocidade máxima. if ((velocidade < (velMaxima/2)) || (velocidade > velMaxima) ) System.out.println(“Velocidade incorreta!”); else System.out.println(“Velocidade correta! Boa viagem!”); Negação (!) Estruturas condicionais25 } Em Java, quando queremos negar uma expressão booleana, basta precedermos a mesma com uma exclamação! } Uma expressão que teria valor true, quando negada, assume valor false. De maneira análoga, uma expressão que teria valor false, quando negada, assuma valor true } Por exemplo, quando comparando duas strings: String palavra1, palavra2; if (palavra1.equals(palavra2)) System.out.println(“São iguais!”); if (!palavra1.equals(palavra2)) System.out.println(“São diferentes!”); Negação (!) Estruturas condicionais26 } Da mesma forma, podemos fazer equivalências de operadores de comparação utilizando o operador de negação Expressão Equivalente a !( a < b) a >= b !( a <= b) a > b !( a > b) a <= b !( a >= b) a < b !( a == b) a != b !( a != b) a == b Exercício Estruturas condicionais27 } Monte expressões booleanas em Java para os seguintes testes } Se a temperatura é maior ou igual a 37, então está com febre } Se a temperatura é menor que 0, então neva } Se o usuário não digitou o caractere ‘n’, então imprima a mensagem na tela } Se o salário é maior que as despesas ou as economias são maiores que as despesas, então o saldo é positivo } Se a ocupação é maior que a mínima e menor que a máxima, então o teatro tem um público adequado Comandos if ... else Estruturas condicionais28 } O bloco else é opcional } Quando omitido, o programa simplesmente ignora o comando que if especifica, quando a expressão é falsa Saldo >= 0? Saldo = Saldo – (Multa * Saldo) Saldo = Saldo + (Taxa * Saldo) sim não Saldo >= 0? Saldo = Saldo + (Taxa * Saldo) sim não if (saldo >= 0) saldo = saldo + (taxa * saldo); else saldo = saldo – (multa * saldo); System.out.println(“Saldo: ” + saldo); if (saldo >= 0) saldo = saldo + (taxa * saldo); System.out.println(“Saldo: ” + saldo); Blocos if ... else aninhados Estruturas condicionais29 } Um bloco if-else pode conter qualquer tipo de comandos dentro dele mesmo } Inclusive outro bloco if-else } Neste caso, dizemos que temos blocos aninhados – um dentro do outro if (saldo >= 0) { if(taxa > 0) saldo = saldo + (taxa * saldo); } else saldo = saldo – (multa * saldo); if (saldo >= 0) if(taxa > 0) saldo = saldo + (taxa * saldo); else saldo = saldo – (multa * saldo); É possível usar com chaves ou sem chaves. A lógica é a mesma: caso haja comandos de mais de uma linha, as chaves são necessárias. Neste caso, os dois blocos de comando são idênticos semanticamente. Na dúvida, use as chaves! Múltiplos blocos if ... else Estruturas condicionais } Às vezes, temos opções de bifurcação dentro da bifurcação ?sim não ? ? ? nãosi m si m não Múltiplos blocos if ... else Estruturas condicionais31 } Múltiplos ramos if-else nos dão opção dentre diversas ações } Ações são mutuamente exclusivas: apenas uma é executada } Geralmente, se coloca uma ação padrão, executada quando todos os demais testes falham if (Expressão_Booleana_1) Ação 1 else if (Expressão_Booleana_2) Ação 2 ... ... else if (Expressão_Booleana_n) Ação n else Ação Padrão Múltiplos blocos if ... else Estruturas condicionais32 } Exemplo 1 } Exemplo 2 if (numero < 10) System.out.println(“Número < 10”); else if (numero < 50) System.out.println(“Número >= 10 e < 50”); else if (numero < 100) System.out.println(“Número >= 50 e < 100”); else System.out.println(“Número >= 100”); if (saldo < 0) System.out.println(“Saldo Negativo!”); else if (saldo > 0) System.out.println(“Saldo Positivo!”); else System.out.println(“Saldo zerado!”); Exercício Estruturas condicionais33 } Crie um programa em Java que peça ao usuário para digitar a temperatura atual e imprima as seguintes mensagens: } Se temperatura for menor que 0 ºC:“Brrr! Está congelando!” } Se a temperatura for entre 0 e 15 ºC:“Ainda está frio!” } Se a temperatura for entre 15 e 25 ºC:“Está esquentando!” } Se a temperatura for maior ou igual a 25ºC: “Tempo de ir para a praia!” Exercício II Estruturas condicionais34 } Faça um programa em Java que ofereça uma bebida alcoólica ao usuário. Para isso, é necessário checar a idade do mesmo. Se a idade for menor que 18 anos, ele não pode fazer a solicitação. Caso contrário, exiba para ele a lista de bebidas a seguir e peça para escolher. Após a escolha, mostre na tela qual foi a bebida escolhida pelo usuário.As opções são: } Cerveja } Whisky } Vodka } Caipirinha } Tequila
Compartilhar