desenvolvimento oo com java variáveis primitivas e controlede … · 2016-04-01 · •...
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/1.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/10.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/16.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/20.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/24.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/25.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/26.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/27.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/28.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/29.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/30.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/31.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/32.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/33.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/34.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/35.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/36.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/37.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/38.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/39.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/40.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/41.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/42.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/43.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/44.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/45.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/46.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/47.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/48.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/49.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/50.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/51.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/52.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/53.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/54.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/55.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/56.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/57.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/58.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/59.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/60.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/61.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/62.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/63.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/64.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/65.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/66.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/67.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/68.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/69.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/70.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/71.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/72.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/73.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/74.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/75.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/76.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/77.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/78.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/79.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/80.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e6c1e74c9e28745201cf95d/html5/thumbnails/81.jpg)
http://nemo.inf.ufes.br/