Programação I
Aula 4
(Expressões Booleanas e
Expressões de Seleção)
Prof. Gilberto Irajá Müller
Última atualização 17/3/2009
Expressões Booleanas
• O tipo primitivo boolean
• É um tipo de dados primitivo em Java que possui somente dois
valores: true e false
• Exemplo
boolean b = false;
• Uma expressão booleana é aquela cujo resultado é um
tipo booleano (true ou false)
• Podemos distinguir duas formas principais:
• as expressões relacionais e
• as expressões lógicas.
Expressão Relacional
• Permite comparar dois valores através dos operadores
relacionais, como, por exemplo, comparar os valores de
duas expressões aritméticas.
Exemplo:
x > 5 será true se o valor da variável x for superior a 5
a + 7 == 0 será true somente se a variável a tiver valor -7
Expressão Relacional
Expressão Relacional
• Exercício 4.1
Sendo double x = 3.5; float y = 2; boolean vLog =
true; qual o resultado de cada expressão relacional
abaixo?
x >= 0 _________________
x – 1.5 == y _________________
vLog __________________
y != 2 __________________
Expressão Lógica
• É uma expressão que utiliza operador(es) lógico(s) e dá,
também, um resultado true ou false
Expressão Lógica
• Exercício 4.2
Sendo double x = 3.5; float y = 2; boolean vLog =
true; qual o resultado de cada expressão relacional
abaixo?
!vLog _______________
x – 1.5 == y && x <= 0 ________________
x – 1.5 == y || x <= 0 ________________
vLog || x >= 0 && y != 6 _________________
Instruções Condicionais
• Instruções podem ser executadas ou não, dependendo
de certa condição. Isso enriquece a lógica dos
programas e pode ser feito com as instruções if, if-else e
switch.
• Também é chamada de instrução de seleção
• Sintaxe do IF (observe que o primeiro não possui {})
if (condicao)
comando;
if (condicao) {
comando;
}
Instruções Condicionais
• Onde:
condição é qualquer valor ou expressão booleana
comando é qualquer instrução válida da linguagem
• Os comandos somente serão executados se a expressão
de condição for verdadeira
• Caso o comando tenha apenas uma “linha”, então, não
haverá necessidade de colocar bloco { ... }
Instruções Condicionais
• Exemplo com apenas um comando
if (i > 0)
System.out.println(i + “ é um valor positivo”);
• Exemplo com mais de uma linha de comandos
if (d == 5 && i <= 0) {
k += 1;
System.out.println(“d é 5.5 i é negativo!”);
p = Math.pow(2, 3); // 2 elevado na 3
}
Instruções Condicionais
• Exercício 4.3
Escreva um método situacaoIMC() na classe Pessoa,
onde este receberá um valor real e retornará o status de
“Problema”, caso esse número seja maior que 30.0.
Caso contrário, “Normal”.
Instruções Condicionais
• Exercício 4.4
Escreva um método aumentaSalario() para a classe
Funcionário, que receberá um valor real (percentual) e
um valor de bônus como parâmetros. Se o salário atual
for maior que $5000.0, então, o aumento de salário não
será calculado. Para salários abaixo de $1000.0, será
acrescentado o bônus ao salário atual, além do
acréscimo.
Instruções Condicionais
• Sintaxe do IF-ELSE (Observe que o primeiro não
possui {})
if (condicao) (
comando1;
else
comando2;
if (condicao) {
comando1;
}
else {
comando2;
}
Instruções Condicionais
• Exemplo
String msg = “”;
if (k != 0)
msg = “A variável k não é nula”;
else
msg = “A variável k é nula”;
Instruções Condicionais
• Exemplo
if (numPrestacoes > 3) {
juros = precoTabela * 0.1;
precoFinal = precoTabela + juros;
}
else {
precoFinal = precoTabela;
}
Instruções Condicionais
• Exercício 4.5
Crie um método que receba dois números inteiros e
retorne qual o maior número
Instruções Condicionais
• Exercício 4.6
Altere o método situacaoIMC() da classe Pessoa, onde
este receberá um valor real e retornará o status de
“Problema”, caso esse número seja maior que 30.0.
Caso contrário, “Normal”. Utilize IF...ELSE
Instruções Condicionais
• IF...ELSE IF
Exemplo
if (idade < 10)
faixaEtaria = “Criança”;
else if (idade < 18)
faixaEtaria = “Jovem”;
else if (idade < 50)
faixaEtaria = “Adulto”;
else if (idade < 80)
faixaEtaria = “Terceira idade”;
else
faixaEtaria = “Quarta idade”;
Instruções Condicionais
• Exercício 4.7
Altere o método situacaoIMC() e acrescente a seguinte
informação:
•
•
•
•
•
•
Abaixo de 18.5 (“Você está abaixo do peso ideal”)
Entre 18.5 a 24.9 (“Parabéns – você está em seu peso normal”)
Entre 25.0 a 29.9 (“Você está acima de seu peso sobrepeso”)
Entre 30.0 a 34.9 (“Obesidade grau I”)
Entre 35.0 a 39.9 (“Obesidade grau II”)
A partir de 40.0 (“Obesidade grau III”)
Hot Topic
• Comparando objetos
Exemplo:
Pessoa p1 = new Pessoa(“João da Silva”, 1.80, 80.0, 30);
Pessoa p2 = new Pessoa(“João da Silva”, 1.80, 80.0, 30);
if (p1 == p2)
System.out.println(“São iguais!”);
else
System.out.println(“Não são iguais!”);
• RETORNARÁ FALSE, POIS SÃO OBJETOS DIFERENTES, EMBORA
COM OS MESMOS ATRIBUTOS
• NÃO UTILIZE == PARA VERIFICAR SE OS OBJETOS SÃO IGUAIS
Hot Topic
• Comparando objetos
• Consulte na bibliografia o método equals, compareTo e compare
• A alternativa utilizada para comparar objetos é implementar o método
equals, em nosso caso, da classe Pessoa. Solicite ao professor um
exemplo por e-Mail
Hot Topic
• Verificando se uma determinada variável não possui a
referência ao objeto, ou seja, não foi instanciada
Exemplo
Pessoa p1;
Pessoa p2 = new Pessoa(“João da Silva”, 1.80, 80.0, 30);
if (p1 == null) Resposta: ________________
if (p2 == null) Resposta: ________________
Hot Topic
• Comparando objetos do tipo String
• O tipo String não é um tipo primitivo como os numéricos que
vimos (int, double, byte, etc.).
• String é uma classe Java (Java.lang.String). Quando definimos
um string, criamos um objeto do tipo String, o que pode ser
feito de diversas maneiras, pois a classe String possui diversos
construtores sobrecarregados. Destacamos aqui duas formas
usuais:
• String s1 = "Blablu"; // declaração string implícita
• String s2 = new String ("Blablu"); // declaração string explícita
• Sendo objetos, não podemos comparar o conteúdo dos dois
strings com o operador ==. A classe String possui vários
métodos úteis. Um deles é o equals que permite comparar dois
strings.
Hot Topic
Exemplo
if (s1.equals(s2)).... // dará true.
if (s1.equals(“blablu”)) ...//
dará_______porque____________________________
• Para comparar dois strings ignorando a distinção entre
maiúsculas e minúsculas, usa-se o método
equalsIgnoreCase da classe String.
• Exemplo
• if(s1.equalsIgnoreCase(“blablu”)) ... //Agora sim, dará true.
Hot Topic
• Se dois strings não são iguais, um vem antes do outro
no ordenamento lexicográfico (ordem do dicionário), o
que pode ser descoberto com o método compareTo:
string1.compareTo(string2) < 0 indica que o string1 vem
antes do string2 na ordem lexicográfica. Igual a 0,
significa que são exatamente iguais e, maior que 0,
indica que a string1 vem depois da string2.
Exemplo:
if(s1.compareTo(“Bla”)<0)
dará______porque ___________________________________
Hot Topic
• Constantes com nome – final
• Em Java, podemos dar nome a uma constante, através do
modificador final
• É declarada como uma variável, mas deve ser inicializada
obrigatoriamente na declaração, e não poderá mudar de valor
durante o programa
• É convenção usar letras maiúsculas para nome de constantes
• É declarada no início da classe, juntamente com os atributos
Sintaxe:
final tipo nome = valor;
Exemplo:
final double SALARIO_MINIMO = 400.0;
Hot Topic
Exemplo
public void nivelaSalario(){
final double SALARIO_MINIMO = 350.00;
if (salario < SALARIO_MINIMO)
salario = SALARIO_MINIMO;
}
O que o método acima está fazendo?
Métodos
• Referências bibliográficas
• http://inf.unisinos.br/~anibal
• http://www.google.com.br
Download

Nota de Aula