...
método imprimeMédia que imprime a média final do aluno, dizendo se ele foi aprovado ou repro- vado. Em seguida, escreva uma
classe TestaAluno2 que verifica se a
classe Aluno2 calcula as médias corretamente. 32 CAPÍTULO 5. MÉTODOS COM VÁRIOS PARÂMETROS Exemplo de utilização da
classe: Aluno2 aluno new Aluno2() aluno.recebeNota1(5.0) aluno.recebeNota2(7.0) aluno.recebeNota3(9.0) aluno.recebeNota4(7.0) aluno.imprimeMedia() Média: 7.0 aprovado. Capítulo 6 if else Encaixados Quais novidades veremos neste capítulo? novidade: if else encaixados exercício para reforçar o que aprendemos até agora. No Capítulo 4, vimos pela primeira vez o conceito de desvio condicional através dos comandos if e else. Entretanto, vimos exemplos iniciais onde apenas um comando simples era executado, no caso, comandos de impressão. Na prática, comandos if e else podem ser encaixados de forma a criar estruturas muito complexas. Para isto, veremos inicialmente como criar blocos de comandos através do seguinte exemplo: if (CONDIÇÃO) / / início do bloco COMANDO1 COMANDO2 COMANDOn Neste trecho de código, caso a CONDIÇÃO seja verdadeira, os comandos, de 1 a n, são executados seqüen- cialmente. Veremos a seguir que é comum que alguns destes comandos sejam também comandos de desvio condicional. Vamos iniciar programando uma
classe para representar um triângulo retângulo. Ela contém um
método que, dados os comprimentos dos lados do triângulo, verifica se o mesmo é retângulo ou não. class TrianguloRetângulo void verificaLados ( int a int b int c ) if ( a b c != 0) / / nenhum lado pode ser nulo if ( aa bb + cc )
System out println ( Triângulo retângulo ) if (bb aa + cc )
System out println ( Triângulo retângulo ) 33 34 CAPÍTULO 6. IF ELSE ENCAIXADOS if ( cc aa + bb)
System out println ( Triângulo retângulo ) O
método acima pode ser chamado da seguinte forma: TrianguloRetângulo r new TrianguloRetângulo ( ) r verificaLados (1 1 1) r verificaLados (3 4 5) Limitações: 1. mesmo que um if seja verdadeiro, ele executa os outros ifs. Em particular, se tivéssemos um triângulo retângulo para o qual vários desses ifs fossem verdadeiros, ele imprimiria esta mensagem várias vezes (neste exemplo específico, isto não é possível) 2. este
método só imprime uma mensagem se os dados correspondem às medidas de um triângulo retângulo, se não é um triângulo retângulo, ele não imprime nada. Através do uso do else podemos imprimir mensagens afirmativas e negativas: class TrianguloRetângulo2 void verificaLados ( int a int b int c ) if ( a b c != 0) / / nenhum lado pode ser nulo if ( aa bb + cc )
System out println ( Triângulo retângulo ) else if (bb aa + cc )
System out println ( Triângulo retângulo ) else if ( cc aa + bb)
System out println ( Triângulo retângulo ) else
System out println ( Não é triângulo retângulo ) else
System out println ( Não é triângulo pois possui lado de comprimento nulo ) Caso sejam necessários outros
métodos, como um para o cálculo de perímetro, é interessante colocar os lados como atributos da
classe. class TrianguloRetângulo3 int a b c void carregaLados ( int l1 int l2 int l3 ) a l1 b l2 c l3 35 int calculaPerímetro () return a + b + c void verificaLados () if ( a b c != 0) / / nenhum lado pode ser nulo if ( aa bb + cc )
System out println ( Triângulo retângulo ) else if (bb aa + cc )
System out println ( Triângulo retângulo ) else if ( cc aa + bb)
System out println ( Triângulo retângulo ) else
System out println ( Não é triângulo retângulo ) else
System out println ( Não é triângulo pois possui lado de comprimento nulo ) Exercícios 1. Você foi contratado por uma agência de viagens para escrever uma
classe em Java para calcular a conver- são de reais para dólar de acordo com a taxa de compra e a taxa de venda. Para isso, escreva uma
classe ConversorMonetário que inclua os seguintes
métodos: (a) defineTaxaCompra() e defineTaxaVenda() (b) imprimeTaxas() que imprime o valor das 2 taxas de conversão (c) vendeDólar() que recebe uma quantia em dólares e devolve o valor correspondente em reais (d) compraDólar() que recebe uma quantia em dólares e devolve o valor correspondente em reais. Em seguida, escreva uma
classe TestaConversorMonetário que define diferentes taxas de compra e venda de dólares e, para cada taxa de conversão, realiza operações de compra e venda. 2. Escreva uma
classe Baskara que possui 3 atributos do tipo
double correspondentes aos coeficientes a, b e c de uma equação do segundo grau. Escreva um
método para carregar valores nestes atributos e, em seguida, escreva os 4
métodos seguintes: (a) delta() deve calcular o ? da fórmula de Baskara (b) númeroDeRaízesReais() deve devolver um inteiro indicando quantas raízes reais a equação pos- sui (c) imprimeRaízesReais() deve imprimir as raízes reais 36 CAPÍTULO 6. IF ELSE ENCAIXADOS (d) imprimeRaízesImaginárias() deve imprimir as raízes imaginárias. Para calcular a raiz quadrada, você pode utilizar o
método java.lang.Math.sqrt(
double x), que recebe um
double como parâmetro e devolve outro...