UNISINOS - Centro de Ciências Exatas - ALGORITMOS - Prof. Aníbal

professor.unisinos.br

UNISINOS - Centro de Ciências Exatas - ALGORITMOS - Prof. Aníbal

Cursos: Análise, Ciência da Computação e Sistemas de InformaçãoProgramação I - Prof. AníbalNotas de aula 3EXPRESSÕES ARITMÉTICASAgora, como fazer cálculos matemáticos em nossos métodos. Um primeiro exemplo será o métodoaumentaSalario em nossa classe Funcionario.public void aumentaSalario(double taxa){salario = salario + taxa * salario;}Ele recebe, pelo parâmetro de nome taxa, uma taxa percentual, escrita na forma decimal (ex: 0.12, pararepresentar 12%, ou 0.065, para indicar 6,5%), multiplica essa taxa pelo salário, resultando no valor doaumento, que é somado ao salário atual.Tipos de dados numéricos (primitivos) em JavaEm Java, os valores numéricos (aqueles que podem ser usados em operações matemáticas) podem serde seis tipos, divididos em dois grupos:Inteiros – qualquer número sem parte decimal. Ex: -3 2 318 0Nome do Tipo Espaço de armazenamento Variaçãoint 4 bytes -2.147.483.648 a 2.147.483.647short 2 bytes -32.768 a 32.767long 8 bytes -9.223.372.036.854.775.808 a9.223.372.036.854.775.807byte 1 byte -128 a 127Ponto flutuante – qualquer número real com parte fracionária. Ex: 3.5 0.023 -1234.0Nome do Tipo Espaço de armazenamento Variaçãofloat 4 bytes ±3.402823347E+38 (7 dígitos significativos)double 8 bytes ±1.79769313486231570E+308 (15 díg.significativos)Como Java interpreta um valor numérico?Números Inteiros: Java interpreta um número escrito sem ponto decimal como int. Se o valorextrapolar os limites do tipo int, será tratado como inteiro muito grande e dará erro de compilação. Paraarmazenar um inteiro como long, devemos adicionar o sufixo L ou l ao número.Ex:1147465 é tratado como int, pois está na faixa do tipo int;1147465L é tratado como long, devido ao sufixo;3000000000 dá o erro de compilação integer number too large.Exercício 3.1. Complete as linhas seguintes:-5 é tratado como _____________-34567890987 é tratado como _____________________________________-5L é do tipo _____________"50" é do tipo _____________Programação I - Prof. Aníbal - Notas de aula 3 1


Regras importantesa) Geralmente, a operação resulta um tipo que é grande o suficiente para conter o resultado. Porexemplo, multiplicando um float por um int obtém-se um float.Ex: 4F * 2 resulta 8.0Fb) O resultado da divisão de dois inteiros é sempre inteiro.Ex: 7 / 2 resulta 3.c) A presença de um float ou double na expressão, causa um resultado float ou double.Ex: 7F / 2 resulta 3.5F.d) Quando há mais de um operador, as regras de prioridades serão respeitadas.Ex: 4 + 7 / 2 resultará 7, pois a divisão é feita antes da adição.e) Subexpressões entre parênteses terão maior prioridade.Ex: (4 + 7) / 2.0 resultará 5.5.Exercício 3.3. Indique o valor e o tipo do resultado de cada expressão abaixo:a) 5000000000L + 500 Resp:____________________________________________________________b) 5F * 3.0Resp:______________________________________________________________________c) ( 3 + 4 ) / (2 * 2) Resp:_______________________________________________________________d) 2 * (3.5 + (7 + 2) * 3.0) / 2 Resp:_______________________________________________________Exercício 3.4. Indique que valor será gravado nas respectivas variáveis nas atribuições abaixo, ouinforme se é operação inválida e por quê.double x = 3 * 5; //_________________________________________________________x = x + 1; //________________________________________________________________int i = 5 / 2f; //___________________________________________________________Operadores de atribuição.Pode-se combinar uma operação com uma atribuição. Por exemplo, a atribuição n=n+2; pode serescrita como n+=2; Os diversos operadores de atribuição de Java são mostrados na tabela seguinte:Operador Exemplo Significado= a = b + c; atribuição simples+= a += b; a = a + b;-= a -= b; a = a – b;/= a /= b; a = a / b;*= a *= b; a = a * b;%= a %= b; a = a % b;^= a ^= b; a = a ^ b; //OU exclusivo (XOR) bit-a-bit&= a &= b; a = a & b; //E (AND) bit-a-bit|= a |= b; a = a | b; //OU (OR) bit-a-bit b; a = a >> b; //deslocamento para a direita>>>= a >>> b; a = a >>> b; // deslocamento para a direita, preenchendo com zerosEx:int k = 6; int s = 2;s += k; // mesmo que s = s + k; s = 8, k = 6s %= 5; // mesmo que s = s % 5; (resto da divisão de s por 5). s = 3Programação I - Prof. Aníbal - Notas de aula 3 3


Operadores de incremento e de decrementoÉ muito comum nos programas incrementar 1 a uma variável, o que se pode fazer, como já foi visto, deduas maneiras. Por exemplo,int m = 10;m = m + 1; // incrementa 1 ao valor atual de m, resultando 11 em mm += 1; // m irá para 12Os operadores ++ e -- realizam a tarefa de incrementar ou decrementar 1.Ex:m++; // mesmo que m = m + 1;m--; // mesmo que m = m – 1;double d = 6.51;d++; // podem ser aplicados a campos de ponto flutuanteOs operadores de incremento e de decremento podem ser pós-fixados, quando vêm colocados após avariável, ou pré-fixados, quando vêm antes. Se pós-fixado, a variável é utilizada e depois éincrementada (ou decrementada). Se pré-fixado, a variável é incrementada (ou decrementada) e depoisutilizada.Ex: o trechoint i = 5;System.out.println(++i + “exibirá 6 6 7“ + i++ + “ “ + i);Exercício 3.5. Que valores serão exibidos pelo trecho abaixo?int a = 15;int b = 4;int c = a++ + --b;System.out.println(a + “ “ + b + “ “ + c );Resp:______________________________________________________________________________Como pode-se observar no exemplo e exercício anterior, a diferença entre pós e pré-fixado só temsignificado quando a variável afetada pelo operador está inserida dentro de uma outra instrução. Seestiver sozinha, tanto faz usar pós ou pré-fixação.Ex.double d = 1.5;d++; //aqui poderia ser ++d; que teria o mesmo efeitoA classe MathA classe java.lang.Math de Java, possui diversos métodos que implementam operações matemáticasúteis. Seu uso dispensa o comando import pois ela é carregada automaticamente. Seus métodos sãostatic, o que indica que na sua chamada teremos de usar o nome da classe, conforme mostram osexemplos abaixo. Os métodos static serão estudados em mais detalhes em capítulo futuro. Algunsmétodos da classe Math:static double random( )Retorna um double randômico no intervalo [0, 1.0).Ex: double r = Math.random(); // grava em r um randômicoEx: int i = 1 + (int) (Math.random() * 10) // grava em i um randômico// obtido no intervalo de 1 a 10.static double sqrt (double a)Retorna um double que é a raiz quadrada positiva de a.Ex: double y = 25;System.out.println (Math.sqrt(y)); //Exibe 5.0Programação I - Prof. Aníbal - Notas de aula 3 4


static double pow (double b, double e)Eleva a base b ao expoente e, retornado double.Ex: double p = Math.pow(2, 3); // atribui 8.0 a pAs constantes e e da MatemáticaEstão presentes na classe Math, são double e podem ser obtidas pelas chamadas Math.PI e Math.EReunimos na Minibilioteca Java um subconjunto de métodos da classe Math que iremos usar ao longoda disciplina. Ela está disponível em http://inf.unisinos.br/~anibal. Baixe-a, imprima e leve sempre para aaula. Poderá ser consultada inclusive durante as avaliações.Exercício 3.6. Escrever em Java as expressôes:a + b + c3 Resp:_____________________________________________________________a fórmula de Báskara para uma das raízes de uma equação do segundo grau:Resp:____________________________________________________________________________Exercício 3.7. Escreva os métodos deposita e retira da classe ContaBancaria. O valor do depósito ou dosaque deve ser passado como parâmetro para o respectivo método.Exercício 3.8. Escreva o método abastece da classe Carro. O método deve receber, como parâmetro, aquantidade de combustível a ser adicionada a que já existe no tanque.Exercício 3.9. O método anda da classe Carro, simula o comportamento do carro ao andar certadistância em quilômetros, gastando combustível do tanque, com base no seu consumo médio. Escreva ométodo, que deve receber a distância percorrida como parâmetro.Programação I - Prof. Aníbal - Notas de aula 3 5


O tipo primitivo charO tipo primitivo char corresponde a um único caractere (Unicode) escrito entre apóstrofos, que ocupaespaço de dois bytes no seu armazenamento.Ex: 'a', 'M', '+', '?'Uma variável pode ser do tipo char.Ex:char c = 'C';Caracteres de escapeRepresentam caracteres especiais que podem ser atribuídos às variáveis do tipo char e String, oupodem fazer parte de um string.Escape\b\n\t\r\\\'\"\ddd\uddd\xddSignificadoretrocesso (backspace)nova linhatabulação (tab)retorno ao início da linhabarra invertidaapóstrofoaspaso caractere que representa o valor octal dddcaractere UnicodehexadecimalEx: A instrução System.out.print(“Universidade\ndo Vale\ndo Rio dos Sinos\n”); exibirá onome da Unisinos em três linhas e colocará o cursor na quarta linha.Universidadedo Valedo Rio dos Sinos-Programação I - Prof. Aníbal - Notas de aula 3 6

More magazines by this user
Similar magazines