LP2 Laboratório de Programação 2 Ciência da Computação 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 LP2 Laboratório de Programação 2 Ciência da Computação 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 LP2 Laboratório de Programação 2 Ciência da Computação 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 LP2 Laboratório de Programação 2 Ciência da Computação tipo real Tipo de dados real Elementos: conjunto dos números racionais Operações + adição * multiplicação Relações - subtração / divisão < 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 LP2 Laboratório de Programação 2 Ciência da Computação 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 LP2 Laboratório de Programação 2 Ciência da Computação 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 LP2 Laboratório de Programação 2 Ciência da Computação funções matemáticas - aritméticas algumas abs(x) módulo ou valor absoluto do parâmetro x (|x|) 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 (ex), 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 LP2 Laboratório de Programação 2 Ciência da Computação exemplo (função matemática): import javax.swing.JOptionPane; public class Aplicacao { void executar( ){ float x; double y; radianos String entrada; entrada=JOptionPane.showInputDialog("medida do arco? "); x=Float.parseFloat(entrada); y=Math.sin(x); JOptionPane.showMessageDialog(null," valor do seno= " + y); } } 8 LP2 Laboratório de Programação 2 Ciência da Computação conversão explícita de tipo ( cast) forma geral: (tipo) expressão onde tipo é um tipo primitivo de dados exemplo 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 LP2 Laboratório de Programação 2 Ciência da Computação conversão de tipo ( 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 LP2 Laboratório de Programação 2 Ciência da Computação Tipos primitivos numéricos - resumo Tipos inteiros byte 8 bits short 16 bits int 32 bits long 64 bits Tipos reais float double -128 a 127 -32768 a 32767 -2147483648 a 2147483647 -9223372036854775808 a ...807 32 bits 7 dígitos significativos ordem de grandeza 1038 64 bits 15 dígitos significativos ordem de grandeza 10308 11 LP2 Laboratório de Programação 2 Ciência da Computação 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 LP2 Laboratório de Programação 2 Ciência da Computação 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