SlideShare uma empresa Scribd logo
1 de 90
Baixar para ler offline
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
1
Capítulo 2
Introdução aos
aplicativos Java
PROGRAMAÇÃO ORIENTADA A OBJETOS
POO
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
CONTEÚDO
• Introdução aos aplicativos Java
• Primeiro programa Java
• Exibindo texto com printf
• Outro aplicativo: adicionando inteiros
• Conceitos de memória
• Aritmética
• Tomada de decisão
• Considerações finais
• Exercícios de autorrevisão
2
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
3
INTRODUÇÃO
Neste capítulo é
apresentada a
programação de
aplicativos Java
com programas
simples para uma
introdução à
criação de
programas Java.
Inicia-se com
exemplos que
exibem mensagens
de textos na tela e,
então, é
demonstrado um
programa que
obtém dois
números de um
usuário, calcula sua
soma e exibe o
resultado.
Aprende-se a
realizar cálculos
aritméticos e salvar
os resultados para
utilização posterior.
Por último,
demonstra-se a
tomada de decisão
mostrando como
comparar números
e exibir mensagens
baseadas nos
resultados de
comparação.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
4
O PRIMEIRO PROGRAMA JAVA
Imprimindo
uma linha de
texto
Saída do programa
após a execução
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
5
COMENTANDO O PROGRAMA
Linhas 1 a 6 - linhas de comentários
(documentar o programa. Comentários
não são executados;
// - notação de comentários de fim
de linha ( linha 10 );
/* */ - notação de comentário
tradicional. Delimitam comentários de
várias linhas;
/** */ - comentário no estilo
Javadoc. Permitem incorporar a
documentação do programa
diretamente aos seus programas
(linhas 1 a 6);
Linhas 7 e 9 – espaço em branco
(não são compilados);
Linha 8 – declaração de classe
(classes definidas pelo programador)Saída do programa
após a execução
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
6
DOCUMENTAÇÃO GERADA PELO
JAVADOC DO ECLIPSE 3.4.1
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
7
A palavra-chave class (linha 8) introduz
uma declaração de classe e é
imediatamente seguida pelo nome da
classe (Welcome1);
Palavras-chave (às vezes chamadas de
palavras reservadas) são reservadas para
uso pelo Java e sempre escritas com
todas as letras minúsculas;
Por convenção, os nomes de classes
iniciam com uma letra maiúscula e
apresenta a letra inicial de cada palavra
que eles incluem em maiúscula. Por
exemplo SampleClassName. O nome de
uma classe é um identificador – uma
série de caracteres que consiste em
letras, dígitos, sublinhados ( _ ) e sinais
de cifrão ( $ ) que não iniciam com um
dígito e não contém espaços.
Identificadores válidos em Java:
Bemvindo1, $valor, _valor,
m_campoDeEntrada1 e botao7
O Java faz distinção entre
letras maiúsculas e
minúsculas
A1 ≠≠≠≠ a1
COMENTANDO O PROGRAMA
Saída do programa após
a execução
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
8
Palavras-chave do Java
abstract assert boolean break continue
case catch char class enum
default do double else for
extends final finally float int
if implements import instanceof package
interface long native new short
private protected public return synchronized
static strictfp super switch try
this throw throws transient
void volatile while byte
Palavras-chave que não são atualmente utilizadas:
const go to
O Java também contém as palavras reservadas true e false, que são literais
boolean e null, que é o literal que representa uma referência a nada. Assim
como as palavras-chave, essas palavras reservadas não podem ser utilizadas
como identificadores.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
9
COMENTANDO O PROGRAMA
Cada classe que definimos
(declaramos - linha 8) inicia com a
palavra-chave public. O nome da
classe é Welcome1. Temos classe
public e não public (private);
Uma chave esquerda (na linha 8), {,
inicia o corpo de cada declaração de
classe. Uma chave direita, },
correspondente (linha 14) deve
terminar cada declaração de classe;
Linha 10 – comentário descrevendo
o propósito do programa;
Linha 11 – declaração de um
método. A declaração de um método
é o ponto de partida de cada aplicativo
Java. Declarações de classe Java
contêm um ou mais métodos. Para um
aplicativo Java, um dos métodos deve
ser chamado main e deve ser definido
como mostra a linha 11, caso
contrário, a JVM não executará o
aplicativo.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
10
COMENTANDO O PROGRAMA
Os métodos realizam tarefas e
podem retornar informações quando
completam suas tarefas;
A palavra-chave void (linha 11) indica
que o método main não devolverá
nenhuma informação;
Na linha 11, a String[ ] args entre
parênteses é uma parte requerida da
declaração do método main;
A chave esquerda, {, na linha 11,
inicia o corpo da definição de método.
Uma chave direita correspondente,
linha 13, deve terminar o corpo da
declaração do método;
A linha 12, System.out.println(
“Welcome to Java Programming!”);
instrui o computador a realizar uma
ação – a saber, imprimir a string de
caracteres contida entre aspas duplas
(mas não as próprias aspas duplas). ou
string literal.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
1111
COMENTANDO O PROGRAMA Uma string às vezes é chamada de
string de caractere ou string literal;
Os caracteres de espaço em branco
em strings não são ignorados pelo
compilador;
O objeto System.out é conhecido
como o objeto de saída padrão. Ele
permite que aplicativos Java exibam
strings na janela de comando (ver
Figura do meio) a partir da qual o
aplicativo de Java executa;
O método System.out.println, linha
12, exibe (ou imprime) uma linha de
texto na janela de comando (ou
console). A string entre parênteses na
linha 12 é o argumento para o
método. Quando o método completa
sua tarefa, ele posiciona o cursor de
saída no começo da linha seguinte na
janela de comando (ver Figura de
baixo).
Figura: Janela do prompt de comando
do Windows 7.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
121212
COMENTANDO O PROGRAMA A linha 12 inteira, incluindo
System.out.println, o argumento
“Welcome to Java Programming!”
entre parênteses e o ponto-e-vírgula
(;), é uma instrução.
Os comentários de fim de linha após
as chaves de fechamento dos métodos
main e da classe Welcome1, linhas 13
e 14, respectivamente, é uma prática
recomendável, de forma a melhorar a
legibilidade de programa.
Figura: Janela do prompt de comando
do Windows 7.
Saída do programa
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
13
MODIFICANDO NOSSO PRIMEIRO
PROGRAMA JAVA
Nessa seção, modificaremos o exemplo da classe Welcome1
(Figura 2.1) para imprimir texto em uma linha utilizando várias
instruções e imprimir texto em várias linhas utilizando uma
única instrução.
Figura 2.1: Classe Welcome1
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
14
EXIBINDO UMA LINHA DE TEXTO COM
MÚLTIPLAS INSTRUÇÕES
Welcome to Java Programming! pode ser exibido de várias
maneiras.
A classe Welcome2, mostrada na Figura 2.3, utiliza
duas instruções para produzir a mesma saída mostrada na
linha 12 da Figura 2.1.
Figura 2.1: Classe Welcome1
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
15
EXIBINDO UMA LINHA DE TEXTO COM
MÚLTIPLAS INSTRUÇÕES
Figura 2.3: Classe Welcome2
Saída do programa
NOVIDADE:
Linhas 12 e 13 da classe Welcome2
Múltiplas instruções
Uma linha de texto
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
16
EXIBINDO MÚLTIPLAS LINHAS DE TEXTO COM
UMA ÚNICA INSTRUÇÃO
Saída do programa
A linha 14
System.out.println(
“WelcomentonJavanProgramming!
” );
exibe quatro linhas separadas de texto
na janela de comando;
Normalmente, os caracteres em uma
string são exibidos exatamente como
aparecem entre as aspas duplas.
Observe, porém, que os dois
caracteres  e n (repetidos três vezes
na instrução) não aparecem na tela;
A barra invertida (  ) é chamada
caractere de escape. Ela indica para os
métodos print e println de System.out
que a saída de um “caractere especial”
deve ser gerada.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
17
EXIBINDO MÚLTIPLAS LINHAS DE TEXTO COM
UMA ÚNICA INSTRUÇÃO
Saída do programa
Quando aparece uma barra invertida
em uma string de caracteres, o Java
combina o próximo caractere com as
barras invertidas para formar uma
sequência de escape ( n );
A sequência de escape n representa
o caractere de nova linha;
A Figura 2.5 lista várias sequências
de escape comuns e descreve como
elas afetam a exibição de caracteres na
janela de comando;
Para obter a lista completa de
sequências de escape, clique aqui.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
18
SEQUÊNCIA DE ESCAPE
Sequência de
escape
Descrição
n Nova linha
t Tabulação horizontal
r Retorno de carro
 Barras invertidas
” Aspas duplas
Permitem modificar a forma de como strings de textos podem
ser exibidas através do método System.out.println
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
19
EXIBINDO TEXTO COM PRINTF
O método System.out.printf (f significa “formated”) exibe os
dados formatados. A Figura 2.6 utiliza esse método para gerar
a saída das strings “Welcome to” e “Java Programming!”.
Saída do programa
O método printf tem a forma (ou sintaxe) abaixo:
printf( string-de-formato, lista de argumentos );
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
20
COMENTANDO O PROGRAMA A linha 13 chama o método
System.out.printf para exibir a saída do
programa. A chamada de método
especifica três argumentos;
Quando um método exige múltiplos
argumentos, estes são colocados em
uma lista separada por vírgulas;
O primeiro argumento do método
printf é uma string de formato que
pode consistir em texto fixo e
especificadores de formato;
Cada especificador de formato é um
marcador de lugar para um valor e
especifica o tipo de saída de dados;
Especificadores de formato iniciam
com um sinal de porcentagem (%) e
são seguidos por um caractere que
representa o tipo de dados.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
21
COMENTANDO O PROGRAMA O especificador de formato %s é um
marcador de lugar para uma string;
A string de formato na linha 13
especifica que printf dever gerar a
saída de duas strings, cada uma
seguida por um caractere de nova
linha;
Na primeira posição do especificador
de formato, printf substitui o valor do
primeiro argumento depois da string
de formato;
Em cada posição subsequente, printf
substitui o valor do próximo
argumento na lista de argumentos.
Portanto, esse exemplo coloca
“Welcome to” no lugar do primeiro %s
e “Java Programming!” no lugar do
segundo %s.
O especificador de formato %d é um
marcador de lugar para um valor int.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
22
IMPRIMINDO INTEIROS
Caractere de
conversão
Descrição
d Exibe um inteiro decimal (base 10)
o Exibe um inteiro octal (base 8)
x ou X Exibe um número inteiro hexadecimal
(base 16). X utiliza letras maiúsculas
A Tabela abaixo descreve os caracteres de conversão
integrais.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
23
APLICAÇÃO DO PRINTF
Saída do programa
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
24
IMPRIMINDO NÚMEROS DE PONTO
FLUTUANTE
A Tabela abaixo descreve as conversões de ponto flutuante.
CARACTERE DE
CONVERSÃO
DESCRIÇÃO
e ou E
Exibe um valor de ponto flutuante em notação exponencial. O caractere de
conversão E exibe a saída em letras maiúsculas. Por exemplo, o valor
150,4582 é representado por 1, 504582x102 (notação científica
matemática) e é representado na notação exponencial 1,504582e+02 no
Java.
f Exibe um valor de ponto flutuante no formato decimal.
g ou G
Exibe um valor de ponto flutuante no formato de ponto flutuante f ou no
formato exponencial e com base na magnitude do valor. Se a magnitude for
menor que 10-3, maior ou igual a 107, o valor de ponto flutuante será
impresso com e (ou E). Caso contrário, o valor é impresso no formato f.
Quando o caractere de conversão G é utilizado, a saída é exibida em letras
maiúsculas.
a ou A
Exibe um número de ponto flutuante no formato hexadecimal. O caractere
de conversão A exibe a saída em letras maiúsculas.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
25
IMPRIMINDO NÚMEROS DE PONTO
FLUTUANTE
1,504582e+02
Essa notação indica que 1,504582
é multiplicado por 10 elevado à
segunda potência (e+02). O e
significa “expoente”.
LEMBRETE!
A saída dos valores impressos com os caracteres de
conversão e, E e f é gerada, por padrão, com seis
dígitos de precisão à direita do ponto de fração
decimal (por exemplo, 1,045921) – outras precisões
devem ser especificadas explicitamente.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
26
IMPRIMINDO NÚMEROS DE PONTO
FLUTUANTE
LEMBRETE!
Para valores impressos com o caractere de
conversão g, a precisão representa o número total de
dígitos exibidos sem o expoente. O padrão é seis
dígitos (por exemplo, 12345678,9 é exibido como
1,23457e+07;
O caractere de conversão f sempre imprime pelo
menos um dígito à esquerda do ponto de fração
decimal;
Os caracteres de conversão e e E imprimem o e em
minúscula e o E em maiúscula antes do expoente e
sempre imprime exatamente um dígito à esquerda
do ponto de fração decimal;
O arredondamento ocorre se o valor sendo
formatado tiver mais dígitos significativos do que de
precisão.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
27
APLICAÇÃO DO
PRINTF
Saída do programa
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
28
IMPRIMINDO STRINGS E CARACTERES
Os caracteres
de conversão c e
s imprimem
caracteres e
strings
específicos,
respectivamente;
Os caracteres
de conversão c e
C requerem um
argumento do
tipo char.
Os caracteres
de conversão s e
S podem receber
uma String ou
algum Object
como um
argumento.
Quando os
caracteres de
conversão C e S
são utilizados, a
saída é exibida em
letras maiúsculas;
A Figura G.5
exibe caracteres,
strings e objetos
com os caracteres
de conversão c e s.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
29
IMPRIMINDO STRINGS E CARACTERES -
APLICAÇÃO
Saída do programa
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
30
COMENTANDO O CÓDIGO-FONTE
Linha 14 – ocorre o
autoboxing
(“empacotamento”) quando
uma constante int é atribuída a
um objeto Integer;
Linha 20 – gera saída de um
argumento Integer com o
caractere de conversão s, que
invoca implicitamente o
método toString para obter o
valor de inteiro;
Também poderia ser gerada
a saída de um objeto Integer
utilizando o especificador de
formato %d. Nesse caso, o
valor int no objeto será
“desempacotado” (unboxing) e
impresso.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
31
IMPRIMINDO DATAS E HORAS
O caractere de
conversão t (ou
T) é utilizado
para imprimir
datas e horas em
vários formatos;
Ele sempre é
seguido por um
caractere de
sufixo de
conversão que
especifica que o
formato de data
e/ou hora.
Quando o
caractere de
conversão T é
utilizado, a saída é
exibida em letras
maiúsculas;
A Tabela A a
seguir lista os
caracteres de
sufixo de
conversão comuns
para formatar
composições de
data e hora que
exibem tanto a
data como a hora.
A Tabela B lista os
caracteres de sufixo
de conversão comuns
para formatar datas;
A Tabela C lista os
caracteres de sufixo
de conversão comuns
para formatar horas;
Para a lista completa
de caracteres de
sufixo de conversão,
visite
java.sun.com/javase/6
/docs/api/java/util/Fo
rmatter.html.
1 2
3
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
32
IMPRIMINDO DATAS E HORAS
TABELA A – Caracteres de sufixo de conversão de composição de data e hora
Caractere de sufixo
de conversão
Descrição
c
Exibe a data e hora formatadas como
day month date hour:minute:second time-zone year
com três caracteres para day e month, dois dígitos para date, hour, minute e
second e quatro dígitos para year – por exemplo, Wed Mar 03 16:30:25 GMT-
05:00 2004. O relógio de 24 horas é utilizado. GMT-05:00 é o fuso horário.
F
Exibe a data formatada como year-month-date com quatro dígitos para o
year e dois dígitos cada para o month e a date (por exemplo, 2004-05-04).
D
Exibe a data formatada como month/day/year com dois dígitos cada para o
month, day e year (por exemplo, 03/03/04).
r
Exibe a hora no formato de 12 horas como hour:minute:second AM|PM com
dois dígitos cada para a hour, minute e second (por exemplo, 04:30:25 PM).
R
Exibe a hora formatada como hour:minute com dois dígitos cada para a hour
e minute (por exemplo, 16:30). O relógio de 24 horas é utilizado.
T
Exibe a hora como hour:minute:second com dois dígitos para hour, minute e
second (por exemplo, 16:30:25). O relógio de 24 horas é utilizado
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
33
IMPRIMINDO DATAS E HORAS
TABELA B – Caracteres de sufixo de conversão de formatação de data
Caractere de sufixo
de conversão
Descrição
A Exibe o nome completo do dia da semana (por exemplo, Wednesday).
a Exibe o nome com três caracteres do dia da semana (por exemplo, Wed).
B Exibe o nome completo do mês (por exemplo, March).
b Exibe o nome abreviado com três caracteres do mês (por exemplo, Mar).
d
Exibe o dia do mês com dois dígitos, preenchendo com zeros à esquerda
conforme necessário (por exemplo, 03).
m
Exibe o mês com dois dígitos, preenchendo com zeros à esquerda conforme
necessário (por exemplo, 07).
e Exibe o dia de mês sem zeros à esquerda (por exemplo, 3).
Y Exibe o ano com quatro dígitos (por exemplo, 2004).
y Exibe os dois últimos dígitos do ano com zeros à esquerda (por exemplo, 04).
j
Exibe o dia do ano com três dígitos, preenchendo com zeros à esquerda
conforme necessário (por exemplo, 016).
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
34
IMPRIMINDO DATAS E HORAS
TABELA C – Caracteres de sufixo de conversão de formatação de hora
Caractere de sufixo de
conversão
Descrição
H
Exibe horas no relógio de 24 horas com um zero à esquerda conforme
necessário (por exemplo, 16).
I
Exibe horas no relógio de 12 horas com um zero à esquerda conforme
necessário (por exemplo, 04).
K Exibe horas em relógio de 24 horas sem zeros à esquerda (por exemplo, 16).
 Exibe horas em relógio de 12 horas sem zeros à esquerda (por exemplo, 4)
M
Exibe minutos com um zero à esquerda conforme necessário (por exemplo,
06).
S
Exibe segundos com um zero à esquerda conforme necessário (por exemplo,
05).
Z
Exibe a abreviação para o fuso horário (por exemplo, EST, significa Eastern
Standard Time, que está 5 horas atrás do Greenwich Mean Time).
p
Exibe marcador de manhã ou de tarde em letras minúsculas (por exemplo,
pm).
P
Exibe marcador de manhã ou de tarde em letras maiúsculas (por exemplo,
PM).
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
35
IMPRIMINDO DATAS E HORAS - LABORATÓRIO
A Figura G.9 utiliza os caracteres de conversão t e T com
os caracteres de sufixo de conversão para exibir datas e
horas em vários formatos;
O caractere de conversão t requer que o argumento
correspondente seja uma data ou hora do tipo long,
Calendar (pacote java.util) ou Date (pacote java.util);
Os objetos de cada uma dessas classes podem
representar datas e horas
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
36
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
37
OUTROS CARACTERES DE CONVERSÃO
Os caracteres de conversão restantes são b, B, h, H, % e n.
Estes são discutidos na Tabela abaixo:
Caractere de
conversão
Descrição
b ou B Imprime “true” ou “false” para o valor de um boolean ou Boolean.
Esses caracteres de conversão também podem formatar o valor de
qualquer referência. Se a referência for null, “true” será impresso,
do contrário, “false”. Quando o caractere de conversão B é
utilizado, a saída é exibida em letras maiúsculas.
h ou H Imprime a representação de string de um valor de código de hash
do objeto em formato hexadecimal. Se o argumento
correspondente for null, “null” será impresso. Quando o caractere
de conversão H é utilizado, a saída é exibida em letras maiúsculas.
% Imprime o caractere de porcentagem.
n Imprime o separador de linha específico à plataforma (por
exemplo, rn no Windows ou n no UNIX/LINUX.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
38
COMENTANDO O CÓDIGO As linhas 14 e 15 utilizam %b
para imprimir o valor de valores
boolean (ou Boolean) false e
true;
A linha 16 associa uma linha
String a %b que retorna true
porque não é null;
A linha 17 associa um objeto
null a %B, que exibe FALSE
porque test é null;
As linhas 18 e 19 utilizam %h
para imprimir as representações
de string dos valores de código
de hash para as strings “hello” e
“Hello”;
A linha 20 utiliza %H para
imprimir null em letras
maiúsculas;
As duas últimas instruções
printf (linhas 21 e 22) utilizam
%% para imprimir o caractere %
em uma string e %n para
imprimir um separador de linha
específico à plataforma.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
39
IMPRIMINDO COM LARGURAS E
PRECISÕES DE CAMPOS
O tamanho exato de um campo em que dados são impressos é
especificado por uma largura de campo.
Se a largura de campo for maior que os dados a serem
impressos, os dados serão alinhados por padrão à direita no
campo.
Insira um inteiro que representa a largura de campo entre o %
e o caractere de conversão (por exemplo, %4d) no especificador
de formato.
A Figura G.12 imprime dois grupos de cinco números cada,
alinhando à direita os números que contém menos dígitos do
que a largura do campo.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
40
Considerações
Observe que a largura de campo é aumentada para imprimir
valores com largura maior do que o campo e que o sinal de
subtração para um valor negativo utiliza uma posição de caractere
no campo;
Se nenhuma largura de campo for especificada, os dados serão
impressos exatamente de acordo com o número de posições
necessárias;
As larguras de campo podem ser usadas com todos os
especificadores de formato, exceto o separador de linha (%n).
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
41
IMPRIMINDO COM LARGURAS E
PRECISÕES DE CAMPOS
O método printf também fornece a capacidade de especificar
a precisão com que os dados são impressos;
A precisão tem diferentes significados para diferentes tipos:
Quando usada com caracteres de conversão de ponto
flutuante e e f, a precisão é o número de dígitos que aparece depois do ponto
de fração decimal;
Quando usada com os caracteres de conversão g, a ou A,
a precisão é o número máximo de dígitos significativos a ser impresso;
Quando usada com o caractere de conversão s, a
precisão é o número máximo de caracteres a ser gravado da string;
Para utilizar a precisão, coloque entre o sinal de
postagem e o especificador de conversão um ponto de fração decimal ( . )
seguido por um inteiro que representa a precisão.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
42
IMPRIMINDO COM LARGURAS E
PRECISÕES DE CAMPOS
A Figura g.13 demonstra o uso da precisão em strings de
formato:
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
43
IMPRIMINDO COM LARGURAS E
PRECISÕES DE CAMPOS
COMENTÁRIOS
Quando um valor de ponto
flutuante é impresso com uma
precisão menor do que o número
original de casas decimais no valor, o
valor é arredondado;
O especificador de formato %.3g
indica que o número total de dígitos
usado para exibir o valor de ponto
flutuante é 3;
Como o valor tem três dígitos à
esquerda do ponto de fração decimal,
ele é arredondado para a casa das
unidades;
A largura e a precisão de campo
podem ser combinadas colocando a
largura de campo, seguida por um
ponto de fração decimal, seguido por
uma precisão entre o sinal de
porcentagem e o caractere de
conversão, como na instrução abaixo:
printf( “%9.3f”, 123.456789 );
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
44
UTILIZANDO FLAGS NA STRING DE FORMATO
PRINTF
Vários flags podem ser utilizados com o método printf para
suplementar suas capacidades de formatação de saída. Sete
flags estão disponíveis para utilização nas strings de formato
(Tabela abaixo).
FLAG DESCRIÇÃO
- (sinal de subtração) Alinha a saída à esquerda dentro do campo especificado
+ (sinal de adição) Exibe um sinal de adição precedendo valores positivos e um sinal de
subtração precedendo valores negativos.
espaço Imprime um espaço antes de um valor positivo não impresso com o flag +.
≠ O prefixo 0 para o valor de saída quando utilizado com o caractere de
conversão octal o. Adiciona o prefixo 0x ao valor de saída quando utilizado
com o caractere de conversão hexadecimal x.
0 (zero) Preenche um campo com zeros à esquerda.
, (vírgula) Utiliza o separador específico de localidade de milhares (isto é, ‘ , ‘ para
localidade nos EUA) para exibir números decimais e de ponto flutuante.
( Inclui números negativos dentro de parênteses.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
45
UTILIZANDO FLAGS NA STRING DE FORMATO
PRINTF
Para utilizar um flag em uma string de formato, coloque-o
imediatamente à direita do sinal de porcentagem.
Vários flags podem ser utilizados no mesmo especificador de
formato.
A Figura G.15 demonstra o alinhamento à direita e o
alinhamento à esquerda de uma string, um inteiro, um caractere
e um número de ponto flutuante.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
Saída do programa
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
UTILIZANDO FLAGS NA STRING DE FORMATO
PRINTF
A Figura G.16 imprime um número positivo e um número
negativo, cada um com e sem o flag +.
Observe que o sinal de subtração é exibido nos dois casos, mas
o sinal de adição somente quando o flag + é utilizado.
Saída do aplicativo Java
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
UTILIZANDO FLAGS NA STRING DE FORMATO
PRINTF
A Figura G.17 prefixa um espaço para o número positivo com o
flag espaço. Isso é útil para alinhar números positivos e
negativos com o mesmo número de dígitos.
Observe que o valor -547 não é precedido por um espaço na
saída por causa do seu sinal de subtração.
Saída do aplicativo Java
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
UTILIZANDO FLAGS NA STRING DE FORMATO
PRINTF
A Figura G.18 utiliza o flag # para prefixar O para o valor octal e
Ox para o valor hexadecimal.
Saída do aplicativo Java
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
UTILIZANDO FLAGS NA STRING DE FORMATO
PRINTF
A Figura G.19 combina o flag +, o flag 0 e o flag espaço para
imprimir 452 em um campo de largura 9 com um sinal + e zeros
à esquerda, em seguida imprime 452 em um campo de largura 9
utilizando somente o flag 0 e, então, imprime 452 em um campo
de largura 9 utilizando somente o flag espaço.
Saída do aplicativo Java
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
UTILIZANDO FLAGS NA STRING DE FORMATO
PRINTF
A Figura G.20 utiliza o flag vírgula ( , ) para exibir números
de ponto flutuante com o separador de milhares;
A Figura G.21 inclui números negativos entre parênteses
utilizando o flag ( ;
Observe que o valor 50 não é incluído entre parênteses na
saída porque é um número positivo.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
Saída do programa
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
Saída do programa
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
IMPRIMINDO COM ÍNDICES DE ARGUMENTO
Um índice de argumentos é um inteiro opcional seguido por um
sinal $ que indica a posição do argumento na lista de
argumentos.
Por exemplo, as linhas 26-28 e 31-32 na Figura G.9
utilizam o índice de argumentos “1$” para indicar que todos os
especificadores de formato utilizam o primeiro argumento da
lista de argumentos.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
... IMPRIMINDO COM ÍNDICES DE ARGUMENTO
Os índices de argumentos permitem que os programadores
reordenem a saída de modo que os argumentos na lista de
argumentos não necessariamente estejam na ordem dos seus
especificadores de formato correspondentes;
Os índices de argumento também ajudam a evitar a duplicação
de argumentos;
A Figura G.22 imprime os argumentos da lista de argumentos
na ordem inversa utilizando o índice de argumentos.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
Saída do programa
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
IMPRIMINDO LITERAIS E SEQUÊNCIAS DE
ESCAPE
A maioria dos caracteres literais a ser impressa em uma
instrução printf pode ser simplesmente incluída na string de
formato. Entretanto, há vários caracteres “problemáticos”, como
aspas ( “ ) que delimitam a própria string de formato;
Vários caracteres de controle, com a nova linha e tabulação,
devem ser representados por sequências de escape;
Uma sequência de escape é representada por uma barra
invertida (  ), seguida por um caractere de escape;
A Tabela a seguir lista as sequências de escape e as ações
resultantes:
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
SEQUÊNCIAS DE
ESCAPE
DESCRIÇÃO
’ (aspa simples) Gera saída do caractere de aspa simples ( ‘ )
” (aspas duplas) Gera a saída do caractere de aspas duplas ( “ )
 (barras invertidas) Gera a saída do Caractere de barra invertida (  )
b (backspace) Move o cursor de volta uma posição na linha atual
f (nova página ou
avanço de formulário)
Move o cursor para o início da próxima página lógica
n (nova linha) Move o cursor para o começo da próxima linha
r (retorno de carro) Move o cursor para o começo da linha atual
t (tabulação
horizontal)
Move o cursor para a próxima posição da tabulação
horizontal
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
FORMATANDO SAÍDA COM A CLASSE
FORMATTER
Até agora, discutimos a exibição de saída formatada para o
fluxo de saída padrão;
O que devemos fazer se quisermos enviar saídas formatadas a
outros fluxos de saída ou dispositivos, como um JTextArea ou
um arquivo?
A solução conta com a classe
Formatter (do pacote Formatter),
que fornece as mesmas capacidades
de formatação de printf;
Formatter é uma classe utilitária
que permite aos programadores
gerar saída formatada de dados para
um destino especificado, como um
arquivo em disco;
Por padrão, uma Formatter cria
uma string na memória.
Fonte: http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JTextArea.html
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
Saída do programa
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O PROGRAMA A linha 21 cria um objeto Formater utilizando
o construtor padrão, assim esse objeto
construirá uma string na memória;
Outros construtores são fornecidos para que
você possa especificar o destino em que os
dados formatados devem ser impressos. Para
detalhes, consulte as URL´s abaixo:
www.java.sun.com/javase/6/docs/api/java/util
/Formatter.html
http://download.oracle.com/javase/6/docs/api
/
A linha 22 invoca o método format para
formatar a saída. Como ocorre com printf, o
método format recebe uma string de formato
e uma lista de argumentos;
A diferença é que printf envia a saída
formatada diretamente para o fluxo de saída
padrão, enquanto o método format envia a
saída formatada para o destino especificado
pelo seu construtor (nesse programa, uma
string na memória.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O PROGRAMA
A linha 25 invoca o método toString de
Formatter para obter os dados formatados
como uma string, que então é exibida em uma
caixa de diálogo de mensagem;
Observe que a classe String também fornece
um método static de conveniência chamado
format que permite criar uma string na
memória sem precisar antes criar um objeto
Formatter;
As linhas 21-22 e a linha 25 na Figura G.24
poderiam ter sido substituídas por;
String s = String.format( “%d = %#o = %#x”,
10, 10, 10 );
JOptionPane.showMessageDialog( null, s );
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
OUTRO APLICATIVO: SOMANDO INTEIROS
Nosso próximo aplicativo lê (ou insere) dois inteiros (números
integrais, como -22, 7, 0 e 1024) digitados por um usuário no
teclado, calcula a soma dos valores e exibe o resultado ;
Esse programa deve manter um registro dos números
fornecidos pelo usuário para o cálculo posterior no programa;
Os programas lembram-se dos números e outros dados na
memória do computador e acessam esses dados por meio de
elementos de programa chamados variáveis;
O programa da Figura 2.7 demonstra esses conceitos. Na saída
de exemplo, usamos o texto em negrito para identificar a
entrada do usuário (isto é, 45 e 72).
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
Linhas de 1 – 6 são comentários
padrão;
Linha 9 é uma declaração import que
ajuda o compilador a localizar uma
classe utilizada ou necessária nesse
programa;
Um dos pontos fortes do Java é seu
rico conjunto de classes predefinidas
que podemos reutilizar em vez de
“reinventar a roda”;
Essas classes são agrupadas em
pacotes – chamados de grupos de
classes relacionadas – e, coletivamente,
são chamadas de biblioteca de classes
Java, ou Java Application Programming
Interface (Java API);
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
Utilize declarações import para
identificar as classes predefinidas
utilizadas em um programa Java;
A declaração import na linha 9 indica
que esse exemplo usa a classe Scanner
predefinida do Java do pacote java.util;
A linha 11 public class Addition inicia a
declaração da classe Addition. O nome
de arquivo para essa classe public deve
ser Addition.java;
{ e } são as chaves de abertura e
fechamento do corpo de cada
declaração de classe, respectivamente;
O aplicativo inicia a execução com o
método main (linhas 13-31);
A linha 15 Scanner input = new
Scanner( System.in ); é uma instrução
de declaração de variável que
especifica o nome (input) e o tipo
(Scanner) de uma variável que é usada
nesse programa;
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
Uma variável é uma posição na
memória do computador onde um valor
pode ser armazenado para uso
posterior em um programa;
Todas as variáveis Java devem ser
declaradas com um nome e um tipo
antes que elas possam ser utilizadas;
O nome de uma variável permite que
o programa acesse o valor da variável
na memória;
Memória
Variável
Valor
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
O nome de uma variável pode ser
qualquer identificador válido;
O tipo de uma variável especifica o tipo de
informações armazenado nessa posição na
memória;
As instruções de declaração terminam
com um ponto-e-vírgula ( ; );
A declaração na linha 15 especifica que a
variável nomeada input seja do tipo
Scanner;
Um Scanner permite a um programa ler os
dados (por exemplo, números) para
utilização em um programa;
O sinal de igual ( = ) na linha 15 indica que
a variável Scanner input deve ser
inicializada (isto é, preparada para
utilização no programa) na sua declaração
com o resultado da expressão new Scanner(
System.in ) à direita do sinal de igual;
Essa expressão utiliza a palavra-chave new
para criar um objeto Scanner que lê
caracteres digitados pelo usuário no
teclado;
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
Na linha 15, o objeto de entrada padrão,
System.in, permite que aplicativos leiam
bytes de informações digitadas pelo usuário.
O objeto Scanner traduz esses bytes em tipos
(como ints) que podem ser utilizados em um
programa;
As instruções de declaração de variável nas
linhas 17-19:
int x; // primeiro número a adicionar
int y; // segundo número a adicionar
int soma; // soma de x e y
Declaram que as variáveis x, y e soma
armazenam dados do tipo int – elas podem
armazenar valores inteiros (números inteiros
como 72, -1127 e 0);
O intervalo de valores para um int é -
2.147.483.648 a +2.147.483.648;
A seguir, serão discutidos os tipos float e
double, para armazenar números reais, e o
tipo char, para armazenar dados de
caracteres;
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
Os números reais contêm pontos decimais,
como 3.4, 0.0 e -11.19;
Variáveis do tipo char representam
caracteres individuais, como uma letra
maiúscula (por exemplo, A), um dígito (por
exemplo, 7), um caractere especial (por
exemplo, * ou %) ou uma sequência de
escape (por exemplo, o caractere de nova
linha, n);
Os tipos boolean (true ou false), char, byte,
short, int, long, float e double são chamados
de tipos primitivos do Java (ver Apêndice D
do Deitel);
Os nomes dos tipos primitivos são palavras-
chave e devem aparecer em letras
minúsculas;
Diversas variáveis do mesmo tipo podem ser
declaradas em uma declaração com os nomes
de variável separadas por vírgulas (isto é, uma
lista separada por vírgulas de nomes de
variáveis. Por exemplo:
int x, y, soma;
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
A linha 21 System.out.print( “Digite um
valor para x: “); // prompt utiliza
System.out.print para exibir a mensagem
Digite um valor para x: Essa mensagem é
chamada prompt porque direciona o usuário
para uma ação específica;
Utilizamos o método print aqui em vez de
println para que a entrada do usuário apareça
na mesma linha que o prompt;
System é uma classe. A classe System faz
parte do pacote java.lang (ver slide seguinte);
Observe que a classe System não é
importada com uma declaração import no
começo do programa;
A linha 22, x = input.nextInt(); // lê o valor
de x utiliza o método nextInt do valor de input
do objeto Scanner para obter um inteiro
digitado pelo usuário;
O programa assume que o usuário insira um
valor válido de inteiro. Caso não válido, um
erro de lógica em tempo de execução
ocorrerá e o programa terminará. O Capítulo
11 discute como tornar os programas Java
mais robustos permitindo que esses tratem
tais erros, tornando-os tolerantes a falhas.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
API java.lang
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
Na linha 22, x = input.nextInt(); // lê o valor
de x, o resultado da chamada ao método
nextInt (um valor int) é colocado na variável x
utilizando o operador de atribuição, =.;
O operador = é chamado de operador
binário, porque tem dois operandos – x e o
resultado da chamada de método
input.nextInt();
A linha 24 System.out.print( “Digite um
valor para y: “); // prompt pede para o
usuário inserir o segundo inteiro;
A linha 25 y = input.nextInt(); // lê o
segundo inteiro fornecido pelo usuário e o
atribui à variável y;
A linha 27, soma = x + y; é uma instrução de
atribuição que calcula a soma das variáveis x e
y e, então, atribui o resultado à variável soma;
As partes das instruções que contém
cálculos são chamadas de expressões;
Uma expressão é qualquer parte de uma
instrução que tem um valor associado com
ela. Por exemplo, o valor da expressão
input.nextInt() é um inteiro digitado pelo
usuário.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
A linha 29, System.out.prinf( “Soma de x+y =
%dn”, soma); utiliza o método
System.out.printf para exibir a soma;
O especificador de formato %d é um
marcador de lugar para um valor int (nesse
caso o valor de sum) – a letra d significa
“inteiro decimal”;
Observe que além do especificador de
formato %d, todos os caracteres restantes na
string de formato são texto fixo. Portanto, o
método printf exibe “soma de x+y = “, seguido
pelo valor de soma (na posição do
especificador de formato %d) e por uma nova
linha;
Os cálculos também podem ser realizados
dentro de instruções printf, como segue
abaixo:
System.out.printf( “Soma de x+y = %dn”, x+y).
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
DOCUMENTAÇÃO DA JAVA API
Para cada nova classe da Java API que usamos, indicamos o
pacote em que ela está localizada;
Essas informações ajudam a localizar descrições de
cada pacote e classe na documentação da Java API;
Uma versão baseada na Web dessa documentação
pode ser obtida em:
java.sun.com/javase/6/docs/api
Java.sun.com/javase/downloads
O Apêndice E mostra como utilizar
essa documentação
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
CONCEITOS DE MEMÓRIA
Os nomes de variável como x, y e soma realmente
correspondem às posições na memória do computador;
Cada variável tem um nome, um tipo, um tamanho
(em bytes) e um valor, por exemplo:
x = input.nextInt();
x 45
Posição da memória mostrando o
nome e o valor da variável x
MEMÓRIA
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
ARITMÉTICA
A maioria dos programas realiza cálculos aritméticos;
Os operadores aritméticos (símbolos ou sinais) são resumidos
na Tabela abaixo:
Operação Java Operador Expressão algébrica Expressão Java
Adição + f + 7 f + 7
Subtração - p - c p - c
Multiplicação * bm b * m
Divisão / x/y ou x ÷ y x / y
Resto % r mod s r % s
y
x
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
CONSIDERAÇÕES SOBRE OS OPERADORES
ARITMÉTICOS
O asterisco ( * ) indica multiplicação, e o sinal de porcentagem
( % ) é o operador de resto (módulo);
Os operadores aritméticos da Tabela anterior são operadores
binários porque cada um deles opera em dois operandos. Por
exemplo, a expressão f + 7 contém o operador binário + e os dois
operandos f e 7;
A divisão de inteiros produz um quociente do tipo inteiro; por
exemplo, a expressão 7 / 4 é avaliada como 1 e a expressão 17 /
5 é avaliada como 3. Qualquer parte fracionária na divisão de
inteiros é simplesmente descartada (isto é, truncada);
O Java fornece o operador de módulo, % que fornece o resto
da divisão. A expressão x % y produz o restante depois que x é
dividido por (por exemplo: 7 % 4 = 3 e 17 % 5 = 2
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
ARITMÉTICA
Expressões aritméticas na forma de reta
As expressões aritméticas em Java devem ser escritas na
forma de linha reta para facilitar a inserção de programas no
computador
(certo)
(errado)
ba
b
a
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
ARITMÉTICA
Parênteses para agrupar subexpressões
Os parêntese são utilizados para agrupar termos em
expressões Java da mesma maneira como em expressões
algébricas. Por exemplo, para multiplicar a vezes a quantidade b
+ c, escreveremos:
a * (b + c);
Se uma expressão contiver parênteses aninhados,
como:
( (a + b ) * c )
a expressão no conjunto de parêntese mais interno ( a + b nesse
caso ) é avaliada primeiro.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
ARITMÉTICA
Regras de precedência de operadores
O Java aplica os operadores em expressões aritméticas
em uma sequência precisa determinada pelas seguintes regras
de precedência de operadores, conforme Tabela abaixo:
Operador Operação Ordem de avaliação (precedência)
* Multiplicação Avaliado primeiro. Se houver vários operadores desse
tipo, eles são avaliados da esquerda para a direita./ Divisão
% Resto
+ Adição Avaliado em seguida. Se houver vários operadores
desse tipo, eles são avaliados da esquerda para a
direita.
- Subtração
= Atribuição Avaliado por último
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
ARITMÉTICA
Exemplos de expressões algébricas e Java
Nesse exemplo, vamos considerar várias expressões à luz
das regras de precedência de operador. Cada exemplo lista uma
expressão algébrica e seu equivalente Java. O seguinte é um
exemplo de uma média aritmética de cinco termos:
ÁLGEBRA
JAVA m = (a + b + c + d + e) / 5;
5
edcba
m
++++
=
OBS.: Os parênteses são exigidos porque a divisão tem precedência mais alta que a
adição. Se não houvessem os parênteses, a expressão seria do tipo
m = a + b + c + d + e / 5;
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
ARITMÉTICA
Exemplos de expressões algébricas e Java
Eis um exemplo da equação de uma linha reta:
Álgebra: y = mx + b
Java: y = m * x + b;
Nenhum parêntese é requerido. O operador de multiplicação ( *
) é aplicado primeiro porque a multiplicação tem uma
precedência mais alta que a adição.
A atribuição ( = ) ocorre por último porque ela tem uma
precedência mais baixa que a multiplicação ou adição.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
ARITMÉTICA
Exemplos de expressões algébricas e Java
O exemplo seguinte contém operações de resto ( % ),
multiplicação, divisão, adição e subtração:
Álgebra: z = pr%q + w/x – y
Java: z = p * r % q + w / x - y;
A atribuição ( = ) ocorre por último porque ela tem uma
precedência mais baixa que a multiplicação ou adição.
1
2
3
4 5
6
Ordem em que
o Java aplica os
operadores
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
ARITMÉTICA
Avaliação de um polinômio de segundo grau
Para entender melhor as regras de precedência de
operadores, considere a avaliação de uma expressão de
atribuição que inclui um polinômio de segundo grau y = ax2 + bx
+ c
y = a * x * x + b * x + c
A atribuição ( = ) ocorre por último porque ela tem uma
precedência mais baixa que a multiplicação ou adição.
6 1 2 34 5
Da esquerda para a
direita
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
TOMADA DE DECISÃO: OPERADORES DE
IGUALDADE E OPERADORES RELACIONAIS
Uma condição é uma expressão que pode ser true
(verdadeira) ou false (falsa). Essa seção apresenta a
instrução de seleção if do Java que permite a um
programa tomar uma decisão com base no valor de
uma condição.
Por exemplo, a condição “nota é maior ou igual a 7.0”
determina se um aluno passou em um teste;
Se a condição em uma estrutura if for
verdadeira, o corpo da estrutura if é executada. Se a condição for
falsa, o corpo não é executado
As condições nas instruções if podem
ser formadas utilizando os operadores de igualdade ( == e != ) e
operadores relacionais ( >, <, >= e <= ) resumidos na tabela a
seguir:
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
TOMADA DE DECISÃO: OPERADORES DE
IGUALDADE E OPERADORES RELACIONAIS
Operador de igualdade
ou relacional algébrico
padrão
Operador de igualdade
ou relacional Java
Exemplo de
condição em
Java
Significado da
condição em
Java
Operadores de
igualdade
= == x == y x é igual a y
≠ != x != y x é diferente de y
Operadores relacionais
> > x > y x é maior que y
< < x < y x é menor que y
≥ >= x >= y x é maior que ou
igual a y
≤ <= x <= y x é menor que ou
igual a y
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
Laboratório: uso da instrução if
A Figura 2.15 utiliza seis instruções if para
comparar duas entradas de inteiros pelo usuário.
Se a condição em alguma dessas instruções if for
verdadeira, a instrução de saída associada com
essa instrução if é executada; caso contrário, a
instrução é pulada. O programa utiliza um
Scanner para inserir os dois inteiros do usuário e
armazena-os nas variáveis number1 e number2.
O programa então compara os números e exibe
os resultados das comparações que são
verdadeiras. São mostradas três saídas de
exemplo.
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
Três saídas diferentes do
aplicativo
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
COMENTANDO O CÓDIGO
Linha 20,
Scanner input = new Scanner( System.in
); - declara a variável Scanner input e lhe
atribui um Scanner que insere dados a partir
da entrada padrão (teclado);
Linhas 25 e 26,
System.out.print( “Enter first integer: “ );
number1 = input.nextInt();
solicitam que o usuário digite o primeiro
inteiro e insira o valor, respectivamente;
Uma instrução if espera uma instrução em
seu corpo, mas pode conter múltiplas
instruções se elas estiverem entre
parênteses ( { } );
Não há ponto-e-vírgula ( ; ) no final da
primeira linha de cada instrução if. Um
ponto-e-vírgula resultaria em um erro de
lógica em tempo de execução. Por exemplo:
if( number1 == number2 ); // erro de lógica
System.out.printf( “%d == %dn”,
number1, number2 );
Seria interpretado pelo Java como:
if( number1 == number2 )
; // estrutura vazia ou instrução
vazia
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br
REFERÊNCIA

Mais conteúdo relacionado

Mais procurados

Lógica parte 2 - Algoritmos
Lógica   parte 2 - AlgoritmosLógica   parte 2 - Algoritmos
Lógica parte 2 - AlgoritmosWallison Parreira
 
As cinco etapas da programação
As cinco etapas da programaçãoAs cinco etapas da programação
As cinco etapas da programaçãoClausia Antoneli
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosRodrigo Kiyoshi Saito
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação ISidney Roberto
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgRegis Magalhães
 
Algoritmos computacionais
Algoritmos computacionaisAlgoritmos computacionais
Algoritmos computacionaisDérick Platini
 
Guia para traducao algoritmos x l ps
Guia para traducao algoritmos x l psGuia para traducao algoritmos x l ps
Guia para traducao algoritmos x l psMauro Pereira
 
Programando com pascal
Programando com pascalProgramando com pascal
Programando com pascalRamon Souza
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interaçãoHumberto Cepep
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualgecompo
 
03 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.103 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.1César Augusto Pessôa
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em PascalPepe Rocker
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1Marcio Pinto
 
Apostila programação "pascalzim"
Apostila programação "pascalzim"Apostila programação "pascalzim"
Apostila programação "pascalzim"deniscody
 

Mais procurados (20)

Lógica parte 2 - Algoritmos
Lógica   parte 2 - AlgoritmosLógica   parte 2 - Algoritmos
Lógica parte 2 - Algoritmos
 
As cinco etapas da programação
As cinco etapas da programaçãoAs cinco etapas da programação
As cinco etapas da programação
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Java2
Java2Java2
Java2
 
Linguagem c parte 1
Linguagem c parte 1Linguagem c parte 1
Linguagem c parte 1
 
Apostila Visualg
Apostila VisualgApostila Visualg
Apostila Visualg
 
Aula iv
Aula ivAula iv
Aula iv
 
Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmos
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação I
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o Visualg
 
Algoritmos computacionais
Algoritmos computacionaisAlgoritmos computacionais
Algoritmos computacionais
 
Guia para traducao algoritmos x l ps
Guia para traducao algoritmos x l psGuia para traducao algoritmos x l ps
Guia para traducao algoritmos x l ps
 
Programando com pascal
Programando com pascalProgramando com pascal
Programando com pascal
 
Java4
Java4Java4
Java4
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interação
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualg
 
03 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.103 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.1
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em Pascal
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1
 
Apostila programação "pascalzim"
Apostila programação "pascalzim"Apostila programação "pascalzim"
Apostila programação "pascalzim"
 

Destaque

Curso Java #04 - Programação Orientada a Objetos
Curso Java #04 - Programação Orientada a Objetos Curso Java #04 - Programação Orientada a Objetos
Curso Java #04 - Programação Orientada a Objetos Renato Sousa
 
Netbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java DesktopNetbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java Desktopelliando dias
 
Aula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em JavaAula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em JavaAparicio Junior
 
Aula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em JavaAula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em JavaAparicio Junior
 
Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.Gabriel Jesus
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaCristiano Almeida
 
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOProgramação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOCarlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Carlos Eduardo
 
IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)Wellington Oliveira
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetosNécio de Lima Veras
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVACristiano Almeida
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAislan Rafael
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Manual de Identidade Visual Senac
Manual de Identidade Visual SenacManual de Identidade Visual Senac
Manual de Identidade Visual SenacBeto Lima Branding
 
Fundamentos do desenho técnico
Fundamentos do desenho técnicoFundamentos do desenho técnico
Fundamentos do desenho técnicoleobispo28
 

Destaque (19)

Curso Java #04 - Programação Orientada a Objetos
Curso Java #04 - Programação Orientada a Objetos Curso Java #04 - Programação Orientada a Objetos
Curso Java #04 - Programação Orientada a Objetos
 
Netbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java DesktopNetbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java Desktop
 
Aula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em JavaAula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em Java
 
Aula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em JavaAula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em Java
 
Interface grafica
Interface graficaInterface grafica
Interface grafica
 
Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOProgramação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
 
Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1
 
Programação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a ObjetosProgramação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a Objetos
 
IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Manual de Identidade Visual Senac
Manual de Identidade Visual SenacManual de Identidade Visual Senac
Manual de Identidade Visual Senac
 
Fundamentos do desenho técnico
Fundamentos do desenho técnicoFundamentos do desenho técnico
Fundamentos do desenho técnico
 

Semelhante a Introd aplicjava

Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3PeslPinguim
 
Aula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixAula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixCris Fidelix
 
Aula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane FidelixAula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane FidelixCris Fidelix
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptx4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptxPatrícia Melo
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)Mario Sergio
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Lógica de programação 1
Lógica de programação 1Lógica de programação 1
Lógica de programação 1Diego Rodrigues
 
Aula01
Aula01Aula01
Aula01vdlos
 
PROJETO MODELO editado.docx
PROJETO MODELO editado.docxPROJETO MODELO editado.docx
PROJETO MODELO editado.docxDiedisonRamos1
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem cvingue
 

Semelhante a Introd aplicjava (20)

Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
 
Aula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixAula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane Fidelix
 
Aula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane FidelixAula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane Fidelix
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
1707331929 ltp iv java original
1707331929 ltp iv   java original1707331929 ltp iv   java original
1707331929 ltp iv java original
 
4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptx4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptx
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
apostila matlab
apostila matlabapostila matlab
apostila matlab
 
Aula 1
Aula 1Aula 1
Aula 1
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Man UAL
Man UALMan UAL
Man UAL
 
Manual robotec
Manual robotecManual robotec
Manual robotec
 
Lógica de programação 1
Lógica de programação 1Lógica de programação 1
Lógica de programação 1
 
JAVA - Controle de programa
JAVA - Controle de programaJAVA - Controle de programa
JAVA - Controle de programa
 
Logica usando c_-_aula_1
Logica usando c_-_aula_1Logica usando c_-_aula_1
Logica usando c_-_aula_1
 
Aula01
Aula01Aula01
Aula01
 
PROJETO MODELO editado.docx
PROJETO MODELO editado.docxPROJETO MODELO editado.docx
PROJETO MODELO editado.docx
 
Linguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem JavaLinguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem Java
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 

Mais de Cícero Quarto

Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015Cícero Quarto
 
Analise estatistica trabcicero
Analise estatistica trabciceroAnalise estatistica trabcicero
Analise estatistica trabciceroCícero Quarto
 
Vygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento ProximalVygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento ProximalCícero Quarto
 
Instruções de controle
Instruções de controleInstruções de controle
Instruções de controleCícero Quarto
 
Instruções de controle 1
Instruções de controle 1Instruções de controle 1
Instruções de controle 1Cícero Quarto
 
Introdução a classes e objetos
Introdução a classes e objetosIntrodução a classes e objetos
Introdução a classes e objetosCícero Quarto
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebCícero Quarto
 

Mais de Cícero Quarto (9)

Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015
 
Análise Estatística
Análise EstatísticaAnálise Estatística
Análise Estatística
 
Analise estatistica trabcicero
Analise estatistica trabciceroAnalise estatistica trabcicero
Analise estatistica trabcicero
 
Arquitetura SMA
Arquitetura SMAArquitetura SMA
Arquitetura SMA
 
Vygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento ProximalVygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento Proximal
 
Instruções de controle
Instruções de controleInstruções de controle
Instruções de controle
 
Instruções de controle 1
Instruções de controle 1Instruções de controle 1
Instruções de controle 1
 
Introdução a classes e objetos
Introdução a classes e objetosIntrodução a classes e objetos
Introdução a classes e objetos
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide Web
 

Último

Ressonancia_magnetica_basica_slide_da_net.pptx
Ressonancia_magnetica_basica_slide_da_net.pptxRessonancia_magnetica_basica_slide_da_net.pptx
Ressonancia_magnetica_basica_slide_da_net.pptxPatriciaFarias81
 
arte retrato de um povo - Expressão Cultural e Identidade Nacional
arte retrato de um povo - Expressão Cultural e Identidade Nacionalarte retrato de um povo - Expressão Cultural e Identidade Nacional
arte retrato de um povo - Expressão Cultural e Identidade Nacionalidicacia
 
Termo de audiência de Mauro Cid na ìntegra
Termo de audiência de Mauro Cid na ìntegraTermo de audiência de Mauro Cid na ìntegra
Termo de audiência de Mauro Cid na ìntegrafernando846621
 
Poder do convencimento,........... .
Poder do convencimento,...........         .Poder do convencimento,...........         .
Poder do convencimento,........... .WAGNERJESUSDACUNHA
 
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123JaineCarolaineLima
 
QUIZ - GEOGRAFIA - 8º ANO - FASES DO CAPITALISMO.pptx
QUIZ - GEOGRAFIA - 8º ANO - FASES DO CAPITALISMO.pptxQUIZ - GEOGRAFIA - 8º ANO - FASES DO CAPITALISMO.pptx
QUIZ - GEOGRAFIA - 8º ANO - FASES DO CAPITALISMO.pptxAntonioVieira539017
 
O-P-mais-importante.pptx de Maria Jesus Sousa
O-P-mais-importante.pptx de Maria Jesus SousaO-P-mais-importante.pptx de Maria Jesus Sousa
O-P-mais-importante.pptx de Maria Jesus SousaTeresaCosta92
 
EBOOK LINGUAGEM GRATUITO EUDCAÇÃO INFANTIL.pdf
EBOOK LINGUAGEM GRATUITO EUDCAÇÃO INFANTIL.pdfEBOOK LINGUAGEM GRATUITO EUDCAÇÃO INFANTIL.pdf
EBOOK LINGUAGEM GRATUITO EUDCAÇÃO INFANTIL.pdfIBEE5
 
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdfARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdfItaloAtsoc
 
Peixeiras da Coruña. O Muro da Coruña. IES Monelos
Peixeiras da Coruña. O Muro da Coruña. IES MonelosPeixeiras da Coruña. O Muro da Coruña. IES Monelos
Peixeiras da Coruña. O Muro da Coruña. IES MonelosAgrela Elvixeo
 
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptxSlides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
FORMAÇÃO POVO BRASILEIRO atividade de história
FORMAÇÃO POVO BRASILEIRO atividade de históriaFORMAÇÃO POVO BRASILEIRO atividade de história
FORMAÇÃO POVO BRASILEIRO atividade de históriaBenigno Andrade Vieira
 
Como fazer um Feedback Eficaz - Comitê de Gestores
Como fazer um Feedback Eficaz - Comitê de GestoresComo fazer um Feedback Eficaz - Comitê de Gestores
Como fazer um Feedback Eficaz - Comitê de GestoresEu Prefiro o Paraíso.
 
Trabalho DAC História 25 de Abril de 1974
Trabalho DAC História 25 de Abril de 1974Trabalho DAC História 25 de Abril de 1974
Trabalho DAC História 25 de Abril de 1974AnaRitaFreitas7
 
aula 1.pptx Ementa e Plano de ensino Filosofia
aula 1.pptx Ementa e  Plano de ensino Filosofiaaula 1.pptx Ementa e  Plano de ensino Filosofia
aula 1.pptx Ementa e Plano de ensino FilosofiaLucliaResende1
 
Apresente de forma sucinta as atividades realizadas ao longo do semestre, con...
Apresente de forma sucinta as atividades realizadas ao longo do semestre, con...Apresente de forma sucinta as atividades realizadas ao longo do semestre, con...
Apresente de forma sucinta as atividades realizadas ao longo do semestre, con...Colaborar Educacional
 

Último (20)

Abordagens 4 (Problematização) e 5 (Síntese pessoal) do texto de Severino (20...
Abordagens 4 (Problematização) e 5 (Síntese pessoal) do texto de Severino (20...Abordagens 4 (Problematização) e 5 (Síntese pessoal) do texto de Severino (20...
Abordagens 4 (Problematização) e 5 (Síntese pessoal) do texto de Severino (20...
 
Ressonancia_magnetica_basica_slide_da_net.pptx
Ressonancia_magnetica_basica_slide_da_net.pptxRessonancia_magnetica_basica_slide_da_net.pptx
Ressonancia_magnetica_basica_slide_da_net.pptx
 
arte retrato de um povo - Expressão Cultural e Identidade Nacional
arte retrato de um povo - Expressão Cultural e Identidade Nacionalarte retrato de um povo - Expressão Cultural e Identidade Nacional
arte retrato de um povo - Expressão Cultural e Identidade Nacional
 
Termo de audiência de Mauro Cid na ìntegra
Termo de audiência de Mauro Cid na ìntegraTermo de audiência de Mauro Cid na ìntegra
Termo de audiência de Mauro Cid na ìntegra
 
Poder do convencimento,........... .
Poder do convencimento,...........         .Poder do convencimento,...........         .
Poder do convencimento,........... .
 
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
 
QUIZ - GEOGRAFIA - 8º ANO - FASES DO CAPITALISMO.pptx
QUIZ - GEOGRAFIA - 8º ANO - FASES DO CAPITALISMO.pptxQUIZ - GEOGRAFIA - 8º ANO - FASES DO CAPITALISMO.pptx
QUIZ - GEOGRAFIA - 8º ANO - FASES DO CAPITALISMO.pptx
 
O-P-mais-importante.pptx de Maria Jesus Sousa
O-P-mais-importante.pptx de Maria Jesus SousaO-P-mais-importante.pptx de Maria Jesus Sousa
O-P-mais-importante.pptx de Maria Jesus Sousa
 
EBOOK LINGUAGEM GRATUITO EUDCAÇÃO INFANTIL.pdf
EBOOK LINGUAGEM GRATUITO EUDCAÇÃO INFANTIL.pdfEBOOK LINGUAGEM GRATUITO EUDCAÇÃO INFANTIL.pdf
EBOOK LINGUAGEM GRATUITO EUDCAÇÃO INFANTIL.pdf
 
Abordagem 3. Análise interpretativa (Severino, 2013)_PdfToPowerPoint.pdf
Abordagem 3. Análise interpretativa (Severino, 2013)_PdfToPowerPoint.pdfAbordagem 3. Análise interpretativa (Severino, 2013)_PdfToPowerPoint.pdf
Abordagem 3. Análise interpretativa (Severino, 2013)_PdfToPowerPoint.pdf
 
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdfARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
 
Peixeiras da Coruña. O Muro da Coruña. IES Monelos
Peixeiras da Coruña. O Muro da Coruña. IES MonelosPeixeiras da Coruña. O Muro da Coruña. IES Monelos
Peixeiras da Coruña. O Muro da Coruña. IES Monelos
 
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptxSlides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
 
FORMAÇÃO POVO BRASILEIRO atividade de história
FORMAÇÃO POVO BRASILEIRO atividade de históriaFORMAÇÃO POVO BRASILEIRO atividade de história
FORMAÇÃO POVO BRASILEIRO atividade de história
 
Como fazer um Feedback Eficaz - Comitê de Gestores
Como fazer um Feedback Eficaz - Comitê de GestoresComo fazer um Feedback Eficaz - Comitê de Gestores
Como fazer um Feedback Eficaz - Comitê de Gestores
 
Abordagem 2. Análise temática (Severino, 2013)_PdfToPowerPoint.pdf
Abordagem 2. Análise temática (Severino, 2013)_PdfToPowerPoint.pdfAbordagem 2. Análise temática (Severino, 2013)_PdfToPowerPoint.pdf
Abordagem 2. Análise temática (Severino, 2013)_PdfToPowerPoint.pdf
 
Trabalho DAC História 25 de Abril de 1974
Trabalho DAC História 25 de Abril de 1974Trabalho DAC História 25 de Abril de 1974
Trabalho DAC História 25 de Abril de 1974
 
aula 1.pptx Ementa e Plano de ensino Filosofia
aula 1.pptx Ementa e  Plano de ensino Filosofiaaula 1.pptx Ementa e  Plano de ensino Filosofia
aula 1.pptx Ementa e Plano de ensino Filosofia
 
(42-ESTUDO - LUCAS) DISCIPULO DE JESUS
(42-ESTUDO - LUCAS)  DISCIPULO  DE JESUS(42-ESTUDO - LUCAS)  DISCIPULO  DE JESUS
(42-ESTUDO - LUCAS) DISCIPULO DE JESUS
 
Apresente de forma sucinta as atividades realizadas ao longo do semestre, con...
Apresente de forma sucinta as atividades realizadas ao longo do semestre, con...Apresente de forma sucinta as atividades realizadas ao longo do semestre, con...
Apresente de forma sucinta as atividades realizadas ao longo do semestre, con...
 

Introd aplicjava

  • 1. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 1 Capítulo 2 Introdução aos aplicativos Java PROGRAMAÇÃO ORIENTADA A OBJETOS POO
  • 2. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br CONTEÚDO • Introdução aos aplicativos Java • Primeiro programa Java • Exibindo texto com printf • Outro aplicativo: adicionando inteiros • Conceitos de memória • Aritmética • Tomada de decisão • Considerações finais • Exercícios de autorrevisão 2
  • 3. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 3 INTRODUÇÃO Neste capítulo é apresentada a programação de aplicativos Java com programas simples para uma introdução à criação de programas Java. Inicia-se com exemplos que exibem mensagens de textos na tela e, então, é demonstrado um programa que obtém dois números de um usuário, calcula sua soma e exibe o resultado. Aprende-se a realizar cálculos aritméticos e salvar os resultados para utilização posterior. Por último, demonstra-se a tomada de decisão mostrando como comparar números e exibir mensagens baseadas nos resultados de comparação.
  • 4. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 4 O PRIMEIRO PROGRAMA JAVA Imprimindo uma linha de texto Saída do programa após a execução
  • 5. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 5 COMENTANDO O PROGRAMA Linhas 1 a 6 - linhas de comentários (documentar o programa. Comentários não são executados; // - notação de comentários de fim de linha ( linha 10 ); /* */ - notação de comentário tradicional. Delimitam comentários de várias linhas; /** */ - comentário no estilo Javadoc. Permitem incorporar a documentação do programa diretamente aos seus programas (linhas 1 a 6); Linhas 7 e 9 – espaço em branco (não são compilados); Linha 8 – declaração de classe (classes definidas pelo programador)Saída do programa após a execução
  • 6. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 6 DOCUMENTAÇÃO GERADA PELO JAVADOC DO ECLIPSE 3.4.1
  • 7. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 7 A palavra-chave class (linha 8) introduz uma declaração de classe e é imediatamente seguida pelo nome da classe (Welcome1); Palavras-chave (às vezes chamadas de palavras reservadas) são reservadas para uso pelo Java e sempre escritas com todas as letras minúsculas; Por convenção, os nomes de classes iniciam com uma letra maiúscula e apresenta a letra inicial de cada palavra que eles incluem em maiúscula. Por exemplo SampleClassName. O nome de uma classe é um identificador – uma série de caracteres que consiste em letras, dígitos, sublinhados ( _ ) e sinais de cifrão ( $ ) que não iniciam com um dígito e não contém espaços. Identificadores válidos em Java: Bemvindo1, $valor, _valor, m_campoDeEntrada1 e botao7 O Java faz distinção entre letras maiúsculas e minúsculas A1 ≠≠≠≠ a1 COMENTANDO O PROGRAMA Saída do programa após a execução
  • 8. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 8 Palavras-chave do Java abstract assert boolean break continue case catch char class enum default do double else for extends final finally float int if implements import instanceof package interface long native new short private protected public return synchronized static strictfp super switch try this throw throws transient void volatile while byte Palavras-chave que não são atualmente utilizadas: const go to O Java também contém as palavras reservadas true e false, que são literais boolean e null, que é o literal que representa uma referência a nada. Assim como as palavras-chave, essas palavras reservadas não podem ser utilizadas como identificadores.
  • 9. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 9 COMENTANDO O PROGRAMA Cada classe que definimos (declaramos - linha 8) inicia com a palavra-chave public. O nome da classe é Welcome1. Temos classe public e não public (private); Uma chave esquerda (na linha 8), {, inicia o corpo de cada declaração de classe. Uma chave direita, }, correspondente (linha 14) deve terminar cada declaração de classe; Linha 10 – comentário descrevendo o propósito do programa; Linha 11 – declaração de um método. A declaração de um método é o ponto de partida de cada aplicativo Java. Declarações de classe Java contêm um ou mais métodos. Para um aplicativo Java, um dos métodos deve ser chamado main e deve ser definido como mostra a linha 11, caso contrário, a JVM não executará o aplicativo.
  • 10. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 10 COMENTANDO O PROGRAMA Os métodos realizam tarefas e podem retornar informações quando completam suas tarefas; A palavra-chave void (linha 11) indica que o método main não devolverá nenhuma informação; Na linha 11, a String[ ] args entre parênteses é uma parte requerida da declaração do método main; A chave esquerda, {, na linha 11, inicia o corpo da definição de método. Uma chave direita correspondente, linha 13, deve terminar o corpo da declaração do método; A linha 12, System.out.println( “Welcome to Java Programming!”); instrui o computador a realizar uma ação – a saber, imprimir a string de caracteres contida entre aspas duplas (mas não as próprias aspas duplas). ou string literal.
  • 11. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 1111 COMENTANDO O PROGRAMA Uma string às vezes é chamada de string de caractere ou string literal; Os caracteres de espaço em branco em strings não são ignorados pelo compilador; O objeto System.out é conhecido como o objeto de saída padrão. Ele permite que aplicativos Java exibam strings na janela de comando (ver Figura do meio) a partir da qual o aplicativo de Java executa; O método System.out.println, linha 12, exibe (ou imprime) uma linha de texto na janela de comando (ou console). A string entre parênteses na linha 12 é o argumento para o método. Quando o método completa sua tarefa, ele posiciona o cursor de saída no começo da linha seguinte na janela de comando (ver Figura de baixo). Figura: Janela do prompt de comando do Windows 7.
  • 12. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 121212 COMENTANDO O PROGRAMA A linha 12 inteira, incluindo System.out.println, o argumento “Welcome to Java Programming!” entre parênteses e o ponto-e-vírgula (;), é uma instrução. Os comentários de fim de linha após as chaves de fechamento dos métodos main e da classe Welcome1, linhas 13 e 14, respectivamente, é uma prática recomendável, de forma a melhorar a legibilidade de programa. Figura: Janela do prompt de comando do Windows 7. Saída do programa
  • 13. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 13 MODIFICANDO NOSSO PRIMEIRO PROGRAMA JAVA Nessa seção, modificaremos o exemplo da classe Welcome1 (Figura 2.1) para imprimir texto em uma linha utilizando várias instruções e imprimir texto em várias linhas utilizando uma única instrução. Figura 2.1: Classe Welcome1
  • 14. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 14 EXIBINDO UMA LINHA DE TEXTO COM MÚLTIPLAS INSTRUÇÕES Welcome to Java Programming! pode ser exibido de várias maneiras. A classe Welcome2, mostrada na Figura 2.3, utiliza duas instruções para produzir a mesma saída mostrada na linha 12 da Figura 2.1. Figura 2.1: Classe Welcome1
  • 15. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 15 EXIBINDO UMA LINHA DE TEXTO COM MÚLTIPLAS INSTRUÇÕES Figura 2.3: Classe Welcome2 Saída do programa NOVIDADE: Linhas 12 e 13 da classe Welcome2 Múltiplas instruções Uma linha de texto
  • 16. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 16 EXIBINDO MÚLTIPLAS LINHAS DE TEXTO COM UMA ÚNICA INSTRUÇÃO Saída do programa A linha 14 System.out.println( “WelcomentonJavanProgramming! ” ); exibe quatro linhas separadas de texto na janela de comando; Normalmente, os caracteres em uma string são exibidos exatamente como aparecem entre as aspas duplas. Observe, porém, que os dois caracteres e n (repetidos três vezes na instrução) não aparecem na tela; A barra invertida ( ) é chamada caractere de escape. Ela indica para os métodos print e println de System.out que a saída de um “caractere especial” deve ser gerada.
  • 17. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 17 EXIBINDO MÚLTIPLAS LINHAS DE TEXTO COM UMA ÚNICA INSTRUÇÃO Saída do programa Quando aparece uma barra invertida em uma string de caracteres, o Java combina o próximo caractere com as barras invertidas para formar uma sequência de escape ( n ); A sequência de escape n representa o caractere de nova linha; A Figura 2.5 lista várias sequências de escape comuns e descreve como elas afetam a exibição de caracteres na janela de comando; Para obter a lista completa de sequências de escape, clique aqui.
  • 18. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 18 SEQUÊNCIA DE ESCAPE Sequência de escape Descrição n Nova linha t Tabulação horizontal r Retorno de carro Barras invertidas ” Aspas duplas Permitem modificar a forma de como strings de textos podem ser exibidas através do método System.out.println
  • 19. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 19 EXIBINDO TEXTO COM PRINTF O método System.out.printf (f significa “formated”) exibe os dados formatados. A Figura 2.6 utiliza esse método para gerar a saída das strings “Welcome to” e “Java Programming!”. Saída do programa O método printf tem a forma (ou sintaxe) abaixo: printf( string-de-formato, lista de argumentos );
  • 20. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 20 COMENTANDO O PROGRAMA A linha 13 chama o método System.out.printf para exibir a saída do programa. A chamada de método especifica três argumentos; Quando um método exige múltiplos argumentos, estes são colocados em uma lista separada por vírgulas; O primeiro argumento do método printf é uma string de formato que pode consistir em texto fixo e especificadores de formato; Cada especificador de formato é um marcador de lugar para um valor e especifica o tipo de saída de dados; Especificadores de formato iniciam com um sinal de porcentagem (%) e são seguidos por um caractere que representa o tipo de dados.
  • 21. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 21 COMENTANDO O PROGRAMA O especificador de formato %s é um marcador de lugar para uma string; A string de formato na linha 13 especifica que printf dever gerar a saída de duas strings, cada uma seguida por um caractere de nova linha; Na primeira posição do especificador de formato, printf substitui o valor do primeiro argumento depois da string de formato; Em cada posição subsequente, printf substitui o valor do próximo argumento na lista de argumentos. Portanto, esse exemplo coloca “Welcome to” no lugar do primeiro %s e “Java Programming!” no lugar do segundo %s. O especificador de formato %d é um marcador de lugar para um valor int.
  • 22. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 22 IMPRIMINDO INTEIROS Caractere de conversão Descrição d Exibe um inteiro decimal (base 10) o Exibe um inteiro octal (base 8) x ou X Exibe um número inteiro hexadecimal (base 16). X utiliza letras maiúsculas A Tabela abaixo descreve os caracteres de conversão integrais.
  • 23. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 23 APLICAÇÃO DO PRINTF Saída do programa
  • 24. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 24 IMPRIMINDO NÚMEROS DE PONTO FLUTUANTE A Tabela abaixo descreve as conversões de ponto flutuante. CARACTERE DE CONVERSÃO DESCRIÇÃO e ou E Exibe um valor de ponto flutuante em notação exponencial. O caractere de conversão E exibe a saída em letras maiúsculas. Por exemplo, o valor 150,4582 é representado por 1, 504582x102 (notação científica matemática) e é representado na notação exponencial 1,504582e+02 no Java. f Exibe um valor de ponto flutuante no formato decimal. g ou G Exibe um valor de ponto flutuante no formato de ponto flutuante f ou no formato exponencial e com base na magnitude do valor. Se a magnitude for menor que 10-3, maior ou igual a 107, o valor de ponto flutuante será impresso com e (ou E). Caso contrário, o valor é impresso no formato f. Quando o caractere de conversão G é utilizado, a saída é exibida em letras maiúsculas. a ou A Exibe um número de ponto flutuante no formato hexadecimal. O caractere de conversão A exibe a saída em letras maiúsculas.
  • 25. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 25 IMPRIMINDO NÚMEROS DE PONTO FLUTUANTE 1,504582e+02 Essa notação indica que 1,504582 é multiplicado por 10 elevado à segunda potência (e+02). O e significa “expoente”. LEMBRETE! A saída dos valores impressos com os caracteres de conversão e, E e f é gerada, por padrão, com seis dígitos de precisão à direita do ponto de fração decimal (por exemplo, 1,045921) – outras precisões devem ser especificadas explicitamente.
  • 26. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 26 IMPRIMINDO NÚMEROS DE PONTO FLUTUANTE LEMBRETE! Para valores impressos com o caractere de conversão g, a precisão representa o número total de dígitos exibidos sem o expoente. O padrão é seis dígitos (por exemplo, 12345678,9 é exibido como 1,23457e+07; O caractere de conversão f sempre imprime pelo menos um dígito à esquerda do ponto de fração decimal; Os caracteres de conversão e e E imprimem o e em minúscula e o E em maiúscula antes do expoente e sempre imprime exatamente um dígito à esquerda do ponto de fração decimal; O arredondamento ocorre se o valor sendo formatado tiver mais dígitos significativos do que de precisão.
  • 27. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 27 APLICAÇÃO DO PRINTF Saída do programa
  • 28. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 28 IMPRIMINDO STRINGS E CARACTERES Os caracteres de conversão c e s imprimem caracteres e strings específicos, respectivamente; Os caracteres de conversão c e C requerem um argumento do tipo char. Os caracteres de conversão s e S podem receber uma String ou algum Object como um argumento. Quando os caracteres de conversão C e S são utilizados, a saída é exibida em letras maiúsculas; A Figura G.5 exibe caracteres, strings e objetos com os caracteres de conversão c e s.
  • 29. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 29 IMPRIMINDO STRINGS E CARACTERES - APLICAÇÃO Saída do programa
  • 30. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 30 COMENTANDO O CÓDIGO-FONTE Linha 14 – ocorre o autoboxing (“empacotamento”) quando uma constante int é atribuída a um objeto Integer; Linha 20 – gera saída de um argumento Integer com o caractere de conversão s, que invoca implicitamente o método toString para obter o valor de inteiro; Também poderia ser gerada a saída de um objeto Integer utilizando o especificador de formato %d. Nesse caso, o valor int no objeto será “desempacotado” (unboxing) e impresso.
  • 31. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 31 IMPRIMINDO DATAS E HORAS O caractere de conversão t (ou T) é utilizado para imprimir datas e horas em vários formatos; Ele sempre é seguido por um caractere de sufixo de conversão que especifica que o formato de data e/ou hora. Quando o caractere de conversão T é utilizado, a saída é exibida em letras maiúsculas; A Tabela A a seguir lista os caracteres de sufixo de conversão comuns para formatar composições de data e hora que exibem tanto a data como a hora. A Tabela B lista os caracteres de sufixo de conversão comuns para formatar datas; A Tabela C lista os caracteres de sufixo de conversão comuns para formatar horas; Para a lista completa de caracteres de sufixo de conversão, visite java.sun.com/javase/6 /docs/api/java/util/Fo rmatter.html. 1 2 3
  • 32. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 32 IMPRIMINDO DATAS E HORAS TABELA A – Caracteres de sufixo de conversão de composição de data e hora Caractere de sufixo de conversão Descrição c Exibe a data e hora formatadas como day month date hour:minute:second time-zone year com três caracteres para day e month, dois dígitos para date, hour, minute e second e quatro dígitos para year – por exemplo, Wed Mar 03 16:30:25 GMT- 05:00 2004. O relógio de 24 horas é utilizado. GMT-05:00 é o fuso horário. F Exibe a data formatada como year-month-date com quatro dígitos para o year e dois dígitos cada para o month e a date (por exemplo, 2004-05-04). D Exibe a data formatada como month/day/year com dois dígitos cada para o month, day e year (por exemplo, 03/03/04). r Exibe a hora no formato de 12 horas como hour:minute:second AM|PM com dois dígitos cada para a hour, minute e second (por exemplo, 04:30:25 PM). R Exibe a hora formatada como hour:minute com dois dígitos cada para a hour e minute (por exemplo, 16:30). O relógio de 24 horas é utilizado. T Exibe a hora como hour:minute:second com dois dígitos para hour, minute e second (por exemplo, 16:30:25). O relógio de 24 horas é utilizado
  • 33. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 33 IMPRIMINDO DATAS E HORAS TABELA B – Caracteres de sufixo de conversão de formatação de data Caractere de sufixo de conversão Descrição A Exibe o nome completo do dia da semana (por exemplo, Wednesday). a Exibe o nome com três caracteres do dia da semana (por exemplo, Wed). B Exibe o nome completo do mês (por exemplo, March). b Exibe o nome abreviado com três caracteres do mês (por exemplo, Mar). d Exibe o dia do mês com dois dígitos, preenchendo com zeros à esquerda conforme necessário (por exemplo, 03). m Exibe o mês com dois dígitos, preenchendo com zeros à esquerda conforme necessário (por exemplo, 07). e Exibe o dia de mês sem zeros à esquerda (por exemplo, 3). Y Exibe o ano com quatro dígitos (por exemplo, 2004). y Exibe os dois últimos dígitos do ano com zeros à esquerda (por exemplo, 04). j Exibe o dia do ano com três dígitos, preenchendo com zeros à esquerda conforme necessário (por exemplo, 016).
  • 34. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 34 IMPRIMINDO DATAS E HORAS TABELA C – Caracteres de sufixo de conversão de formatação de hora Caractere de sufixo de conversão Descrição H Exibe horas no relógio de 24 horas com um zero à esquerda conforme necessário (por exemplo, 16). I Exibe horas no relógio de 12 horas com um zero à esquerda conforme necessário (por exemplo, 04). K Exibe horas em relógio de 24 horas sem zeros à esquerda (por exemplo, 16).  Exibe horas em relógio de 12 horas sem zeros à esquerda (por exemplo, 4) M Exibe minutos com um zero à esquerda conforme necessário (por exemplo, 06). S Exibe segundos com um zero à esquerda conforme necessário (por exemplo, 05). Z Exibe a abreviação para o fuso horário (por exemplo, EST, significa Eastern Standard Time, que está 5 horas atrás do Greenwich Mean Time). p Exibe marcador de manhã ou de tarde em letras minúsculas (por exemplo, pm). P Exibe marcador de manhã ou de tarde em letras maiúsculas (por exemplo, PM).
  • 35. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 35 IMPRIMINDO DATAS E HORAS - LABORATÓRIO A Figura G.9 utiliza os caracteres de conversão t e T com os caracteres de sufixo de conversão para exibir datas e horas em vários formatos; O caractere de conversão t requer que o argumento correspondente seja uma data ou hora do tipo long, Calendar (pacote java.util) ou Date (pacote java.util); Os objetos de cada uma dessas classes podem representar datas e horas
  • 36. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 36
  • 37. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 37 OUTROS CARACTERES DE CONVERSÃO Os caracteres de conversão restantes são b, B, h, H, % e n. Estes são discutidos na Tabela abaixo: Caractere de conversão Descrição b ou B Imprime “true” ou “false” para o valor de um boolean ou Boolean. Esses caracteres de conversão também podem formatar o valor de qualquer referência. Se a referência for null, “true” será impresso, do contrário, “false”. Quando o caractere de conversão B é utilizado, a saída é exibida em letras maiúsculas. h ou H Imprime a representação de string de um valor de código de hash do objeto em formato hexadecimal. Se o argumento correspondente for null, “null” será impresso. Quando o caractere de conversão H é utilizado, a saída é exibida em letras maiúsculas. % Imprime o caractere de porcentagem. n Imprime o separador de linha específico à plataforma (por exemplo, rn no Windows ou n no UNIX/LINUX.
  • 38. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 38 COMENTANDO O CÓDIGO As linhas 14 e 15 utilizam %b para imprimir o valor de valores boolean (ou Boolean) false e true; A linha 16 associa uma linha String a %b que retorna true porque não é null; A linha 17 associa um objeto null a %B, que exibe FALSE porque test é null; As linhas 18 e 19 utilizam %h para imprimir as representações de string dos valores de código de hash para as strings “hello” e “Hello”; A linha 20 utiliza %H para imprimir null em letras maiúsculas; As duas últimas instruções printf (linhas 21 e 22) utilizam %% para imprimir o caractere % em uma string e %n para imprimir um separador de linha específico à plataforma.
  • 39. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 39 IMPRIMINDO COM LARGURAS E PRECISÕES DE CAMPOS O tamanho exato de um campo em que dados são impressos é especificado por uma largura de campo. Se a largura de campo for maior que os dados a serem impressos, os dados serão alinhados por padrão à direita no campo. Insira um inteiro que representa a largura de campo entre o % e o caractere de conversão (por exemplo, %4d) no especificador de formato. A Figura G.12 imprime dois grupos de cinco números cada, alinhando à direita os números que contém menos dígitos do que a largura do campo.
  • 40. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 40 Considerações Observe que a largura de campo é aumentada para imprimir valores com largura maior do que o campo e que o sinal de subtração para um valor negativo utiliza uma posição de caractere no campo; Se nenhuma largura de campo for especificada, os dados serão impressos exatamente de acordo com o número de posições necessárias; As larguras de campo podem ser usadas com todos os especificadores de formato, exceto o separador de linha (%n).
  • 41. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 41 IMPRIMINDO COM LARGURAS E PRECISÕES DE CAMPOS O método printf também fornece a capacidade de especificar a precisão com que os dados são impressos; A precisão tem diferentes significados para diferentes tipos: Quando usada com caracteres de conversão de ponto flutuante e e f, a precisão é o número de dígitos que aparece depois do ponto de fração decimal; Quando usada com os caracteres de conversão g, a ou A, a precisão é o número máximo de dígitos significativos a ser impresso; Quando usada com o caractere de conversão s, a precisão é o número máximo de caracteres a ser gravado da string; Para utilizar a precisão, coloque entre o sinal de postagem e o especificador de conversão um ponto de fração decimal ( . ) seguido por um inteiro que representa a precisão.
  • 42. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 42 IMPRIMINDO COM LARGURAS E PRECISÕES DE CAMPOS A Figura g.13 demonstra o uso da precisão em strings de formato:
  • 43. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 43 IMPRIMINDO COM LARGURAS E PRECISÕES DE CAMPOS COMENTÁRIOS Quando um valor de ponto flutuante é impresso com uma precisão menor do que o número original de casas decimais no valor, o valor é arredondado; O especificador de formato %.3g indica que o número total de dígitos usado para exibir o valor de ponto flutuante é 3; Como o valor tem três dígitos à esquerda do ponto de fração decimal, ele é arredondado para a casa das unidades; A largura e a precisão de campo podem ser combinadas colocando a largura de campo, seguida por um ponto de fração decimal, seguido por uma precisão entre o sinal de porcentagem e o caractere de conversão, como na instrução abaixo: printf( “%9.3f”, 123.456789 );
  • 44. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 44 UTILIZANDO FLAGS NA STRING DE FORMATO PRINTF Vários flags podem ser utilizados com o método printf para suplementar suas capacidades de formatação de saída. Sete flags estão disponíveis para utilização nas strings de formato (Tabela abaixo). FLAG DESCRIÇÃO - (sinal de subtração) Alinha a saída à esquerda dentro do campo especificado + (sinal de adição) Exibe um sinal de adição precedendo valores positivos e um sinal de subtração precedendo valores negativos. espaço Imprime um espaço antes de um valor positivo não impresso com o flag +. ≠ O prefixo 0 para o valor de saída quando utilizado com o caractere de conversão octal o. Adiciona o prefixo 0x ao valor de saída quando utilizado com o caractere de conversão hexadecimal x. 0 (zero) Preenche um campo com zeros à esquerda. , (vírgula) Utiliza o separador específico de localidade de milhares (isto é, ‘ , ‘ para localidade nos EUA) para exibir números decimais e de ponto flutuante. ( Inclui números negativos dentro de parênteses.
  • 45. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 45 UTILIZANDO FLAGS NA STRING DE FORMATO PRINTF Para utilizar um flag em uma string de formato, coloque-o imediatamente à direita do sinal de porcentagem. Vários flags podem ser utilizados no mesmo especificador de formato. A Figura G.15 demonstra o alinhamento à direita e o alinhamento à esquerda de uma string, um inteiro, um caractere e um número de ponto flutuante.
  • 46. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  • 47. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br UTILIZANDO FLAGS NA STRING DE FORMATO PRINTF A Figura G.16 imprime um número positivo e um número negativo, cada um com e sem o flag +. Observe que o sinal de subtração é exibido nos dois casos, mas o sinal de adição somente quando o flag + é utilizado. Saída do aplicativo Java
  • 48. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br UTILIZANDO FLAGS NA STRING DE FORMATO PRINTF A Figura G.17 prefixa um espaço para o número positivo com o flag espaço. Isso é útil para alinhar números positivos e negativos com o mesmo número de dígitos. Observe que o valor -547 não é precedido por um espaço na saída por causa do seu sinal de subtração. Saída do aplicativo Java
  • 49. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br UTILIZANDO FLAGS NA STRING DE FORMATO PRINTF A Figura G.18 utiliza o flag # para prefixar O para o valor octal e Ox para o valor hexadecimal. Saída do aplicativo Java
  • 50. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br UTILIZANDO FLAGS NA STRING DE FORMATO PRINTF A Figura G.19 combina o flag +, o flag 0 e o flag espaço para imprimir 452 em um campo de largura 9 com um sinal + e zeros à esquerda, em seguida imprime 452 em um campo de largura 9 utilizando somente o flag 0 e, então, imprime 452 em um campo de largura 9 utilizando somente o flag espaço. Saída do aplicativo Java
  • 51. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br UTILIZANDO FLAGS NA STRING DE FORMATO PRINTF A Figura G.20 utiliza o flag vírgula ( , ) para exibir números de ponto flutuante com o separador de milhares; A Figura G.21 inclui números negativos entre parênteses utilizando o flag ( ; Observe que o valor 50 não é incluído entre parênteses na saída porque é um número positivo.
  • 52. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  • 53. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  • 54. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br IMPRIMINDO COM ÍNDICES DE ARGUMENTO Um índice de argumentos é um inteiro opcional seguido por um sinal $ que indica a posição do argumento na lista de argumentos. Por exemplo, as linhas 26-28 e 31-32 na Figura G.9 utilizam o índice de argumentos “1$” para indicar que todos os especificadores de formato utilizam o primeiro argumento da lista de argumentos.
  • 55. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br ... IMPRIMINDO COM ÍNDICES DE ARGUMENTO Os índices de argumentos permitem que os programadores reordenem a saída de modo que os argumentos na lista de argumentos não necessariamente estejam na ordem dos seus especificadores de formato correspondentes; Os índices de argumento também ajudam a evitar a duplicação de argumentos; A Figura G.22 imprime os argumentos da lista de argumentos na ordem inversa utilizando o índice de argumentos.
  • 56. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  • 57. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br IMPRIMINDO LITERAIS E SEQUÊNCIAS DE ESCAPE A maioria dos caracteres literais a ser impressa em uma instrução printf pode ser simplesmente incluída na string de formato. Entretanto, há vários caracteres “problemáticos”, como aspas ( “ ) que delimitam a própria string de formato; Vários caracteres de controle, com a nova linha e tabulação, devem ser representados por sequências de escape; Uma sequência de escape é representada por uma barra invertida ( ), seguida por um caractere de escape; A Tabela a seguir lista as sequências de escape e as ações resultantes:
  • 58. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br SEQUÊNCIAS DE ESCAPE DESCRIÇÃO ’ (aspa simples) Gera saída do caractere de aspa simples ( ‘ ) ” (aspas duplas) Gera a saída do caractere de aspas duplas ( “ ) (barras invertidas) Gera a saída do Caractere de barra invertida ( ) b (backspace) Move o cursor de volta uma posição na linha atual f (nova página ou avanço de formulário) Move o cursor para o início da próxima página lógica n (nova linha) Move o cursor para o começo da próxima linha r (retorno de carro) Move o cursor para o começo da linha atual t (tabulação horizontal) Move o cursor para a próxima posição da tabulação horizontal
  • 59. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br FORMATANDO SAÍDA COM A CLASSE FORMATTER Até agora, discutimos a exibição de saída formatada para o fluxo de saída padrão; O que devemos fazer se quisermos enviar saídas formatadas a outros fluxos de saída ou dispositivos, como um JTextArea ou um arquivo? A solução conta com a classe Formatter (do pacote Formatter), que fornece as mesmas capacidades de formatação de printf; Formatter é uma classe utilitária que permite aos programadores gerar saída formatada de dados para um destino especificado, como um arquivo em disco; Por padrão, uma Formatter cria uma string na memória. Fonte: http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JTextArea.html
  • 60. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  • 61. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O PROGRAMA A linha 21 cria um objeto Formater utilizando o construtor padrão, assim esse objeto construirá uma string na memória; Outros construtores são fornecidos para que você possa especificar o destino em que os dados formatados devem ser impressos. Para detalhes, consulte as URL´s abaixo: www.java.sun.com/javase/6/docs/api/java/util /Formatter.html http://download.oracle.com/javase/6/docs/api / A linha 22 invoca o método format para formatar a saída. Como ocorre com printf, o método format recebe uma string de formato e uma lista de argumentos; A diferença é que printf envia a saída formatada diretamente para o fluxo de saída padrão, enquanto o método format envia a saída formatada para o destino especificado pelo seu construtor (nesse programa, uma string na memória.
  • 62. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O PROGRAMA A linha 25 invoca o método toString de Formatter para obter os dados formatados como uma string, que então é exibida em uma caixa de diálogo de mensagem; Observe que a classe String também fornece um método static de conveniência chamado format que permite criar uma string na memória sem precisar antes criar um objeto Formatter; As linhas 21-22 e a linha 25 na Figura G.24 poderiam ter sido substituídas por; String s = String.format( “%d = %#o = %#x”, 10, 10, 10 ); JOptionPane.showMessageDialog( null, s );
  • 63. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br OUTRO APLICATIVO: SOMANDO INTEIROS Nosso próximo aplicativo lê (ou insere) dois inteiros (números integrais, como -22, 7, 0 e 1024) digitados por um usuário no teclado, calcula a soma dos valores e exibe o resultado ; Esse programa deve manter um registro dos números fornecidos pelo usuário para o cálculo posterior no programa; Os programas lembram-se dos números e outros dados na memória do computador e acessam esses dados por meio de elementos de programa chamados variáveis; O programa da Figura 2.7 demonstra esses conceitos. Na saída de exemplo, usamos o texto em negrito para identificar a entrada do usuário (isto é, 45 e 72).
  • 64. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO Linhas de 1 – 6 são comentários padrão; Linha 9 é uma declaração import que ajuda o compilador a localizar uma classe utilizada ou necessária nesse programa; Um dos pontos fortes do Java é seu rico conjunto de classes predefinidas que podemos reutilizar em vez de “reinventar a roda”; Essas classes são agrupadas em pacotes – chamados de grupos de classes relacionadas – e, coletivamente, são chamadas de biblioteca de classes Java, ou Java Application Programming Interface (Java API);
  • 65. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO Utilize declarações import para identificar as classes predefinidas utilizadas em um programa Java; A declaração import na linha 9 indica que esse exemplo usa a classe Scanner predefinida do Java do pacote java.util; A linha 11 public class Addition inicia a declaração da classe Addition. O nome de arquivo para essa classe public deve ser Addition.java; { e } são as chaves de abertura e fechamento do corpo de cada declaração de classe, respectivamente; O aplicativo inicia a execução com o método main (linhas 13-31); A linha 15 Scanner input = new Scanner( System.in ); é uma instrução de declaração de variável que especifica o nome (input) e o tipo (Scanner) de uma variável que é usada nesse programa;
  • 66. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO Uma variável é uma posição na memória do computador onde um valor pode ser armazenado para uso posterior em um programa; Todas as variáveis Java devem ser declaradas com um nome e um tipo antes que elas possam ser utilizadas; O nome de uma variável permite que o programa acesse o valor da variável na memória; Memória Variável Valor
  • 67. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO O nome de uma variável pode ser qualquer identificador válido; O tipo de uma variável especifica o tipo de informações armazenado nessa posição na memória; As instruções de declaração terminam com um ponto-e-vírgula ( ; ); A declaração na linha 15 especifica que a variável nomeada input seja do tipo Scanner; Um Scanner permite a um programa ler os dados (por exemplo, números) para utilização em um programa; O sinal de igual ( = ) na linha 15 indica que a variável Scanner input deve ser inicializada (isto é, preparada para utilização no programa) na sua declaração com o resultado da expressão new Scanner( System.in ) à direita do sinal de igual; Essa expressão utiliza a palavra-chave new para criar um objeto Scanner que lê caracteres digitados pelo usuário no teclado;
  • 68. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO Na linha 15, o objeto de entrada padrão, System.in, permite que aplicativos leiam bytes de informações digitadas pelo usuário. O objeto Scanner traduz esses bytes em tipos (como ints) que podem ser utilizados em um programa; As instruções de declaração de variável nas linhas 17-19: int x; // primeiro número a adicionar int y; // segundo número a adicionar int soma; // soma de x e y Declaram que as variáveis x, y e soma armazenam dados do tipo int – elas podem armazenar valores inteiros (números inteiros como 72, -1127 e 0); O intervalo de valores para um int é - 2.147.483.648 a +2.147.483.648; A seguir, serão discutidos os tipos float e double, para armazenar números reais, e o tipo char, para armazenar dados de caracteres;
  • 69. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO Os números reais contêm pontos decimais, como 3.4, 0.0 e -11.19; Variáveis do tipo char representam caracteres individuais, como uma letra maiúscula (por exemplo, A), um dígito (por exemplo, 7), um caractere especial (por exemplo, * ou %) ou uma sequência de escape (por exemplo, o caractere de nova linha, n); Os tipos boolean (true ou false), char, byte, short, int, long, float e double são chamados de tipos primitivos do Java (ver Apêndice D do Deitel); Os nomes dos tipos primitivos são palavras- chave e devem aparecer em letras minúsculas; Diversas variáveis do mesmo tipo podem ser declaradas em uma declaração com os nomes de variável separadas por vírgulas (isto é, uma lista separada por vírgulas de nomes de variáveis. Por exemplo: int x, y, soma;
  • 70. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO A linha 21 System.out.print( “Digite um valor para x: “); // prompt utiliza System.out.print para exibir a mensagem Digite um valor para x: Essa mensagem é chamada prompt porque direciona o usuário para uma ação específica; Utilizamos o método print aqui em vez de println para que a entrada do usuário apareça na mesma linha que o prompt; System é uma classe. A classe System faz parte do pacote java.lang (ver slide seguinte); Observe que a classe System não é importada com uma declaração import no começo do programa; A linha 22, x = input.nextInt(); // lê o valor de x utiliza o método nextInt do valor de input do objeto Scanner para obter um inteiro digitado pelo usuário; O programa assume que o usuário insira um valor válido de inteiro. Caso não válido, um erro de lógica em tempo de execução ocorrerá e o programa terminará. O Capítulo 11 discute como tornar os programas Java mais robustos permitindo que esses tratem tais erros, tornando-os tolerantes a falhas.
  • 71. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br API java.lang
  • 72. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO Na linha 22, x = input.nextInt(); // lê o valor de x, o resultado da chamada ao método nextInt (um valor int) é colocado na variável x utilizando o operador de atribuição, =.; O operador = é chamado de operador binário, porque tem dois operandos – x e o resultado da chamada de método input.nextInt(); A linha 24 System.out.print( “Digite um valor para y: “); // prompt pede para o usuário inserir o segundo inteiro; A linha 25 y = input.nextInt(); // lê o segundo inteiro fornecido pelo usuário e o atribui à variável y; A linha 27, soma = x + y; é uma instrução de atribuição que calcula a soma das variáveis x e y e, então, atribui o resultado à variável soma; As partes das instruções que contém cálculos são chamadas de expressões; Uma expressão é qualquer parte de uma instrução que tem um valor associado com ela. Por exemplo, o valor da expressão input.nextInt() é um inteiro digitado pelo usuário.
  • 73. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO A linha 29, System.out.prinf( “Soma de x+y = %dn”, soma); utiliza o método System.out.printf para exibir a soma; O especificador de formato %d é um marcador de lugar para um valor int (nesse caso o valor de sum) – a letra d significa “inteiro decimal”; Observe que além do especificador de formato %d, todos os caracteres restantes na string de formato são texto fixo. Portanto, o método printf exibe “soma de x+y = “, seguido pelo valor de soma (na posição do especificador de formato %d) e por uma nova linha; Os cálculos também podem ser realizados dentro de instruções printf, como segue abaixo: System.out.printf( “Soma de x+y = %dn”, x+y).
  • 74. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br DOCUMENTAÇÃO DA JAVA API Para cada nova classe da Java API que usamos, indicamos o pacote em que ela está localizada; Essas informações ajudam a localizar descrições de cada pacote e classe na documentação da Java API; Uma versão baseada na Web dessa documentação pode ser obtida em: java.sun.com/javase/6/docs/api Java.sun.com/javase/downloads O Apêndice E mostra como utilizar essa documentação
  • 75. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br CONCEITOS DE MEMÓRIA Os nomes de variável como x, y e soma realmente correspondem às posições na memória do computador; Cada variável tem um nome, um tipo, um tamanho (em bytes) e um valor, por exemplo: x = input.nextInt(); x 45 Posição da memória mostrando o nome e o valor da variável x MEMÓRIA
  • 76. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br ARITMÉTICA A maioria dos programas realiza cálculos aritméticos; Os operadores aritméticos (símbolos ou sinais) são resumidos na Tabela abaixo: Operação Java Operador Expressão algébrica Expressão Java Adição + f + 7 f + 7 Subtração - p - c p - c Multiplicação * bm b * m Divisão / x/y ou x ÷ y x / y Resto % r mod s r % s y x
  • 77. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br CONSIDERAÇÕES SOBRE OS OPERADORES ARITMÉTICOS O asterisco ( * ) indica multiplicação, e o sinal de porcentagem ( % ) é o operador de resto (módulo); Os operadores aritméticos da Tabela anterior são operadores binários porque cada um deles opera em dois operandos. Por exemplo, a expressão f + 7 contém o operador binário + e os dois operandos f e 7; A divisão de inteiros produz um quociente do tipo inteiro; por exemplo, a expressão 7 / 4 é avaliada como 1 e a expressão 17 / 5 é avaliada como 3. Qualquer parte fracionária na divisão de inteiros é simplesmente descartada (isto é, truncada); O Java fornece o operador de módulo, % que fornece o resto da divisão. A expressão x % y produz o restante depois que x é dividido por (por exemplo: 7 % 4 = 3 e 17 % 5 = 2
  • 78. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br ARITMÉTICA Expressões aritméticas na forma de reta As expressões aritméticas em Java devem ser escritas na forma de linha reta para facilitar a inserção de programas no computador (certo) (errado) ba b a
  • 79. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br ARITMÉTICA Parênteses para agrupar subexpressões Os parêntese são utilizados para agrupar termos em expressões Java da mesma maneira como em expressões algébricas. Por exemplo, para multiplicar a vezes a quantidade b + c, escreveremos: a * (b + c); Se uma expressão contiver parênteses aninhados, como: ( (a + b ) * c ) a expressão no conjunto de parêntese mais interno ( a + b nesse caso ) é avaliada primeiro.
  • 80. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br ARITMÉTICA Regras de precedência de operadores O Java aplica os operadores em expressões aritméticas em uma sequência precisa determinada pelas seguintes regras de precedência de operadores, conforme Tabela abaixo: Operador Operação Ordem de avaliação (precedência) * Multiplicação Avaliado primeiro. Se houver vários operadores desse tipo, eles são avaliados da esquerda para a direita./ Divisão % Resto + Adição Avaliado em seguida. Se houver vários operadores desse tipo, eles são avaliados da esquerda para a direita. - Subtração = Atribuição Avaliado por último
  • 81. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br ARITMÉTICA Exemplos de expressões algébricas e Java Nesse exemplo, vamos considerar várias expressões à luz das regras de precedência de operador. Cada exemplo lista uma expressão algébrica e seu equivalente Java. O seguinte é um exemplo de uma média aritmética de cinco termos: ÁLGEBRA JAVA m = (a + b + c + d + e) / 5; 5 edcba m ++++ = OBS.: Os parênteses são exigidos porque a divisão tem precedência mais alta que a adição. Se não houvessem os parênteses, a expressão seria do tipo m = a + b + c + d + e / 5;
  • 82. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br ARITMÉTICA Exemplos de expressões algébricas e Java Eis um exemplo da equação de uma linha reta: Álgebra: y = mx + b Java: y = m * x + b; Nenhum parêntese é requerido. O operador de multiplicação ( * ) é aplicado primeiro porque a multiplicação tem uma precedência mais alta que a adição. A atribuição ( = ) ocorre por último porque ela tem uma precedência mais baixa que a multiplicação ou adição.
  • 83. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br ARITMÉTICA Exemplos de expressões algébricas e Java O exemplo seguinte contém operações de resto ( % ), multiplicação, divisão, adição e subtração: Álgebra: z = pr%q + w/x – y Java: z = p * r % q + w / x - y; A atribuição ( = ) ocorre por último porque ela tem uma precedência mais baixa que a multiplicação ou adição. 1 2 3 4 5 6 Ordem em que o Java aplica os operadores
  • 84. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br ARITMÉTICA Avaliação de um polinômio de segundo grau Para entender melhor as regras de precedência de operadores, considere a avaliação de uma expressão de atribuição que inclui um polinômio de segundo grau y = ax2 + bx + c y = a * x * x + b * x + c A atribuição ( = ) ocorre por último porque ela tem uma precedência mais baixa que a multiplicação ou adição. 6 1 2 34 5 Da esquerda para a direita
  • 85. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br TOMADA DE DECISÃO: OPERADORES DE IGUALDADE E OPERADORES RELACIONAIS Uma condição é uma expressão que pode ser true (verdadeira) ou false (falsa). Essa seção apresenta a instrução de seleção if do Java que permite a um programa tomar uma decisão com base no valor de uma condição. Por exemplo, a condição “nota é maior ou igual a 7.0” determina se um aluno passou em um teste; Se a condição em uma estrutura if for verdadeira, o corpo da estrutura if é executada. Se a condição for falsa, o corpo não é executado As condições nas instruções if podem ser formadas utilizando os operadores de igualdade ( == e != ) e operadores relacionais ( >, <, >= e <= ) resumidos na tabela a seguir:
  • 86. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br TOMADA DE DECISÃO: OPERADORES DE IGUALDADE E OPERADORES RELACIONAIS Operador de igualdade ou relacional algébrico padrão Operador de igualdade ou relacional Java Exemplo de condição em Java Significado da condição em Java Operadores de igualdade = == x == y x é igual a y ≠ != x != y x é diferente de y Operadores relacionais > > x > y x é maior que y < < x < y x é menor que y ≥ >= x >= y x é maior que ou igual a y ≤ <= x <= y x é menor que ou igual a y
  • 87. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Laboratório: uso da instrução if A Figura 2.15 utiliza seis instruções if para comparar duas entradas de inteiros pelo usuário. Se a condição em alguma dessas instruções if for verdadeira, a instrução de saída associada com essa instrução if é executada; caso contrário, a instrução é pulada. O programa utiliza um Scanner para inserir os dois inteiros do usuário e armazena-os nas variáveis number1 e number2. O programa então compara os números e exibe os resultados das comparações que são verdadeiras. São mostradas três saídas de exemplo.
  • 88. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Três saídas diferentes do aplicativo
  • 89. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br COMENTANDO O CÓDIGO Linha 20, Scanner input = new Scanner( System.in ); - declara a variável Scanner input e lhe atribui um Scanner que insere dados a partir da entrada padrão (teclado); Linhas 25 e 26, System.out.print( “Enter first integer: “ ); number1 = input.nextInt(); solicitam que o usuário digite o primeiro inteiro e insira o valor, respectivamente; Uma instrução if espera uma instrução em seu corpo, mas pode conter múltiplas instruções se elas estiverem entre parênteses ( { } ); Não há ponto-e-vírgula ( ; ) no final da primeira linha de cada instrução if. Um ponto-e-vírgula resultaria em um erro de lógica em tempo de execução. Por exemplo: if( number1 == number2 ); // erro de lógica System.out.printf( “%d == %dn”, number1, number2 ); Seria interpretado pelo Java como: if( number1 == number2 ) ; // estrutura vazia ou instrução vazia
  • 90. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br REFERÊNCIA