90
Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected] 1 Capítulo 2 Introdução aos aplicativos Java PROGRAMAÇÃO ORIENTADA A OBJETOS POO

Introd aplicjava

Embed Size (px)

DESCRIPTION

Slides sobre introdução aos aplicativos Java

Citation preview

Page 1: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

1

Capítulo 2Introdução aos aplicativos Java

PROGRAMAÇÃO ORIENTADA A OBJETOS

POO

Page 2: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 3: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 4: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

4

O PRIMEIRO PROGRAMA JAVA

Imprimindo uma linha de

texto

Saída do programa após a execução

Page 5: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 6: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

6

DOCUMENTAÇÃO GERADA PELO JAVADOC DO ECLIPSE 3.4.1

Page 7: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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úsculasA1 ≠≠≠≠ a1

COMENTANDO O PROGRAMA

Saída do programa após a execução

Page 8: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 9: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 10: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 11: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 12: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 13: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 14: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 15: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 16: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

16

EXIBINDO MÚLTIPLAS LINHAS DE TEXTO COM UMA ÚNICA INSTRUÇÃO

Saída do programa

� A linha 14System.out.println( “Welcome\nto\nJava\nProgramming!” );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.

Page 17: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 18: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 19: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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 );

Page 20: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 21: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 22: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 23: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

23

APLICAÇÃO DO PRINTF

Saída do programa

Page 24: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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 AExibe um número de ponto flutuante no formato hexadecimal. O caractere de conversão A exibe a saída em letras maiúsculas.

Page 25: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

25

IMPRIMINDO NÚMEROS DE PONTO FLUTUANTE

1,504582e+02Essa 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.

Page 26: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 27: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

27

APLICAÇÃO DO PRINTF

Saída do programa

Page 28: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 29: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

29

IMPRIMINDO STRINGS E CARACTERES -APLICAÇÃO

Saída do programa

Page 30: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 31: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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/Formatter.html.

1 23

Page 32: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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 comoday month date hour:minute:second time-zone year

com três caracteres para day e month, dois dígitos para date, hour, minute esecond 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.

FExibe a data formatada como year-month-date com quatro dígitos para oyear e dois dígitos cada para o month e a date (por exemplo, 2004-05-04).

DExibe a data formatada como month/day/year com dois dígitos cada para omonth, day e year (por exemplo, 03/03/04).

rExibe a hora no formato de 12 horas como hour:minute:second AM|PM comdois dígitos cada para a hour, minute e second (por exemplo, 04:30:25 PM).

RExibe 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.

TExibe a hora como hour:minute:second com dois dígitos para hour, minute esecond (por exemplo, 16:30:25). O relógio de 24 horas é utilizado

Page 33: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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).

dExibe o dia do mês com dois dígitos, preenchendo com zeros à esquerda conforme necessário (por exemplo, 03).

mExibe o mês com dois dígitos, preenchendo com zeros à esquerda conformenecessá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).

jExibe o dia do ano com três dígitos, preenchendo com zeros à esquerdaconforme necessário (por exemplo, 016).

Page 34: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

HExibe horas no relógio de 24 horas com um zero à esquerda conformenecessário (por exemplo, 16).

IExibe horas no relógio de 12 horas com um zero à esquerda conformenecessá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)

MExibe minutos com um zero à esquerda conforme necessário (por exemplo,06).

SExibe segundos com um zero à esquerda conforme necessário (por exemplo,05).

ZExibe a abreviação para o fuso horário (por exemplo, EST, significa EasternStandard Time, que está 5 horas atrás do Greenwich Mean Time).

pExibe marcador de manhã ou de tarde em letras minúsculas (por exemplo,pm).

PExibe marcador de manhã ou de tarde em letras maiúsculas (por exemplo,PM).

Page 35: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 36: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

36

Page 37: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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, \r\n no Windows ou \n no UNIX/LINUX.

Page 38: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 39: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 40: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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).

Page 41: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 42: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

42

IMPRIMINDO COM LARGURAS E PRECISÕES DE CAMPOS

� A Figura g.13 demonstra o uso da precisão em strings de formato:

Page 43: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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 );

Page 44: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 45: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 46: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

Saída do programa

Page 47: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 48: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 49: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 50: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 51: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 52: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

Saída do programa

Page 53: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

Saída do programa

Page 54: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 55: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

... 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.

Page 56: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

Saída do programa

Page 57: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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:

Page 58: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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çãohorizontal)

Move o cursor para a próxima posição da tabulação horizontal

Page 59: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 60: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

Saída do programa

Page 61: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.htmlhttp://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.

Page 62: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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 );

Page 63: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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).

Page 64: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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);

Page 65: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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;

Page 66: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 67: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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;

Page 68: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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 adicionarint y; // segundo número a adicionarint soma; // soma de x e yDeclaram 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;

Page 69: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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;

Page 70: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 71: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

API java.lang

Page 72: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 73: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

COMENTANDO O CÓDIGO

� A linha 29, System.out.prinf( “Soma de x+y = %d\n”, 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 = %d\n”, x+y).

Page 74: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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/apiJava.sun.com/javase/downloads

O Apêndice E mostra como utilizar essa documentação

Page 75: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 76: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 77: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 78: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

ARITMÉTICA

Expressões aritméticas na forma de retaAs 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

Page 79: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 80: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

ARITMÉTICA

Regras de precedência de operadoresO 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

Page 81: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

ARITMÉTICA

Exemplos de expressões algébricas e JavaNesse 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;

5edcba 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 tipom = a + b + c + d + e / 5;

Page 82: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

ARITMÉTICA

Exemplos de expressões algébricas e JavaEis um exemplo da equação de uma linha reta:Álgebra: y = mx + bJava: 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.

Page 83: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

ARITMÉTICA

Exemplos de expressões algébricas e JavaO exemplo seguinte contém operações de resto ( % ),

multiplicação, divisão, adição e subtração: Álgebra: z = pr%q + w/x – yJava: 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

Page 84: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

ARITMÉTICA

Avaliação de um polinômio de segundo grauPara 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

Page 85: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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:

Page 86: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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

Page 87: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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.

Page 88: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

Três saídas diferentes do aplicativo

Page 89: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

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 == %d\n”, number1, number2 );Seria interpretado pelo Java como:if( number1 == number2 ); // estrutura vazia ou instrução vazia

Page 90: Introd aplicjava

Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – [email protected]

REFERÊNCIA