Problema proposto Em um torneio de futebol a pontuação foi definida da seguinte maneira: vitória por goleada 6 pontos; vitória simples 3 pontos; empate 1 ponto. Como determinar a quantidade mínima de jogos necessários para que um time complete exatamente uma dada quantidade de pontos? 1
especificação objetivo: obter a quantidade mínima de jogos para que um time complete exatamente uma determinada quantidade de pontos. inf inicial: a quantidade de pontos (uma entrada ). inf final: a quantidade mínima de jogos necessários (uma saída ). 2
método de resolução realizar a entrada (quantidade de pontos); dividir a quantidade de pontos por 6 (o quociente será a quantidade de vitórias por goleada) e obter o resto dessa mesma divisão; dividir o resto obtido por 3 (o quociente será a quantidade de vitórias simples e o resto será a quantidade de empates); somar: quantidade de vitórias por goleada + quantidade de vitórias simples + quantidade de empates (o resultado será a resposta procurada: quantidade mínima de jogos); realizar a saída (quantidade mínima de jogos). proposta elabore e implemente um programa Java que represente esse método de resolução; utilize como modelo o programa comentado na aula anterior (tela 28 do módulo 1). 3
tipo real Tipo de dados real Elementos: conjunto dos números racionais Operações + adição - subtração * multiplicação / divisão Relações < menor > maior = igual diferente menor ou igual maior ou igual Constantes ponto fixo- representação usual: 1.76-0.002 ponto flutuante- 6.023E23 4.1E10 Domínio Depende da linguagem de programação (Java oferece dois tipos: float e double) 4
conversão de tipos observações - linguagem Java observação 1: numa operação aritmética em que um dos operandos é de tipo float e o outro é de tipo int, o sistema realiza a conversão do int para float. observação 2: numa atribuição em que o alvo é uma variável int e a expressão resulta um valor float, o sistema não realiza a conversão automática de float para int ( perdendo-se a parte fracionária do valor resultante), a conversão (se desejada) deverá ser explícita. observação 3: numa atribuição em que o alvo é uma variável float e a expressão resulta um valor int, o sistema realiza a conversão de int para float. 5
observação 1: numa operação aritmética em que um dos operandos é de tipo float e o outro é de tipo int, o sistema realiza a conversão do int para float. observação 2: numa atribuição em que o alvo é uma variável int e a expressão resulta um valor float, o sistema não realiza a conversão automática de float para int ( perdendo-se a parte fracionária do valor resultante), a conversão (se desejada) deverá ser explícita. observação 3: numa atribuição em que o alvo é uma variável float e a expressão resulta um valor int, o sistema realiza a conversão de int para float. import javax.swing.joptionpane; public class Aplicacao { void executar( ){ int a,b; float x,y; a=integer.parseint(joptionpane.showinputdialog("valor a? ")); x=float.parsefloat(joptionpane.showinputdialog("valor x? ")); b=(int)(a+x); y=a+x; JOptionPane.showMessageDialog(null," valor de b= " + b); JOptionPane.showMessageDialog(null," valor de y= " + y); 6
funções matemáticas - aritméticas abs(x) módulo ou valor absoluto do parâmetro x ( x ) algumas atan(x) medida do arco cuja tangente é o valor dado como argumento x (tangente inversa). cos(x) co-seno do parâmetro x (radianos). exp(x) valor de e elevado à potência x (e x ), onde e é o número de Napier, aproximadamente igual a 2,7182818. log(x) logaritmo natural de x (logaritmo com base e). pow(x,p) valor da potência x elevado a p. sin(x) valor do seno do parâmetro x (radianos). sqrt(x) raiz quadrada do parâmetro x. 7
exemplo (função matemática): import javax.swing.joptionpane; public class Aplicacao { void executar( ){ float x; double y; String entrada; radianos entrada=joptionpane.showinputdialog("medida do arco? "); x=float.parsefloat(entrada); y=math.sin(x); JOptionPane.showMessageDialog(null," valor do seno= " + y); 8
conversão explícita de tipo ( cast) exemplo forma geral: (tipo) expressão onde tipo é um tipo primitivo de dados import javax.swing.joptionpane; public class Aplicacao { void executar( ){ int m; double x,y; x=double.parsedouble(joptionpane.showinputdialog("valor x? ")); y=double.parsedouble(joptionpane.showinputdialog("valor y? ")); m= (int) x + (int) y; JOptionPane.showMessageDialog(null,"soma das partes inteiras " + m); 9
conversão de tipo (cast( cast) exemplo import javax.swing.joptionpane; public class Aplicacao { void executar( ){ int m; double x,y; x=double.parsedouble(joptionpane.showinputdialog("valor real x? ")); m= (int) x; y= x m; JOptionPane.showMessageDialog(null,"parte inteira " + m); JOptionPane.showMessageDialog(null,"parte fracionaria " + y); scr.println("parte inteira: "+ m); scr.println("parte fracionaria: "+ y); 10
Tipos primitivos numéricos - resumo Tipos inteiros byte 8 bits -128 a 127 short 16 bits -32768 a 32767 int 32 bits -2147483648 a 2147483647 long 64 bits -9223372036854775808 a...807 Tipos reais float 32 bits 7 dígitos significativos ordem de grandeza 10 38 double 64 bits 15 dígitos significativos ordem de grandeza 10 308 11
Tarefa proposta Elabore um programa Java que receba as medidas dos dois catetos de um triângulo retângulo e exiba como resultados: a medida da área e a medida do perímetro desse triângulo. Observações: área= produto das medidas dos dois catetos hipotenusa= raiz quadrada da soma dos quadrados dos dois catetos perímetro= soma das medidas dos dois catetos mais a medida da hipotenusa. 12
Tarefa proposta Elabore um programa Java que receba os valores de preços de um produto antes e depois de um reajuste e exiba como resultado a taxa (%) de tal reajuste. Observação: a taxa deve ser calculada pela expressão: (preço novo preço anterior)/ preço anterior x 100 13