programação i aula 4 (expressões booleanas e expressões de seleção) prof. gilberto irajá...
TRANSCRIPT
Programação IAula 4
(Expressões Booleanas eExpressões de Seleção)
Prof. Gilberto Irajá MüllerProf. 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
• Exemploboolean 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 5a + 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 booleanacomando é 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 comandosif (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
Exemploif (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!”);
elseSystem.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
ExemploPessoa 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 TopicExemploif (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 TopicExemplopublic 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