Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor...

34
Operadores e Estruturas de Decisão Leonardo Gresta Paulino Murta [email protected]ff.br

Transcript of Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor...

Page 1: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

OperadoreseEstruturasdeDecisão

[email protected]

Page 2: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Auladehoje...•  Operadores

– Aritmé=cos(usadosemcontas)–  Relacionais(usadosemcomparaçõesnuméricas)–  Lógicos(usadosemcomparaçõeslógicas)– Deatribuição(armazenamentodevaloresemvariáveis)

•  Estruturasdedecisão–  If...then–  If...then...else–  Switch...case

Leonardo Murta Operadores e Estruturas de Decisão 2

Page 3: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Operadoresaritmé=cos

Leonardo Murta Operadores e Estruturas de Decisão 3

Operador Exemplo Prioridade

(expr) (1+2)*3à9 1

var++ i++ 2

var-- j-- 2

++var ++i 3

--var --j 3

+expr +15 3

-expr -(5+3)à-8 3

* 5*3à15 4

/ 5/3à1 4

% 5%3à2 4

+ 5+3à8 5

- 5-3à2 5

Page 4: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Operadoresaritmé=cos•  Operadorescomamesmaprioridade(precedência)– Analisadosdaesquerdaparaadireita

•  Aritmé=cadeinteiros– Numeradoredenominadorinteiros– Resultadoésomenteaparteinteiradadivisão

•  Aritmé=caemmodomisto– Numeradoroudenominadorreal– Resultadofracionário

Leonardo Murta Operadores e Estruturas de Decisão 4

Page 5: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exemplo•  Considerandoint x = 511;

double y = 9.2 – (++x – 14.0 / 7.0) + 14.0 * 0.1;

•  Resoluçãodey y = 9.2 – (512 – 14.0 / 7.0) + 14.0 * 0.1 y = 9.2 – (512 – 2.0) + 14.0 * 0.1

y = 9.2 – 510.0 + 14.0 * 0.1

y = 9.2 – 510.0 + 1.4

y = – 500.8 + 1.4

y = – 499.4

Leonardo Murta Operadores e Estruturas de Decisão 5

Page 6: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

TypeCas3ng•  Emalgumassituaçõesoprogramadordesejatransformaro=podeumaexpressão–  Paraisso,bastaprecederaexpressãopor“(=po)”–  TypeCas3ngtemprioridadesuperiora*,/e%

•  Passarumrealparainteiro–  floata=5.1f;–  intx=(int)a;–  xvale5

•  Passarinteiroparareal–  intb=5;intc=2;–  floaty=(float)b/c;–  yvale2.5

Leonardo Murta Operadores e Estruturas de Decisão 6

Page 7: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exemplo•  Considerandoint x = (int) (3.3 / ( 5/2 ) – 5); int y = (int) 3.3 / ( 5/2 ) – 5;

•  Resoluçãodex x = (int) (3.3 / ( 2 ) – 5) x = (int) (1.65 – 5) x = (int) (– 3.35) x = – 3

•  Resoluçãodey y = (int) 3.3 / ( 2 ) – 5 y = 3 / 2 – 5 y = 1 – 5 y = – 4

Leonardo Murta Operadores e Estruturas de Decisão 7

Page 8: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Funçõesmatemá=cas•  AclasseMath

– Contémconstantes(PIenúmerodeEuler)– Contémdiversasfunçõesmatemá=cas– Nãoénecessárioimportaroseupacote,java.lang,poisestásempredisponível

•  Constantes– Math.PI=3.141592653589793– Math.E=2.718281828459045

Leonardo Murta Operadores e Estruturas de Decisão 8

Page 9: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Funçõesmatemá=cas

Leonardo Murta Operadores e Estruturas de Decisão 9

Método Descrição Exemplo

Math.abs(expr) Valorabsoluto Math.abs(-5.3)à5.3

Math.round(expr) Arredondaumnúmero Math.round(5.3)à5

Math.ceil(expr) Arredondaparacima Math.ceil(5.3)à6.0

Math.floor(expr) Arredondaparabaixo Math.floor(5.3)à5.0

Math.max(expr1,expr2) Maiordedoisnúmeros Math.max(5,6)à6

Math.min(expr1,expr2) Menordedoisnúmeros Math.min(5,6)à5

Math.sqrt(expr) Raizquadrada Math.sqrt(4)à2.0

Math.pow(expr1,expr2) Potência Math.pow(2,3)à8.0

Math.log10(expr) Logaritmonabase10 Math.log10(100)à2.0

Math.log(expr) Logaritmonatural(baseE) Math.log(Math.E)à1.0

Math.exp(expr) Exponencial(eexpr) Math.exp(0)à1.0

Page 10: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Funçõesmatemá=cas

Leonardo Murta Operadores e Estruturas de Decisão 10

Função Descrição Exemplo

Math.sin(expr) Seno Math.sin(0)à0.0

Math.asin(expr) Arcoseno Math.asin(1)à1.5707963267948966

Math.cos(expr) Cosseno Math.cos(0)à1.0

Math.acos(expr) Arcocosseno Math.acos(-1)à3.141592653589793

Math.tan(expr) Tangente Math.tan(1)à1.5574077246549023

Math.atan(expr) Arcotangente Math.atan(1)à0.7853981633974483

Math.toDegrees(expr) Converteradianosparagraus Math.toDegrees(Math.PI)à180.0

Math.toRadians(expr) Convertegrauspararadianos

Math.toRadians(180)à3.141592653589793

•  Funções trigonométricas trabalham com radiano •  Existem algumas outras funções menos usadas

Page 11: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Númerosaleatórios•  Algumasaplicaçõesnecessitamqueocomputadorsorteieumnúmero– MétodoMath.random()– Geranúmeropseudoaleatórioentre0e1

•  Apar=rdessenúmero,épossívelgerarnúmerosemoutrosintervalos–  inicio+(fim-inicio)*Math.random()

Leonardo Murta Operadores e Estruturas de Decisão 11

Page 12: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exemplo

Leonardo Murta Operadores e Estruturas de Decisão 12

•  Númeroentre0e1System.out.println(Math.random());

•  Númeroentre5e6System.out.println(5 + Math.random());

•  Númeroentre0e10System.out.println(Math.random() * 10);

•  Númeroentre50e70System.out.println(50 + Math.random() * 20);

Page 13: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Operadoresrelacionais

Leonardo Murta Operadores e Estruturas de Decisão 13

Operador Exemplo Prioridade

expr1<expr2 5<3àfalse 1

expr1<=expr2 5<=3àfalse 1

expr1>expr2 5>3àtrue 1

expr1>=expr2 5>=3àtrue 1

expr1==expr2 5==3àfalse 2

expr1!=expr2 5!=3àtrue 2

•  Prioridade sempre inferior aos operadores aritméticos •  Sempre têm números como operandos •  Sempre têm resultado booleano

Page 14: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Operadoreslógicos

Leonardo Murta Operadores e Estruturas de Decisão 14

Operador Exemplo Prioridade

!expr !trueàfalse 1

expr1&expr2 true&falseàfalse 2

expr1^expr2 true^trueàfalse 3

expr1|expr2 true|trueàtrue 4

expr1&&expr2 true&&falseàfalse 5

expr1||expr2 True||falseàtrue 6

•  Prioridade sempre inferior aos operadores relacionais •  Exceção para “!”, com prioridade superior a *, / e % •  Sempre têm booleanos como operandos •  Sempre têm resultado booleano

Page 15: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Tabelaverdade

Leonardo Murta Operadores e Estruturas de Decisão 15

a b !a a&ba&&b

a^b a|ba||b

true true false true false true

true false false false true true

false true true false true true

false false true false false false

Page 16: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

OueEo=mizados•  &e&&,assimcomo|e||têmamesmatabelaverdade,mas– &e|sempreavaliamosdoisoperandos– &&e||sóavaliamosegundooperandoseoprimeironãoforconclusivo

•  Diferençaquandoosegundooperandoalteravalores

i = 10

Caso 1: (i > 3) | (++i < 2) à true (com i valendo 11)

Caso 2: (i > 3) || (++i < 2) à true (com i valendo 10)

Leonardo Murta Operadores e Estruturas de Decisão 16

Page 17: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Operadoresdeatribuição

Leonardo Murta Operadores e Estruturas de Decisão 17

Operador Exemplo

var=expr x=10+5

var+=expr x+=5àx=x+5

var-=expr x-=5àx=x-5

var*=expr x*=5àx=x*5

var/=expr x/=5àx=x/5

var%=expr x%=5àx=x%5

var&=expr x&=trueàx=x&true

var^=expr x^=trueàx=x^true

var|=expr x|=trueàx=x|true

Page 18: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exemplo•  Considerandodouble x = 10.0; double y = -2.0; double z = 5.0; boolean w = x * y < z / x || x / y > z * x && z * y < x;

•  Resoluçãodew10.0 * -2.0 < 5.0 / 10.0 || 10.0 / -2.0 > 5.0 * 10.0 &&

5.0 * -2.0 < 10.0 -20.0 < 0.5 || -5.0 > 50.0 && -10.0 < 10.0 true || false && true true || false true

Leonardo Murta Operadores e Estruturas de Decisão 18

Page 19: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

DecisãoMecanismosdedecisão:•  If...then

–  Executaalgosomentequandoumacondiçãoéverdadeira

•  If...then...else–  Bifurcaaexecuçãodocódigoemfunçãodeumacondição

•  Switch...case–  Executamúl=plostrechosdecódigoemfunçãodovalordeumaexpressão

Leonardo Murta Operadores e Estruturas de Decisão 19

Page 20: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Decisãodo=poif...then

Leonardo Murta Operadores e Estruturas de Decisão 20

Condição?V

F Blocodoentão

... Se CONDIÇÃO então INSTRUÇÃO 1 INSTRUÇÃO 2 ... INSTRUÇÃO N ...

... if (CONDIÇÃO) INSTRUÇÃO; ...

Fluxograma

Pseudocódigo

Java

... if (CONDIÇÃO) { INSTRUÇÃO 1; INSTRUÇÃO 2; ... INSTRUÇÃO N; } ...

Ou

Page 21: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Decisãodo=poif...then•  Executaoblocodeinstruçõessomenteseacondiçãoforverdadeira

•  Acondiçãoéumaexpressãobooleanaquepodefazerusodequaisqueroperadores

•  Acondiçãodevesempreestarentreparênteses•  Podeomi=r{e}casoexecutesomenteumainstrução– Asvariáveisdeclaradasdentrodeumbloco(entre{e})sóvalemnesseblocoousubblocos

Leonardo Murta Operadores e Estruturas de Decisão 21

Page 22: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exemplodeif...then•  Programaparainformarovalorabsolutodeumnúmero:

import java.util.Scanner; public class Absoluto { public static void main(String[] args) { Scanner teclado = new Scanner(System.in); System.out.print("Entre com um número: "); double numero = teclado.nextDouble(); if (numero < 0) numero = -numero; System.out.println("Valor absoluto: " + numero); } }

Leonardo Murta Operadores e Estruturas de Decisão 22

Page 23: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Decisãodo=poif...then...else

Leonardo Murta Operadores e Estruturas de Decisão 23

... Se CONDIÇÃO então INSTRUÇÃO 1 INSTRUÇÃO 2 ... INSTRUÇÃO N Senão INSTRUÇÃO 1 INSTRUÇÃO 2 ... INSTRUÇÃO N ...

Fluxograma

Pseudocódigo

Condição?V F

Blocodoentão Blocodosenão

Page 24: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Decisãodo=poif...then...else

Leonardo Murta Operadores e Estruturas de Decisão 24

Java ... if (CONDIÇÃO) { INSTRUÇÃO 1; INSTRUÇÃO 2; ... INSTRUÇÃO N; } else { INSTRUÇÃO 1; INSTRUÇÃO 2; ... INSTRUÇÃO N; } ...

... if (CONDIÇÃO) INSTRUÇÃO; else INSTRUÇÃO; ...

Ou

Page 25: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Decisãodo=poif...then...else•  Executaumouooutroblocodeinstruçõesemfunçãodacondiçãoserverdadeiraoufalsa

•  Valemasmesmasregrasparaif...then•  Qualquercombinaçãodeinstruçãoindividualouemblocoéaceitanothenenoelse

•  Podemseraninhadoscomoutrasestruturasdo=poif...then...else

Leonardo Murta Operadores e Estruturas de Decisão 25

Page 26: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exemplodeif...then...else•  Programaparainformarseumnúmeroéparouimpar:

import java.util.Scanner; public class Paridade { public static void main(String[] args) { Scanner teclado = new Scanner(System.in); System.out.print("Entre com um número: "); int numero = teclado.nextInt(); if (numero % 2 == 0) System.out.println("O número é par!"); else System.out.println("O número é impar!"); } }

Leonardo Murta Operadores e Estruturas de Decisão 26

Page 27: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exemplodeifaninhado•  Programaparainformaronúmerodediasdeummês:import java.util.Scanner; public class DiasMes { public static void main(String[] args) { Scanner teclado = new Scanner(System.in); System.out.print("Entre com um mês (1 a 12): "); byte mes = teclado.nextByte(); if ((mes==1)||(mes==3)||(mes==5)||(mes==7)||(mes==8)||(mes==10)||(mes==12)) System.out.println("Esse mês tem 31 dias!"); else if ((mes==4)||(mes==6)||(mes==9)||(mes==11)) System.out.println("Esse mês tem 30 dias!"); else { System.out.print("Entre com o ano (4 dígitos): "); short ano = teclado.nextShort(); if ((ano%400==0)||((ano%4==0)&&(ano%100!=0))) System.out.println("Esse mês tem 29 dias!"); else System.out.println("Esse mês tem 28 dias!"); } } }

Leonardo Murta Operadores e Estruturas de Decisão 27

Page 28: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Decisãodo=poswitch...case

Leonardo Murta Operadores e Estruturas de Decisão 28

Expressão

Blocodocaso1 BlocodocasoNBlocodocaso2

Valor 1 Valor 2 Valor N

... Blocopadrão

default

Page 29: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Decisãodo=poswitch...case

Leonardo Murta Operadores e Estruturas de Decisão 29

Java ... switch (EXPRESSÃO) { case VALOR 1: INSTRUÇÃO 1; ... break; case VALOR 2: INSTRUÇÃO 1; ... break; ... case VALOR N: INSTRUÇÃO 1; ... break; default: INSTRUÇÃO 1; ... } ...

Page 30: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Decisãodo=poswitch...case•  Aceitaexpressõesdos=posbyte,short,int,chareString

•  Éequivalenteaifaninhado–  Escolheroquetemmelhorlegibilidade–  Switch...caseébaseadoemvaloresindividuais–  If...then...elsepodeserbaseadoemintervalodevalores

•  Ousodebreakéfundamentalparaaquebradofluxo– Aclausulacasedelimitasomenteopontodeentrada– Oprogramaexecutarátodasaslinhasseguintesatéencontrarumbreakouterminaroswitch

Leonardo Murta Operadores e Estruturas de Decisão 30

Page 31: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exemplodeswitch...caseimport java.util.Scanner; public class DiasMes {

public static void main(String[] args) {

Scanner teclado = new Scanner(System.in);

System.out.print("Entre com um mês (1 a 12): ");

byte mes = teclado.nextByte();

switch (mes) {

case 1: case 3: case 5: case 7: case 8: case 10: case 12:

System.out.println("Esse mês tem 31 dias!"); break;

case 4: case 6: case 9: case 11:

System.out.println("Esse mês tem 30 dias!");

break;

Leonardo Murta Operadores e Estruturas de Decisão 31

Page 32: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exemplodeswitch...case case 2: System.out.print("Entre com o ano (4 dígitos): ");

short ano = teclado.nextShort();

if ((ano%400==0)||((ano%4==0)&&(ano%100!=0)))

System.out.println("Esse mês tem 29 dias!");

else

System.out.println("Esse mês tem 28 dias!");

break;

default: System.out.println("Mês inválido!");

}

}

}

Leonardo Murta Operadores e Estruturas de Decisão 32

Page 33: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

Exercício•  Façaumprogramaqueleiatrêscoordenadasnumespaço2Deindiqueseformamumtriângulo,juntamentecomoseu=po(equilátero,isósceleseescaleno)– Equilátero:todososladosiguais–  Isósceles:doisladosiguais– Escaleno:todososladosdiferentes

Leonardo Murta Operadores e Estruturas de Decisão 33

Page 34: Operadores e Estruturas de Decisãoleomurta/courses/2016.1/poo/aula3.pdfMath.abs(expr) Valor absoluto Math.abs(-5.3) à 5.3 Math.round(expr) Arredonda um número Math.round(5.3) à

OperadoreseEstruturasdeDecisão

[email protected]