Download - Prog de Sistema

Transcript
  • Curso Tcnico em Informtica

    Tcnicas de ProgramaoAntonio Luiz Santana

  • Tcnicas de ProgramaoAntonio Luiz Santana

    2011Colatina-ES

  • RIO GRANDEDO SUL

    INSTITUTOFEDERAL

    Presidncia da Repblica Federativa do Brasil

    Ministrio da Educao

    Secretaria de Educao a Distncia

    Equipe de ElaboraoInstituto Federal do Esprito Santo IFES

    Coordenao InstitucionalGuilherme Augusto de Morais Pinto/IFESJoo Henrique Caminhas Ferreira/IFES

    Coordenao CursoAllan Francisco Forzza Amaral/IFES

    Professor-autorAntonio Luiz Santana/IFES

    Comisso de Acompanhamento e ValidaoUniversidade Federal de Santa Catarina UFSC

    Coordenao InstitucionalAraci Hack Catapan/UFSC

    Coordenao do ProjetoSilvia Modesto Nassar/UFSC

    Coordenao de Design InstrucionalBeatriz Helena Dal Molin/UNIOESTE e UFSC

    Coordenao de Design GrficoAndr Rodrigues/UFSC

    Design InstrucionalGustavo Pereira Mateus/UFSC

    Web MasterRafaela Lunardi Comarella/UFSC

    Web DesignBeatriz Wilges/UFSCMnica Nassar Machuca/UFSC

    DiagramaoAndr Rodrigues da Silva/UFSCBrbara Zardo/UFSCCaroline Ferreira da Silva/UFSCJuliana Tonietto/UFSCNathalia Takeuchi/UFSC

    RevisoJlio Csar Ramos/UFSC

    Projeto Grficoe-Tec/MEC

    Instituto Federal do Esprito SantoEste Caderno foi elaborado em parceria entre o Instituto Federal do Esprito Santo e a Universidade Federal de Santa Catarina para o Sistema Escola Tcnica Aberta do Brasil e-Tec Brasil.

    S232t Santana, Antonio Luiz

    Tcnicas de programao : Curso Tcnico em Informtica / Antonio Luiz Santana. Colatina: Ifes, 2011.

    114 p. : il. Inclui Bibliografia

    ISBN: 978-85-62934-01-8 1. Java (Linguagem de programao de computador. 2. Inform-tica. I. Instituto Federal do Esprito Santo. II. Ttulo.

    CDD: 005.133

  • e-Tec Brasil33

    Apresentao e-Tec Brasil

    Prezado estudante,

    Bem-vindo ao e-Tec Brasil!

    Voc faz parte de uma rede nacional pblica de ensino, a Escola Tcnica

    Aberta do Brasil, instituda pelo Decreto n 6.301, de 12 de dezembro 2007,

    com o objetivo de democratizar o acesso ao ensino tcnico pblico, na mo-

    dalidade a distncia. O programa resultado de uma parceria entre o Minis-

    trio da Educao, por meio das Secretarias de Educao a Distancia (SEED)

    e de Educao Profissional e Tecnolgica (SETEC), as universidades e escolas

    tcnicas estaduais e federais.

    A educao a distncia no nosso pas, de dimenses continentais e grande

    diversidade regional e cultural, longe de distanciar, aproxima as pessoas ao

    garantir acesso educao de qualidade, e promover o fortalecimento da

    formao de jovens moradores de regies distantes, geograficamente ou

    economicamente, dos grandes centros.

    O e-Tec Brasil leva os cursos tcnicos a locais distantes das instituies de en-

    sino e para a periferia das grandes cidades, incentivando os jovens a concluir

    o ensino mdio. Os cursos so ofertados pelas instituies pblicas de ensino

    e o atendimento ao estudante realizado em escolas-polo integrantes das

    redes pblicas municipais e estaduais.

    O Ministrio da Educao, as instituies pblicas de ensino tcnico, seus

    servidores tcnicos e professores acreditam que uma educao profissional

    qualificada integradora do ensino mdio e educao tcnica, capaz de

    promover o cidado com capacidades para produzir, mas tambm com auto-

    nomia diante das diferentes dimenses da realidade: cultural, social, familiar,

    esportiva, poltica e tica.

    Ns acreditamos em voc!

    Desejamos sucesso na sua formao profissional!

    Ministrio da Educao

    Janeiro de 2010

    Nosso contato

    [email protected]

  • e-Tec Brasil5

    Indicao de cones

    Os cones so elementos grficos utilizados para ampliar as formas de

    linguagem e facilitar a organizao e a leitura hipertextual.

    Ateno: indica pontos de maior relevncia no texto.

    Saiba mais: oferece novas informaes que enriquecem o assunto ou curiosidades e notcias recentes relacionadas ao

    tema estudado.

    Glossrio: indica a definio de um termo, palavra ou expresso utilizada no texto.

    Mdias integradas: sempre que se desejar que os estudantes desenvolvam atividades empregando diferentes mdias: vdeos,

    filmes, jornais, ambiente AVEA e outras.

    Atividades de aprendizagem: apresenta atividades em diferentes nveis de aprendizagem para que o estudante possa

    realiz-las e conferir o seu domnio do tema estudado.

  • e-Tec Brasil7

    Sumrio

    Palavra do professor-autor 9

    Apresentao da disciplina 11

    Projeto instrucional 13

    Aula 1 Plataforma Java 151.1 Introduo 15

    1.2 A linguagem Java 15

    1.3 As caractersticas da linguagem Java 17

    1.4 Criao de programas em Java 18

    1.5 A plataforma Java 19

    1.6 Ambiente de desenvolvimento 21

    1.7 Primeiro contato com o Java 27

    Aula 2 Aspectos fundamentais sobre Java 312.1 Tipos de dados 31

    2.2 Definio de variveis e constantes 32

    2.3 Declarao de constantes 34

    2.5 Operadores 35

    2.6 Passagem de parmetros 37

    2.7 Converso de tipos 38

    2.8 Entrada de dados pelo teclado 40

    Aula 3 Estruturas condicionais e de controle 453.1 Comandos condicionais 45

    3.3 Uso da estrutura try catch 47

    3.5 While 50

    3.6 For 50

    Aula 4 Funes matemticas e de string 534.1 Funes matemticas 53

  • Aula 5 Criando funes 735.1 Criao de mtodos em Java 73

    5.2 Mtodos sem retorno 74

    5.3 Mtodos com retorno de valores 78

    5.4 Recursividade 80

    Aula 6 Utilizando vetores e matrizes 836.1 Definio de array 83

    6.2 Arrays unidimensionais 83

    6.3 Arrays bidimensionais 86

    6.4 Passagem de arrays em mtodos 87

    6.5 Array de objetos 88

    Aula 7 Manipulando arquivos 917.1 Definio 91

    7.2 Leitura e gravao de um arquivo texto 91

    Aula 8 Estruturas de dados em Java: listas 998.1 Definio de listas 99

    8.2 Implementao de listas por meio de arranjos 100

    8.3 Implementao de listas por meio de estruturas autorreferenciadas 103

    Aula 9 Estruturas de dados em Java: pilha 1079.1 Definio de pilha 107

    9.2 Propriedades e aplicaes das pilhas 107

    9.3 Conjunto de operaes 108

    9.4 Implementao de pilhas por meio de arranjo 109

    9.5 Implementao de pilhas por meio de estruturas autorreferenciadas 109

    Referncias 113

    Currculo do professor-autor 114

    Tcnicas de Programaoe-Tec Brasil 8

  • e-Tec Brasil9

    Palavra do professor-autor

    Ol caro estudante!

    Parabns, caro estudante! Voc est iniciando mais uma etapa do Curso

    Tcnico em Informtica a distncia. A equipe instrucional elaborou todo o

    material necessrio ao suporte para o seu aprendizado. Neste formato, a dis-

    ciplina Tcnicas de Programao foi elaborada pensando numa leitura rpida

    e dinmica, abordando o centro de cada contedo, explanado em aulas bem

    objetivas. Como j do seu conhecimento, estudar a distncia uma tarefa

    que envolve sua aplicao na resoluo dos exerccios, contando com todo

    amparo da equipe que ir apoi-lo no processo de ensino-aprendizagem.

    Para que isso ocorra de forma efetiva, faz-se necessrio separar um tempo

    para estudar o material e fazer as leituras complementares indicadas no ca-

    derno. Esperamos que voc utilize todos os recursos do ambiente disponveis

    para dar andamento aos estudos e avanar pelos mdulos.

    Um grande abrao!

    Prof. Antonio Luiz Santana

  • e-Tec Brasil11

    Apresentao da disciplina

    Nesta disciplina vamos estudar cinco tpicos que precisamos utilizar com

    muita frequncia: conceitos e aplicaes de tipos de dados; tcnicas de mo-

    dularizao; passagem de parmetros e recursividade; ambientes e tcnicas

    de desenvolvimento de aplicaes; e estruturas de dados e seus algoritmos.

    Para este nosso estudo, vamos adotar Java como linguagem para desenvol-

    ver aplicaes. Para a digitao do cdigo fonte das classes Java, a nica

    ferramenta necessria o bloco de notas do Windows; entretanto, qualquer

    editor de textos disponvel na mquina do leitor pode ser utilizado.

    Nas trs primeiras aulas, abordaremos os conceitos iniciais de Java e um

    estudo de variveis e estruturas bsicas de programao. Nas trs aulas sub-

    seqentes, apresentaremos os tipos de estrutura de dados e suas aplicaes

    em Java. Em seguida, abordaremos assuntos especficos sobre modulariza-

    o e recursividade.

    Como em qualquer outra linguagem, h muitas opes no mercado e diver-

    sas maneiras de desenvolver aplicaes em Java. Existe uma infinidade de

    ferramentas que podem deixar o desenvolvedor com dvidas para selecionar

    o ambiente de trabalho. No momento, as ferramentas que mais se destacam

    so Eclipse e Netbeans. Dessa forma, ao final desta disciplina voc estar

    capacitado a utilizar esses ambientes de desenvolvimento em situaes co-

    muns nas empresas, identificando o que melhor se adapta soluo de um

    determinado problema.

    Mesmo que voc j tenha estudado alguns desses programas, no deixe

    de ler o contedo semanal da matria e resolver as atividades propostas.

    Participe tambm das discusses com os tutores e demais colegas de curso;

    voc sempre aprender uma nova forma de resolver determinado problema.

    Organize seu tempo reservando um horrio todos os dias para os estudos,

    para que as atividades no acumulem.

    E lembre-se: a melhor forma de aprender praticando! Todo dia desco-

    brimos um novo recurso ou uma nova utilizao para esses ambientes de

    desenvolvimento.

    Um grande abrao!

  • e-Tec Brasil13

    Disciplina: Tcnicas de Programao (carga horria: 90 horas).

    Ementa: Conceitos e aplicaes de tipos de dados. Tcnicas de modulariza-o, passagem de parmetros e recursividade. Ambientes e tcnicas de de-

    senvolvimento de aplicaes. Estruturas de dados e seus algoritmos. Parte 1:

    Conceitos e aplicaes de tipos de dados. Tcnicas de modularizao, passa-

    gem de parmetros e recursividade. Ambientes e tcnicas de desenvolvimento

    de aplicaes. Parte 2: Estruturas de dados e seus algoritmos.

    AULA OBJETIVOS DE APRENDIZAGEM MATERIAISCARGA

    HORRIA(horas)

    1. Viso geral (Introduo linguagem Java e plataforma)

    - Descrever as principais caractersticas da linguagem.

    - Descrever os procedimentos neces-srios para o desenvolvimento de uma aplicao Java.

    - Fornecer ao aluno o primeiro contato com a linguagem Java.

    Caderno e Ambiente Virtual de Ensino- Aprendizagem.

    www.cead.ifes.edu.br10

    2. Aspectos funda-mentais sobre Java

    - Demonstrar a declarao de dados.

    - Verificar os conversores de tipo em Java.

    Caderno e Ambiente Virtual de Ensino- Aprendizagem.

    www.cead.ifes.edu.br

    10

    3. Estruturas condi-cionais e estruturas de controle

    - Fornecer conhecimentos para utilizar corretamente as estruturas condicionais.

    - Verificar as diferentes estruturas de repetio.

    - Verificar aplicaes prticas.

    Caderno e Ambiente Virtual de Ensino-Aprendizagem.

    www.cead.ifes.edu.br10

    4. Funes matemticas e de string

    - Demonstrar as principais funes matemticas em Java.

    - Demonstrar os principais mtodos para manipulao de strings em Java.

    - Mostrar as tcnicas de localizao de caracteres em strings.

    Caderno e Ambiente Virtual de Ensino- Aprendizagem.

    www.cead.ifes.edu.br10

    Projeto instrucional

  • AULA OBJETIVOS DE APRENDIZAGEM MATERIAISCARGA

    HORRIA(horas)

    5. Criando funes

    - Identificar os principais tipos de mto-dos em Java.

    - Introduzir o conceito de modularidade.

    - Mostrar as tcnicas de criao de mto-dos em Java.

    Caderno e Ambiente Virtual de Ensino - Aprendizagem.

    www.cead.ifes.edu.br10

    6. Utilizando veto-res e matrizes

    Diferenciar vetores e Matrizes.

    Demonstrar a praticidade de utilizao de vetores.

    Apresentar as vantagens de usar arrays.

    Caderno e Ambiente Virtual de Ensino -Aprendizagem.

    www.cead.ifes.edu.br10

    7. Manipulando arquivos

    Demonstrar a importncia do armazena-mento e recuperao de dados.

    Enumerar os aspectos fundamentais para a leitura e gravao em arquivos.

    Apresentar os passos necessrios para armazenar arquivos no formato texto.

    Caderno e Ambiente Virtual de Ensino-Aprendizagem.

    www.cead.ifes.edu.br10

    8. Estrutura de dados em Java listas

    Demonstrar a importncia do armaze-namento e recuperao de estruturas de dados.

    Enumerar os aspectos fundamentais para a utilizao de listas lineares.

    Apresentar os passos necessrios para implementao de listas.

    Caderno e Ambiente Virtual de Aprendizagem.

    www.cead.ifes.edu.br10

    9. Estrutura de dados em Java pilha

    Demonstrar a importncia do arma-zenamento e recuperao utilizando estruturas de dados.

    Enumerar os aspectos fundamentais para a utilizao de pilhas. Apresentar os passos necessrios para implementao de pilhas

    Caderno e Ambiente Virtual de Aprendizagem.

    www.cead.ifes.edu.br10

    Tcnicas de Programaoe-Tec Brasil 14

  • e-Tec Brasil

    Aula 1 Plataforma Java

    Objetivos

    Descrever as principais caractersticas da linguagem Java.

    Descrever os procedimentos necessrios para o desenvolvimento

    de uma aplicao Java.

    Fornecer o primeiro contato com a linguagem Java.

    1.1 IntroduoA linguagem Java surgiu por acaso quando quem a criou, uma equipe de

    engenheiros da empresa Sun, foi tomar um caf na esquina. Como numa

    reunio de amigos, esses engenheiros assim a denominaram, inspirados pelo

    nome da cidade de onde provinha o caf que tomavam.

    Na realidade, no existe um consenso entre os escritores a respeito da ver-

    dadeira histria dessa linguagem. Alguns autores afirmam que o nome Java

    se deve a um passeio que o pessoal da Sun fez numa ilha da Indonsia com

    esse mesmo nome.

    Originalmente, a linguagem foi criada para ser utilizada em pequenos equi-

    pamentos eletrnicos; entretanto, com pouco recurso financeiro desse setor

    na poca e principalmente com o aparecimento da internet, novas oportuni-

    dades apareceram e a empresa Sun passou a se dedicar a essa rea.

    1.2 A linguagem JavaEssa linguagem tem tido muito sucesso no mercado e diversas ferramen-

    tas tm surgido para manipular ou gerar cdigo Java. A prpria Microsoft

    manteve o Visual J++ como uma de suas ferramentas de desenvolvimen-to, aparentemente sem muito sucesso, sofrendo vrios processos por parte

    da Sun, o que provocou seu desaparecimento na nova verso do Microsoft

    Studio. Praticamente todos os principais fabricantes de software sentiram a necessidade de lanar no mercado alguma ferramenta para manipular Java,

    Em 1995, a Sun anunciou Java no apenas como mais uma linguagem de programao, mas como uma nova plataforma de desenvolvimento. Dessa forma, a linguagem Java comeou a ser utilizada para elaborar pginas da internet, proporcionando contedos interativos e dinmicos, iniciando com a utilizao de applets com imagens em movimento.

    Visual J++ Foi a implementao especfica da Microsoft para o Java, em ingls pronuncia-se Jay plus plus. Otimizado para a Plata-forma Windows, os programas de J++ poderiam funcionar somente no MSJVM (Mquina Virtual Java da Microsoft), que foi a tentativa da Microsoft para criar um interpretador mais rpido. A sintaxe, keywords, e convenes gramaticais eram os mesmos do Java.

    e-Tec BrasilAula 1 Plataforma Java 15

  • o que mostra sua fora e longevidade para os prximos anos no ambiente

    das linguagens de programao mais usadas.

    Hoje, quando Java mencionado, deve-se entend-la de imediato como

    a linguagem da Sun, a empresa que a fez nascer e a mantm como uma

    marca registrada. A linguagem Java da Sun tem feito muito sucesso, e uma

    das coisas que a torna to atraente o fato de que programas escritos em

    Java podem ser executados virtualmente em qualquer plataforma, aceitos

    em qualquer tipo de computador (ou outros aparelhos), caractersticas mar-

    cantes da internet. Com Java o processamento pode deixar de ser realizado

    apenas no lado do servidor, como era a internet no princpio, passando a ser

    executado tambm no cliente (entenda-se browser).

    O aspecto da utilizao de Java em multiplataforma muito importante, por-

    que os programadores no necessitam ficar preocupados em saber em qual

    mquina o programa ser executado, uma vez que um mesmo programa

    pode ser usado num PC, num Mac ou em um computador de grande porte.

    muito melhor para uma empresa desenvolver um software que possa ser executado em qualquer lugar, independentemente da mquina do cliente.

    Java pode atuar em conjunto com outras linguagens, como o caso de

    HTML, em que as aplicaes podem ser embutidas em documentos HTML,

    podendo ser transmitidas e utilizadas na internet. Os programas escritos em

    Java funcionam como um acessrio (chamado de applet) que colocado no computador do usurio no momento que ele acessa um site qualquer, isto , o computador do usurio passa a executar um programa armazenado no

    servidor web que transferido para sua mquina no momento do acesso.

    Num certo site o usurio pode executar um programa para a compra de um veculo e, logo em seguida, ao acessar outro site, executar outro programa para consultar o extrato bancrio; tudo escrito em Java e executado em sua

    mquina local.

    A linguagem Java tambm tem sido usada para a criao dos processos au-

    tomticos na web. Os processos envolvidos na atualizao de notcias, por exemplo, aqueles que aparecem a cada minuto em um site qualquer, so aplicaes desenvolvidas a partir do Java.

    Applet um software aplicativo que

    executado no contexto de outro programa (como, por exemplo,

    um web browser), um applet geralmente executa funes bem especficas. O termo foi introduzido pelo AppleScript

    em 1993 dados e gerador de relatrios. No contexto de Java,

    applets so aplicativos que se servem da Java Virtual Machine (JVM) existente na mquina do cliente ou embutida no prprio

    navegador do cliente para interpretar o seu bytecode

    Tcnicas de Programaoe-Tec Brasil 16

  • Outro aspecto a ser observado sobre a linguagem Java sua semelhana

    com a linguagem C++, tanto no que diz respeito sintaxe dos comandos utilizados quanto na caracterstica de ser orientada a objetos. A programa-

    o orientada a objetos hoje universalmente adotada como padro de

    mercado, e muitas linguagens tradicionais foram aperfeioadas para imple-

    mentar essa nova forma de trabalho; Java j nasceu assim.

    O grande diferencial de Java em relao s outras linguagens de programa-

    o se refere ao fato de que ela foi concebida, originalmente, para ser usada

    no ambiente da World Wide Web (WWW). Nos ltimos cinco anos, a grande maioria das linguagens tem buscado se adaptar a essa nova realidade e ne-

    cessidade; entretanto, Java a que mais tem se destacado at o momento.

    1.3 As caractersticas da linguagem JavaA linguagem Java possui diversas caractersticas, entre as quais podemos

    destacar:

    a) Orientao a objetos: uma prtica de programao j slida no mer-cado, e a maioria das linguagens de hoje permite trabalhar dessa forma.

    Como conceito inicial, imagine a orientao a objetos como uma prtica

    de programao que permite a utilizao de diversos trechos de cdigo.

    Esses objetos podem simular um objeto do mundo real, como um auto-

    mvel, uma casa, uma pessoa etc.

    b) Portabilidade: Java uma linguagem multiplataforma, ou seja, uma mesma aplicao pode ser executada a diferentes tipos de plataforma

    sem a necessidade de adaptao de cdigo. Essa portabilidade permite

    que um programa escrito na linguagem Java seja executado em qualquer

    sistema operacional.

    c) Multithreading: threads (linhas de execuo) o meio pelo qual se con-segue fazer com que mais de um evento acontea, simultaneamente, em

    um programa. Assim, possvel criar servidores de rede multiusurios,

    em que cada thread, por exemplo, cuida de uma conexo de um usurio ao servidor, isto , um mesmo programa.

    Linguagem C++Pode-se dizer que C++ foi a nica linguagem, entre tantas outras, que obteve sucesso como uma sucessora linguagem C, inclusive servindo de inspirao para outras linguagens como Java e IDL de CORBA.

    e-Tec BrasilAula 1 Plataforma Java 17

  • d) Suporte comunicao: uma das vantagens de Java fornecer um grande conjunto de classes com funcionalidades especficas, ou seja,

    muitos detalhes de programao so encapsulados em classes j pron-

    tas. Nesse contexto, a linguagem oferece um conjunto de classes para

    programao em rede, o que agiliza a implementao.

    e) Acesso remoto a banco de dados: possibilita que dados sejam recu-perados e/ou armazenados de qualquer ponto de internet. Essa uma

    caracterstica muito importante, se considerado o grau de automao

    proporcionado pelo Java.

    Um aspecto importante que deve ser levado em considerao, principalmen-

    te porque o prprio mercado afirma, refere-se aos mecanismos de segurana

    que a linguagem oferece para a realizao de processos pela internet. Se

    comparada a outras linguagens usadas na internet, como ASP, por exemplo,

    Java possui maior segurana, com diversas classes que tratam de chaves p-

    blicas e privadas para a gerao de dados criptografados.

    1.4 Criao de programas em JavaPara a criao de programas em Java, torna-se necessria a digitao por

    meio de uma ferramenta especfica ou ainda de um editor de textos qual-

    quer, gerando o cdigo-fonte do programa.

    Depois de digitado, esse programa deve passar por um processo de anlise

    do cdigo, a fim de que seja verificada a existncia de erros de sintaxe. Esse

    processo chamado de compilao e realizado por meio de um compi-

    lador Java, normalmente o compilador do kit de desenvolvimento da Sun. Todo programa Java deve ser compilado, assim como ocorre com linguagens

    de programao como Pascal, C, entre outras.

    Com o compilador realizada a traduo do programa escrito em Java para

    uma linguagem intermediria chamada Java bytecodes, um cdigo indepen-dente de plataforma que decifrado por um interpretador Java; isto , para

    que um programa em Java seja executado, necessrio possuir outra ferra-

    menta chamada interpretador. O interpretador o responsvel por executar

    o programa escrito em Java em que cada instruo do bytecode interpre-tada, sendo executada no computador.

    Tcnicas de Programaoe-Tec Brasil 18

  • A Figura 1.1 ilustra a sequncia de desenvolvimento de um programa em

    Java, como este deve ser criado na forma de uma classe. Conforme pode

    ser observado, uma classe em Java (cdigo-fonte) pode ser digitada em um

    editor de textos qualquer e deve ser salva com a extenso Java.

    Hello.java Hello.class

    Apenas uma vez

    Todas as vezes

    Editor Compilador JavaInterpretador

    Java

    Figura 1.1: Sequncia de desenvolvimento de um programa em JavaFonte: http://java.sun.com/javase/downloads/index.jsp

    A seguir uma ferramenta realiza sua compilao (compilador). Caso ocorram

    erros no processo de compilao, o programa-fonte deve ser corrigido e

    compilado novamente enquanto persistirem os erros. Quando no existirem

    mais erros de complicao, ser gerado um arquivo com extenso .class

    (o arquivo com os bytecodes), a ser executado por um interpretador Java ou pelo browser, caso o programa seja utilizado na internet. Na maioria das principais ferramentas de desenvolvimento, o processo de compilao

    automtico, isto , ocorre durante a digitao do cdigo-fonte, ou seja, a

    compilao vai sendo executada automaticamente durante a digitao da

    mesma forma que o corretor ortogrfico dos editores de texto atuais.

    1.5 A plataforma JavaPlataforma um ambiente de software ou hardware no qual um programa roda. A maioria das plataformas formada pelo conjunto hardware e um sistema operacional, isto , um conjunto de hardware e software que atuam juntos. Java difere da maioria das outras plataformas porque composta

    apenas de um software operando com outra plataforma qualquer.

    No mundo dos computadores existem muitas plataformas, como Microsoft Win-

    dows, Macintosh, OS/2, Unix e netware. Normalmente, para que um mesmo

    programa funcione em diferentes plataformas, necessrio que ele seja compi-

    lado separadamente; isto , ele deve ser compilado na plataforma em que ser

    executado. Uma aplicao que executada sobre uma plataforma pode no fun-

    cionar sobre outra, porque o arquivo foi criado para uma plataforma especfica.

    BytecodesSo gerados pelo processo de compilao, especficos a qualquer mquina fsica, so instrues para uma mquina virtual.

    Servlet um componente do lado servidor que gera dados HTML e XML para a camada de apresentao de um aplicativo Web. basicamente uma classe na linguagem de programao Java que dinamicamente processa requisies e respostas, proporcionando dessa maneira novos recursos aos servidores. A definio mais usada considera-o extenso de servidores.

    e-Tec BrasilAula 1 Plataforma Java 19

  • Java uma nova plataforma de software que possibilita que um mesmo pro-grama seja executado em diversas plataformas, talvez a caracterstica mais

    importante dessa linguagem.

    Um programa escrito na linguagem Java compilado e gera um arquivo de

    bytecodes (com extenso .class), que pode ser executado onde quer que a plataforma Java esteja presente, em qualquer sistema operacional subjacen-

    te. Em outras palavras, o mesmo programa pode ser executado em qualquer

    sistema operacional que execute a plataforma Java. Uma analogia relaciona-

    da plataforma Java pode ser visualizada na Figura 1.2.

    Java 2 Platform

    Java 2 Micro Edition (j2ME)

    Servers

    Desktopmachines

    High-endconsumerdevices

    Smart-cards

    Low-endconsumerdevices

    OptionalPackages

    OptionalPackages

    Java 2Enterprise

    Edition(J2EE)

    Java 2StandardEdition(J2SE)

    CDC

    Foundation Profile

    Personal Profile

    CLDC

    MIDP

    Java CardAPIS

    Java Virtual Machine KVM CardVM

    1

    2

    3

    4

    5

    Figura 1.2: Plataforma JavaFonte: Furgeri (2008)

    Enquanto cada plataforma possui sua prpria implementao da mquina virtu-

    al Java, existe somente uma especificao padronizada para a mquina virtual,

    proporcionando uma interface uniforme para aplicaes de qualquer hardware. Mquina Virtual Java (Java Virtual Machine) ideal para uso na internet, em que um programa deve ser executado em diferentes mquinas pela web.

    Tcnicas de Programaoe-Tec Brasil 20

  • 1.6 Ambiente de desenvolvimentoNesta seo apresentamos um esboo das ferramentas necessrias para a

    elaborao, compilao e execuo de aplicaes em Java. Como qualquer

    outra imagem, h muitas opes no mercado e diversas maneiras de de-

    senvolver em Java. Existe uma infinidade de ferramentas que pode deixar o

    desenvolvedor em dvida na hora de escolher o ambiente de trabalho. No

    momento, as ferramentas que mais se destacam so Netbeans e Eclipse; no

    entanto, existem muitas outras.

    A ferramenta JDK da Sun composta basicamente por um compilador (ja-

    vac), um interpretador (Java), um visualizador de applets (appletviewer), bibliotecas de desenvolvimentos (packages), um depurador de programas (JDB) e diversas documentaes (javadoc). Essa ferramenta da Sun no for-

    nece um ambiente visual de desenvolvimento, porm trata-se do principal

    padro a ser seguido, visto a enorme funcionalidade que possui aliada

    facilidade de utilizao.

    Para a digitao de cdigo-fonte das classes em Java, a nica ferramenta

    necessria o bloco de notas do Windows; entretanto, qualquer editor de

    textos disponvel na mquina do leitor pode ser utilizado.

    1.6.1 Instalao de kit de desenvolvimento da SunUma das maiores dificuldades dos iniciantes em Java conseguir instalar cor-

    retamente o kit de ferramentas da Sun, uma vez que nem todo o processo ocorre de forma automtica como na maioria dos instaladores de software. Por esse motivo, importante dedicar um tempo a esse processo, mesmo

    sabendo que existem muitas variaes, dependendo do sistema operacional

    em que a ferramenta ser instalada.

    Antes de desenvolver as aplicaes em Java, necessrio possuir instala-

    das em sua mquina todas as ferramentas de desenvolvimento. Por isso,

    apresentamos a instalao das ferramentas mnimas necessrias criao de

    aplicaes em Java.

    A Sun fornece download gratuito de sua ferramenta no endereo http://java.sun.com/javase/downloads/index.jsp, em que so encontradas verses para vrias plataformas. O nome do kit de ferramentas que voc deve baixar JDK 6 update 21, ou ainda uma outra verso mais recente, caso se encontre disponvel (Figura 1.3).

    e-Tec BrasilAula 1 Plataforma Java 21

  • Figura 1.3: Site para baixar instalao do pacote da SunFonte: http//java.sun.com/javase/downloads/index.jsp

    Os procedimentos para a correta instalao da ferramenta variam de acordo

    com a plataforma em que ser instalada e tambm em funo da verso do

    sistema operacional.

    1.6.2 Instalao do JDK na plataforma WindowsOs procedimentos para instalao do JDK no Windows so os seguintes:

    1. Faa o download da verso correspondente ao Windows.

    O processo de instalao transfere todas as ferramentas e pacotes da lingua-

    gem para sua mquina. Ao instalar o JDK, criada uma pasta com todos os

    arquivos do kit de ferramentas da Sun. O caminho default da instalao C:/arquivos de programas\java\jdk1.6.0_21. Dependendo da verso instalada,

    uma pasta de nome diferente ser criada.

    Provavelmente, a Sun disponibilizar outras verses em breve como, por

    exemplo, jdk 1.6.0_04, jdk 1.6.0_05 e assim por diante. Os nmeros 04 ou

    05 ao final do nome normalmente se referem ao update. Ao instalar o JDK, so criadas diversas pastas, como as mostradas na Figura 1.4.

    Tcnicas de Programaoe-Tec Brasil 22

  • Figura 1.4: Localizao da pasta de instalaoFonte: Printscreen Windows 2000 e XP

    Observe que a pasta jdk 1.6.0_21 a principal em que esto todas as outras

    (a Sun chama-a de JAVA_HOME). Dependendo da verso do JDK instalada,

    essa pasta pode ter nomes e contedos diferentes. Voc dever se concen-

    trar no nome da verso que baixou.

    2. Realize as configuraes das variveis de ambiente, as quais dependem do sistema operacional em que voc est instalando o JDK. Os proce-

    dimentos apresentados em seguida se referem configurao para o

    ambiente Windows.

    No Windows 2000 e XP, devemos configurar as variveis pelo painel de con-

    trole. Defina as variveis seguindo os procedimentos:

    a) Acesse o painel de controle.

    b) Abra o item sistema.

    e-Tec BrasilAula 1 Plataforma Java 23

  • Figura 1.5: Janela de configurao da varivel de ambienteFonte: Printscreen Windows 2000 e XP

    3. Clique na guia avanado e em seguida, no boto variveis de ambiente.

    Figura 1.6: Janela de configurao da varivel de ambienteFonte: Printscreen Windows 2000 e XP

    4. Em variveis de usurio, clique no boto nova. As variveis de am-biente podem tambm ser definidas em variveis do sistema em vez

    de variveis de usurio, como sugerido. A diferena que, quando

    definidas em variveis de usurios, elas funcionam somente para o seu

    usurio, e em variveis de sistema funcionam para todos os usurios.

    Tcnicas de Programaoe-Tec Brasil 24

  • 5. Surge a janela nova varivel de usurio. No campo nome da vari-vel coloque o nome da varivel que ser includa, por exemplo, JAVA_HOME, e no campo valor da varivel coloque o caminho referente varivel que voc nomeou, C:\arquivo de programas\java\jdk1.6.0_21

    (sem as aspas), e clique no boto OK.

    6. Faa o mesmo procedimento de incluso com as variveis path e class-path, definindo os seus nomes e incluindo os valores correspondentes (Figura 1.7):

    C:\arquivos de programas\java\jdk1.6.0_21\bin para a varivel path e C:\arquivos de programas\java\jdk1.6.0_21\lib;.; para a varivel classpath.

    Figura 1.7: Janela de configurao da varivel de ambienteFonte: Printscreen Windows 2000 e XP

    7. Verifique se a instalao foi realizada com sucesso. Entre em um diretrio qualquer no prompt de comando e digite javac seguido da tecla Enter. Se aparecer uma mensagem como javac no reconhecido como um

    comando interno, porque o Java no foi instalado corretamente Se

    isso ocorrer, refaa a configurao, verificando principalmente as confi-

    guraes das variveis de ambiente. Se ao digitar javac aparecer uma

    tela com instrues de help do Java, significa que a instalao e a confi-gurao foram realizadas com sucesso.

    Faa a instalao da ltima atualizao do Java em seu computador e verifi-

    que se funciona.

    Como sugesto de link para instalao do Java, utilize o endereo: http://www.youtube.com/watch?v=wvzUm0ys0vM&feature=related

    e-Tec BrasilAula 1 Plataforma Java 25

  • Figura 1.8: Janela de verificao da instalao do JavaFonte: Printscreen Windows 2000 e XP

    Para o Windows Vista/7:

    a) Acesse o painel de controle.

    b) Abra o item sistema e manuteno. Para Windows 7 abra sistema e segurana.

    c) Abra o item sistema.

    d) Ao lado esquerdo, no menu tarefas, clique em configuraes avan-adas do sistema, em seguida no boto variveis de ambiente. Conti-

    nue executando o passo 4 anterior referente ao Windows XP/2000.

    Observaes:

    Em funo de constantes atualizaes do JDK, o leitor deve atentar para o nmero da verso da ferramenta carregada no processo de download, de maneira a fazer sua correta instalao. O mesmo nome da pasta principal

    (exatamente o mesmo nome) deve ser inserido nas variveis de ambiente.

    O trecho em negrito no cdigo anterior ser varivel, dependendo da

    verso instalada.

    Tcnicas de Programaoe-Tec Brasil 26

  • Ateno especial deve ser dada quando a instalao for realizada no Windows Vista. Se o firewall nativo estiver ativado, talvez seja necessrio desbloquear o Java. Se o Java estiver bloqueado, pode ocorrer um erro

    referente violao de acesso por parte da mquina virtual quando ele

    for executado.

    Outro ponto ser observado com relao ao Vista refere-se configura-o das variveis de ambiente, as quais tiveram de ser definidas com o

    caminho reduzido do modo MS-DOS> por exemplo, o contedo da vari-

    vel path (c:\arquivos de programas\java\jdk1.6.0_03\bin) foi definido como C:\arquiv~1\java\jdk1.6.0\bin: caso contrrio, o compilador no

    seria localizado. O mesmo procedimento foi realizado para as variveis

    JAVA_HOME e classpath.

    1.7 Primeiro contato com o JavaInicialmente, para fornecer o primeiro contato com a linguagem, ser apresen-

    tada uma classe em Java que escreve uma mensagem qualquer na tela. Apesar

    de o exemplo ser simples, ele contm os itens fundamentais para a criao de

    qualquer aplicao em Java: elaborao do cdigo, compilao e execuo.

    Esses itens sero seguidos durante o processo de elaborao das aplicaes.

    Como sugesto, utilize o bloco de notas, um editor simples e rpido que aten-

    de a todos os requisitos mninos para a construo de aplicaes em Java.

    Todo programa em Java inicia com a palavra reservada class seguida do nome da classe (no caso Exemplo01). Como conveno definida pela Sun,

    todo nome de classe inicia com letra maiscula.

    Digite o nome do programa (class Exemplo01) mostrado na Figura 1.9 e

    salve-o com esse mesmo nome em uma pasta.

    Figura 1.9: Exemplo01Fonte: Elaborada pelo autor

    Como sugesto de link, utilize o endereo: http://www.youtube.com/watch?v=xGM9uBOvMgQ&feature=related

    e-Tec BrasilAula 1 Plataforma Java 27

  • Crie um programa em Java para mostrar seu nome impresso na tela.

    Um par de chaves envolve todo o cdigo da classe sempre; um programa em

    Java possui uma classe que envolve o cdigo.

    Uma classe em Java composta por mtodos (considerados funes ou pro-cedures em outras linguagens de programao) que podem conter outras estruturas de programa. Toda classe executvel, ou seja, toda classe que ser

    interpretada e executada, deve obrigatoriamente possuir o mtodo main (principal), que invocado quando a classe executada.

    Nesse caso, quando a classe for executada, ser invocado o mtodo main que possui duas instrues para envio de mensagens na tela (system.out.

    println). No exatamente uma instruo e sim uma classe da linguagem

    especializada em sada de dados.

    Observaes:

    A linha public static void main (string args) aparece em todas as classes executveis nesse mesmo formato.

    A linha do mtodo principal possui o seguinte formato: public static void main (string args[]); praticamente todas as aplicaes tm essa li-nha e a varivel args que pode receber outro nome de acordo com o desejo do programador.

    Tcnicas de Programaoe-Tec Brasil 28

  • ResumoNesta aula falamos sobre os conceitos iniciais de Java, como configurao e

    instalao. Abordamos o conceito de programao em Java (como variveis

    de ambiente, classes, padres, etc.), assim como o funcionamento do seu

    ambiente de desenvolvimento.

    Atividades de aprendizagem1. Por que a utilizao de Java em multiplataforma muito importante para

    programadores?

    2. Qual a principal caracterstica que distingue a plataforma Java das demais existentes?

    e-Tec BrasilAula 1 Plataforma Java 29

  • 3. Qual a preocupao do programador Java em relao sensibilidade maiscula/minscula das palavras usadas?

    4. Desenvolva um programa para mostrar seu nome e idade utilizando o compilador Java.

  • e-Tec Brasil

    Aula 2 Aspectos fundamentais sobre Java

    Objetivos

    Realizar o primeiro contato com Java.

    Demonstrar declarao de dados.

    Verificar os conversores de tipo em Java.

    2.1 Tipos de dadosAssim como em outras linguagens, antes de utilizar variveis necessrio

    saber definir um tipo de dado. Os tipos de dados em Java so portteis entre

    todas as plataformas de computadores que suportam essa linguagem.

    Na maioria das linguagens, quando um dado inteiro utilizado, pode ser

    que para uma determinada plataforma esse nmero seja armazenado com

    16 bits e em outra 32 bits. Em Java isso no ocorre, uma vez que um tipo de dado ter sempre a mesma dimenso.

    Os tipos primitivos da linguagem (Quadro 2.1) utilizados na criao de vari-

    veis so:

    a) Boolean: no um valor numrico, s admite os valores true ou false.

    b) Char: usa o cdigo UNICODE e ocupa cada caractere 16 bits.

    c) Inteiros: diferem nas precises e podem ser positivos ou negativos.

    Byte: 1 byte. Short: 2 bytes. Int: 4 bytes. Long: 8 bytes.

    d) Reais em ponto flutuante: igual aos inteiros, tambm diferem nas preci-ses e podem ser positivos ou negativos.

    e-Tec BrasilAula 2 Aspectos fundamentais sobre Java 31

  • Float: 4 bytes. Double: 8 bytes.

    Quadro 2.1: Os tipos primitivos em Java

    Tipo de dados Definio Tipo Tamanho (bits) Exemplos

    Literal (caractere)Letras, nmeros e

    smboloschar 16 a, ?, *

    InteiroNmeros inteiros

    positivos ou negativos

    byte 8 0, 1, 23

    int 32 0, 1, 23

    short 16 0, 1, 23

    long 64 0, 1, 23

    Real (ponto flutuante)Nmeros com casas

    decimais, positivos ou negativos

    float 320.348.65

    double 640.348.65

    Lgico (Booleano)Verdadeiro (1)

    ou falso (0)boolean 8

    truefalse

    Fonte: Furgeri (2008)

    2.2 Definio de variveis e constantesUma varivel ou constante um tipo de identificador cujo nome, que selecionado pelo programador, associado a um valor que pertence a um

    tipo de dado.

    Todo identificador possui um nome, um tipo e contedo. Os identificadores

    no podem utilizar palavras reservadas do Java.

    A linguagem Java exige que os identificadores tenham um tipo de dado defi-

    nido antes de serem utilizados no programa, ou seja, eles devem ser obriga-

    toriamente declarados, independentemente do ponto do programa, seja no

    meio, no incio ou no final, desde que antes de sua utilizao no programa.

    Essa caracterstica do identificador em Java difere da maioria das linguagens

    de programao. A linguagem Pascal, por exemplo, possui um local exclusi-

    vo para declarao de variveis.

    Uma varivel precisa ser declarada para poder ser utilizada. Opcionalmente,

    ela pode ser inicializada j no momento de sua declarao. O cdigo da Fi-

    gura 2.1 mostra alguns exemplos de manipulao de variveis em Java.

    Identificador a localizao da memria

    capaz de armazenar o valor de um certo tipo, para o qual se

    d um nome que descreve seu significado ou propsito.

    Tcnicas de Programaoe-Tec Brasil 32

  • Figura 2.1: Exemplo02Fonte: Elaborada pelo autor

    Como voc pde perceber no ltimo exemplo, um comentrio em Java pode

    ser escrito com // (para comentar apenas at o final da linha) ou com /* */

    (para comentar tudo o que estiver entre o /* e o */).

    Para identificar a documentao, utilizamos /** */ A sada do programa

    Exemplo02 dever ser:

    12

    4

    x

    Caso uma varivel do tipo char, byte, short, int, long, float ou double no seja inicializada, ela criada com o valor 0. Se ela for do tipo boolean, seu valor padro ser false.

    Quando for necessrio definir uma nova varivel com um tipo de dado di-

    ferente, por conveno, utiliza-se uma nova linha. O mais comum entre os

    programadores Java definir um tipo de dados e declarar uma lista com um

    ou mais nomes de variveis desejadas desse tipo. Nessa lista os nomes so

    separados por vrgulas e a declarao terminada por ; (ponto e vrgula).

    As variveis tambm podem ter sensibilidade, isto , ao declarar uma varivel

    com um nome (por exemplo, dolar) ele deve ser utilizado sempre da mesma forma. Isto , no pode ser usado como Dlar, DOLAR, dlar ou qualquer

    outra variao, apenas com todas as letras minsculas, como realizado em

    sua declarao.

    Os nomes das variveis devem comear com letra, caractere de sublinhado

    ou cifro. No permitido iniciar o nome da varivel com nmero. Por con-

    veno, a linguagem Java utiliza o seguinte padro:

    possvel criar mais de uma varivel do mesmo tipo na mesma linha, separando-as por uma vrgula. Exemplo: int x, y, z;

    e-Tec BrasilAula 2 Aspectos fundamentais sobre Java 33

  • quando o nome da varivel for composto apenas por um caractere ou palavra, os caracteres devem ser minsculos;

    quando o nome da varivel tiver mais de uma palavra, a primeira letra da segunda palavra em diante deve ser maiscula. Todos os outros caracte-

    res devem ser minsculos.

    Exemplos: a, a1, real, nome, valorVenda, codigoFornecedor.

    Outro ponto a ser observado se refere utilizao do ponto e vrgula (;) no

    final da maioria das linhas de cdigo.

    2.3 Declarao de constantesNa realidade no existem constantes em Java; o que existe um tipo de

    varivel com comportamento semelhante a uma constante de outras lin-

    guagens. Trata-se de um tipo de varivel que no pode alterar seu contedo

    depois de ter sido inicializado, ou seja, o contedo permanece o mesmo

    durante toda execuo do programa. Em Java, essa varivel chamada fi-nal. Essas constantes so usadas para armazenar valores fixos, geralmente, definidos no incio de uma classe. Por conveno os nomes de constantes

    devem ser escritos em letras maisculas. Exemplos: na Matemtica temos a

    constante PI cujo valor 3,1416 (isto , p=3,1416); na Fsica temos o valor da acelerao da GRAVIDADE da Terra (g=9,81 m/s2).

    Para a declarao de constantes em Java utiliza-se a palavra reservada final antes da definio do tipo de varivel:

    final double PI=3.14;

    final double GRAVIDADE=9.81;

    Caso um segundo valor seja atribudo a uma varivel final no decorrer da

    classe, o compilador gera uma mensagem de erro. No obrigatrio iniciali-

    zar o contedo de uma varivel final no momento de sua declarao

    2.4 Comentrios Os comentrios so linhas adicionadas ao programa que servem para

    facilitar seu entendimento por parte do programador, ou ainda por outra

    pessoa que o consulte. Essas linhas no afetam o programa em si, pois no

    so consideradas parte do cdigo. O Java aceita trs tipos de comentrio:

    de linha, de mltiplas linhas e de documentao.

    Tcnicas de Programaoe-Tec Brasil 34

  • Para inserir comentrios de linha nica, utiliza-se // (duas barras) em qual-

    quer local do programa e tudo o que tiver escrito depois desse sinal e na

    mesma linha ser considerado um comentrio.

    Para inserir comentrios que envolvam vrias linhas, utiliza-se /* (barra aste-

    risco) para marcar o incio e */ (asterisco barra) para o final, ou seja, tudo o

    que estiver entre esses dois sinais ser considerado comentrio.

    O terceiro tipo semelhante ao comentrio de mltiplas linhas; entretanto,

    tem o propsito de possibilitar a documentao do programa por meio de

    um utilitrio (javadoc) fornecido pela Sun junto com o SDK.

    Verifique o Exemplo21 (Figura 2.2) e sua execuo (Figura 2.3). Os coment-

    rios no aparecem na execuo do programa.

    Figura 2.2: Exemplo21Fonte: Elaborada pelo autor

    Figura 2.3: Execuo do programa Exemplo21Fonte: Elaborada pelo autor

    2.5 OperadoresA linguagem Java oferece um amplo conjunto de operadores destinados

    realizao de operaes aritmticas, lgicas e relacionais, com a possibilida-

    de de formar expresses de qualquer tipo. Alm dos operadores matemti-

    cos, existem tambm operadores lgicos e relacionais.

    2.5.1 Operadores aritmticosEntre os operadores presentes no Quadro 2.2, talvez os decremento (--) e o

    incremento (++) causem alguma dvida, principalmente para os programa-

    e-Tec BrasilAula 2 Aspectos fundamentais sobre Java 35

  • dores iniciantes. Entretanto sua utilizao extremamente simples: o ope-

    rador de incremento aumenta o valor de uma varivel qualquer em um. O

    mesmo vale para o operador de decremento, logicamente, reduzindo em

    um o valor da varivel.

    Quadro 2.2: Operadores aritmticos

    Operao Sinal Exemplo

    Adio + 1+20

    Subtrao - 35-17

    Multiplicao * 14*2

    Diviso / 14/2

    Resto da diviso inteira % 14%7

    Sinal negativo - -4

    Sinal postitivo + +5

    Incremento unitrio ++ ++6 ou 6++

    Decremento unitrio -- --6 ou 6--

    O Exemplo0203 mostra um programa em Java com a utilizao de alguns

    operadores (Figuras 2.4 e 2.5).

    Figura 2.4: Exemplo0203

    Fonte: Elaborada pelo autor

    Figura 2.5: Execuo do programa Exemplo0203Fonte: Elaborada pelo autor

    2.5.2 Operadores relacionaisOs operadores relacionais possibilitam comparar valores ou expresses, re-

    tornando um resultado lgico verdadeiro ou falso. O Quadro 2.3 mostra os

    operadores relacionais usados em Java e sua aplicao.

    Tcnicas de Programaoe-Tec Brasil 36

  • Quadro 2.3: Operadores relacionais em Java

    Significado Operador Exemplo

    Igual == x==20

    Diferente (No igual) != y!=17

    Menor que < x x>2

    Menor ou igual

  • Figura 2.6: Exemplo0204Fonte: Elaborada pelo autor

    Para passarmos os parmetros pela linha de comando, basta que adicione-

    mos os valores aps a linha de comando que utilizamos para execut-lo:

    java nome-do-programa parametro1 parametro2 ...

    Como exemplo, vamos considerar a linha de comando a seguir:

    java Exemplo0204 Maria Fernanda

    O resultado de sua execuo est mostrado na Figura 2.7.

    Figura 2.7: Execuo do programa Exemplo0204Fonte: Elaborada pelo autor

    2.7 Converso de tipos comum que o programador precise converter um nmero inteiro, por

    exemplo, em um nmero real (ou vice-versa). Em Java existem basicamente

    dois tipos de converso de dados:

    a) converso implcita na qual os dados so convertidos automatica-mente, sem a preocupao do programador. Ela ocorre, por exemplo,

    quando convertemos um nmero inteiro para um nmero real.

    Nesse caso, a converso implcita porque bvio para o compilador que

    um nmero inteiro pode ser representado tambm como um nmero real.

    Veja um exemplo a seguir:

    int x = 4;

    float y = x;

    double z = y;

    Tcnicas de Programaoe-Tec Brasil 38

  • b) converso explcita quando o programador precisa explicitar no cdi-go que um valor ser convertido de um tipo para outro. No caso de um

    nmero real para um inteiro, por exemplo, pode haver perda na preciso

    do nmero.

    Veja o exemplo a seguir:

    float a = 9;

    float b = a/8; // b = 1.125

    int c = (int)b; /* Aqui estamos forando a converso para um nmero

    inteiro. Nesse caso, a varivel c armazenar apenas a parte inteira da

    varivel b, ou seja, 1 */

    System.out.println(b);

    System.out.println(c);

    O resultado da execuo deste trecho de cdigo :

    1.125

    1

    O tipo boolean no pode ser convertido para nenhum outro tipo.

    Seguindo o sentido das flechas da Figura 2.8 vemos os tipos que podem ser

    implicitamente convertidos em outros. Seguindo o sentido contrrio, vemos

    os tipos que precisam ser convertidos explicitamente:

    short

    byte

    int

    char

    long

    float

    double

    Figura 2.8: Converses possveis entre tipos primitivos em JavaFonte: Elaborada pelo autor

    e-Tec BrasilAula 2 Aspectos fundamentais sobre Java 39

  • Veja outro exemplo sobre utilizao da converso de tipos mostrado nas

    Figuras 2.9 e 2.10 a seguir.

    Figura 2.9: Exemplo0205Fonte: Elaborada pelo autor

    Figura 2.10: Execuo do programa Exemplo0205Fonte: Elaborada pelo autor

    2.8 Entrada de dados pelo tecladoNo Windows podemos fazer a entrada de dados pelo prompt de comando. No Linux, temos vrios consoles, que so as telas em modo texto. Para en-

    viarmos informaes para o usurio pela sada padro, utilizamos o mtodo

    System.out.println.

    As aplicaes de console utilizam como padro a stream de dados out, dis-ponvel estaticamente na classe java.lang.System. Uma stream pode ser entendida como um duto capaz de transportar dados de um lugar (um

    arquivo ou dispositivo) para outro. O conceito de stream extremamente importante, pois utilizado tanto para manipulao de dados existentes em

    arquivos quanto para comunicao em rede e outros dispositivos.

    A stream de sada padro aberta automaticamente pela Mquina Virtu-al Java, ao iniciarmos uma aplicao Java, e permanece pronta para enviar

    dados. A sada padro est tipicamente associada ao dispositivo de sada

    (display), ou seja, a janela de console utilizada pela aplicao conforme de-signado pelo sistema operacional.

    Tcnicas de Programaoe-Tec Brasil 40

  • Como fizemos em vrios exemplos e exerccios anteriores, podemos enviar

    dados para a sada padro utilizando o mtodo System.out.println. Da mesma forma que toda aplicao de console possui uma stream associa-da para ser utilizada como sada padro, existe outra stream denominada entrada padro, usualmente associada ao teclado do sistema. Essa stream, chamada in, est disponvel estaticamente na classe java.lang.System e pertence classe java.io.InputStream, que tambm aberta, automati-camente, quando a aplicao iniciada pela mquina virtual Java (permane-

    cendo pronta para fornecer os dados digitados).

    Os mtodos disponveis para a entrada de dados na classe java.lang.System so bastante precrios. Os trs principais mtodos so:

    a) read(): l um byte;

    b) read(byte[]): preenche o array de bytes fornecido como argumento;

    c) skip(long): descarta a quantidade de bytes especificada como argumento.

    A leitura de bytes equivale entrada de caracteres simples, o que pouco confortvel quando estamos trabalhando com valores numricos (inteiros

    ou reais), strings ou outra informao diferente de caracteres, pois exige que cada caractere fornecido pelo usurio seja testado e concatenado com os

    demais para a formao de um determinado valor.

    Para contornar essa situao, alguns materiais sugerem a criao de uma

    classe, que chamaremos aqui de Entrada, que contm trs mtodos para

    leitura de valores digitados pelo usurio:

    a) readDouble(): l um valor double da entrada padro;

    b) readInteger(): l um valor inteiro da entrada padro;

    c) readString() l uma string da entrada padro.

    No cdigo da Figura 2.11, utilizamos a classe DatainputStream que per-tence ao pacote java.io. Entenda o pacote como um grupo de classes do mesmo tipo armazenadas em uma pasta qualquer. O asterisco presente em

    import java.io.* indica que todas as classes do pacote java.io devem ser carregadas.

    e-Tec BrasilAula 2 Aspectos fundamentais sobre Java 41

  • Figura 2.11: Classe DatainputStreamFonte: Elaborada pelo autor

    ResumoNesta aula falamos sobre os principais tipos de operadores em Java, como

    operadores lgicos e relacionais. Tambm abordamos o conceito de tipos de

    variveis to importante na programao em Java. Citamos tambm como

    funciona a entrada de dados em Java.

    Atividades de aprendizagem1. Crie um programa para apresentar mensagens, uma de boas-vindas, ou-

    tra dizendo seu nome e mais uma informando sua idade.

    2. Crie um programa que contenha duas variveis de cada um dos tipos pri-mitivos do Java. Coloque valores diferentes em cada uma delas e depois

    as imprima.

    3. Altere trs vezes o valor de uma das variveis do programa anterior. Im-prima a varivel a cada nova atribuio.

    4. Crie trs variveis do tipo int que contenham os valores 12, 13 e 14. Converta cada uma para um float e imprima o valor convertido. Qual o resultado impresso na tela?

    Tcnicas de Programaoe-Tec Brasil 42

  • 5. Agora, crie trs variveis do tipo float que contenham os valores 12.3, 12.5 e 12.8. Converta cada uma para int e imprima o valor convertido. Qual o resultado impresso na tela?

    6. Tente imprimir a soma de uma varivel inteira com uma do tipo float. O que acontece?

    7. Crie variveis que contenham o primeiro termo e a razo de uma Pro-gresso Aritmtica, alm de um inteiro n qualquer (que indique o nme-ro de termos dessa P.A.). Utilizando os valores criados, calcule o n-simo

    termo da progresso e a soma de seus n primeiros elementos.

    8. Agora, crie variveis que contenham o primeiro termo e a razo de uma Progresso Geomtrica, e um inteiro n qualquer (que indique o nmero de termos dessa P.G.). Calcule o n-simo termo da progresso e a soma

    de seus n primeiros elementos.

    9. Crie valores para a largura, o comprimento e a altura de uma embalagem e calcule seu volume.

    10. Crie uma varivel inteira que contenha um nmero de segundos e impri-ma o nmero equivalente de horas, minutos e segundos.

    11. Crie variveis para a base e a altura de um retngulo e calcule sua rea, permetro e diagonal.

    12. Calcule a rea e o comprimento de uma circunferncia de raio r = 12.

    Crie as variveis reais a, b e c. Calcule as razes da equao ax2 + bx + c.

    e-Tec BrasilAula 2 Aspectos fundamentais sobre Java 43

  • e-Tec Brasil

    Aula 3 Estruturas condicionais e de controle

    Objetivos

    Utilizar corretamente as estruturas condicionais.

    Verificar as diferentes estruturas de repetio.

    Verificar aplicaes prticas.

    3.1 Comandos condicionaisComandos condicionais so aqueles que alteram o funcionamento do pro-

    grama de acordo com uma determinada condio.

    Eles podem inserir interatividade entre o programa e o usurio. Existem co-

    mandos condicionais para tomada de decises (IF-ELSE e SWITCH-CASE) e

    para criao de laos ou repeties (FOR, WHILE, DO-WHILE).

    3.1.1 If-elseA clusula IF (que em portugus significa SE) executa um bloco de instrues

    caso uma determinada condio seja verdadeira. A clusula ELSE (que em

    portugus significa SENO) executa um bloco de instrues caso a condio

    seja falsa. A sintaxe do IF-ELSE no Java a seguinte:

    if ( ) {

    ;

    }

    else {

    ;

    }

    No necessrio que todo IF seja acompanhado de um ELSE, mas todo

    ELSE s pode existir aps um IF. Uma expresso booleana qualquer ex-

    presso que retorne true ou false e pode ser criada com os operadores de comparao e/ou lgicos.

    e-Tec BrasilAula 3 Estruturas condicionais e de controle 45

  • O trecho de cdigo a seguir, por exemplo, no imprime nada na tela, pois

    37 no maior que 40:

    int x = 37;

    if ( x > 40 ) {

    System.out.println(x);

    }

    O trecho de cdigo a seguir verifica se uma pessoa maior de idade:

    int x = 15;

    if ( x < 18 ) {

    System.out.println(Entrada permitida.);

    }

    else {

    System.out.println(Entrada proibida.);

    }

    Podemos tambm concatenar expresses booleanas com os operadores lgi-

    cos E e OU. O primeiro representado por &&, e o segundo por | |.

    No exemplo a seguir, o programa verifica se uma pessoa precisa pagar pas-

    sagem de acordo com sua idade (nesse caso, no pagam passagens pessoas

    com at 2 anos ou a partir de 60 anos):

    if ( x > 2 && x < 60 ) {

    System.out.println(Usurio deve pagar passagem.);

    }

    else {

    System.out.println(Passagem gratuita.);

    }

    Apesar de diferente, o trecho de cdigo a seguir faz efetivamente o mesmo

    que o anterior:

    if ( x = 60 ) {

    System.out.println(Passagem gratuita.);

    }

    else {

    System.out.println(Usurio deve pagar passagem.);

    }

    Como sugesto de link, utilize o endereo: http://www.youtube.

    com/watch?v=dijtgZiGtnA

    Tcnicas de Programaoe-Tec Brasil 46

  • Criar um programa em Java para ler cinco valores inteiros e mostrar a impres-

    so desses valores em ordem crescente.

    3.1.2 Switch-caseA estrutura SWITCH-CASE equivale a um conjunto de clusulas IF encadea-

    das, deixando o cdigo mais legvel e eficiente no caso de grandes desvios

    condicionais. Exemplo:

    switch (x) {

    case 0: System.out.println(zero); break;

    case 1: System.out.println(um); break;

    case 2: System.out.println(dois); break;

    case 3: System.out.println(tres); break;

    case 4: System.out.println(quatro); break;

    case 5: System.out.println(cinco); break;

    case 6: System.out.println(seis); break;

    case 7: System.out.println(sete); break;

    case 8: System.out.println(oito); break;

    case 9: System.out.println(nove); break;

    default : System.out.println(Nmero desconhecido);

    }

    3.2 Excees em JavaO Java oferece duas importantes estruturas para o controle de erros muito

    semelhantes s estruturas existentes na linguagem C++: try-catch e try-finally.

    Ambas tm o propsito de evitar que o programador tenha que realizar testes

    de verificao e avaliao antes da realizao de certas operaes, desviando,

    automaticamente, o fluxo de execuo para rotinas de tratamento de erro.

    Utilizando essas diretivas (detalhadas nas prximas sees) delimita-se um tre-

    cho de cdigo que ser monitorado, automaticamente, pelo sistema.

    3.3 Uso da estrutura try catchQuando ocorre um ou mais tipos de erros dentro de um trecho de cdigo de-

    limitado, o TRY-CATCH desvia, automaticamente, a execuo para uma rotina

    designada para o tratamento especfico desse erro. A sintaxe a seguinte:

    e-Tec BrasilAula 3 Estruturas condicionais e de controle 47

  • try {

    // cdigo normal

    } catch ( ) {

    // cdigo de tratamento do primeiro tipo de erro

    } catch ( ) {

    // cdigo de tratamento do segundo tipo de erro

    } catch ( ) {

    // cdigo de tratamento do terceiro tipo de erro

    }

    Por exemplo, podemos criar um programa que precisa receber um nmero

    inteiro da linha de comando. Como os argumentos so passados em um

    vetor de strings, precisamos transformar a string que contm o nmero para um inteiro. Se a converso gerar um erro, significa que o argumento no

    um nmero inteiro vlido. A exceo usada, nesse caso, o java.lang.

    NumberFormatException.

    Outro erro de que podemos tratar o caso de no ser fornecido o argumento des-

    se mesmo programa, utilizando a exceo ArrayIndexOutOfBoundsException.

    Nesse caso, ocorrer um erro ao tentarmos acessar o ndice 0 do vetor (que est

    vazio). O cdigo a seguir mostra como fazemos esses dois tratamentos com o

    TRY-CATCH:

    int j = 10;

    try {

    while (j > Integer.parseInt(args[0])){

    System.out.println(+j);

    j--;

    }

    }

    catch (ArrayIndexOutOfBoundsException e){

    System.out.println(No foi fornecido um argumento.);

    }

    catch (java.lang.NumberFormatException e)

    {

    System.out.println(Argumento no um inteiro vlido.);

    } Podem existir inmeros blocos catch no tratamento de erros (cada um para um tipo de exceo).

    Tcnicas de Programaoe-Tec Brasil 48

  • 3.4 Uso da estrutura try-finallyCom o TRY-FINALLY, podemos assegurar que uma rotina de finalizao seja

    garantidamente executada mesmo que ocorra um erro (isto , o trecho de

    cdigo contido na clusula FINALLY executado sempre que o programa

    passa pela clusula TRY). A sintaxe do TRY-FINALLY a seguinte:

    try {

    ;

    } finally {

    ;

    }

    Isto particularmente interessante quando certos recursos do sistema ou es-

    truturas de dados devem ser liberados, independentemente de sua utilizao.

    Um mesmo try pode ser usado com as diretivas catch e finally.

    A seguir, mostramos um exemplo de cdigo utilizando TRY, CATCH e FINALLY.

    public class TratamentoDeErro{

    public static void main(String[] args ){

    int[] array = {0, 1, 2, 3, 4, 5}; // array de 6 posies

    try{

    for(int i=0; i

  • 3.5 WhileUtilizamos um WHILE para criarmos um lao (loop), ou seja, repetir um tre-cho de cdigo algumas vezes enquanto uma determinada condio for ver-

    dadeira. O exemplo a seguir imprime os cinco primeiros mltiplos de 9:

    int x = 1;

    while (x

  • System.out.println(nome_do_array[i]);

    }

    Veja o Exemplo0307 mostrado nas Figuras 3.1 e 3.2 a seguir:

    Figura 3.1: Exemplo0307Fonte: Elaborada pelo autor

    Figura 3.2: Execuo do programa Exemplo0307Fonte: Elaborada pelo autor

    Criar um programa em Java para mostrar os valores do fatorial dos nmeros

    inteiros de 1 at 100.

    ResumoNesta aula falamos sobre os conhecimentos necessrios para a utilizao cor-

    reta das estruturas condicionais. Tambm abordamos as diferentes estruturas

    de repetio em Java. Citamos tambm como funcionam as excees em Java.

    Atividades de aprendizagem1. Imprima o fatorial dos nmeros de 1 a 10. Crie um for que comece im-

    primindo o fatorial de 1, e a cada passo utilize o ltimo resultado para o

    clculo do fatorial seguinte.

    2. Imprima os 30 primeiros elementos da srie de Fibonacci. A srie a se-guinte: 1, 1, 2, 3, 5, 8, 13, 21 etc. Para calcul-la, o primeiro e segundo

    elementos valem 1, da por diante, cada elemento vale a soma dos dois

    elementos anteriores (ex.: 8 = 5 + 3).

    3. Imprima a soma de todos os nmeros de 1 a 1.000.

    4. Imprima todos os mltiplos de 3, entre 1 e 100.

    5. Calcule a soma dos 70 primeiros elementos de uma Progresso Aritmti-ca na qual o primeiro termo vale 7 e a razo vale 13.

    Como sugesto de link, utilize o endereo: http://www.youtube.com/watch?v=8krfObWwZ8I&feature=related

    e-Tec BrasilAula 3 Estruturas condicionais e de controle 51

  • 6. Calcule a soma dos 10 primeiros elementos de uma Progresso Geom-trica na qual o primeiro termo vale 3 e a razo vale 2.

    7. Crie um nmero inteiro n e imprima um quadrado feito por n asteriscos de cada lado.

    8. Imprima o fatorial de um nmero inteiro qualquer.

    9. Crie um nmero inteiro qualquer e calcule a soma dos algarismos desse nmero.

    10. Crie um nmero inteiro e verifique se ele primo.

    11. . Crie um nmero inteiro e imprima todos os seus divisores.

    12. Crie uma varivel com um caractere contendo uma operao (+, -, * ou /) e outras duas com nmeros inteiros. Execute a operao indicada

    pelo caractere com as duas variveis inteiras.

    13. Crie uma varivel com o nmero de um ms e imprima o nome do ms.

    14. Escreva um programa que verifique se uma nota pssima (nota=1), ruim (2), regular (3), boa (4), tima (5) ou nenhuma delas (nota invlida).

    15. Crie trs variveis inteiras e um trecho de cdigo que descubra a maior entre elas. Imprima as trs variveis em ordem crescente. Verifique se as

    mesmas trs variveis podem ser lados de um tringulo (ou seja, nenhu-

    ma pode ser maior que a soma das outras duas).

    16. Crie uma varivel contendo a idade de uma pessoa e verifique sua classe eleitoral: (at 16 anos no pode votar); (entre 16 e 18 anos ou mais que

    65 facultativo); (entre 18 e 65 anos obrigatrio).

    17. Crie variveis contendo as notas de trs provas feitas por um aluno. Cal-cule a mdia parcial do aluno (mdia aritmtica simples) e verifique se

    ele passou direto. Se no, calcule sua mdia final (peso 4 para a mdia

    parcial e peso 6 para uma outra varivel contendo a nota de sua prova

    final) e verifique se ele ficou reprovado.

    Tcnicas de Programaoe-Tec Brasil 52

  • e-Tec Brasil

    Aula 4 Funes matemticas e de string

    Objetivos

    Demonstrar as principais funes matemticas em Java.

    Demonstrar os principais mtodos para manipulao de strings em Java.

    Mostrar as tcnicas de localizao de caracteres em strings.

    4.1 Funes matemticasA linguagem Java possui uma classe com diversos mtodos especializados em

    realizar clculos matemticos. Para realizar esses clculos, so utilizados os

    mtodos que devem apresentar a seguinte sintaxe: Math.

    (). No necessrio importar a classe

    Math em um programa para poder utilizar seus recursos, pois ela j faz parte

    do pacote java.lang, importado automaticamente pelo compilador do Java.

    A classe Math define duas constantes matemticas, sendo Math.PI o va-

    lor de pi (p= 3,14159265358979323846) e Math.E que se refere ao valor

    da base e para logaritmos naturais (e=2,7182818284590452354).

    A seguir, so apresentados os mtodos mais comuns da classe Math.

    4.1.1 Mtodo ceilEste mtodo tem como funo realizar o arredondamento de um nmero

    do tipo double para seu prximo inteiro. Sua sintaxe a seguinte: Math.ceil ().

    No Exemplo0401 da Figura 4.1 o mtodo ceil da classe math chamado para realizar o arredondamento do nmero tipo double entre parnteses, representando nesse caso por uma varivel (linhas 6 a 8). As variveis entre

    parnteses compem o argumento (do tipo double) do mtodo ceil. Este mtodo retorna um resultado arredondado, mantendo o tipo do dado, isto

    , a varivel retornada tambm ser do tipo double, porm mostrando ape-

    e-Tec BrasilAula 4 Funes matemticas e de string 53

  • nas a parte inteira do nmero verifi cado. O tipo double o nico que pode ser utilizado, uma vez que o mtodo ceil no aceita o tipo fl oat. A Figura 4.2 apresenta a tela de resultados do Exemplo0401.

    Figura 4.1: Exemplo0401Fonte: Elaborada pelo autor

    Figura 4.2: Execuo do programa Exemplo0401Fonte: Elaborada pelo autor

    Todos os exemplos apresentados utilizam o prompt (ou console) para a sada de dados.

    4 .1.2. Mtodo oorAssim como ceil, o mtodo oor tambm utilizado para arredondar um determinado nmero, mas para o seu inteiro anterior. Sua sintaxe idntica

    do mtodo ceil: Math.fl oor().

    As Figuras 4.3 e 4.4 mostram o Exemplo0402 para ilustrar o mtodo oor.

    Figura 4.3: Exemplo0402Fonte: Elaborada pelo autor

    Tcnicas de Programaoe-Tec Brasil 54

  • Figura 4.4: Execuo do programa Exemplo0402Fonte: Elaborada pelo autor

    4.1.3 Mtodo maxUtilizado para verificar o maior valor entre dois nmeros, que podem

    ser do tipo double, float, int ou long. A sua sintaxe a seguinte: Math.max(,).

    Observe que o clculo do maior nmero pode ocorrer entre dois nmeros do

    mesmo tipo de dados ou no.

    Pode-se obter o maior entre dois nmeros do tipo double, entre dois nme-ros do tipo int ou entre um do tipo double e outro do tipo int. As Figuras 4.5 e 4.6 mostram o Exemplo0403.

    Figura 4.5: Exemplo0403Fonte: Elaborada pelo autor

    Figura 4.6: Execuo do programa exemplo0403Fonte: Elaborada pelo autor

    4.1.4 Mtodo minO mtodo min fornece o resultado contrrio do mtodo max, sendo ento utilizado para obter o valor mnimo entre dois nmeros. Do mesmo modo

    que o mtodo max, esses nmeros tambm podem ser do tipo double, flo-at, int ou long. A sua sintaxe a mesma do mtodo max, mudando apenas para Math.min mostrada a seguir:

    e-Tec BrasilAula 4 Funes matemticas e de string 55

  • Math.min(,)

    No Exemplo0404 utiliza-se dos mesmos valores do exemplo anterior (Exem-

    plo0403), porm troca o mtodo max() pelo mtodo min().

    Figura 4.7: Exemplo0404Fonte: Elaborada pelo autor

    Figura 4.8: Execuo do programa Exemplo0404Fonte: Elaborada pelo autor

    4.1.5 Mtodo sqrtQuando h necessidade de calcular a raiz quadrada de um determinado

    nmero, utiliza-se o mtodo sqrt.

    O nmero do qual se deseja extrair a raiz quadrada deve ser do tipo double e o resultado obtido tambm ser um nmero do tipodouble.

    Veja sua sintaxe:

    Math.sqrt()

    O Exemplo0405 mostra a utilizao do mtodo sqrt conforme Figuras 4.9 e 4.10 a seguir.

    Figura 4.9: Exemplo0405Fonte: Elaborada pelo autor

    Tcnicas de Programaoe-Tec Brasil 56

  • Figura 4.10: Execuo do programa Exemplo0405Elaborada pelo autor

    4.1.6 Mtodo powAssim como possvel extrair a raiz quadrada de um nmero, tambm

    possvel fazer a operao inversa, ou seja, elevar um determinado nmero

    ao quadrado ou a qualquer outro valor de potncia.

    A potenciao de um nmero pode ser calculada pelo mtodo pow.

    Os nmeros a serem usados no clculo, isto , os valores da base e da potn-

    cia, devem ser do tipo double. Sua sintaxe a seguinte: Math.pow(,).

    O Exemplo0406 demonstra o uso do mtodo pow conforme mostrado nas Figuras 4.11 e 4.12 a seguir.

    Figura 4.11: Exemplo0406Fonte: Elaborada pelo autor

    Figura 4.12: Execuo do programa Exemplo0406Fonte: Elaborada pelo autor

    4.1.7 Mtodo random utilizado para gerar valores de forma aleatria. Toda vez que o mtodo random chamado, ser sorteado um valor do tipo double entre 0 e 1 (o valor 1 nunca sorteado). Nem sempre essa faixa de valores suficiente numa aplicao real.

    Por exemplo, para simular o sorteio de nmeros entre 0 e 99 para um jogo de loteria qualquer, torna-se necessrio o sorteio de nmeros inteiros aleatrios no intervalo de 0 a 99.

    e-Tec BrasilAula 4 Funes matemticas e de string 57

  • Para que esses nmeros possam ser sorteados, preciso utilizar o operador

    de multiplicao (*) em conjunto com o mtodo random. Com isso torna-se possvel definir o intervalo em que o nmero ser sorteado. O conversor (int) tambm pode ser usado para truncar a parte do ponto flutuante (a parte de-

    pois do ponto decimal) para que um nmero inteiro seja gerado, da seguinte

    forma: (int) (math.random() * 100).

    Com isso seriam gerados nmeros inteiros entre 0 e 99, atendendo plena-

    mente necessidade exposta.

    O Exemplo0407 demonstra o uso do mtodo random para simular a ge-rao de cinco cartes de loteria com seis nmeros cada (Figura 4.13).

    Figura 4.13: Exemplo0407Fonte: Elaborada pelo autor

    Figura 4.14: Execuo do programa Exemplo0407Fonte: Elaborada pelo autor

    No Exemplo0407 o primeiro loop for (linha 5) o responsvel pela contagem de um a cinco (os cinco cartes). O segundo loop for (linha 7) o responsvel pela contagem de um a seis (os seis nmeros de cada carto). Os nmeros so mos-

    trados um ao lado do outro e a cada carto pulada uma linha em branco (linha

    12). A Figura 4.14 mostra o resultado da execuo do programa Exemplo0407.

    Tcnicas de Programaoe-Tec Brasil 58

  • 4.1.8 Formatao com a classe DecimalFormatOs clculos matemticos, em especial os que envolvem multiplicao e divi-

    so, podem gerar resultados com muitas casas decimais. Isso nem sempre

    necessrio e esteticamente correto, pois apresentar um resultado com mui-

    tas casas decimais no muito agradvel e legvel maioria dos usurios.

    Por exemplo: considere duas variveis do tipo double x=1 e y=6. Ao realizar a diviso de x por y, aparece na tela o resultado 0,166666666666.

    Esse resultado no o mais adequado para se apresentar na tela. Seria mais

    conveniente mostrar o resultado formatado com duas ou trs casas decimais.

    Para realizar a formatao, necessrio definir um modelo conhecido pelo

    nome de pattern.

    Considere pattern como o estilo de formatao que ser apresentado sobre um valor numrico.

    Em outras palavras, voc ter de informar ao compilador qual estilo de for-

    matao deve ser usado para apresentar um nmero.

    Para definir o pattern, so usados caracteres especiais. O Quadro 4.1 apre-senta os caracteres mais usados.

    Quadro 4.1: Caracteres mais utilizados na classe DecimalFormat

    Caractere Significado

    0Imprime o dgito normalmente, ou caso ele no exista, coloca 0 em seu lugar.Exemplo: sejam as variveis int x=4, y=32 e z=154, ao usar o pattern000, o resultado impresso na tela seria x - 004,y - 032 e z - 154.

    #Imprime o dgito normalmente, desprezando os zeros esquerda do nmero.Exemplo: sejam as variveis double x=0.4 e y= 01.34, ao usar o pattern ##.##, o resultado impresso na tela seria x - . 4,y - 1.34.

    . Separador decimal ou separador decimal monetrio (depende do sistema usado).

    -Sinal de nmero negativo.Para realizar a formatao de nmeros, vamos usar a classe DecimalFormat.

    Para realizar a formatao de nmeros, vamos usar a classe DecimalFormat conforme ilustrado no Exemplo0408 nas Figuras 4.15 e 4.16 a seguir.

    e-Tec BrasilAula 4 Funes matemticas e de string 59

  • Figura 4.15: Exemplo0408Fonte: Elaborada pelo autor

    Figura 4.16: Execuo do programa Exemplo0408Fonte: Elaborada pelo autor

    Funcionalidades mais importantes no Exemplo0408:

    Linha 1: importa a classe DecimalFormat do pacote java.text, uma vez que ela no pertence ao conjunto de classes default do pacote java.lang.

    Linha 6: declara um objeto (df) de classe DecimalFormat que ser usado para realizar a formatao dos nmeros pelo mtodo format (df.format). Essa linha poderia conter a definio do pattern no mo-mento da inicializao do objeto df. Uma definio vlida pode ser:

    DecimalFformat df = decimalformat (000). possvel observar que a definio do pattern pode ser realizada dentro dos parnteses.

    Linha 8: contm a definio do pattern pelo mtodo applypattern (df.appypattern(000). Essa instruo define que todos os nmeros

    impressos a partir do objeto df sero formatados com trs dgitos,

    mesmo que eles possuam menos que isso, conforme exemplificado

    no Quadro 4.1. As linhas 12,16, 20, 24 e 28 redefinem o pattern,

    Tcnicas de Programaoe-Tec Brasil 60

  • aplicando novas formataes ao objeto df, isto , aos nmeros que

    sero impressos pelo mtodo format.

    Linha 29: apresenta uma maneira de formatar um nmero a partir de um formato string. Observe que a varivel valorEmReais armazena um contedo do tipo string, que no pode ser manipulado direta-mente pela classe DecimalFormat. Para que isso seja possvel, o va-lor string convertido no tipo double pelo mtodo parseDouble da classe double (Double.parseDouble (valorEmReais).

    O resultado da execuo do programa Exemplo0408 aparece na Figura 4.16

    4.2 Funes com strings Uma string um tipo que corresponde unio de um conjunto de caracte-res.

    Em Java, as strings so instncias da classe String, isto , geram objetos que possuem propriedades e mtodos, diferentemente dos tipos primitivos com

    int, float, double, etc.

    Essas strings podem ser manipuladas de vrias formas. Por exemplo, pos-svel verificar seu comprimento, retirar um pedao dela, acessar ou mudar

    caracteres individuais. As strings constituem uma cadeia de caracteres entre aspas. Exemplo: Frase = linguagem Java da mesma forma que as fun-

    es matemticas, existem diversos mtodos para manipulao de strings, os quais acompanham a seguinte sintaxe:

    .( argumentos>)

    A seguir, so apresentados os mtodos mais comuns (e mais usados) da

    classe String.

    4.2.1 Mtodo lengthO mtodo length muito utilizado para retornar o tamanho de uma deter-minada string, incluindo tambm os espaos em branco que esto presen-tes. Esse mtodo retorna sempre um valor do tipo int.

    Veja sua sintaxe: < string>.length()

    O Exemplo0410 mostra o uso do mtodo length conforme Figuras 4.17 e 4.18 a seguir.

    Na prtica, o mtodo length muito utilizado quando necessrio ler uma varivel string do comeo at o final, tanto para a busca de caracteres ou palavras quanto para a criao de banners, algo extremamente usado na internet.

    e-Tec BrasilAula 4 Funes matemticas e de string 61

  • Figura 4.17: Exemplo0410Fonte: Elaborada pelo autor

    Figura 4.18: Execuo do programa Exemplo0410Fonte: Elaborada pelo autor

    No Exemplo0410, a linha 5 contm a declarao da string frase. Cabe uma ob-servao: conforme citado anteriormente, na realidade frase no uma varivel

    e sim um objeto, pois uma varivel no pode conter mtodos atrelados a ela;

    somente os objetos que possuem mtodos para manipulao de suas informa-

    es. A linha 7 contm a utilizao de length por meio de frase.length(), isto , retorna o nmero de caracteres armazenado em frase ( no caso 15).

    Em vez de usar frase.length() poderia ser utilizada a forma literal do seguin-

    te modo: tamanho=Aprendendo Java . length(). O resultado seria o mesmo.

    4.2.2 Mtodo charAtUsando para retornar um caractere de determinada string de acordo com um ndice especificado entre parnteses. Esse ndice refere-se posio do

    caractere na string, sendo 0 (zero) o ndice do primeiro caractere, 1 (um) o do segundo e assim por diante.

    O mtodo charAt til quando for necessrio verificar a existncia de um caractere na string.

    Por exemplo: suponha que uma determinada string s possa conter nme-ros a funo charAt pode ser usada para verificar a existncia de dgitos numricos nessa string.

    Tcnicas de Programaoe-Tec Brasil 62

  • A sintaxe do mtodo charAt a seguinte: < string>.charAt ()

    O Exemplo0411 mostra o uso do mtodo charAt conforme as Figuras 4.19 e 4.20 a seguir.

    Figura 4.19: Exemplo0411Fonte: Elaborada pelo autor

    Figura 4.20: Execuo do programa Exemplo0411Fonte: Elaborada pelo autor

    Veja na Figura 4.20, os resultados desse exemplo e repare que o quinto

    caractere apresentado o d e no n, pois o ndice comea a partir do

    zero. As linhas 9 a 12 so responsveis por apresentar o trecho equivalente

    aos ndices de nmero 11 a 14, cujos caracteres correspondem palavra

    Java armazenada na varivel frase.

    4.2.3 Mtodos toUpperCase e toLowerCaseOs mtodos toUpperCase e toLowerCase so utilizados para transformar todas as letras de uma determinada string em maisculas ou minsculas. O mtodo toUpperCase transforma todos os caracteres de uma string em maisculos. O mtodo toLowerCase transforma todos os caracteres de uma string em minsculos. Sua sintaxe a seguinte: < string>.toUpperCase() ou .toLowerCase().

    O Exemplo0412 demonstra o uso dos mtodos toUpperCase e toLower-Case e dispensa mais detalhes, dada a simplicidade dessas duas funes. A

    e-Tec BrasilAula 4 Funes matemticas e de string 63

  • nica observao se refere ao fato de que esses mtodos no alteram o valor

    original da string. Mesmo aplicando os mtodos das linhas 6 e 7, o contedo das variveis palavra1 e palavra2 permanece o mesmo, isto , a transfor-mao ocorre apenas com fins de impresso em tela.

    Se for necessrio alterar o contedo de uma varivel string, substituindo seu valor original pelo transformado, a prpria varivel deve receber o valor de

    sua transformao, por exemplo: palavra1=palavra.toLowerCase().

    Figura 4.21: Exemplo0412Elaborada pelo autor

    Figura 4.22: Execuo do programa Exemplo0412Fonte: Elaborada pelo autor

    4.2.4 Mtodo substringEle retorna a cpia de caracteres de uma string a partir de dois ndices intei-ros especificados, funcionando basicamente da mesma forma que o mtodo

    charAt, dentro de um lopping, conforme indica a seo 4.2.2. A sintaxe de substring a seguinte: < string>.substring(< ndice inicial>,[]).

    O primeiro argumento especifica o ndice a partir do qual se inicia a cpia

    dos caracteres (da mesma forma que charAt, o ndice inicia-se em 0). O segundo argumento opcional e especifica o ndice final, em que termina

    a cpia dos caracteres; entretanto, o ndice final deve especificar um ndice

    alm do ltimo caractere.

    Para melhor entendimento do mtodo substring, considere a varivel frase com o seguinte contedo:

    Tcnicas de Programaoe-Tec Brasil 64

  • Frase L I N G U A G E M J A V A

    ndice 1 2 3 4 5 6 7 8 9 10 11 12 13 14

    Cada caractere de uma varivel string indexado a partir do 0 (zero). Vamos apresentar alguns exemplos:

    1. String x= frase. substring (10) - x Recebe o contedo JAVA , pois ao passar apenas o primeiro argumento para o mtodo substring, ele re-torna da posio informada (no caso 10, a posio da letra J) at o ltimo

    caractere da string.

    2. String x= frase. substring (3) - x Recebe o contedo GUAGEM JAVA isto , do caractere de ndice 3 at o ltimo caractere da string frase.

    3. String x= frase. substring (3,9) - x Recebe o contedo GUAGEM , isto , do caractere de ndice 3 at o caractere de ndice 8 (9-1).

    4. String x= frase. substring (0,1) - x Recebe o contedo L , isto , do caractere de ndice 0 at o caractere de ndice 0 (1-1).

    5. String x= frase. substring (10,14) - x Recebe o contedo JAVA , isto , do caractere de ndice 10 at o caractere de ndice 13 (14-1). Observe

    que o resultado deste exemplo igual ao do exemplo 1.

    Se os ndices especificados estiverem fora dos limites da string, gerado o erro stringlndexOutOfBoundsException. No exemplo, se voc usar frase.

    substring(10,20) ocorre o erro citado, uma vez que no existe ndice 20.

    O Exemplo0413 apresenta um cdigo que usa o mtodo substring para separar as palavras de uma frase pela manipulao de seus ndices, ilustrado

    nas Figuras 4.23 e 4.24 a seguir.

    e-Tec BrasilAula 4 Funes matemticas e de string 65

  • Figura 4.23: Exemplo0413Fonte: Elaborada pelo autor

    Figura 4.24: Execuo do programa Exemplo0413Fonte: Elaborada pelo autor

    4.2.5 Mtodo trimSeu objetivo remover todos os espaos em branco que aparecem no incio

    e no final de uma determinada string. So removidos apenas os espaos do incio e do fim da string.

    No so removidos os espaos entre as palavras.

    Sua sintaxe a seguinte:

    .trim()

    O Exemplo0414 mostra a utilizao do mtodo trim conforme as Figuras 4.25 e 4.26 a seguir.

    Figura 4.25: Exemplo0414Fonte: Elaborada pelo autor

    Tcnicas de Programaoe-Tec Brasil 66

  • Figura 4.26: Execuo do programa Exemplo0414Fonte: Elaborada pelo autor

    A varivel frase armazena uma string com espaos em branco no incio e no final. Quando no utilizado o mtodo trim, os espaos permanecem na string: em contrapartida, ao usar trim, os espaos desaparecem.

    O mtodo frase. trim () no retirou, realmente, os espaos em branco da varivel, ou seja, apenas foi mostrado na tela um trim da varivel, que con-sequentemente a exibe sem os espaos em branco, mas a varivel em si

    ainda continua com os espaos no seu incio e no seu final.

    Para que realmente os espaos sejam retirados, necessrio que o resul-

    tado de trim seja atribudo prpria varivel, com a seguinte instruo: frase=frase.trim(). Isso tornaria a varivel livre dos espaos em branco.

    4.2.6 Mtodo replace utilizado para substituio de caracteres, ou grupo de caracteres, em uma de-

    terminada string. Para seu funcionamento, necessrio informar o(s) caractere(s) que deseja substituir e por qual(is) caractere(s) ele(s) ser(o) substitudos(s).

    Caso no haja na string nenhuma ocorrncia do caractere a ser substitudo, a string original retornada, isto , no ocorre nenhuma alterao.

    No Exemplo0415, a linha 5 declara uma string (frase1) que recebe uma fra-se. A linha 6 armazena essa frase na varivel frase2, porm sem os espaos em branco, uma vez que o mtodo replace foi usado para substituir todos os espaos por vazios ( por ).

    As linhas 8 e 9 substituem um caractere por outro ( por _ e a por

    u) e a linha 10 substitui uma palavra por outra (na por NA). Da mes-

    ma forma que trim, o mtodo replace no altera o contedo da varivel. Para fazer com que uma varivel receba o resultado de uma troca de carac-

    teres, faa como apresentado na linha 6.

    Para melhor compreenso dos resultados observe o Exemplo0415 nas Figu-

    ras 4.27 e 4.28 a seguir.

    e-Tec BrasilAula 4 Funes matemticas e de string 67

  • Figura 4.27: Exemplo0415Fonte: Elaborada pelo autor

    Figura 4.28: Execuo do programa Exemplo0415Fonte: Elaborada pelo autor

    4.2.7 Mtodo valueOfO mtodo valueOf usado para converter diversos tipos de dados em strings. Esse mtodo aceita vrios tipos de argumento (nmeros ou cadeia de caracteres) e transforma-os em strings. Esta seo aborda apenas a con-verso de tipos numricos em strings. Uma das sintaxes possveis para o mtodo valueOf :

    string.valueOf()

    Para facilitar o entendimento, o Exemplo0416 demonstra a converso de

    vrios tipos numricos com o uso do mtodo valueOf conforme as Figuras 4.29 e 4.30 a seguir.

    Tcnicas de Programaoe-Tec Brasil 68

  • Figura 4.29: Exemplo0416Fonte: Elaborada pelo autor

    No Exemplo0416 todas as variveis numricas (a,b,c,d) declaradas nas linhas

    6 a 9 so convertidas e acumuladas em uma varivel string (x) nas linhas 10 a 13. Essa no a funcionalidade mais importantes do mtodo valueOf, uma vez que o mesmo resultado pode ser alcanado sem sua utilizao por

    meio da concatenao das variveis com o operador de concatenao (+),

    conforme demonstrado em seguida:

    string x = a _ + c + _ .d:

  • valor inteiro -1. De qualquer modo, o retorno de indexOf sempre ser um nmero inteiro (o valor do ndice, ou -1). A sintaxe geral para utilizao do

    mtodo indexOf :

    string.indexof()

    No Exemplo0417 (Figuras 4.31 e 4.32) verificamos que a linha 5 contm o

    texto que ser usado nas pesquisas. A linha 6 declara um caractere a que

    ser buscado no texto. As formas de busca so as seguintes:

    Figura 4.31: Exemplo0417Fonte: Elaborada pelo autor

    linha 7: busca o caractere a no texto e retorna o ndice referente sua primeira ocorrncia. No caso, retorna o ndice 7.

    linha 8: busca o caractere a no texto a partir do ndice 10 e retorna o ndice referente sua primeira ocorrncia. No caso, retorna o ndice

    25. Na realidade, a primeira ocorrncia do caractere a seria na posi-

    o 7; entretanto, foi solicitado que a busca iniciasse na posio 10.

    linha 9: busca a substring Ensino no texto e retorna o ndice refe-rente sua primeira ocorrncia. No caso, retorna o ndice 15.

    linha 10: busca a substring Java no texto a partir da posio 15 e retorna o ndice referente e sua primeira ocorrncia. Como no e