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