desenvolvimento oo com java variáveis primitivas e controlede … · 2016-04-01 · •...

81
Desenvolvimento OO com Java Variáveis primitivas e controle de fluxo Vítor E. Silva Souza ( [email protected] ) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo

Upload: others

Post on 12-Mar-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Desenvolvimento OO com Java

Variáveis primitivas e controle de fluxo

Vítor E. Silva Souza

([email protected])http://www.inf.ufes.br/~vitorsouza

Departamento de Informática

Centro Tecnológico

Universidade Federal do Espírito Santo

Page 2: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Licençaparausoedistribuição• EsteobraestálicenciadacomumalicençaCreative

CommonsAtribuição-CompartilhaIgual 4.0Internacional;• Vocêtemodireitode:

– Compartilhar:copiareredistribuiromaterialemqualquersuporteouformato

– Adaptar:remixar,transformar,ecriarapartirdomaterialparaqualquerfim,mesmoquecomercial.

• Deacordocomostermosseguintes:– Atribuição:vocêdevedarocréditoapropriado,proverumlinkpara

alicençaeindicarsemudançasforamfeitas.Vocêdevefazê-loemqualquercircunstânciarazoável,masdemaneiraalgumaquesugiraaolicencianteaapoiarvocêouoseuuso;

– CompartilhaIgual:sevocêremixar,transformar,oucriarapartirdomaterial,temdedistribuirassuascontribuiçõessobamesmalicençaqueooriginal.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 2

Mais informações podem ser encontradas em:http://creativecommons.org/licenses/by-sa/4.0/

Page 3: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Conteúdodocurso

• OqueéJava;• Variáveisprimitivasecontroledefluxo;

• Orientaçãoaobjetosbásica;

• Umpoucodevetores;• Modificadoresdeacessoeatributosdeclasse;

• Herança,reescritaepolimorfismo;

• Classesabstratas;• Interfaces;• Exceçõesecontroledeerros;

• UtilitáriosdaAPIJava.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 3

EstesslidesforambaseadosnaapostiladocursoFJ-11:JavaeOrientaçãoaObjetosdaCaelum ena apostila ProgramaçãoOrientada aObjetos em Javadoprof.FlávioMiguelVarejão.

Page 4: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Declaração euso devariáveis• JavafuncionacomoC,comtipagem estática:

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 4

// Define a variável e já atribui um valor:int idade = 35;System.out.println(idade); // 35

// Define a variável, depois atribui um valor:int idadeAnoQueVem;idadeAnoQueVem = idade + 1;System.out.println(idadeAnoQueVem); // 36

Para executar, o código acima deve estar dentro de um método main(),

como explicado na aula anterior.

Convenção de código: variáveis começamcom letra minúscula e usam CamelCase.

Page 5: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Tiposprimitivos• Existem8tiposdedadosbásicos paravaloresinteiros,reais,caractereselógicos;

• Sãochamadosprimitivos porque:– Não sãoobjetos;– Sãoarmazenadosnapilha.

• Javanão éOOpuraporcausadeles;• Existempormotivosdeeficiência;• Sãocompletamentedefinidos naespecificação Java(nome,tamanho,etc.).

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 5

Page 6: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Tiposprimitivosinteiros

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 6

/* Cuidados com o alcance do tipo: */byte b = 127;System.out.println("b = " + b); // b = 127

b++;System.out.println("b = " + b); // b = -128

Tipo Tamanho Alcance

byte 1 byte -128 a 127

short 2 bytes -32.768 a 32.767

int 4 bytes -2.147.483.648 a 2.147.483.647

long 8 bytes -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807

Page 7: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Representaçãodevaloresliterais

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 7

// Especificando o tipo do literal.int i = 10;long l = 10l;float f = 10.0f;double d = 10.0;

// Números longos (Java 7).int bilhao = 1_000_000_000;

// Representação em diferentes bases (binário - Java 7).int binario = 0b0001_0000;int octal = 020;int decimal = 16;int hexa = 0x10;

System.out.println(binario + ", " + octal + ", " + decimal + ", " + hexa); // 16, 16, 16, 16

Page 8: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Tiposprimitivosreais• Tambémconhecidocomo“ponto flutuante”.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 8

// A separação decimal é feita com "."float f = 1.0f / 3.0f;double d = 0.1e1 / 3.; // 0.1e1 = 0,1 x 101

// Note a diferença na precisão.System.out.println(f); // 0.33333334System.out.println(d); // 0.3333333333333333

Tipo Tamanho Alcance

float 4 bytes aprox. ±3.402823 E+38F

double 8 bytes aprox. ±1.79769313486231 E+308

Page 9: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Precisãodepontoflutuante• Aprecisãoserefereaonúmerodecasas decimais,nãoaotamanho (ex.:3.4x 1038);

• Quandoaprecisão éfundamental,devemosusaraclasseBigDecimal enãoostiposprimitivos.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 9

double d = 1.230000875E+2;System.out.println(d); // 123.0000875

// Converte de double para float.float f = (float)d;System.out.println(f); // 123.000084

Page 10: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Tipoprimitivocaractere• Paracaracteres,Javausaotipochar:

– SegueopadrãoUnicode;– Ocupa2bytes;– Representa32.768 caracteresdiferentes;– Permiteaconstruçãodesoftwareinternacionalizado;

– Dependetambémdosuporte doSO.• Representaçãoentreaspassimples:

– 'a','5','\t','\u0061',etc.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 10

http://www.joelonsoftware.com/articles/Unicode.html

Page 11: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Umcaractereéuminteiro• Porsuarepresentaçãointerna serumnúmerointeiro(códigoUnicode),umchar podefuncionar comouminteiro:

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 11

char c = 'a';System.out.println("c: " + c); // c: a

c++;System.out.println("c: " + c); // c: b

c = (char)(c * 100 / 80);System.out.println("c: " + c); // c: z

int i = c;System.out.println("i: " + i); // i: 122

Page 12: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Caracteresespeciais

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 12

Código Significado

\n Quebra de linha (newline ou linefeed)

\r Retorno de carro (carriage return)

\b Retrocesso (backspace)

\t Tabulação (horizontal tabulation)

\f Nova página (form feed)

\' Aspas simples (apóstrofo)

\" Aspas

\\ Barra invertida (“\”)

\u233d Caractere unicode de código 0x233d (hexadecimal)

Page 13: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Cadeiasdecaractere• Algumaslinguagens definemumtipoprimitivo stringparacadeiasdecaracteres;

• Javanãopossuiumtipoprimitivo string;• EmJava,strings sãotiposcompostos(objetos);• Veremosmaisadiante...

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 13

Page 14: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Tipoprimitivológico(booleano)• Valoresverdadeiro (true)oufalso (false);• Não existeequivalência entrevaloreslógicosevaloresinteiros (comoemC);

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 14

boolean b = true;if (b) System.out.println("OK!"); // OK!

int i = (int)b; // Erro de compilação!i = 1;if (i) System.out.println("??"); // Idem!

Page 15: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Conversõesentretiposnuméricos• Tiposnuméricos podemsemisturar emoperações,seguindoasseguintesregras:– Seumdosoperandosfordouble eooutronão,seráconvertidoparadouble;

– Senão,seumdosoperandosforfloat eooutronão,seráconvertidoparafloat;

– Senão,seumdosoperandosforlong eooutronão,seráconvertidoparalong;

– Nosdemais casos,osoperandosserãosempreconvertidosparaint,casojánãoosejam.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 15

Page 16: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Conversõesentretiposnuméricos

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 16

byte b = 2; short s = 4; int i = 8;long l = 16; float f = 1.1f; double d = 9.9;

d = s + l + d;

// i + b resulta em int, convertido pra long;l = i + b;

// Erro: b + s resulta em int!s = b + s;

double

long Float é o único que precisa especificar o tipo do valor literal.

Page 17: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Conversõesentretiposnuméricos• Conversõesdeumtipomenor paraumtipomaiorocorremautomaticamente;

• Podemosforçar conversõesnosentidocontrário,sabendodaspossíveisperdas;

• Utilizamosooperadordecoerção (cast):

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 17

double x = 9.997;int nx = (int)x;System.out.println(nx); // 9

nx = (int)Math.round(x);System.out.println(nx); // 10

Cast: to give a shape to (a substance) by pouring in liquid orplastic form into a mold and letting harden without pressure.

Page 18: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Operadoresaritméticos

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 18

Símbolo Significado Exemplo+ Adição a + b

- Subtração a - b

* Multiplicação a * b

/ Divisão a / b

% Resto da divisão inteira a % b

- (Unário) inversão de sinal -a

+ (Unário) manutenção de sinal +a

++ (Unário) Incremento ++a ou a++

-- (Unário) Decremento --a ou a--

Page 19: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Operadoresrelacionais

• Observações:– Osparâmetros devemserdetiposcompatíveis;– Nãoconfunda= (atribuição)com== (igualdade).

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 19

Símbolo Significado Exemplo== Igual a == b

!= Diferente a != b

> Maior que a > b

>= Maior que ou igual a a >= b

< Menor que a < b

<= Menor que ou igual a a <= b

Page 20: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Operadoreslógicos

• Observações:– Sóoperam sobrevaloreslógicos;– Podemsercombinados emexpressõesgrandes.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 20

Símbolo Significado Exemplo&& AND (E) a && b

& AND sem curto-circuito a & b

|| OR (OU) a || b

| OR sem curto-circuito a | b

^ XOR (OU exclusivo) a ^ b

! NOT (NÃO, inversão de valor, unário) ! a

Page 21: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Curto-circuito

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 21

int x = 10, y = 15, z = 20;

// (z > y) não é avaliado.if ((x > y) && (z > y)) { /* ... */ }

// (z == y) não é avaliado.if ((x == 10) || (z == y)) { /* ... */ }

// Ambos são avaliados.if ((x > y) & (z > y)) { /* ... */ }

// Ambos são avaliados.if ((x == 10) | (z == y)) { /* ... */ }

Page 22: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Operadordeatribuição• Usadoparaalterar ovalordeumavariável:

üx = 10 * y + 4;• Váriasatribuições podemserfeitasemconjunto:

üx = y = z = 0;• Oladodireito daatribuiçãoésemprecalculadoprimeiro,seuresultado éarmazenadonavariável doladoesquerdo:üint x = 5;üx = x + 2;

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 22

Page 23: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Operadoresbitabit• Operamemvariáveisinteiras,bitabit:

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 23

Símbolo Significado Exemplo& AND (E) a & b

| OR (OU) a | b

^ XOR (OU exclusivo) a ^ b

~ NOT (NÃO, unário) ~ a

>> Deslocamento de bits para a direita a >> b

<< Deslocamento de bits para a esquerda a << b

Page 24: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Atribuiçãocomposta• Une-seumoperadorbinário comosinaldeatribuição:

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 24

Expresão Equivale ax += y x = x + y

x -= y x = x - y

x *= y x = x * y

x /= y x = x / y

x %= y x = x % y

Expresão Equivale ax &= y x = x & y

x |= y x = x | y

x ^= y x = x ^ y

x >>= y x = x >> y

x <<= y x = x << y

Page 25: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Incrementoedecremento• Somar/subtrair1deumavariávelinteiraétãocomumqueganhouumoperador sóparaisso:ü++x ex++ equivalem ax = x + 1;ü--x ex-- equivalem ax = x – 1.

• Quandopartedeumaexpressão maior,aformaprefixadaédiferente dapós-fixada:

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 25

int x = 7;int y = x++; // y = 7, x = 8.

x = 7;y = ++x; // y = 8, x = 8.

Page 26: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Operadorternário• Formasimplificada deumaestruturaif – else (queveremosmaisadiante);

• Produzumvalor deacordocomumaexpressão:ü<expressão> ? <valor 1> : <valor 2>

üSe<expressão> fortrue,oresultadoé<valor 1>,docontráriooresultadoé<valor 2>.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 26

int x = 7;

int y = (x < 10) ? x * 2 : x / 2;System.out.println("y = " + y); // y = 14

Page 27: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Precedênciadeoperadores• Podemoscombinar expressões:

üx = a + b * 5 – c / 3 % 10;• Atençãoàprecedência deoperadores!

1) b * 5;2) c / 3;3) (resultadodec / 3)% 10;4) Daesquerdaparaadireita.

• Podemosusarparênteses paramodificá-la:üx = (a + b) * (5 – (c / 3)) % 10;

• Nadúvida,utilizeparênteses.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 27

Page 28: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Precedênciadeoperadores• Asexpressõessãoavaliadas segundoumaordemdeprecedência dosoperadores:

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 28

Ordem Operadores1 . [] ()

2 ++ -- ~ instanceof new –(unário)

3 * / %

4 + -

5 >> << >>>

6 > < >= <=

7 == !=

Ordem Operadores8 &

9 ^

10 |

11 &&

12 ||

13 ?:

14 = += -= *= /= ...

15 ,

Page 29: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Escopodevariável• Variáveispodemserdeclaradas emqualquer ponto doprograma;

• Oescopo defineondeavariávelévisível (ondepodemosler/atribuirseuvalor);

• Oescopodeumavariávelvaido“{“ anterioràsuadeclaraçãoatéopróximo“}”.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 29

int i = 10;if (i > 0) {int j = 15;System.out.println(i + j); // 25

}j = i + j; // Erro: variável fora de escopo!

Page 30: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Nomesdevariáveis• Deveseriniciado porumaletra,_ou$;• Seguido deletras,números,_ou$;• Podemterqualquer tamanho;• Não podemserigualaumapalavrareservada;• Lembre-sesempre:Javaécasesensitive.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 30

Nomes válidos Nomes inválidos

a1total$_$$

_especialPreço

1atotal geral

numero-minimotico&teco

void

Page 31: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Palavrasreservadas

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 31

abstract continue for new switch

assert default goto package synchronized

boolean do if private this

break double implements protected throw

byte else import public throws

case enum instanceof return transient

catch extends int short try

char final interface static void

class finally long strictfp volatile

const float native super while

Page 32: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Constantes• Paradeclararconstantes,bastausarapalavra-chavefinal:

Julho2013 DesenvolvimentoOOcomJava 32

final double CM_POR_POLEGADA = 2.54;CM_POR_POLEGADA = 2.55; // Erro!

double larguraPol = 13.94;double larguraCm = larguraPol * CM_POR_POLEGADA;

System.out.println(larguraCm);

Convenção de código: constantes sãoescritas em CAIXA_ALTA.

Page 33: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

CONTROLEDEFLUXODesenvolvimentoOOcomJava- Variáveisprimitivasecontroledefluxo

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 33

Page 34: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Controledefluxo• Somenteprogramas muitosimples sãoestritamentesequenciais:– Leiatrêsnotasdeumaluno:N1,N2eN3;– CalculeamédiadoalunopelafunçãoM=(N1+N2+N3)/3;

– SeamédiaMformaiorouiguala7:– Imprima“Alunoaprovado”;– Seamédianãoformaiorouiguala7:– CalculeanotaqueoalunoprecisaparapassarpelafunçãoPF=(2*F)– M;

– Imprima“Alunoemprovafinal,notamínima:<PF>”.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 34

Page 35: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Controledefluxo• LPs imperativas geralmentepossuemasseguintesestruturasdecontroledefluxo:– Estruturasdedesviodefluxo:desvia ofluxoequebraaestruturasequencial.Podesercondicional ouincondicional.EmJavatemosif eswitch;

– Estruturasderepetiçãosimples:repete umoumaiscomandos emlaços ouloops umnúmerofixo devezes.EmJava,temosadiretivafor;

– Estruturasderepetiçãocondicional:semelhanteàrepetiçãosimples,masumnúmeroindefinidodevezes,associadaaumacondição.EmJavatemoswhile edo while.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 35

Page 36: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Estruturasdedesviodefluxo• Desviam ocódigoparaumoutrotrecho,aoinvésdeprosseguirparaalinhaseguinte;

• Hádoistipos dedesviodefluxo:– Desviocondicional (if,switch);– Desvioincondicional (goto).

• Javanãopossuigoto.Possuidoiscasosespecíficosdedesvioincondicional combreak econtinue.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 36

Page 37: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Conceitosbásicos:diretivas• Diretivas (statements) sãoasinstruções queumaLPforneceparaaconstruçãodeprogramas;

• Devehaveralgumaforma deseparar umadiretivadaoutra:– Cadaumaemumalinha;– Separadasporumcaractere (ex.:“.”,“;”,etc.).

• Javaherdou deC/C++ aseparaçãocom“;”:

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 37

diretiva1;diretiva2; diretiva3;diretiva4;...

Page 38: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Conceitosbásicos:blocos• Diretivas podemserdispostasemblocos;• Umblocorecebe omesmotratamento deumadiretivaindividual;

• Javatambémherdou deC/C++ adefiniçãodeblocoscom“{“e“}”:

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 38

{diretiva1;diretiva2; diretiva3;diretiva4;...

}...

Page 39: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Estruturasdedesviodefluxo• Desviam ocódigoparaumoutrotrecho,aoinvésdeprosseguirparaalinhaseguinte;

• Hádoistipos dedesviodefluxo:– Desviocondicional (if,switch);– Desvioincondicional (goto).

• Javanãopossuigoto.Possuidoiscasosespecíficosdedesvioincondicional combreak econtinue.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 39

Page 40: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Desviocondicionalcomif

– [expressão]:expressãológicaavaliada(deveretornarvalordotipoboolean);

– [diretiva1]:diretiva oublocodediretivasexecutadasseacondiçãoretornartrue;

– [diretiva2]:diretiva oublocodediretivasexecutadasseacondiçãoretornarfalse.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 40

if ([expressão])[diretiva 1]

else[diretiva 2]

Page 41: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Funcionamentodoif

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 41

Page 42: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Apartedoelse éopcional

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 42

if ([expressão])[diretiva]

Page 43: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Encadeamentodeifs• Oif éumadiretiva comoqualqueroutra;• Podemos colocá-locomo[diretiva2],logoapós oelse(executadaquandoexpressãoéfalse):

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 43

if ([expressão])[diretiva 1]

else if ([expressão 2])[diretiva 2]

else if ([expressão 3])[diretiva 3]

...else[diretiva N]

Page 44: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Exemplos

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 44

int x = 10, y = 15, z = 20;boolean imprimir = true;

if ((x == 10) || (z > y)) {if (imprimir) System.out.println(x);

}else if (x == 20) {z += x + y;if (imprimir) System.out.println(z);

}else System.out.println("Não sei!");

Page 45: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Desviocondicionalcomswitch

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 45

switch ([expressão ordinal ou string]) {case [valor ordinal 1]:[diretiva 1]break;

case [valor ordinal 2]:[diretiva 2]break;

...default:[diretiva N]

}

Page 46: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Desviocondicionalcomswitch• [expressãoordinaloustring]:expressão queretornaumvalordealgumtipodiscreto(int,char,etc.)oustring(apartirdoJava7);

• [valorordinalX]:umdospossíveis valoresqueaexpressão ordinalpodeassumir(deveserdomesmotipo);

• [diretivaX]:diretiva ouconjuntodediretivas(nãoénecessárioabrirumbloco)executado seaexpressãoordinalforigualao[valorordinalX].

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 46

Page 47: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Funcionamentodoswitch

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 47

Page 48: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Características• Épossívelconstruir umif equivalente aoswitch,masesteúltimo temdesempenhomelhor;

• Terumaopção default éopcional;• Ofluxoédesviado paraocase apropriado econtinuadaliatéencontrarumbreak ouofimdoswitch.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 48

Page 49: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Exemplo

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 49

switch (letra) { // letra é do tipo charcase 'a':case 'A': System.out.println("Vogal A");break;

case 'e': case 'E':System.out.println("Vogal E");break;

/* ... */

case 'u': case 'U': System.out.println("Vogal U");break;

default: System.out.println("Não é uma vogal");

}

Page 50: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Estruturasderepetiçãosimples• Repetição deumtrecho decódigo;• Númerofixo derepetições (sabe-sedeantemãoquantasvezesotrechoserárepetido);

• Javadispõedadiretiva for (tambémherdada deC):

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 50

// Contar de 1 a 10:for (int i = 1; i <= 10; i++)System.out.println(i);

Page 51: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Estruturadofor

– [início]:diretivaexecutada antes dolaçocomeçar(geralmente,atribuirovalorinicialdocontador);

– [condição]:expressãodecondição deparada dolaço(geralmente,comparaçãocomovalorfinal);

– [inc/dec]:diretivaexecutada apóscadaiteração dolaço(geralmenteusadaparaincrementar oudecrementar ocontador);

– [diretiva]:diretiva oublocodediretivasexecutadasemcadaiteração dolaço.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 51

for ([início]; [condição]; [inc/dec])[diretiva]

Page 52: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Funcionamentodofor

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 52

Page 53: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Oscamposdoforsãoopcionais

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 53

// Conta até 10.int i = 1;for (; i < 10;) {System.out.println(i++);

}

// Preenche um vetor.int[] v = new int[5];for (int i = 0; i < 5; v[i] = i++);

// Loop infinito.for (;;);

Page 54: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Repetiçãocondicionalcomofor• Emváriaslinguagens deprogramação,ofor(ousimilar)servesomente pararepetiçãosimples:

• EmJava pode-seusarparafazerrepetiçãocondicional:

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 54

para i de 1 até 10 façaEscreva i

fim_para

boolean achou = false;for (int i = 0; (! achou); i++) {/* ... */

}

Page 55: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Inicialização/incrementomúltiplo• Podemosefetuarmúltiplas diretivasnainicialização enoincremento,senecessário,separandocomvírgulas:

• Claroquetambémpodemostercondicionaisgrandes(usandooperadoreslógicos):

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 55

for (int i = 1, j = i + 10; i < 5; i++, j = i * 2) {System.out.println("i= " + i + " j= " + j);

}

for (int i = 0; (i < 5) && (! achou); i++) {/* ... */

}

Page 56: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Estruturasderepetiçãocondicional• Repetição deumtrecho decódigo;• Númeroindeterminado derepetições,dependedeumacondição (expressãológica);

• Javadispõedadiretiva while edo while (sintaxetambémherdada deC/C++):

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 56

// Contar de 1 a 10:int i = 1; while (i <= 10) System.out.println(i++);

i = 1;do System.out.println(i++); while (i <= 10);

Page 57: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Estruturadewhile edowhile

– [condição]:expressãodecondição deparada dolaço(expressãológica);

– [diretiva]:diretiva oublocodediretivasexecutadasemcadaiteração dolaço.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 57

while ([condição]) [diretiva]

do [diretiva] while ([condição])

Page 58: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Funcionamentodowhile

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 58

Page 59: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Funcionamentododo while

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 59

Page 60: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Características• while avaliaacondiçãoantes dadiretiva,podendonunca executá-la;

• do while sóavaliadepois,certamenteexecutandoadiretivaaomenosumavez;

• Oprogramador devegarantirqueacondição setornafalsa emalgummomentonadiretiva,docontráriopoderágerarumloop infinito.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 60

Page 61: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Exemplos

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 61

int i = 0, j = 10;while (i <= j) {System.out.println(i + " - " + j);i++; j--;

}

// Executará ao menos 1 vez!do {System.out.println(i + " - " + j);i++; j--;

} while (i <= j);

// Podemos fazer um for equivalente!for (i = 0, j = 10; i <= j; i++, j--) {System.out.println(i + " - " + j);

}

Page 62: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Desviosincondicionais• Ousodedesviosincondicionais comgoto levamaprogramasdebaixa legibilidade;

• Javasótemdoiscasosespecíficosdedesviosincondicionais:break econtinue;

• Podemserusadosdentrodelaçosoudentrodaestruturaswitch (comojávimos):– break sai daestrutura(laçoouswitch);– continue vaiparaapróxima iteração (somentelaços).

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 62

Page 63: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Exemplos

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 63

while (ano < 2001) {saldo = (saldo + salario) * (1 + juros);if (saldo >= saldoLimite) break;ano++;

}

for (int i = 0; i < 100; i++) {if (i % 9 == 0) continue;System.out.println(i);

}

Page 64: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

break econtinuecomrótulos(labels)• Rótulos podemindicardequallaçoqueremossairoucontinuarapróximaiteração;

• Podemserusadosapenasemlaçosesófazemsentidoemlaçosaninhados.

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 64

externo:for (int i = 1; i < 100; i++) {for (j = 5; j < 10; j++) {

int x = i * j - 1;if (x % 9 != 0) break;if (x % 15 == 0) break externo;System.out.println(x);

}}

Page 65: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

ENTRADAESAÍDA BÁSICADesenvolvimentoOOcomJava- Variáveisprimitivasecontroledefluxo

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 65

Page 66: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Entradaesaídadedadosbásica• Todalinguagem deprogramaçãodeveproverummeiodeinteração comousuário;

• Omeiomaisbásico éousodoconsole,comentradadedadospeloteclado esaídaemtexto;

• Outrosmeiossão:interfacegráfica(janelas),pelaWeb,comandosdevoz,etc.;

• Aprenderemosagoraaformadeinteraçãobásica,peloconsole:– O“shell”ou“console”doLinux/Mac;– O“prompt decomando”doWindows.

Agosto2015 DesenvolvimentoOOcomJava 66

Page 67: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Saídadedadospeloconsole• Javausaoconceitodestream:umduto capazdetransportar dadosdeumlugaraoutro;

• Aclassejava.lang.System ofereceumstream padrãodesaída chamadoout;– Éumobjeto daclassejava.io.PrintStream,aberto emantidoautomaticamente pelaJVM;

– Oferecevários métodosparaimpressão dedados:print(),println() eprintf().

• Podemostrocar odispositivopadrão desaída:System.setOut(novaStream).

Agosto2015 DesenvolvimentoOOcomJava 67

Page 68: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Exemplos

Agosto2015 DesenvolvimentoOOcomJava 68

// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10for (i = 1; i < 10; i++) {System.out.print(i + ", ");

}System.out.println(10);

String s = "Olá, Java!";float valor = 45.67;boolean teste = true;

System.out.println(s); // Olá, Java!System.out.print(valor); // 45.67 (sem quebra)System.out.println(); // Quebra de linhaSystem.out.println(teste); // true

Page 69: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Saídaformatada• ApartirdoJava5,afunçãoprintf() doC foicolocadanaclassePrintWriter;– Facilitaamigração decódigoC paraJava;– Éumaformamaispoderosa deformatar asaída;– Otrabalhodeformatação é,naverdade,feito pelaclassejava.util.Formatter.

Agosto2015 DesenvolvimentoOOcomJava 69

Page 70: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Comofuncionaoprintf• Argumentos:

– Umastringdeformatação,comcódigos especiais;– Umalistadeargumentos aseremimpressos.

• Exemplos:

Agosto2015 DesenvolvimentoOOcomJava 70

System.out.printf("Olá, Java!%n"); // Olá, Java!

// [ 12] e [12345678]System.out.printf("[%5d]%n", 12);System.out.printf("[%5d]%n", 12345678);

double PI = 3.141592;System.out.printf("[%6.6f]%n", PI); // [3.141592]System.out.printf("[%6.4f]%n", PI); // [ 3.1416]

Page 71: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Códigosdeformatação• Possuemaseguintesintaxe:

%[i$][flags][tam][.prec]conversão

– i:índice doargumento(opcional);– flags:modificamoformato desaída(opcional);– tam:tamanho dasaídaemcaracteres(opcional);– prec:precisão dascasasdecimais(opcional);– conversão: códigodeconversão (indicaseéumtexto,inteiro,real,booleano,etc.– obrigatório).

Agosto2015 DesenvolvimentoOOcomJava 71

Page 72: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Códigosdeconversão

Agosto2015 DesenvolvimentoOOcomJava 72

Código Tipo do arg.

Descrição

'b' ou 'B' Booleano Imprime true ou false.

's' ou 'S' Geral Imprime como string (texto).

'c' ou 'C' Caractere O resultado é um caractere Unicode.

'd' Inteiro O resultado é formatado como número inteiro na base decimal.

'e' ou 'E' Real (PF) O resultado é formatado como número decimal em notação científica.

'f' Real (PF) O resultado é formatado como número decimal.

'g' ou 'G' Real (PF) Uma das duas opções acima (depende do valor).

'%' - O resultado é o caractere %.

'n' - O resultado é uma quebra de linha.

Page 73: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Maisexemplos

Agosto2015 DesenvolvimentoOOcomJava 73

// 5, 00005System.out.printf("%1$d, %1$05d%n", 5);

// Agora: 12 de Maio de 2006 - 04:29:42 PM.System.out.printf("Agora: %te de %<tB de %<tY -%<tr.%n", new Date());

// PI = 3.141592654System.out.printf("PI = %.9f%n", Math.PI);

// PI = 3,141592654Locale br = new Locale("pt", "BR");System.out.printf(br, "PI = %.9f%n", Math.PI);

// Veja outros formatos na documentação!

Page 74: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Entradadedadospeloconsole• Aclassejava.lang.System oferece umstream padrãodeentrada chamadoin;– Éumobjeto daclassejava.io.InputStream,abertoemantidoautomaticamente pelaJVM;

– Seusmétodosdeleitura sãomuitoprimitivos,secomparados comosmétodosdeescrita quevimos;

– Precisamosdeoutras classesqueauxiliem naleitura.• Alémdaleitura porSystem.in, podemoslertambémosargumentos passadosnachamada doprograma.– Já vimos isso na classe Eco.java.

Agosto2015 DesenvolvimentoOOcomJava 74

Page 75: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Leituradeargumentos• Ométodo main() possuiaseguinteassinatura:

public static void main(String[] args);

• Ovetor args contémosdados passadoscomoargumentos paraoprograma.

Agosto2015 DesenvolvimentoOOcomJava 75

Page 76: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Eco.java novamente

Agosto2015 DesenvolvimentoOOcomJava 76

public class Eco {

// Método principal.public static void main(String[] args) {

// i vai de 0 até o nº de argumentos.for (int i = 0; i < args.length; i++) {

// Imprime o argumento na tela.System.out.print(args[i] + " ");

}

// Quebra de linha ao final do programa.System.out.println();

}}

Page 77: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Aclassejava.util.Scanner• Poderoso meiodeler dadosdequalquerstream deentrada,existenteapartirdoJava5;

• Funcionamento:– Quebra ainformaçãoemtokens deacordocomumseparador (quepodeserconfigurado);

– Lê umainformaçãodecadavez;– Converte paraotipo dedadosadequado (quandopossível).

Agosto2015 DesenvolvimentoOOcomJava 77

Page 78: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Exemplos

Agosto2015 DesenvolvimentoOOcomJava 78

// Lê do console.Scanner scanner = new Scanner(System.in);

// Lê linha por linha e imprime o "eco".while (scanner.hasNextLine()) {String s = scanner.nextLine();System.out.println("Eco: " + s);

}

// Quebra palavra por palavra.while (scanner.hasNext()) {String s = scanner.next();System.out.println("Eco: " + s);

}

// Depois de usado deve ser fechado.scanner.close();

Page 79: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Maisexemplos

Agosto2015 DesenvolvimentoOOcomJava 79

// Lê do console.Scanner scanner = new Scanner(System.in);

// Lê números e imprime o dobro.while (scanner.hasNextDouble()) {double d = scanner.nextDouble();System.out.println("Dobro: " + (d * 2));

}

// Separa os tokens usando vírgulas.scanner.useDelimiter(",");while (scanner.hasNext()) {String s = scanner.next();System.out.println("Eco: " + s);

}

scanner.close();

Page 80: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

Exercitar é fundamental• ApostilaFJ-11daCaelum:

– Seção 3.13,página 30(exercícios simples);– Seção 3.14,página 31(Fibonacci).

Março2016 OO&Java- Variáveisprimitivasecontroledefluxo 80

Faremos exercícios emlaboratório em breve…

Page 81: Desenvolvimento OO com Java Variáveis primitivas e controlede … · 2016-04-01 · • Utilitários da API Java. Março 2016 OO & Java - Variáveis primitivas e controle de fluxo

http://nemo.inf.ufes.br/