Sie sind auf Seite 1von 116

Curso Tcnico em Informtica

Tcnicas de Programao
Antonio Luiz Santana
Tcnicas de Programao
Antonio Luiz Santana
2011
Colatina-ES
RIO GRANDE
DO SUL
INSTITUTO
FEDERAL
Presidncia da Repblica Federativa do Brasil
Ministrio da Educao
Secretaria de Educao a Distncia
Equipe de Elaborao
Instituto Federal do Esprito Santo IFES
Coordenao Institucional
Guilherme Augusto de Morais Pinto/IFES
Joo Henrique Caminhas Ferreira/IFES
Coordenao Curso
Allan Francisco Forzza Amaral/IFES
Professor-autor
Antonio Luiz Santana/IFES
Comisso de Acompanhamento e Validao
Universidade Federal de Santa Catarina UFSC
Coordenao Institucional
Araci Hack Catapan/UFSC
Coordenao do Projeto
Silvia Modesto Nassar/UFSC
Coordenao de Design Instrucional
Beatriz Helena Dal Molin/UNIOESTE e UFSC
Coordenao de Design Grco
Andr Rodrigues/UFSC
Design Instrucional
Gustavo Pereira Mateus/UFSC
Web Master
Rafaela Lunardi Comarella/UFSC
Web Design
Beatriz Wilges/UFSC
Mnica Nassar Machuca/UFSC
Diagramao
Andr Rodrigues da Silva/UFSC
Brbara Zardo/UFSC
Caroline Ferreira da Silva/UFSC
Juliana Tonietto/UFSC
Nathalia Takeuchi/UFSC
Reviso
Jlio Csar Ramos/UFSC
Projeto Grco
e-Tec/MEC
Instituto Federal do Esprito Santo
Este 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 Bibliograa
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 Brasil 33
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 Prossional 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, geogracamente 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 prossional
qualicada 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 prossional!
Ministrio da Educao
Janeiro de 2010
Nosso contato
etecbrasil@mec.gov.br
e-Tec Brasil 5
Indicao de cones
Os cones so elementos grcos 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 denio de um termo, palavra ou expresso
utilizada no texto.
Mdias integradas: sempre que se desejar que os estudantes
desenvolvam atividades empregando diferentes mdias: vdeos,
lmes, 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 Brasil 7
Sumrio
Palavra do professor-autor 9
Apresentao da disciplina 11
Projeto instrucional 13
Aula 1 Plataforma Java 15
1.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 31
2.1 Tipos de dados 31
2.2 Denio 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 45
3.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 53
4.1 Funes matemticas 53
Aula 5 Criando funes 73
5.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 83
6.1 Denio 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 91
7.1 Denio 91
7.2 Leitura e gravao de um arquivo texto 91
Aula 8 Estruturas de dados em Java: listas 99
8.1 Denio 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 107
9.1 Denio 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 Programao e-Tec Brasil 8
e-Tec Brasil 9
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 Brasil 11
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 especcos 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 innidade 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 nal desta disciplina voc estar
capacitado a utilizar esses ambientes de desenvolvimento em situaes co-
muns nas empresas, identicando 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 Brasil 13
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
MATERIAIS
CARGA
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.br
10
2. Aspectos funda-
mentais sobre Java
- Demonstrar a declarao de dados.
- Vericar 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.
- Vericar as diferentes estruturas de
repetio.
- Vericar aplicaes prticas.
Caderno e Ambiente Virtual de
Ensino-Aprendizagem.
www.cead.ifes.edu.br
10
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.br
10
Projeto instrucional
AULA
OBJETIVOS DE
APRENDIZAGEM
MATERIAIS
CARGA
HORRIA
(horas)
5. Criando funes
- Identicar 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.br
10
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.br
10
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.br
10
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.br
10
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.br
10
Tcnicas de Programao e-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 Introduo
A 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 armam 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 nanceiro 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 Java
Essa 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 especca
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 Brasil Aula 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 car 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 especcas. 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 Programao e-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 Java
A 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 Brasil Aula 1 Plataforma Java 17
d) Suporte comunicao: uma das vantagens de Java fornecer um
grande conjunto de classes com funcionalidades especcas, 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 arma, 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 Java
Para a criao de programas em Java, torna-se necessria a digitao por
meio de uma ferramenta especca 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 m de que seja vericada 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 Programao e-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
Java
Interpretador
Java
Figura 1.1: Sequncia de desenvolvimento de um programa em Java
Fonte: 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 ortogrco dos editores de texto atuais.
1.5 A plataforma Java
Plataforma 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 especca.
Bytecodes
So gerados pelo processo
de compilao, especcos 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
denio mais usada considera-o
extenso de servidores.
e-Tec Brasil Aula 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
Desktop
machines
High-end
consumer
devices
Smart-
cards
Low-end
consumer
devices
Optional
Packages
Optional
Packages
Java 2
Enterprise
Edition
(J2EE)
Java 2
Standard
Edition
(J2SE)
CDC
Foundation Prole
Personal Prole
CLDC
MIDP
Java Card
APIS
Java Virtual Machine KVM CardVM
1
2
3
4
5
Figura 1.2: Plataforma Java
Fonte: Furgeri (2008)
Enquanto cada plataforma possui sua prpria implementao da mquina virtu-
al Java, existe somente uma especicao 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 Programao e-Tec Brasil 20
1.6 Ambiente de desenvolvimento
Nesta 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 innidade 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 Sun
Uma das maiores diculdades 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 Brasil Aula 1 Plataforma Java 21
Figura 1.3: Site para baixar instalao do pacote da Sun
Fonte: 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 Windows
Os 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 nal do nome normalmente se referem ao update. Ao instalar o JDK,
so criadas diversas pastas, como as mostradas na Figura 1.4.
Tcnicas de Programao e-Tec Brasil 22
Figura 1.4: Localizao da pasta de instalao
Fonte: 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 conguraes 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 congurao para o
ambiente Windows.
No Windows 2000 e XP, devemos congurar as variveis pelo painel de con-
trole. Dena as variveis seguindo os procedimentos:
a) Acesse o painel de controle.
b) Abra o item sistema.
e-Tec Brasil Aula 1 Plataforma Java 23
Figura 1.5: Janela de congurao da varivel de ambiente
Fonte: Printscreen Windows 2000 e XP
3. Clique na guia avanado e em seguida, no boto variveis de ambiente.
Figura 1.6: Janela de congurao da varivel de ambiente
Fonte: Printscreen Windows 2000 e XP
4. Em variveis de usurio, clique no boto nova. As variveis de am-
biente podem tambm ser denidas em variveis do sistema em vez
de variveis de usurio, como sugerido. A diferena que, quando
denidas em variveis de usurios, elas funcionam somente para o seu
usurio, e em variveis de sistema funcionam para todos os usurios.
Tcnicas de Programao e-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, denindo 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 congurao da varivel de ambiente
Fonte: Printscreen Windows 2000 e XP
7. Verique 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 congurao, vericando principalmente as con-
guraes das variveis de ambiente. Se ao digitar javac aparecer uma
tela com instrues de help do Java, signica que a instalao e a con-
gurao foram realizadas com sucesso.
Faa a instalao da ltima atualizao do Java em seu computador e veri-
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 Brasil Aula 1 Plataforma Java 25
Figura 1.8: Janela de vericao da instalao do Java
Fonte: 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 conguraes 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 Programao e-Tec Brasil 26
Ateno especial deve ser dada quando a instalao for realizada no
Windows Vista. Se o rewall 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 congura-
o das variveis de ambiente, as quais tiveram de ser denidas 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 denido
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 Java
Inicialmente, 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 denida 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: Exemplo01
Fonte: Elaborada pelo autor
Como sugesto de link, utilize o
endereo: http://www.youtube.
com/watch?v=xGM9uBOvMgQ
&feature=related
e-Tec Brasil Aula 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 Programao e-Tec Brasil 28
Resumo
Nesta aula falamos sobre os conceitos iniciais de Java, como congurao 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 aprendizagem
1. 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 Brasil Aula 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.
Vericar os conversores de tipo em Java.
2.1 Tipos de dados
Assim como em outras linguagens, antes de utilizar variveis necessrio
saber denir 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 utuante: igual aos inteiros, tambm diferem nas preci-
ses e podem ser positivos ou negativos.
e-Tec Brasil Aula 2 Aspectos fundamentais sobre Java 31
Float: 4 bytes.
Double: 8 bytes.
Quadro 2.1: Os tipos primitivos em Java
Tipo de dados Denio Tipo Tamanho (bits) Exemplos
Literal (caractere)
Letras, nmeros e
smbolos
char 16 a, ?, *
Inteiro
Nmeros 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 utuante)
Nmeros com casas
decimais, positivos ou
negativos
oat 32
0.34
8.65
double 64
0.34
8.65
Lgico (Booleano)
Verdadeiro (1)
ou falso (0)
boolean 8
true
false
Fonte: Furgeri (2008)
2.2 Denio de variveis e constantes
Uma varivel ou constante um tipo de identicador cujo nome, que
selecionado pelo programador, associado a um valor que pertence a um
tipo de dado.
Todo identicador possui um nome, um tipo e contedo. Os identicadores
no podem utilizar palavras reservadas do Java.
A linguagem Java exige que os identicadores tenham um tipo de dado de-
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 nal, desde que antes de sua utilizao no programa.
Essa caracterstica do identicador 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.
Identicador
a localizao da memria
capaz de armazenar o valor de
um certo tipo, para o qual se
d um nome que descreve seu
signicado ou propsito.
Tcnicas de Programao e-Tec Brasil 32
Figura 2.1: Exemplo02
Fonte: Elaborada pelo autor
Como voc pde perceber no ltimo exemplo, um comentrio em Java pode
ser escrito com // (para comentar apenas at o nal da linha) ou com /* */
(para comentar tudo o que estiver entre o /* e o */).
Para identicar a documentao, utilizamos /** */ A sada do programa
Exemplo02 dever ser:
12
4
x
Caso uma varivel do tipo char, byte, short, int, long, oat 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 denir uma nova varivel com um tipo de dado di-
ferente, por conveno, utiliza-se uma nova linha. O mais comum entre os
programadores Java denir 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 Brasil Aula 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
nal da maioria das linhas de cdigo.
2.3 Declarao de constantes
Na 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 -
nal. Essas constantes so usadas para armazenar valores xos, geralmente,
denidos 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/s
2
).
Para a declarao de constantes em Java utiliza-se a palavra reservada nal
antes da denio do tipo de varivel:
nal double PI=3.14;
nal double GRAVIDADE=9.81;
Caso um segundo valor seja atribudo a uma varivel nal no decorrer da
classe, o compilador gera uma mensagem de erro. No obrigatrio iniciali-
zar o contedo de uma varivel nal 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 Programao e-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 nal, 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.
Verique o Exemplo21 (Figura 2.2) e sua execuo (Figura 2.3). Os coment-
rios no aparecem na execuo do programa.
Figura 2.2: Exemplo21
Fonte: Elaborada pelo autor
Figura 2.3: Execuo do programa Exemplo21
Fonte: Elaborada pelo autor
2.5 Operadores
A 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 aritmticos
Entre os operadores presentes no Quadro 2.2, talvez os decremento (--) e o
incremento (++) causem alguma dvida, principalmente para os programa-
e-Tec Brasil Aula 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 Exemplo0203
Fonte: Elaborada pelo autor
2.5.2 Operadores relacionais
Os 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 Programao e-Tec Brasil 36
Quadro 2.3: Operadores relacionais em Java
Signicado Operador Exemplo
Igual == x==20
Diferente (No igual) != y!=17
Menor que < x<2
Maior que > x>2
Menor ou igual <= y<=7
2.5.3 Operadores lgicos
So operadores que permitem avaliar o resultado lgico de diferentes opera-
es aritmticas em uma expresso. Os operadores lgicos usados em Java
so mostrados no Quadro 2.4 a seguir.
Quadro 2.4: Operadores lgicos em Java
Signicado Operador Exemplo
Operao lgica E (AND) && (x<5)&&(x>0)
Operao lgica OU (OR) || (y==5||y>10)
Negao ! !true==false
2.6 Passagem de parmetros
Foi apresentado no incio do material que o mtodo main recebe String
args[] como parmetro:
public static void main (String args[]) { }
Como o main o mtodo principal, seu parmetro tambm parmetro
para o programa todo. String args[] um vetor de strings formado por todos
os argumentos passados ao programa na linha de comando do sistema ope-
racional quando o programa invocado. Para utiliz-los, basta acessar cada
posio do vetor, como no Exemplo0204 mostrado na Figura 2.6.
e-Tec Brasil Aula 2 Aspectos fundamentais sobre Java 37
Figura 2.6: Exemplo0204
Fonte: 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 Exemplo0204
Fonte: 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;
oat y = x;
double z = y;
Tcnicas de Programao e-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:
oat a = 9;
oat 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 echas 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
oat
double
Figura 2.8: Converses possveis entre tipos primitivos em Java
Fonte: Elaborada pelo autor
e-Tec Brasil Aula 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: Exemplo0205
Fonte: Elaborada pelo autor
Figura 2.10: Execuo do programa Exemplo0205
Fonte: Elaborada pelo autor
2.8 Entrada de dados pelo teclado
No 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 Programao e-Tec Brasil 40
Como zemos 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 especicada 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 Brasil Aula 2 Aspectos fundamentais sobre Java 41
Figura 2.11: Classe DatainputStream
Fonte: Elaborada pelo autor
Resumo
Nesta 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 aprendizagem
1. 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 oat e imprima o valor convertido. Qual o
resultado impresso na tela?
Tcnicas de Programao e-Tec Brasil 42
5. Agora, crie trs variveis do tipo oat 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 oat. 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 ax
2
+ bx + c.
e-Tec Brasil Aula 2 Aspectos fundamentais sobre Java 43
e-Tec Brasil
Aula 3 Estruturas condicionais
e de controle
Objetivos
Utilizar corretamente as estruturas condicionais.
Vericar as diferentes estruturas de repetio.
Vericar aplicaes prticas.
3.1 Comandos condicionais
Comandos 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-else
A clusula IF (que em portugus signica SE) executa um bloco de instrues
caso uma determinada condio seja verdadeira. A clusula ELSE (que em
portugus signica SENO) executa um bloco de instrues caso a condio
seja falsa. A sintaxe do IF-ELSE no Java a seguinte:
if ( <condio booleana> ) {
<cdigo para condio verdadeira>;
}
else {
<cdigo para condio falsa>;
}
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 Brasil Aula 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 verica 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 verica 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 <= 2 || 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 Programao e-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-case
A estrutura SWITCH-CASE equivale a um conjunto de clusulas IF encadea-
das, deixando o cdigo mais legvel e eciente 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 Java
O Java oferece duas importantes estruturas para o controle de erros muito
semelhantes s estruturas existentes na linguagem C++: try-catch e try-nally.
Ambas tm o propsito de evitar que o programador tenha que realizar testes
de vericao e avaliao antes da realizao de certas operaes, desviando,
automaticamente, o uxo 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 catch
Quando 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 especco desse erro. A sintaxe a seguinte:
e-Tec Brasil Aula 3 Estruturas condicionais e de controle 47
try {
// cdigo normal
} catch ( <exceo 1> ) {
// cdigo de tratamento do primeiro tipo de erro
} catch ( <exceo 2> ) {
// cdigo de tratamento do segundo tipo de erro
} catch ( <exceo 3> ) {
// 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, signica 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 Programao e-Tec Brasil 48
3.4 Uso da estrutura try-nally
Com o TRY-FINALLY, podemos assegurar que uma rotina de nalizao 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 {
<cdigo normal>;
} nally {
<cdigo que sempre deve ser executado>;
}
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 nally.
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<10; i++ ){
array[i] += i;
System.out.println(array[i]);
}
System.out.println(Bloco executado com sucesso);
}
catch( ArrayIndexOutOfBoundsException e ){
System.out.println(Acessou um ndice inexistente);
}
catch( Exception e ) {
System.out.println(Outro tipo de exceo ocorreu);
}
nally{
System.out.println(Isto SEMPRE executa!);
}
}
}
e-Tec Brasil Aula 3 Estruturas condicionais e de controle 49
3.5 While
Utilizamos 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 <= 5) {
System.out.println(9*x);
x++;
}
O trecho de cdigo dentro do WHILE ser executado enquanto a condio
x <= 5 for verdadeira. Isso deixar de acontecer no momento em que x > 5.
3.6 For
O comando FOR tambm utilizado para criarmos loops. A ideia a mesma que
a do WHILE, mas existe um espao prprio para inicializar e modicar a varivel
de controle do lao, deixando-o mais legvel. A sintaxe do FOR a seguinte:
for ( <inicializao>; <condio>; <incremento>) {
<trecho de cdigo>;
}
O exemplo a seguir gera o mesmo resultado do WHILE acima:
for (int x = 1; x <= 5; x++) {
System.out.println(9*x);
}
O FOR e o WHILE podem ser usados para a mesma coisa. Porm, o cdigo do
FOR indica claramente que a varivel i serve, em especial, para controlar a quan-
tidade de laos executados. Use cada um quando achar mais conveniente.
O for tambm muito til para percorrermos um array. Para isso, basta
usarmos o atributo length, que retorna o tamanho do array.
Veja um exemplo:
for (int x = 0; x <= nome_do_array.length; x++) {
Tcnicas de Programao e-Tec Brasil 50
System.out.println(nome_do_array[i]);
}
Veja o Exemplo0307 mostrado nas Figuras 3.1 e 3.2 a seguir:
Figura 3.1: Exemplo0307
Fonte: Elaborada pelo autor
Figura 3.2: Execuo do programa Exemplo0307
Fonte: Elaborada pelo autor
Criar um programa em Java para mostrar os valores do fatorial dos nmeros
inteiros de 1 at 100.
Resumo
Nesta 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 aprendizagem
1. 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&f
eature=related
e-Tec Brasil Aula 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 verique 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 verique 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. Verique 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 verique 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 verique se
ele passou direto. Se no, calcule sua mdia nal (peso 4 para a mdia
parcial e peso 6 para uma outra varivel contendo a nota de sua prova
nal) e verique se ele cou reprovado.
Tcnicas de Programao e-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 matemticas
A 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.<nome do mtodo>
(<argumentos ou lista de argumentos>). 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 dene 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 ceil
Este mtodo tem como funo realizar o arredondamento de um nmero
do tipo double para seu prximo inteiro. Sua sintaxe a seguinte: Math.ceil
(<valor do tipo double>).
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 Brasil Aula 4 Funes matemticas e de string 53
nas a parte inteira do nmero vericado. O tipo double o nico que pode
ser utilizado, uma vez que o mtodo ceil no aceita o tipo oat. A Figura 4.2
apresenta a tela de resultados do Exemplo0401.
Figura 4.1: Exemplo0401
Fonte: Elaborada pelo autor
Figura 4.2: Execuo do programa Exemplo0401
Fonte: Elaborada pelo autor
Todos os exemplos apresentados utilizam o prompt (ou console) para a sada
de dados.
4 .1.2. Mtodo oor
Assim 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.oor(<valor do tipo double>).
As Figuras 4.3 e 4.4 mostram o Exemplo0402 para ilustrar o mtodo oor.
Figura 4.3: Exemplo0402
Fonte: Elaborada pelo autor
Tcnicas de Programao e-Tec Brasil 54
Figura 4.4: Execuo do programa Exemplo0402
Fonte: Elaborada pelo autor
4.1.3 Mtodo max
Utilizado para vericar o maior valor entre dois nmeros, que podem
ser do tipo double, oat, int ou long. A sua sintaxe a seguinte: Math.
max(<valor1>,<valor2>).
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: Exemplo0403
Fonte: Elaborada pelo autor
Figura 4.6: Execuo do programa exemplo0403
Fonte: Elaborada pelo autor
4.1.4 Mtodo min
O 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, o-
at, int ou long. A sua sintaxe a mesma do mtodo max, mudando apenas
para Math.min mostrada a seguir:
e-Tec Brasil Aula 4 Funes matemticas e de string 55
Math.min(<valor1>,<valor2>)
No Exemplo0404 utiliza-se dos mesmos valores do exemplo anterior (Exem-
plo0403), porm troca o mtodo max() pelo mtodo min().
Figura 4.7: Exemplo0404
Fonte: Elaborada pelo autor
Figura 4.8: Execuo do programa Exemplo0404
Fonte: Elaborada pelo autor
4.1.5 Mtodo sqrt
Quando 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(<valor do tipo Double>)
O Exemplo0405 mostra a utilizao do mtodo sqrt conforme Figuras 4.9
e 4.10 a seguir.
Figura 4.9: Exemplo0405
Fonte: Elaborada pelo autor
Tcnicas de Programao e-Tec Brasil 56
Figura 4.10: Execuo do programa Exemplo0405
Elaborada pelo autor
4.1.6 Mtodo pow
Assim 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(<valor da
base>,<valor da potncia>).
O Exemplo0406 demonstra o uso do mtodo pow conforme mostrado nas
Figuras 4.11 e 4.12 a seguir.
Figura 4.11: Exemplo0406
Fonte: Elaborada pelo autor
Figura 4.12: Execuo do programa Exemplo0406
Fonte: 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 suciente 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 Brasil Aula 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 denir o intervalo em que o nmero ser sorteado. O conversor (int)
tambm pode ser usado para truncar a parte do ponto utuante (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: Exemplo0407
Fonte: Elaborada pelo autor
Figura 4.14: Execuo do programa Exemplo0407
Fonte: 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 Programao e-Tec Brasil 58
4.1.8 Formatao com a classe DecimalFormat
Os 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 denir 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 denir 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 Signicado
0
Imprime 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 pattern
000, 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 Brasil Aula 4 Funes matemticas e de string 59
Figura 4.15: Exemplo0408
Fonte: Elaborada pelo autor
Figura 4.16: Execuo do programa Exemplo0408
Fonte: 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 denio do pattern no mo-
mento da inicializao do objeto df. Uma denio vlida pode ser:
DecimalFformat df = decimalformat (000). possvel observar
que a denio do pattern pode ser realizada dentro dos parnteses.
Linha 8: contm a denio do pattern pelo mtodo applypattern
(df.appypattern(000). Essa instruo dene que todos os nmeros
impressos a partir do objeto df sero formatados com trs dgitos,
mesmo que eles possuam menos que isso, conforme exemplicado
no Quadro 4.1. As linhas 12,16, 20, 24 e 28 redenem o pattern,
Tcnicas de Programao e-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, oat, double, etc.
Essas strings podem ser manipuladas de vrias formas. Por exemplo, pos-
svel vericar 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:
<Nome da string>.<nome-do-metodo>( argumentos>)
A seguir, so apresentados os mtodos mais comuns (e mais usados) da
classe String.
4.2.1 Mtodo length
O 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 nal,
tanto para a busca de caracteres
ou palavras quanto para a
criao de banners, algo
extremamente usado na internet.
e-Tec Brasil Aula 4 Funes matemticas e de string 61
Figura 4.17: Exemplo0410
Fonte: Elaborada pelo autor
Figura 4.18: Execuo do programa Exemplo0410
Fonte: 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 charAt
Usando para retornar um caractere de determinada string de acordo com
um ndice especicado 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 vericar 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 vericar a existncia de dgitos
numricos nessa string.
Tcnicas de Programao e-Tec Brasil 62
A sintaxe do mtodo charAt a seguinte: < string>.charAt (<ndice>)
O Exemplo0411 mostra o uso do mtodo charAt conforme as Figuras 4.19
e 4.20 a seguir.
Figura 4.19: Exemplo0411
Fonte: Elaborada pelo autor
Figura 4.20: Execuo do programa Exemplo0411
Fonte: 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 toLowerCase
Os 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 <String>.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 Brasil Aula 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 ns 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: Exemplo0412
Elaborada pelo autor
Figura 4.22: Execuo do programa Exemplo0412
Fonte: Elaborada pelo autor
4.2.4 Mtodo substring
Ele retorna a cpia de caracteres de uma string a partir de dois ndices intei-
ros especicados, 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>,[<indice nal>]).
O primeiro argumento especica 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 especica o ndice nal, em que termina
a cpia dos caracteres; entretanto, o ndice nal deve especicar um ndice
alm do ltimo caractere.
Para melhor entendimento do mtodo substring, considere a varivel frase
com o seguinte contedo:
Tcnicas de Programao e-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 especicados 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 Brasil Aula 4 Funes matemticas e de string 65

Figura 4.23: Exemplo0413
Fonte: Elaborada pelo autor
Figura 4.24: Execuo do programa Exemplo0413
Fonte: Elaborada pelo autor
4.2.5 Mtodo trim
Seu objetivo remover todos os espaos em branco que aparecem no incio
e no nal de uma determinada string. So removidos apenas os espaos do
incio e do m da string.
No so removidos os espaos entre as palavras.
Sua sintaxe a seguinte:
<string>.trim()
O Exemplo0414 mostra a utilizao do mtodo trim conforme as Figuras
4.25 e 4.26 a seguir.
Figura 4.25: Exemplo0414
Fonte: Elaborada pelo autor
Tcnicas de Programao e-Tec Brasil 66
Figura 4.26: Execuo do programa Exemplo0414
Fonte: Elaborada pelo autor
A varivel frase armazena uma string com espaos em branco no incio e no
nal. 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 nal.
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 Brasil Aula 4 Funes matemticas e de string 67
Figura 4.27: Exemplo0415
Fonte: Elaborada pelo autor
Figura 4.28: Execuo do programa Exemplo0415
Fonte: Elaborada pelo autor
4.2.7 Mtodo valueOf
O 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(<nome da varivel a ser convertida>)
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 Programao e-Tec Brasil 68
Figura 4.29: Exemplo0416
Fonte: 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: <COD
Figura 4.30: Execuo do programa Exemplo0416
Fonte: Elaborada pelo autor
4.2.8 Mtodo indexOf
O mtodo indexOf usado para localizar caracteres ou substrings em uma
string. Quando realizamos a busca de uma palavra em um texto, usamos
algo parecido com o funcionamento de indexOf, isto , ele busca uma pa-
lavra e retorna a posio onde ela se encontra.
Voc j sabe que um texto (ou uma string) indexado a partir do nmero zero.
Caso haja sucesso na busca, retornado um nmero inteiro referente po-
sio do texto (o ndice) onde o caractere foi encontrado, ou a posio do
texto onde inicia a substring localizada. Caso haja insucesso na busca, isto
, caso o caractere ou substring no tenha sido encontrado, retornado o
e-Tec Brasil Aula 4 Funes matemticas e de string 69
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(<caractere ou substring a ser localizada, [ posio inicial]>)
No Exemplo0417 (Figuras 4.31 e 4.32) vericamos 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: Exemplo0417
Fonte: 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 exis-
te a palavra Java aps a posio 15, retornado o valor -1 (busca
sem sucesso). O mesmo princpio aplicado quando voc procura
uma palavra em um editor de textos e ele no a encontra.
Tcnicas de Programao e-Tec Brasil 70
Figura 4.32: Execuo do programa Exemplo0417
Fonte: Elaborada pelo autor
Resumo
Nesta aula falamos sobre os conhecimentos necessrios para a utilizao
correta das funes matemticas e de strings. Aprendemos a trabalhar com
pesquisa de substrings e determinar o comprimento de uma string.
Atividades de aprendizagem
1. Crie uma classe que simule a jogada de um dado de seis lados dez vezes
e mostre o resultado na tela.
2. Crie uma classe que calcule quantos metros cbicos de gua suporta
uma determinada caixa de gua em forma de cubo todos os lados so
iguais. O usurio deve informar o valor do lado e o volume ser calculado
pela frmula volume=lado3. Arredonde o valor para seu inteiro anterior.
3. Construa uma classe que receba uma frase qualquer e mostre-a de forma
invertida.
4. Elabore uma classe que mostre o efeito:
Frase: Java
Efeito
J
Ja
Jav
Java
Jav
Ja
J
e-Tec Brasil Aula 4 Funes matemticas e de string 71
e-Tec Brasil
Aula 5 Criando funes
Objetivos
Identicar os principais tipos de mtodos em Java.
Introduzir o conceito de modularidade.
Mostrar as tcnicas de criao de mtodos em Java.
5.1 Criao de mtodos em Java
Mtodos so trechos de programa que permitem modularizar um sistema,
isto , so pequenos blocos que, juntos, compem um sistema maior. Os
mtodos recebem um determinado nome e podem ser chamadas vrias ve-
zes durante a execuo de uma classe.
Os principais motivos que levam utilizao de mtodos se referem redu-
o do cdigo de um sistema, melhoria da modularizao do sistema e
facilitao da manuteno do sistema.
Para ilustrar esses conceitos, imagine um grande sistema envolvendo mui-
tas classes em Java, que existe a necessidade de vericao se uma de-
terminada data vlida. Imagine, ainda, que h diversas aplicaes onde
isso deve ser realizado.
Um mtodo pode invocar outro mtodo, isto , durante a execuo do m-
todo 1 pode ser necessria a execuo do mtodo 2, que pode invocar o
mtodo 3, e assim por diante. Todo mtodo possui uma declarao e um
corpo cuja estrutura declarada a seguir:
Qualicador tipo_retorno_metodo nome_metodo ([lista de argumentos])
{
Cdigo do corpo;
}
Mtodo
uma sub-rotina que pode
ser invocada toda vez que sua
funcionalidade for necessria em
um trecho da classe ou ainda a
partir de outra classe.
e-Tec Brasil Aula 5 Criando funes 73
O qualicador pode ser do tipo:
a) Public: o mtodo visvel por qualquer classe. o qualicador mais aber-
to no sentido de que qualquer classe pode usar esse mtodo.
b) Private: o mtodo visvel apenas pela prpria classe. o qualicador
mais restritivo.
c) Protected: o mtodo visvel pela prpria classe, por suas subclasses e
pelas classes do mesmo pacote.
Tipo de retorno: refere-se ao tipo de dado retornado pelo mtodo. M-
todos que no retornam valores devem possuir nesse parmetro a palavra
void. Sempre que void utilizada em uma declarao de mtodo, nenhum
valor retornado aps sua execuo.
Nome do mtodo: pode ser qualquer palavra ou frase, desde que iniciada
por uma letra. Se o nome for uma frase, no pode conter espaos em bran-
co. Por padro, todo nome de mtodo inicia com letra maiscula.
Lista de argumentos: trata-se de uma lista de valores opcionais, que po-
dem ser recebidos pelo mtodo de tratamento interno. Quando um mtodo
invocado ele pode receber valores de quem o chamou. Esses valores po-
dem ser manipulados internamente e devolvidos ao emissor da solicitao.
Cdigo do corpo: trata-se dos cdigos em Java que realizam os processos inter-
nos e retornam os valores desejados, isto , constituem o programa do mtodo.
5.2 Mtodos sem retorno
No retornam valores e so semelhantes s procedures encontradas na
maioria das linguagens de programao.
Os mtodos que no retornam valores devem ser denidos como void.
Dessa forma, todos os mtodos sem retorno observam a seguinte estrutura:
Qualicador void nome_mtodo ([lista de argumentos])
{
Cdigo do corpo;
}
Qualicador
conhecido tambm pelo
nome de modicador e dene a
visibilidade do mtodo. Trata-se
de uma forma de especicar se
o mtodo visvel apenas para
a prpria classe em que est
declarada, ou pode ser visualizado
e utilizado por classes externas.
Tcnicas de Programao e-Tec Brasil 74
Algumas declaraes possveis:
Public void imprime()
Public static void imprime()
Private void imprimeteste()
Protected void gravatexto()
Vamos trabalhar com a prtica e mostrar um exemplo de mtodo em que ele
chamado para que uma mensagem seja mostrada na tela. O Exemplo0501
mostra a chamada de um mtodo que imprime na tela uma frase qualquer,
conforme ilustrado nas Figuras 5.1 e 5.2 a seguir.
Figura 5.1: Exemplo0501
Elaborada pelo autor
Figura 5.2: Execuo do programa Exemplo0501
Fonte: Elaborada pelo autor
A classe Exemplo0501 possui dois mtodos: main() e imprime().
Observe que cada mtodo possui um incio e um encerramento por meio
de abre e fecha chaves. Toda vez que um mtodo for declarado, ele deve
obrigatoriamente possuir uma chave inicial e uma nal.
A chamada de um mtodo deve corresponder exatamente sua declarao,
ou melhor, sua assinatura. Quando invocado, o mtodo deve possuir o
mesmo tipo de retorno, o mesmo nome e o mesmo nmero de argumentos.
e-Tec Brasil Aula 5 Criando funes 75
Quando declarada a palavra reservada void, signica que no existe um valor
de retorno. O mtodo declarado como public, como j foi falado, possibilita
que ele seja utilizado externamente classe que declarada.
O Exemplo0502 demonstra o uso de um mtodo com passagem de argu-
mentos, conforme ilustrado nas Figuras 5.3 e 5.4 a seguir. Neste exemplo
utiliza-se um mtodo para imprimir o contedo de uma varivel string qual-
quer, funcionando de forma similar a System.out.println().
Figura 5.3: Exemplo0502
Fonte: Elaborada pelo autor
Figura 5.4: Execuo do programa Exemplo0502
Fonte: Elaborada pelo autor
O Exemplo0502 bem parecido com o anterior, s que as variveis (frase1,
frase2, frase3) recebem uma string que passada para o mtodo tela()
que se encarrega da sua impresso na tela.
A classe possui trs mtodos: o mtodo main, obrigatrio em uma classe
executvel, o mtodo tela que imprime uma frase na tela e o mtodo lim-
patela que realiza a limpeza da tela.
Tcnicas de Programao e-Tec Brasil 76
O nome usado para invocar o mtodo tela que recebe o argumento
tela(fraseN), no qual:
Tela: Nome do mtodo;
FraseN: o contedo que ser enviado ao mtodo, ou seja, o mtodo
invocado e recebe uma varivel do tipo string.
Ao declarar o mtodo public static void tela(string texto), foi informado,
entre parnteses, o tipo de varivel a ser recebido(string texto).
O mtodo tela ser invocado cinco vezes pelo mtodo main.
O mtodo limpatela vai imprimir 25 linhas em branco na tela.
O Exemplo0503 apresenta outra classe com dois mtodos que no retor-
nam valores (alm do main) e so executados em cascata, uma vez que o
mtodo main chamar tela, que chamar tempo conforme ilustrado nas
Figuras 5.5 e 5.6 a seguir.
Figura 5.5: Exemplo0503
Fonte: Elaborada pelo autor

e-Tec Brasil Aula 5 Criando funes 77
Figura 5.6: Execuo do programa Exemplo0503
Fonte: Elaborada pelo autor
Neste exemplo foi includo um novo mtodo, chamado tempo, que funcio-
na como temporizador durante a execuo do programa.
5.3 Mtodos com retorno de valores
A sintaxe para a declarao de mtodos que retornam valores a mesma
apresentada anteriormente.
Public static int soma(int x, int y)
A declarao desse mtodo informa que ele receber dois argumentos intei-
ros (x,y) e retornar um nmero do tipo inteiro (int).
Os valores recebidos e retornados no precisam ser, necessariamente, do
mesmo tipo, conforme aparece na declarao.
Podem existir mtodos que recebem nmeros e retornam uma string, re-
cebem inteiros e retornam nmeros com ponto utuante ou qualquer
outra combinao.
O Exemplo0504 apresentado nas Figuras 5.7 e 5.8 demonstram a utilizao
de um mtodo que recebe duas variveis do tipo string e retorna a soma
entre elas na forma de um nmero do tipo inteiro.
Tcnicas de Programao e-Tec Brasil 78
Figura 5.7: Exemplo0504
Fonte: Elaborada pelo autor
Figura 5.8: Execuo do programa Exemplo0504
Fonte: Elaborada pelo autor
Ao executar a aplicao, o mtodo main executado e invoca a execuo
do mtodo soma. O resultado da execuo do mtodo soma armazenado
na varivel res, cujo tipo o mesmo declarado para o retorno do mtodo.
Ao invocar o mtodo soma, so enviadas duas variveis do tipo string que
se referem aos valores fornecidos pelo usurio no momento da execuo
do programa (n1, n2).
Ao ser invocado, o mtodo soma recebe duas variveis do tipo string,
num1 que recebe o contedo de n1 e num2 que recebe o contedo de
n2, executa suas tarefas internas entre chaves e retorna um valor inteiro por
meio da palavra return.
e-Tec Brasil Aula 5 Criando funes 79
Todo mtodo que no foi declarado como void, isto , que retornar algum
valor, necessita obrigatoriamente utilizar o mtodo return() para retornar um
valor. O valor retornado deve ser sempre do mesmo tipo declarado no mtodo.
5.4 Recursividade
Os programas so geralmente estruturados como mtodos que chamam uns
aos outros, o que facilita a resoluo de muitos problemas, alm de reduzir
consideravelmente o tamanho do cdigo.
A recursividade ocorre quando um mtodo chama a si prprio, direta ou
indiretamente, por meio de outro mtodo.
Para entender corretamente o funcionamento desse tipo de mtodo, ne-
cessrio muita dedicao por parte dos desenvolvedores, pois sua utilizao
pode ser complexa.
O Exemplo0505 mostra uma recursividade gerada para imprimir o fatorial
dos nmeros inteiros de 0 a 10, conforme ilustrado nas Figuras 5.9 e 5.10 a
seguir. Observe neste exemplo existe uma chamada ao prprio fatorial, isto
, ele chama a si mesmo. A cada vez que o mtodo chamado, o valor da
varivel num diminudo de 1.
Figura 5.9: Exemplo0505
Fonte: Elaborada pelo autor
Tcnicas de Programao e-Tec Brasil 80
Figura 5.10: Execuo do programa Exemplo0505
Fonte: Elaborada pelo autor
Resumo
Nesta aula falamos sobre os principais mtodos existentes em Java, desde
os que retornam at os que no retornam valores, o acesso a mtodos e a
recursividade. Vericamos a importncia de trabalhar com recursividade na
linguagem Java pela execuo de exemplos. Trabalhamos com exemplos de
mtodos em Java com retorno de strings e inteiros.
Atividades de aprendizagem
1. Crie uma classe que tenha um mtodo o qual desenhe uma moldura na
tela. Essa moldura deve ter 80 caracteres de comprimento por 5 de lar-
gura. Para isso utilize a sequncia de caracteres ASC II.
2. Elabore uma classe que receba o raio de uma esfera do tipo double e cha-
me o mtodo volume_esfera para calcular e exibir o volume da esfera
da tela. A frmula a ser utilizada (4/3)* PI * raio * raio.
3. Construa uma classe que receba uma temperatura qualquer em Fahrenheit
e apresente seu valor correspondente em Celsius por um mtodo. Para cal-
cular utilize a frmula: =5/9 *(f-32).
e-Tec Brasil Aula 5 Criando funes 81
e-Tec Brasil
Aula 6 Utilizando vetores
e matrizes
Objetivos
Diferenciar vetores e matrizes.
Demonstrar a praticidade de utilizao de vetores.
Apresentar as vantagens de usar arrays.
6.1 Denio de array
Em determinados rotinas de programa torna-se necessrio manipular diver-
sas variveis de um mesmo tipo de dado, por exemplo, manipular ao mes-
mo tempo 100 nomes de pessoas. Em vez de realizar a declarao de 100
variveis, possvel a declarao de apenas uma: trata-se de uma varivel
denida como um vetor (array) de nomes.
O array possibilita armazenar diversos valores em uma nica varivel, alm
do armazenamento de vrios objetos.
Esses diversos itens so armazenados em forma de tabela de fcil manipula-
o, sendo diferenciados e referenciados por um ndice numrico.
Os arrays esto presentes em praticamente todas as linguagens de progra-
mao e constituem um dos aspectos mais importantes e facilitadores no
desenvolvimento de aplicaes.
Em Java, os arrays so estruturas que permitem armazenar uma lista
de itens relacionados.
6.2 Arrays unidimensionais
Os arrays unidimensionais so os que possuem apenas um ndice para aces-
sar seu contedo. Eles so declarados da seguinte maneira:
Tipo_de_dado nome_array[] = new tipo_dado[quantidade];
Os arrays so utilizados para
armazenar um conjunto que
tenham o mesmo tipo de dado
primitivo ou a mesma classe.
e-Tec Brasil Aula 6 Utilizando vetores e matrizes 83
Tipo_do_dado: pode ser qualquer tipo de varivel primitiva ou classe;
Nome_array: um nome qualquer vlido, da mesma forma que os
nomes das variveis.
Por exemplo:
Int n[]=new int[100];
String mes[]=ney string[12];
Veja o Exemplo0601 que mostra a utilizao de um array para armazenar
um conjunto de argumentos do tipo inteiro, passado pelo usurio na linha
de execuo (Figuras 6.1 e 6.2).
Figura 6.1: Exemplo0601
Fonte: Elaborada pelo autor
O Exemplo0601 recebe diversos nmeros na linha de comando (no Mximo
dez) e armazena-os em um array de nmeros inteiros. Isso no realizado dire-
tamente, pois inicialmente os nmeros so armazenados no array args(um valor
de strings). O lao FOR se encarrega de converter os elementos do array, um a
um. Armazenados no array n, os elementos so totalizados pela varivel total.
Tcnicas de Programao e-Tec Brasil 84
Figura 6.2: Execuo do programa Exemplo0601
Fonte: Elaborada pelo autor
Os arrays podem ser criados e inicializados simultaneamente.
Em vez de usar o operador new para criar um objeto array, preciso colocar
os elementos do array entre chaves e separados por vrgula. Esses elementos
dentro das chaves devem ser do mesmo tipo que a varivel que contm o
array. Os arrays criados dessa forma tm o mesmo tamanho do nmero de
elementos colocados entre chaves. A sintaxe caria assim:
Tipo de dado nome_array[] = (valores separados por vrgula)
O Exemplo0602 a seguir demonstra como usar essa declarao e utiliza
tambm o mtodo valueOf() para manipular o contedo de um array de
caracteres (Figuras 6.3 e 6.4).
Figura 6.3: Exemplo0602
Fonte: Elaborada pelo autor
Existe uma diferena bsica na atribuio de valores aos arrays de caracteres e
de strings: nos arrays de caracteres so utilizados apstrofos para cada ca-
ractere declarado; j para os arrays de strings so utilizadas as aspas duplas.
O mtodo valueOf() pode ser utilizado para apresentar todos os elementos
de um array de caracteres ou um trecho dele.
e-Tec Brasil Aula 6 Utilizando vetores e matrizes 85
Figura 6.4: Execuo do programa Exemplo0602
Fonte: Elaborada pelo autor
6.3 Arrays bidimensionais
Os arrays bidimensionais permitem a criao de vetores com mais de um
ndice. Essa caracterstica possibilita que os valores sejam armazenados na
forma de matriz de qualquer dimenso.
A linguagem Java no suporta array bidimensional no formato linha e coluna
como em outra linguagem; entretanto, possvel criar array de arrays.
Esses arrays devem ser declarados da seguinte maneira:
Tipodedado nome_array[][] = new tipo_dado [ndice][ndice];
O Exemplo0603 a seguir demonstra o array bidimensional para coletar duas
notas de trs alunos. Uma vez armazenadas, o programa solicita ao usu-
rio o nmero de um aluno para mostrar suas notas e a mdia do grupo de
alunos (Figuras 6.5 e 6.6).
Figura 6.5: Exemplo0603
Fonte: Elaborada pelo autor
Tcnicas de Programao e-Tec Brasil 86
So coletadas e armazenadas duas notas de trs alunos no array no formato
de uma tabela. A nota fornecida pelo usurio armazenada no vetor de notas.
Figura 6.6: Execuo do programa Exemplo0603
Fonte: Elaborada pelo autor
6.4 Passagem de arrays em mtodos
possvel a criao de mtodos que recebem valores, manipulam esses va-
lores e retornam um resultado. Na passagem desses valores pode ser usado
qualquer tipo de varivel. Da mesma forma, possvel tambm criar mto-
dos com passagem retorno de arrays. O funcionamento basicamente o
mesmo: quando o mtodo invocado, um array qualquer passado, o qual
manipulado internamente pelo mtodo e depois retornado.
A sintaxe para um mtodo que recebe e retorna um array :
public static tipo_array[] nome_metodo (tipo_array nome_array[])
O Exemplo0604 a seguir mostra um mtodo que recebe um array do tipo intei-
ro, organiza seus elementos e o retorna em ordem crescente (Figuras 6.7 e 6.8).
e-Tec Brasil Aula 6 Utilizando vetores e matrizes 87
Figura 6.7: Exemplo0604
Fonte: Elaborada pelo autor
Figura 6.8: Execuo do programa Exemplo0604
Fonte: Elaborada pelo autor
6.5 Array de objetos
Da mesma forma que variveis primitivas, possvel criar um array para ar-
mazenamento de objetos.
Isso muito importante na linguagem Java, pois permite realizar as mesmas
operaes com diversos objetos do mesmo tipo.
O Exemplo0605 demonstra a utilizao de um array de objetos, aprovei-
tando-se da funcionalidade de uma classe pessoa, conforme mostrado nas
Figuras 6.9 e 6.10 a seguir.
Tcnicas de Programao e-Tec Brasil 88
Figura 6.9: Exemplo0605
Fonte: Elaborada pelo autor
Observe que se os objetos fossem tratados de forma individual, isto ,
cada um com nome diferente, seriam necessrias 100 linhas de cdigo,
uma para cada objeto.
Resumo
Nesta aula falamos sobre as principais formas de utilizao de arrays em
Java, desde as estruturas mais simples at estruturas complexas para tratar
dados. Apresentamos as vantagens de usar arrays na manipulao de obje-
tos e trabalhamos com conceitos que permitem ao programador desenvol-
ver aplicaes mais consistentes e com cdigo reduzido.
Atividades de aprendizagem
1. Crie uma classe que leia dez valores inteiros quaisquer e imprima na tela
os que so maiores que a mdia dos valores coletados.
2. Elabore uma classe que colete uma indenida quantidade de nmeros
inteiros pela linha de execuo e no nal mostre o menor e o maior
nmero fornecidos.
3. Faa uma classe que colete dez nomes de pessoas e os armazene em um
array. No nal verique se uma determinada pessoa foi cadastrada no
array, informando o usurio.
4. Uma escola precisa de um programa que controle a mdia das notas de
cada classe e a mdia das notas de todos os alunos da escola. Consideran-
do que essa escola possui trs classes com cinco alunos em cada classe, ge-
rando um total de 15 alunos, crie uma classe que receba as notas de cada
aluno e no nal mostre a mdia da classe e a mdia da escola em geral.
e-Tec Brasil Aula 6 Utilizando vetores e matrizes 89
e-Tec Brasil
Aula 7 Manipulando arquivos
Objetivos
Demonstrar a importncia do armazenamento e recuperao de dados.
Enumerar os aspectos fundamentais para a leitura e gravao em
arquivos.
Apresentar os passos necessrios para armazenar arquivos no for-
mato texto.
7.1 Denio
A grande maioria das aplicaes necessita armazenar dados para manipul-
-los posteriormente.
So poucas as aplicaes que se limitam a armazenar dados na memria
durante o processo de execuo.
Os dados manipulados durante o processo de execuo precisam ser recuperados
a qualquer momento. Por esse motivo devem ser usados os arquivos de dados.
Para a manipulao de arquivos em Java, necessria a utilizao do pacote
java.io.
Os dados podem ser armazenados e recuperados pelo pacote java.io por
intermdio de um sistema de comunicao denominado controle de uxo
(Stream), permitindo a manipulao de diferentes formatos de arquivo, en-
tre eles: txt, data, gif.
7.2 Leitura e gravao de um arquivo texto
Existem diversas maneiras de realizar a manipulao de arquivo texto. A for-
ma apresentada utiliza a classe BufferedReader para a leitura do arquivo e
classe PrintWriter para a gravao.
Arquivo
um conjunto de dados
armazenados em uma memria
secundria no voltil que pode
ser recuperado pelo programa a
qualquer instante.
e-Tec Brasil Aula 7 Manipulando arquivos 91
O Exemplo1101 a seguir demonstra o cdigo necessrio para a criao de
um cadastro de pessoas usando a leitura e gravao em arquivo texto (Figu-
ras 7.1 e 7.2). O nome do arquivo cdigo da pessoa mais a extenso txt e
ser armazenado na mesma pasta em que a classe estiver localizada.
Tcnicas de Programao e-Tec Brasil 92
Figura 7.1: Exemplo1101
Fonte: Elaborada pelo autor
Figura 7.2: Execuo do programa Exemplo1101
Fonte: Elaborada pelo autor
e-Tec Brasil Aula 7 Manipulando arquivos 93
O aplicativo do Exemplo1101 possui trs botes: um para abrir texto, outro
para gravar o arquivo texto e outro para limpar o contedo das caixas de
texto, conforme indica a Figura 7.2. Ao pressionar o boto Gravar, o con-
tedo das caixas de texto armazenado num arquivo texto cujo nome
igual ao cdigo da pessoa (mais a extenso .txt). Dessa forma, cada pessoa
cadastrada armazenada num arquivo texto diferente, isto , a pessoa de
cdigo 10 armazenada no arquivo 10.txt, a pessoa de cdigo 15
armazenada no arquivo 15.txt e assim sucessivamente. Ao pressionar o
boto Abrir, ocorre o processo inverso, isto , o contedo armazenado no
arquivo, cujo nome deve ser fornecido pelo usurio, copiado para as cai-
xas de texto. Ao pressionar o boto Limpar, o contedo das caixas de texto
tfCodigo, tfNome e tfEmail apagado.
A validao das caixas de texto realizada ao pressionar o boto Gravar.
Todas as caixas de texto precisam ter algum contedo; caso contrrio, uma men-
sagem enviada ao usurio indicando a obrigatoriedade do preenchimento.
Observe que utilizado o mtodo requestFocus(), responsvel por fornecer
o foco (do cursor) ao objeto correspondente.
O Exemplo1101 contm a classe PrintWriter usada para criar o arquivo
texto, cujo nome o contedo da caixa de texto tfcodigo concatenado
com a extenso .txt. O arquivo a ser criado controlado pelo objeto out.
O objeto out realiza a gravao dos valores do cdigo, nome e e-mail, cada
um em uma linha diferente do arquivo texto por meio do mtodo println,
que faz com que cada dado gravado ocupe uma linha diferente do arquivo.
Imagine que voc est criando um arquivo texto por meio do bloco de notas
e cada linha receber um dado diferente.
O mtodo close() responsvel por fechar o arquivo. Os dados so efeti-
vamente transferidos para o arquivo texto quando o objeto out fechado.
A exceo IOException gerada quando, por um motivo qualquer, no for
possvel realizar a gravao do arquivo. Em resumo, para o armazenamento
de dados em um arquivo texto, necessrio:
O pacote java.io necessrio
para a manipulao de arquivos
de uxo.
Tcnicas de Programao e-Tec Brasil 94
a) criar um arquivo de uxo para a sada de dados por meio da classe
PrintWriter;
b) gravar os dados no arquivo por meio do mtodo println();
c) fechar o arquivo gravado por meio do mtodo close().
A abertura e leitura de um arquivo texto so executadas quando o usurio
pressiona o boto Abrir. O objeto br criado como um objeto da classe
BufferedReader. Observe que o objeto tenta abrir o arquivo cujo nome foi
solicitado ao usurio. Caso haja sucesso na abertura do arquivo, o cursor ca
posicionado na primeira linha do arquivo. Isso tambm ocorre quando um
arquivo de texto aberto por meio do bloco de notas.
Experimente abrir o arquivo.txt com o bloco de notas e verique que o cur-
sor ca posicionado no primeiro caractere da primeira linha.
A leitura do contedo do arquivo texto, linha a linha, realizada por meio
do mtodo readLine(), que o armazena nas caixas de texto correspondentes
o cdigo, nome e e-mail. Cada vez que o mtodo readLine() executado,
uma linha do arquivo lida e o cursor posicionado automaticamente na
prxima linha.
O Exemplo1102 a seguir apresenta uma aplicao que funciona como um
editor de textos bem bsico. Ele realiza a leitura ou a gravao de um ar-
quivo texto qualquer, escolhido pelo usurio por meio da caixa de dilogo
da classe FileDialog.
Quando o usurio pressiona o boto Gravar ou o boto Abrir, aparece uma
caixa de dilogo semelhante utilizada pelo Windows, por exemplo, no
bloco de notas. Com isso, torna-se possvel realizar a escolha do arquivo que
ser lido ou gravado pela aplicao. O Exemplo1102 mostra tambm outras
duas classes (FileWriter e FileReader) que podem ser usadas para a mani-
pulao de arquivos texto. O cdigo do exemplo apresentado na Figura 7.3
e a Figura 7.4 exibe a execuo do programa.
e-Tec Brasil Aula 7 Manipulando arquivos 95
Figura 7.3: Exemplo1102
Fonte: Elaborada pelo autor
Figura 7.4: Execuo do programa Exemplo1102
Fonte: Elaborada pelo autor
Tcnicas de Programao e-Tec Brasil 96
No Exemplo1102 so declarados dois objetos (fdAbrir e fdSalvar) como da
classe FileDialog, usada na criao de caixas de dilogo para manipulao
de arquivos.
O comando fdAbrir = new FileDialog (this, Abrir arquivo, FileDialog.
LOAD); inicializa o objeto fdAbrir como uma caixa de dilogo com o ttulo
Abrir arquivo para a leitura de arquivos (FileDialog.LOAD).
O comando fdSalvar = new FileDialog ( this, salvar arquivo , FileDialog.
SAVE); inicializa o objeto fdSalvar como uma caixa de dilogo com o ttulo
Salvar arquivo para a gravao de arquivos (FileDialog.SAVE). A abertura
da caixa de dilogo de gravao pelo mtodo denominado setVisible(true).
O comando if (fdSalvar.getFile()==null) return; no momento de realizar a grava-
o do arquivo, aberta uma caixa de dilogo. Para descobrir o arquivo escolhido
pelo usurio, utilizado o mtodo getFile. Caso o usurio no tenha escolhido
nenhum arquivo, ou se pressionou o boto Cancelar da caixa de dilogo, o m-
todo getFile retorna null, o que provoca o encerramento do mtodo actionPer-
formed por meio de return e, consequentemente, a no gravao do arquivo.
Caso contrrio, o caminho e o nome do arquivo so armazenados na varivel
nome_do_arquivo pelos mtodos getDirectory e getFile, de acordo com:
nome_do_arquivo = fdsalvar.getDirectory() + fdsalvar.getFile();
realizada a inicializao de out como um objeto da classe FileWriter,
apontando para a varivel nome_do_arquivo que contm o arquivo escolhi-
do ou digitado pelo usurio.
Todo o contedo do TextArea armazenado no arquivo pelo mtodo write.
A abertura da caixa de dilogo de leitura pelo mtodo setVisible(true).
inicializado in como um objeto da classe FileReader apontando para a vari-
vel nome_do_arquivo que contm o arquivo escolhido ou digitado pelo usurio.
No processo de leitura utilizada a classe FileReader, por meio do mtodo
read, cada caractere lido como um inteiro.
Quando o nal do arquivo for encontrado, retornado o valor -1.
e-Tec Brasil Aula 7 Manipulando arquivos 97
Tambm vericado se o ponteiro j se encontra no nal do arquivo, ou
seja, enquanto i for diferente de -1, o arquivo lido caractere a caractere,
cada caractere lido (tipo inteiro) e convertido no tipo char, sendo acumula-
do na String s. Dessa forma, realiza-se o processo de leitura do primeiro ao
ltimo caractere do arquivo texto escolhido.
Resumo
Nesta aula falamos sobre as principais formas de utilizao de arquivos em
Java, desde as estruturas mais simples at estruturas complexas para tratar
dados e salvar em arquivos. Enumeramos os aspectos fundamentais para a
leitura e gravao em arquivos. Demonstramos a importncia do armazena-
mento e da recuperao de dados. Apresentamos os passos necessrios para
armazenar arquivos no formato texto.
Atividades de aprendizagem
1. Crie uma classe para armazenar que tenha as seguintes opes na mani-
pulao de arquivo: Abrir, gravar e limpar. Os dados utilizados devem ser:
matrcula, nome_aluno, endereo, telefone e CEP.
2. Crie uma classe para simular um editor de textos bsico e tente implemen-
tar algumas opes extras diferentes dos exemplos aqui apresentados.
Tcnicas de Programao e-Tec Brasil 98
e-Tec Brasil
Aula 8 Estruturas de dados
em Java: listas
Objetivos
Demonstrar a importncia do armazenamento e recuperao em
estruturas de dados.
Enumerar os aspectos fundamentais para a utilizao de listas lineares.
Apresentar os passos necessrios para implementao de listas.
8.1 Denio de listas
Uma das formas mais fceis de interligar elementos de um conjunto por
meio de uma lista.
A lista um tipo de estrutura de dados bastante exvel, porque permite o
crescimento ou reduo de seu tamanho durante a execuo do programa.
Os itens da lista podem ser acessados, retirados ou inseridos. Podemos tam-
bm juntar duas listas para formar uma nica, assim como uma lista pode
ser partida em duas ou mais listas.
As listas so utilizadas para aplicaes nas quais no possvel prever a uti-
lizao de memria, permitindo a manipulao de quantidade imprevisvel
de dados.
As listas so teis em aplicaes tais como manipulao simblica, gerncia
de memria, simulao e compiladores.
Uma lista linear uma sequncia de zero ou mais itens:
x1, x2, , xn, na qual xi de um determinado tipo e n representa o tamanho
da lista linear.
Sua principal propriedade estrutural envolve as posies relativas dos itens
em uma dimenso:
e-Tec Brasil Aula 8 Estruturas de dados em Java: listas 99
assumindo n 1, x1 o primeiro item da lista e xn o ltimo item da lista
xi precede xi+1 para i = 1, 2, , n 1
xi sucede xi1 para i = 2, 3, , n
o elemento xi dito estar na i-sima posio da lista.
Para criar um tipo abstrato de dados Lista em Java, necessrio denir um
conjunto de operaes sobre os objetos do tipo lista. O conjunto de opera-
es pode ser denido e depende de cada aplicao.
Um conjunto de operaes necessrias a uma maioria de aplicaes :
a) Criar uma lista linear vazia.
b) Inserir um novo item imediatamente aps o i-simo item.
c) Retirar o i-simo item.
d) Localizar o i-simo item para examinar e/ou alterar o contedo de seus
componentes.
e) Combinar duas ou mais listas lineares em uma lista nica.
f) Partir uma lista linear em duas ou mais listas.
g) Fazer uma cpia da lista linear.
h) Ordenar os itens da lista em ordem ascendente ou descendente, de acor-
do com alguns de seus componentes.
i) Pesquisar a ocorrncia de um item com um valor particular em algum
componente.
8.2 Implementao de listas
por meio de arranjos
Em um tipo estruturado arranjo, os itens da lista so armazenados em posi-
es contguas de memria.
Os itens da lista so armazenados em posies contguas de memria.
Algumas caractersticas de arranjos:
Tcnicas de Programao e-Tec Brasil 100
A lista pode ser percorrida em qualquer direo.
A insero de um novo item pode ser realizada aps o ltimo item
com custo constante.
A insero de um novo item no meio da lista requer um deslocamento
de todos os itens localizados aps o ponto de insero.
Retirar um item do incio da lista requer um deslocamento de itens
para preencher o espao deixado vazio.
primeiro = 0
1
ltimo - 1
maxTam - 1
Itens
x1
x2
.
.
.
.
.
.
xn
Figura 8.1: Lista utilizando arranjo
Fonte: Elaborada pelo autor
A estrutura lista utilizando arranjo uma possvel implementao para as
nove operaes denidas anteriormente para o tipo abstrato de dados lista.
No programa mostrado na Figura 8.2 utilizamos a estrutura lista em que o
campo item o principal componente da classe Lista.
e-Tec Brasil Aula 8 Estruturas de dados em Java: listas 101
Figura 8.2: Lista com arranjo
Fonte: Elaborada pelo autor
Os itens so armazenados em um arranjo de tamanho suciente para arma-
zenar a lista.
Tcnicas de Programao e-Tec Brasil 102
O i-simo item da lista est armazenado na i-sima posio do arranjo,
1 i <ltimo.
A constante MaxTam dene o tamanho mximo permitido para a lista.
8.2.1 Lista utilizando arranjo:
vantagem e desvantagens
Vantagem:
Economia de memria (os apontadores so implcitos nessa estrutura).
Desvantagens:
Custo para inserir ou retirar itens da lista, que pode causar um deslo-
camento de todos os itens, no pior caso.
Em aplicaes em que no existe previso sobre o crescimento da
lista, a utilizao de arranjos deve ter a realocao de memria.
8.3 Implementao de listas por meio
de estruturas autorreferenciadas
Em uma estrutura autorreferenciada, cada item da lista contm a informa-
o que necessria para alcanar o prximo item.
Esse tipo de implementao permite utilizar posies no contguas de me-
mria, sendo possvel inserir e retirar elementos sem haver a necessidade de
deslocar os itens seguintes da lista.
H uma clula cabea para simplicar as operaes sobre a lista (Figura 8.3).
Lista
ni1
. . .
x1
xn
Figura 8.3: Lista utilizando estruturas autorreferenciadas
Fonte: Elaborada pelo autor
A estrutura da lista utilizando estruturas autorreferencidas e uma possvel
implementao para as nove operaes denidas anteriormente para o tipo
lista so mostradas no exemplo mostrado na Figura 8.4 a seguir.
e-Tec Brasil Aula 8 Estruturas de dados em Java: listas 103
Figura 8.4: Exemplo de Lista com estrutura autoreferenciadas
Fonte: Elaborada pelo autor
8.3.1 Caractersticas principais das
listas autoreferenciadas
A lista constituda de clulas:
Cada clula contm um item da lista e uma referncia para a clula
seguinte.
Tcnicas de Programao e-Tec Brasil 104
A classe Lista contm uma referncia para a clula cabea, uma refe-
rncia para a ltima clula da lista e uma referncia para armazenar a
posio corrente na lista.
8.3.2 Lista utilizando estruturas autorreferenciadas:
vantagens e desvantagem
Vantagens:
Permite inserir ou retirar itens do meio da lista a um custo constante (im-
portante quando a lista tem de ser mantida em ordem).
boa para aplicaes em que no existe previso sobre o crescimento
da lista (o tamanho mximo da lista no precisa ser definido a priori).
Desvantagem:
Utilizao de memria extra para armazenar as referncias.
Resumo
Nesta aula falamos sobre as principais formas de utilizao de estruturas
de dados em Java. Programamos a utilizao da estrutura de dados lista na
forma de arranjos e estrutura autorreferenciadas.
Atividades de aprendizagem
1. Refazer a estrutura do exemplo na Figura 8.2 para sempre permitir a inser-
o de novos elementos na lista. Para isso devemos alterar a operao In-
sere e toda vez que a insero de um novo item esgotar a memria dispo-
nvel pelo arranjo item, uma nova rea de memria com capacidade maior
deve ser alocada e o contedo do arranjo item deve ser copiado para ela.
2. Considerada a implementao de listas lineares utilizando estruturas au-
torreferenciadas e com a clula cabea, escreva um mtodo em Java para
a classe lista que retorna true caso o valor ch estiver na lista e retorna
false se o valor ch no estiver na lista.
e-Tec Brasil Aula 8 Estruturas de dados em Java: listas 105
e-Tec Brasil
Aula 9 Estruturas de dados
em Java: pilha
Objetivos
Demonstrar a importncia do armazenamento e recuperao utili-
zando estruturas de dados.
Enumerar os aspectos fundamentais para a utilizao de pilhas.
Apresentar os passos necessrios para implementao de pilhas.
9.1 Denio de pilha
Existem aplicaes para listas lineares nas quais inseres, retiradas e acesso
a itens ocorrem sempre em um dos extremos da lista.
Pilha uma lista linear em que todas as inseres, retiradas e acessos so
feitos em apenas um extremo da lista.
Os itens em uma pilha so colocados um sobre o outro, com o item inserido
mais recentemente no topo e o item inserido menos recentemente no fundo.
9.2 Propriedades e aplicaes das pilhas
Propriedades:
O ltimo item inserido o primeiro item que pode ser retirado da
lista. So as chamadas listas LIFO (last-in, rst-out).
Existe uma ordem linear para pilhas, do mais recente para o menos
recente.
ideal para processamento de estruturas aninhadas de profundidade
imprevisvel.
Uma pilha contm uma sequncia de obrigaes adiadas. A ordem de
remoo garante que as estruturas mais internas sero processadas
antes das mais externas.
O modelo padro da pilha o
de um monte de pratos em uma
prateleira, sendo conveniente
retirar pratos ou adicionar novos
pratos na parte superior.
e-Tec Brasil Aula 9 Estruturas de dados em Java: pilha 107
Aplicaes em estruturas aninhadas:
Quando necessrio caminhar em um conjunto de dados e guardar
uma lista de coisas a fazer posteriormente.
O controle de sequncias de chamadas de subprogramas.
A sintaxe de expresses aritmticas.
As pilhas ocorrem em estruturas de natureza recursiva (como rvores).
Elas so utilizadas para implementar a recursividade.
9.3 Conjunto de operaes
a) Criar uma pilha vazia.
b) Vericar se a lista est vazia. Retorna true se a pilha est vazia; caso con-
trrio, retorna false.
c) Empilhar o item x no topo da pilha.
d) Desempilhar o item x no topo da pilha, retirando-o da pilha.
e) Vericar o tamanho atual da pilha.
Veja o exemplo mostrado na Figura 9.1 a seguir.
Figura 9.1: Exemplo de pilha com arranjo
Fonte: Elaborada pelo autor
Tcnicas de Programao e-Tec Brasil 108
9.4 Implementao de pilhas
por meio de arranjo
Em uma implementao por meio de arranjos os itens da pilha so armaze-
nados em posies contiguas de memria. Por causa das caractersticas da
pilha, as operaes de insero e de retirada de itens devem ser implemen-
tadas de forma diferente da implementao feita com listas.
primeiro = 0

1

topo - 1

maxTam - 1
Itens
x1
x2
.
.
.
xn
.
.
.
Figura 9.2: Pilha utilizando arranjo
Fonte: Elaborada pelo autor
Como as retiradas e inseres ocorrem no topo da pilha, um cursor chamado
topo utilizado para controlar a posio do item no topo da pilha.
Na estrutura da pilha usando arranjo, o campo item o principal componen-
te da classe pilha mostrado no exemplo abaixo:
9.5 Implementao de pilhas por meio
de estruturas autorreferenciadas
Ao contrrio da implementao de listas lineares por meio de estruturas
autorreferenciadas, no h necessidade de manter uma clula cabea no
topo da pilha.
Para desempilhar um item, basta desligar a clula que contm xn, e a clula
que contm xn1 passa a ser a clula de topo.
Para empilhar um novo item, basta fazer a operao contrria, criando uma
nova clula para receber o novo item (Figura 9.3).
e-Tec Brasil Aula 9 Estruturas de dados em Java: pilha 109
ni1
topo
.
.
.
1
x
1 - 1
x
n
x
Figura 9.3: Pilha utilizando autoreferncia
Fonte: Elaborada pelo autor
Algumas caractersticas da estrutura e operaes sobre pilhas utilizando es-
truturas autorreferenciadas:
O campo tam evita a contagem do nmero de itens no mtodo tamanho.
Cada clula de uma pilha contm um item da pilha e uma referncia
para outra clula.
A classe Pilha contm uma referncia para o topo da pilha.
Tcnicas de Programao e-Tec Brasil 110
Figura 9.4: Exemplo de pilha com estrutura autoreferenciada
Fonte: Elaborada pelo autor
e-Tec Brasil Aula 9 Estruturas de dados em Java: pilha 111
Resumo
Nesta aula falamos sobre as principais formas de utilizao de estruturas de
dados pilha em Java. Programamos a utilizao da estrutura de dados pilha
na forma de arranjos e estruturas autorreferenciadas.
Atividades de aprendizagem
1. Duas pilhas podem coexistir em um mesmo vetor, uma crescendo em um
sentido, e a outra, no outro?
2. Duas pilhas podem ser alocadas no mesmo vetor com o mesmo grau de
ecincia? Por qu?
3. possvel resolver o problema da representao por alocao sequencial
para mais de duas pilhas?
Tcnicas de Programao e-Tec Brasil 112
Referncias
DEITEL, H. M.; DEITEL, P. J. Java: como programar. Traduo e reviso tcnica de Carlos
Arthur Lang Lisba. 4. ed. Porto Alegre: Editora Bookman, 2003.
ARNOLD, Ken; GOSLING, James; HOLMES, David. A linguagem de programao Java.
4. ed. Porto Alegre: Editora Bookman, 2007.
GOODRICH, Michael T.; TAMASSIA, Roberto. Estrutura de dados e algoritmos em
Java. 4. ed. Porto Alegre: Editora Bookman, 2007.
BONAN, Adilson Rodrigues. Java. fundamentos, prticas & certicaes. So Paulo:
Editora Alta Books, 2008.
FURGERI, Srgio. Java 6: ensino didtico: desenvolvendo e implementando aplicaes. 6.
ed. So Paulo: Editora rica, 2008.
MOREIRA NETO, Eziel. Entendendo e dominando o Java. 3. ed. So Paulo: Editora
Digerati Books, 2009.
MOREIRA NETO, Eziel. Entendendo e dominando o Java para internet. 2. ed. So
Paulo: Editora Digerati Books, 2009.
LIGUORI, Robert; LIGUORI, Patricia. Java: guia de bolso. So Paulo: Editora Alta Books,
2008.
e-Tec Brasil 113 Referncias
Curr culo do professor-autor
Antonio Luiz Santana graduado em Engenharia Mecnica com nfase em
produo, com especializao em Redes de Computadores e Anlise de Sis-
temas. Professor de algumas instituies de ensino superior e curso tcnico
desde 1991, lecionando disciplinas para o Curso Tcnico em Informtica e
Superior de Tecnologia em Redes de Computadores e Anlise de sistemas.
Em EaD, o responsvel pelas disciplinas Tcnicas de Programao, Sistemas
de Informao I e Sistemas de Informao II, Servios de Redes. Atua na rea
de Informtica e redes desde 1992, quando se formou Tcnico em Processa-
mento de Dados pelo SENAC. Participou da elaborao do projeto do Curso
Superior de Sistemas de Informao e dos Cursos Tcnicos em Informtica
(modalidade presencial e EaD). Tambm coordenador de TI e Redes de
computadores do Campus Vitria do IFES.
Tcnicas de Programao e-Tec Brasil 114

Curso Tcnico em Informtica
Tcnicas de Programao
Antonio Luiz Santana

Das könnte Ihnen auch gefallen