13.07.2015 Views

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

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

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Cursos: Análise, Ciência da Computação e Sistemas <strong>de</strong> InformaçãoProgramação I - <strong>Prof</strong>. AníbalNotas <strong>de</strong> 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 <strong>de</strong> nome taxa, uma taxa percentual, escrita na forma <strong>de</strong>cimal (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 <strong>de</strong> dados numéricos (primitivos) em JavaEm Java, os valores numéricos (aqueles que po<strong>de</strong>m ser usados em operações matemáticas) po<strong>de</strong>m ser<strong>de</strong> seis tipos, divididos em dois grupos:Inteiros – qualquer número sem parte <strong>de</strong>cimal. Ex: -3 2 318 0Nome do Tipo Espaço <strong>de</strong> 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 <strong>de</strong> 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 <strong>de</strong>cimal como int. Se o valorextrapolar os limites do tipo int, será tratado como inteiro muito gran<strong>de</strong> e dará erro <strong>de</strong> compilação. Paraarmazenar um inteiro como long, <strong>de</strong>vemos 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, <strong>de</strong>vido ao sufixo;3000000000 dá o erro <strong>de</strong> 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 - <strong>Prof</strong>. Aníbal - Notas <strong>de</strong> aula 3 1


Regras importantesa) Geralmente, a operação resulta um tipo que é gran<strong>de</strong> 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 <strong>de</strong> dois inteiros é sempre inteiro.Ex: 7 / 2 resulta 3.c) A presença <strong>de</strong> um float ou double na expressão, causa um resultado float ou double.Ex: 7F / 2 resulta 3.5F.d) Quando há mais <strong>de</strong> um operador, as regras <strong>de</strong> priorida<strong>de</strong>s 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 priorida<strong>de</strong>.Ex: (4 + 7) / 2.0 resultará 5.5.Exercício 3.3. Indique o valor e o tipo do resultado <strong>de</strong> 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 <strong>de</strong> atribuição.Po<strong>de</strong>-se combinar uma operação com uma atribuição. Por exemplo, a atribuição n=n+2; po<strong>de</strong> serescrita como n+=2; Os diversos operadores <strong>de</strong> atribuição <strong>de</strong> 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; //<strong>de</strong>slocamento para a direita>>>= a >>> b; a = a >>> b; // <strong>de</strong>slocamento 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 <strong>de</strong> s por 5). s = 3Programação I - <strong>Prof</strong>. Aníbal - Notas <strong>de</strong> aula 3 3


Operadores <strong>de</strong> incremento e <strong>de</strong> <strong>de</strong>crementoÉ muito comum nos programas incrementar 1 a uma variável, o que se po<strong>de</strong> fazer, como já foi visto, <strong>de</strong>duas maneiras. Por exemplo,int m = 10;m = m + 1; // incrementa 1 ao valor atual <strong>de</strong> m, resultando 11 em mm += 1; // m irá para 12Os operadores ++ e -- realizam a tarefa <strong>de</strong> incrementar ou <strong>de</strong>crementar 1.Ex:m++; // mesmo que m = m + 1;m--; // mesmo que m = m – 1;double d = 6.51;d++; // po<strong>de</strong>m ser aplicados a campos <strong>de</strong> ponto flutuanteOs operadores <strong>de</strong> incremento e <strong>de</strong> <strong>de</strong>cremento po<strong>de</strong>m 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 <strong>de</strong>pois éincrementada (ou <strong>de</strong>crementada). Se pré-fixado, a variável é incrementada (ou <strong>de</strong>crementada) e <strong>de</strong>poisutilizada.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 po<strong>de</strong>-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 <strong>de</strong>ntro <strong>de</strong> uma outra instrução. Seestiver sozinha, tanto faz usar pós ou pré-fixação.Ex.double d = 1.5;d++; //aqui po<strong>de</strong>ria ser ++d; que teria o mesmo efeitoA classe MathA classe java.lang.Math <strong>de</strong> 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 <strong>de</strong> usar o nome da classe, conforme mostram osexemplos abaixo. Os métodos static serão estudados em mais <strong>de</strong>talhes 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 <strong>de</strong> 1 a 10.static double sqrt (double a)Retorna um double que é a raiz quadrada positiva <strong>de</strong> a.Ex: double y = 25;System.out.println (Math.sqrt(y)); //Exibe 5.0Programação I - <strong>Prof</strong>. Aníbal - Notas <strong>de</strong> 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 po<strong>de</strong>m ser obtidas pelas chamadas Math.PI e Math.EReunimos na Minibilioteca Java um subconjunto <strong>de</strong> 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. Po<strong>de</strong>rá ser consultada inclusive durante as avaliações.Exercício 3.6. Escrever em Java as expressôes:a + b + c3 Resp:_____________________________________________________________a fórmula <strong>de</strong> Báskara para uma das raízes <strong>de</strong> uma equação do segundo grau:Resp:____________________________________________________________________________Exercício 3.7. Escreva os métodos <strong>de</strong>posita e retira da classe ContaBancaria. O valor do <strong>de</strong>pósito ou dosaque <strong>de</strong>ve 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 <strong>de</strong>ve receber, como parâmetro, aquantida<strong>de</strong> <strong>de</strong> 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 <strong>de</strong>ve receber a distância percorrida como parâmetro.Programação I - <strong>Prof</strong>. Aníbal - Notas <strong>de</strong> aula 3 5


O tipo primitivo charO tipo primitivo char correspon<strong>de</strong> a um único caractere (Unico<strong>de</strong>) escrito entre apóstrofos, que ocupaespaço <strong>de</strong> dois bytes no seu armazenamento.Ex: 'a', 'M', '+', '?'Uma variável po<strong>de</strong> ser do tipo char.Ex:char c = 'C';Caracteres <strong>de</strong> escapeRepresentam caracteres especiais que po<strong>de</strong>m ser atribuídos às variáveis do tipo char e String, oupo<strong>de</strong>m fazer parte <strong>de</strong> 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 Unico<strong>de</strong>hexa<strong>de</strong>cimalEx: A instrução System.out.print(“Universida<strong>de</strong>\ndo Vale\ndo Rio dos Sinos\n”); exibirá onome da Unisinos em três linhas e colocará o cursor na quarta linha.Universida<strong>de</strong>do Valedo Rio dos Sinos-Programação I - <strong>Prof</strong>. Aníbal - Notas <strong>de</strong> aula 3 6

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!