Introd aplicjava

370 visualizações

Publicada em

Slides sobre introdução aos aplicativos Java

Publicada em: Educação
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Introd aplicjava

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 36. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br 36
  37. 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. 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. 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. 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. 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. 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. 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. 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. 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. 46. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  47. 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. 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. 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. 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. 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. 52. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  53. 53. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  54. 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. 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. 56. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  57. 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. 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. 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. 60. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Saída do programa
  61. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 71. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br API java.lang
  72. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 88. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br Três saídas diferentes do aplicativo
  89. 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. 90. Programação Orientada a Objetos / Prof. Msc. Cícero Costa Quarto – cicero@engcomp.uema.br REFERÊNCIA

×