Você está na página 1de 34

Estruturas condicionais

Prof. Bruno Nogueira


Até agora...
} 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

2 Estruturas condicionais
Estrutura sequencial x Estrutura condicional

sim não
?

3 Estruturas condicionais
Exemplo
} 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.

4 Estruturas condicionais
Exemplo
} 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.

sim Saldo não


>= 0?

Saldo = Saldo + Saldo = Saldo –


(Taxa * Saldo) (Multa * Saldo)

5 Estruturas condicionais
Comandos Se ... Então ... Senão
} Vamos traduzir o bloco condicional
sim Saldo não
>= 0?
Saldo = Saldo + Saldo = Saldo –
(Taxa * Saldo) (Multa * Saldo)

} Blocos condicionais têm a forma:


SE Condição é verdadeira SE Saldo >= 0
ENTÃO Faça ... ENTÃO Saldo = Saldo + (Taxa * Saldo)
SENÃO SENÃO
Faça... Saldo = Saldo – (Multa * Saldo)

6 Estruturas condicionais
Comandos Se ... Então ... Senão
} 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)

Em Java

if (saldo >= 0)
saldo = saldo + (taxa * saldo);
else
saldo = saldo – (multa * saldo);

7 Estruturas condicionais
Comandos if ... else
} 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

8 Estruturas condicionais
Comandos if ... else
} Comandos simples x comandos compostos
Comandos simples não
if (saldo >= 0) precisam de chaves.
saldo = saldo + (taxa * saldo); Nesse caso, compilador
else considera que deve
saldo = saldo – (multa * saldo); executar apenas a
próxima linha.
if (saldo >= 0)
{
System.out.println(“Saldo positivo!”);
Comandos compostos
saldo = saldo + (taxa * saldo);
precisam de chaves
}
para delimitar onde
else
começa e onde termina
{
o que precisa ser
System.out.println(“Saldo negativo!”);
executado.
saldo = saldo – (multa * saldo);
}
9 Estruturas condicionais
Comandos if ... else

10 Estruturas condicionais
Comandos if ... else

Executado se o saldo for >= 0

Executado se o saldo for < 0

11 Estruturas condicionais
12 Estruturas condicionais
Executado se o saldo for >= 0

Executado se o saldo for < 0

13 Estruturas condicionais
Comandos if ... else
} 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!

14 Estruturas condicionais
15 Estruturas condicionais
Somente isso é executado
se Saldo < 0

Isso é executado SEMPRE. Gera resultados indesejados.

16 Estruturas condicionais
Comandos if ... else – Expressões booleanas
} 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) ...

17 Estruturas condicionais
Comandos if ... else – Expressões booleanas
} Em expressões booleanas envolvendo valores de tipos
primitivos, usamos os operadores de comparação

Notação Nome Notação Exemplo


Matemática Java
= 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

18 Estruturas condicionais
Comandos if ... else – Expressões booleanas
} 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; String palavra1, palavra2;


... ...
if (palavra1.equals(palavra2)) if (palavra1.equalsIgnoreCase(palavra2))
System.out.println(“São iguais!”); System.out.println(“São iguais!”);
else else
System.out.println(“São diferentes!”); System.out.println(“São diferentes!”);

O método equals retorna true se O método equalsIgnoreCase retorna


palavra1 e palavra2 tiverem true se palavra1 e palavra2 tiverem o
EXATAMENTE o mesmo conteúdo mesmo conteúdo, independente de se
escritos em maiúsculas e minúsculas
19 Estruturas condicionais
20 Estruturas condicionais
Expressões booleanas complexas
} 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, ...)
21 Estruturas condicionais
Expressões booleanas complexas
} 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)

22 Estruturas condicionais
Expressões booleanas complexas
} 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!”);

23 Estruturas condicionais
Expressões booleanas complexas
} 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!”);

24 Estruturas condicionais
Negação (!)
} 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 (!palavra2.equals(palavra2)
System.out.println(“São diferentes!”);

25 Estruturas condicionais
Negação (!)
} 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

26 Estruturas condicionais
Exercício
} 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

27 Estruturas condicionais
Comandos if ... else
} O bloco else é opcional
} Quando omitido, o programa simplesmente ignora o comando
que if especifica, quando a expressão é falsa

sim Saldo não sim Saldo não


>= 0? >= 0?
Saldo = Saldo + Saldo = Saldo – Saldo = Saldo +
(Taxa * Saldo) (Multa * Saldo) (Taxa * Saldo)

if (saldo >= 0) if (saldo >= 0)


saldo = saldo + (taxa * saldo); saldo = saldo + (taxa * saldo);
else System.out.println(“Saldo: ” + saldo);
saldo = saldo – (multa * saldo);
System.out.println(“Saldo: ” + saldo);
28 Estruturas condicionais
Blocos if ... else aninhados
} 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 (saldo >= 0)
if(taxa > 0) if(taxa > 0)
saldo = saldo + (taxa * saldo); saldo = saldo + (taxa * saldo);
} else
else saldo = saldo – (multa * saldo);
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!
29 Estruturas condicionais
Múltiplos blocos if ... else
} Às vezes, temos opções de bifurcação dentro da
bifurcação

não
sim
?

si não
m ?

si não
m ?

Estruturas condicionais
Múltiplos blocos if ... else
} 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

31 Estruturas condicionais
Múltiplos blocos if ... else
} Exemplo 1
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”);

} Exemplo 2
if (saldo < 0)
System.out.println(“Saldo Negativo!”);
else if (saldo > 0)
System.out.println(“Saldo Positivo!”);
else
System.out.println(“Saldo zerado!”);

32 Estruturas condicionais
Exercício
} 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!”

33 Estruturas condicionais
Exercício II
} 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
34 Estruturas condicionais

Você também pode gostar