Вы находитесь на странице: 1из 116

Tcnicas de Programao

Antonio Luiz Santana

Curso Tcnico em Informtica


Tcnicas de Programao
Antonio Luiz Santana

Colatina-ES
2011
Presidncia da Repblica Federativa do Brasil

Ministrio da Educao

Secretaria de Educao a Distncia

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.
Equipe de Elaborao Coordenao de Design Grfico
Instituto Federal do Esprito Santo IFES Andr Rodrigues/UFSC

Coordenao Institucional Design Instrucional


Guilherme Augusto de Morais Pinto/IFES Gustavo Pereira Mateus/UFSC
Joo Henrique Caminhas Ferreira/IFES
Web Master
Coordenao Curso Rafaela Lunardi Comarella/UFSC
Allan Francisco Forzza Amaral/IFES
Web Design
Professor-autor Beatriz Wilges/UFSC
Antonio Luiz Santana/IFES Mnica Nassar Machuca/UFSC

Comisso de Acompanhamento e Validao Diagramao


Universidade Federal de Santa Catarina UFSC Andr Rodrigues da Silva/UFSC
Brbara Zardo/UFSC
Coordenao Institucional Caroline Ferreira da Silva/UFSC
Araci Hack Catapan/UFSC Juliana Tonietto/UFSC
Nathalia Takeuchi/UFSC
Coordenao do Projeto
Silvia Modesto Nassar/UFSC Reviso
Jlio Csar Ramos/UFSC
Coordenao de Design Instrucional
Beatriz Helena Dal Molin/UNIOESTE e UFSC Projeto Grfico
e-Tec/MEC

S232t Santana, Antonio Luiz

Tcnicas de programao : Curso Tcnico em Informtica / Antonio


Luiz Santana. Colatina: Ifes, 2011.
114 p. : il.
Inclui Bibliografia

ISBN: 978-85-62934-01-8
NSTITUTO
FEDERAL 1. Java (Linguagem de programao de computador. 2. Inform-
IO GRANDE tica. I. Instituto Federal do Esprito Santo. II. Ttulo.
DO SUL
CDD: 005.133
Apresentao e-Tec Brasil

Prezado estudante,

Bem-vindo ao e-Tec Brasil!

Voc faz parte de uma rede nacional pblica de ensino, a Escola Tcnica
Aberta do Brasil, instituda pelo Decreto n 6.301, de 12 de dezembro 2007,
com o objetivo de democratizar o acesso ao ensino tcnico pblico, na mo-
dalidade a distncia. O programa resultado de uma parceria entre o Minis-
trio da Educao, por meio das Secretarias de Educao a Distancia (SEED)
e de Educao Profissional e Tecnolgica (SETEC), as universidades e escolas
tcnicas estaduais e federais.

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


diversidade regional e cultural, longe de distanciar, aproxima as pessoas ao
garantir acesso educao de qualidade, e promover o fortalecimento da
formao de jovens moradores de regies distantes, geograficamente ou
economicamente, dos grandes centros.

O e-Tec Brasil leva os cursos tcnicos a locais distantes das instituies de en-
sino e para a periferia das grandes cidades, incentivando os jovens a concluir
o ensino mdio. Os cursos so ofertados pelas instituies pblicas de ensino
e o atendimento ao estudante realizado em escolas-polo integrantes das
redes pblicas municipais e estaduais.

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


servidores tcnicos e professores acreditam que uma educao profissional
qualificada integradora do ensino mdio e educao tcnica, capaz de
promover o cidado com capacidades para produzir, mas tambm com auto-
nomia diante das diferentes dimenses da realidade: cultural, social, familiar,
esportiva, poltica e tica.

Ns acreditamos em voc!
Desejamos sucesso na sua formao profissional!
Ministrio da Educao
Janeiro de 2010

Nosso contato
etecbrasil@mec.gov.br

3 e-Tec Brasil
Indicao de cones

Os cones so elementos grficos utilizados para ampliar as formas de


linguagem e facilitar a organizao e a leitura hipertextual.

Ateno: indica pontos de maior relevncia no texto.

Saiba mais: oferece novas informaes que enriquecem o


assunto ou curiosidades e notcias recentes relacionadas ao
tema estudado.

Glossrio: indica a definio de um termo, palavra ou expresso


utilizada no texto.

Mdias integradas: sempre que se desejar que os estudantes


desenvolvam atividades empregando diferentes mdias: vdeos,
filmes, jornais, ambiente AVEA e outras.

Atividades de aprendizagem: apresenta atividades em


diferentes nveis de aprendizagem para que o estudante possa
realiz-las e conferir o seu domnio do tema estudado.

5 e-Tec Brasil
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 Definio de variveis e constantes 32
2.3 Declarao de constantes 34
2.5 Operadores 35
2.6 Passagem de parmetros 37
2.7 Converso de tipos 38
2.8 Entrada de dados pelo teclado 40

Aula 3 Estruturas condicionais e de controle 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

7 e-Tec Brasil
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 Definio de array 83
6.2 Arrays unidimensionais 83
6.3 Arrays bidimensionais 86
6.4 Passagem de arrays em mtodos 87
6.5 Array de objetos 88

Aula 7 Manipulando arquivos 91


7.1 Definio 91
7.2 Leitura e gravao de um arquivo texto 91

Aula 8 Estruturas de dados em Java: listas 99


8.1 Definio de listas 99
8.2 Implementao de listas
por meio de arranjos 100
8.3 Implementao de listas por meio
de estruturas autorreferenciadas 103

Aula 9 Estruturas de dados em Java: pilha 107


9.1 Definio de pilha 107
9.2 Propriedades e aplicaes das pilhas 107
9.3 Conjunto de operaes 108
9.4 Implementao de pilhas
por meio de arranjo 109
9.5 Implementao de pilhas por meio
de estruturas autorreferenciadas 109

Referncias 113

Currculo do professor-autor 114

e-Tec Brasil 8 Tcnicas de Programao


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

9 e-Tec Brasil
Apresentao da disciplina

Nesta disciplina vamos estudar cinco tpicos que precisamos utilizar com
muita frequncia: conceitos e aplicaes de tipos de dados; tcnicas de mo-
dularizao; passagem de parmetros e recursividade; ambientes e tcnicas
de desenvolvimento de aplicaes; e estruturas de dados e seus algoritmos.
Para este nosso estudo, vamos adotar Java como linguagem para desenvol-
ver aplicaes. Para a digitao do cdigo fonte das classes Java, a nica
ferramenta necessria o bloco de notas do Windows; entretanto, qualquer
editor de textos disponvel na mquina do leitor pode ser utilizado.

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


estudo de variveis e estruturas bsicas de programao. Nas trs aulas sub-
seqentes, apresentaremos os tipos de estrutura de dados e suas aplicaes
em Java. Em seguida, abordaremos assuntos especficos sobre modulariza-
o e recursividade.

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


sas maneiras de desenvolver aplicaes em Java. Existe uma infinidade de
ferramentas que podem deixar o desenvolvedor com dvidas para selecionar
o ambiente de trabalho. No momento, as ferramentas que mais se destacam
so Eclipse e Netbeans. Dessa forma, ao final desta disciplina voc estar
capacitado a utilizar esses ambientes de desenvolvimento em situaes co-
muns nas empresas, identificando o que melhor se adapta soluo de um
determinado problema.

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


de ler o contedo semanal da matria e resolver as atividades propostas.
Participe tambm das discusses com os tutores e demais colegas de curso;
voc sempre aprender uma nova forma de resolver determinado problema.
Organize seu tempo reservando um horrio todos os dias para os estudos,
para que as atividades no acumulem.

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


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

Um grande abrao!

11 e-Tec Brasil
Projeto instrucional

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.

CARGA
OBJETIVOS DE
AULA MATERIAIS HORRIA
APRENDIZAGEM
(horas)
- Descrever as principais caractersticas
da linguagem.
1. Viso geral
Caderno e Ambiente Virtual de
(Introduo
- Descrever os procedimentos neces- Ensino- Aprendizagem.
linguagem Java e
srios para o desenvolvimento de uma 10
plataforma)
aplicao Java. www.cead.ifes.edu.br

- Fornecer ao aluno o primeiro contato


com a linguagem Java.

- Demonstrar a declarao de dados. Caderno e Ambiente Virtual de


2. Aspectos funda- Ensino- Aprendizagem.
10
mentais sobre Java - Verificar os conversores de tipo em
Java. www.cead.ifes.edu.br

- Fornecer conhecimentos para utilizar


corretamente as estruturas condicionais. Caderno e Ambiente Virtual de
3. Estruturas condi- Ensino-Aprendizagem.
cionais e estruturas - Verificar as diferentes estruturas de 10
de controle repetio. www.cead.ifes.edu.br

- Verificar aplicaes prticas.


- Demonstrar as principais funes
matemticas em Java.
Caderno e Ambiente Virtual de
4. Funes Ensino- Aprendizagem.
- Demonstrar os principais mtodos para
matemticas e de 10
manipulao de strings em Java.
string www.cead.ifes.edu.br

- Mostrar as tcnicas de localizao de


caracteres em strings.

13 e-Tec Brasil
CARGA
OBJETIVOS DE
AULA MATERIAIS HORRIA
APRENDIZAGEM
(horas)
- Identificar os principais tipos de mto-
dos em Java. Caderno e Ambiente Virtual de
Ensino - Aprendizagem.
5. Criando funes - Introduzir o conceito de modularidade. 10
www.cead.ifes.edu.br
- Mostrar as tcnicas de criao de mto-
dos em Java.

Diferenciar vetores e Matrizes.


Caderno e Ambiente Virtual de
Ensino -Aprendizagem.
6. Utilizando veto- Demonstrar a praticidade de utilizao
10
res e matrizes de vetores.
www.cead.ifes.edu.br

Apresentar as vantagens de usar arrays.

Demonstrar a importncia do armazena-


mento e recuperao de dados.
Caderno e Ambiente Virtual de
Ensino-Aprendizagem.
7. Manipulando Enumerar os aspectos fundamentais para
10
arquivos a leitura e gravao em arquivos.
www.cead.ifes.edu.br

Apresentar os passos necessrios para


armazenar arquivos no formato texto.

Demonstrar a importncia do armaze-


namento e recuperao de estruturas
de dados. Caderno e Ambiente Virtual de
8. Estrutura de Aprendizagem.
dados em Java Enumerar os aspectos fundamentais para 10
listas a utilizao de listas lineares. www.cead.ifes.edu.br

Apresentar os passos necessrios para


implementao de listas.

Demonstrar a importncia do arma-


zenamento e recuperao utilizando
estruturas de dados. Caderno e Ambiente Virtual de
9. Estrutura de Aprendizagem.
dados em Java Enumerar os aspectos fundamentais para 10
pilha a utilizao de pilhas. www.cead.ifes.edu.br

Apresentar os passos necessrios para


implementao de pilhas

e-Tec Brasil 14 Tcnicas de Programao


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 Em 1995, a Sun anunciou Java
no apenas como mais uma
reunio de amigos, esses engenheiros assim a denominaram, inspirados pelo linguagem de programao,
mas como uma nova plataforma
nome da cidade de onde provinha o caf que tomavam. de desenvolvimento. Dessa
forma, a linguagem Java
comeou a ser utilizada para
Na realidade, no existe um consenso entre os escritores a respeito da ver- elaborar pginas da internet,
proporcionando contedos
dadeira histria dessa linguagem. Alguns autores afirmam que o nome Java interativos e dinmicos, iniciando
se deve a um passeio que o pessoal da Sun fez numa ilha da Indonsia com com a utilizao de applets com
imagens em movimento.
esse mesmo nome.

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


pamentos eletrnicos; entretanto, com pouco recurso financeiro desse setor
na poca e principalmente com o aparecimento da internet, novas oportuni-
dades apareceram e a empresa Sun passou a se dedicar a essa rea.

Visual J++
1.2 A linguagem Java Foi a implementao especfica
da Microsoft para o Java, em
Essa linguagem tem tido muito sucesso no mercado e diversas ferramen- ingls pronuncia-se Jay plus
tas tm surgido para manipular ou gerar cdigo Java. A prpria Microsoft plus. Otimizado para a Plata-
forma Windows, os programas
manteve o Visual J++ como uma de suas ferramentas de desenvolvimen- de J++ poderiam funcionar
to, aparentemente sem muito sucesso, sofrendo vrios processos por parte somente no MSJVM (Mquina
Virtual Java da Microsoft), que
da Sun, o que provocou seu desaparecimento na nova verso do Microsoft foi a tentativa da Microsoft para
criar um interpretador mais
Studio. Praticamente todos os principais fabricantes de software sentiram a rpido. A sintaxe, keywords, e
necessidade de lanar no mercado alguma ferramenta para manipular Java, convenes gramaticais eram os
mesmos do Java.

Aula 1 Plataforma Java 15 e-Tec Brasil


o que mostra sua fora e longevidade para os prximos anos no ambiente
das linguagens de programao mais usadas.

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


a linguagem da Sun, a empresa que a fez nascer e a mantm como uma
marca registrada. A linguagem Java da Sun tem feito muito sucesso, e uma
das coisas que a torna to atraente o fato de que programas escritos em
Java podem ser executados virtualmente em qualquer plataforma, aceitos
em qualquer tipo de computador (ou outros aparelhos), caractersticas mar-
cantes da internet. Com Java o processamento pode deixar de ser realizado
apenas no lado do servidor, como era a internet no princpio, passando a ser
executado tambm no cliente (entenda-se browser).

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


que os programadores no necessitam ficar preocupados em saber em qual
mquina o programa ser executado, uma vez que um mesmo programa
pode ser usado num PC, num Mac ou em um computador de grande porte.
muito melhor para uma empresa desenvolver um software que possa ser
executado em qualquer lugar, independentemente da mquina do cliente.

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


HTML, em que as aplicaes podem ser embutidas em documentos HTML,
podendo ser transmitidas e utilizadas na internet. Os programas escritos em
Java funcionam como um acessrio (chamado de applet) que colocado no
Applet
um software aplicativo que computador do usurio no momento que ele acessa um site qualquer, isto
executado no contexto de outro , o computador do usurio passa a executar um programa armazenado no
programa (como, por exemplo,
um web browser), um applet servidor web que transferido para sua mquina no momento do acesso.
geralmente executa funes
bem especficas. O termo foi
introduzido pelo AppleScript Num certo site o usurio pode executar um programa para a compra de um
em 1993 dados e gerador de
relatrios. No contexto de Java, veculo e, logo em seguida, ao acessar outro site, executar outro programa
applets so aplicativos que se para consultar o extrato bancrio; tudo escrito em Java e executado em sua
servem da Java Virtual Machine
(JVM) existente na mquina do mquina local.
cliente ou embutida no prprio
navegador do cliente para
interpretar o seu bytecode 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.

e-Tec Brasil 16 Tcnicas de Programao


Outro aspecto a ser observado sobre a linguagem Java sua semelhana
com a linguagem C++, tanto no que diz respeito sintaxe dos comandos
Linguagem C++
utilizados quanto na caracterstica de ser orientada a objetos. A programa- Pode-se dizer que C++ foi a
o orientada a objetos hoje universalmente adotada como padro de nica linguagem, entre tantas
outras, que obteve sucesso como
mercado, e muitas linguagens tradicionais foram aperfeioadas para imple- uma sucessora linguagem C,
mentar essa nova forma de trabalho; Java j nasceu assim. inclusive servindo de inspirao
para outras linguagens como
Java e IDL de CORBA.
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.

Aula 1 Plataforma Java 17 e-Tec Brasil


d) Suporte comunicao: uma das vantagens de Java fornecer um
grande conjunto de classes com funcionalidades especficas, ou seja,
muitos detalhes de programao so encapsulados em classes j pron-
tas. Nesse contexto, a linguagem oferece um conjunto de classes para
programao em rede, o que agiliza a implementao.

e) Acesso remoto a banco de dados: possibilita que dados sejam recu-


perados e/ou armazenados de qualquer ponto de internet. Essa uma
caracterstica muito importante, se considerado o grau de automao
proporcionado pelo Java.

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


te porque o prprio mercado afirma, refere-se aos mecanismos de segurana
que a linguagem oferece para a realizao de processos pela internet. Se
comparada a outras linguagens usadas na internet, como ASP, por exemplo,
Java possui maior segurana, com diversas classes que tratam de chaves p-
blicas e privadas para a gerao de dados criptografados.

1.4 Criao de programas em Java


Para a criao de programas em Java, torna-se necessria a digitao por
meio de uma ferramenta especfica ou ainda de um editor de textos qual-
quer, gerando o cdigo-fonte do programa.

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


do cdigo, a fim de que seja verificada a existncia de erros de sintaxe. Esse
processo chamado de compilao e realizado por meio de um compi-
lador Java, normalmente o compilador do kit de desenvolvimento da Sun.
Todo programa Java deve ser compilado, assim como ocorre com linguagens
de programao como Pascal, C, entre outras.

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


uma linguagem intermediria chamada Java bytecodes, um cdigo indepen-
dente de plataforma que decifrado por um interpretador Java; isto , para
que um programa em Java seja executado, necessrio possuir outra ferra-
menta chamada interpretador. O interpretador o responsvel por executar
o programa escrito em Java em que cada instruo do bytecode interpre-
tada, sendo executada no computador.

e-Tec Brasil 18 Tcnicas de Programao


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.

Apenas Todas as
uma vez vezes

Compilador Interpretador
Editor Java Java

Hello.java Hello.class
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 Bytecodes
So gerados pelo processo
mais erros de complicao, ser gerado um arquivo com extenso .class de compilao, especficos a
(o arquivo com os bytecodes), a ser executado por um interpretador Java qualquer mquina fsica, so
instrues para uma mquina
ou pelo browser, caso o programa seja utilizado na internet. Na maioria virtual.
das principais ferramentas de desenvolvimento, o processo de compilao
automtico, isto , ocorre durante a digitao do cdigo-fonte, ou seja, a
compilao vai sendo executada automaticamente durante a digitao da
mesma forma que o corretor ortogrfico dos editores de texto atuais.

1.5 A plataforma Java


Plataforma um ambiente de software ou hardware no qual um programa
roda. A maioria das plataformas formada pelo conjunto hardware e um Servlet um componente do
lado servidor que gera dados
sistema operacional, isto , um conjunto de hardware e software que atuam HTML e XML para a camada de
juntos. Java difere da maioria das outras plataformas porque composta apresentao de um aplicativo
Web. basicamente uma classe
apenas de um software operando com outra plataforma qualquer. na linguagem de programao
Java que dinamicamente
processa requisies e respostas,
No mundo dos computadores existem muitas plataformas, como Microsoft Win- proporcionando dessa maneira
novos recursos aos servidores. A
dows, Macintosh, OS/2, Unix e netware. Normalmente, para que um mesmo definio mais usada considera-o
programa funcione em diferentes plataformas, necessrio que ele seja compi- extenso de servidores.

lado separadamente; isto , ele deve ser compilado na plataforma em que ser
executado. Uma aplicao que executada sobre uma plataforma pode no fun-
cionar sobre outra, porque o arquivo foi criado para uma plataforma especfica.

Aula 1 Plataforma Java 19 e-Tec Brasil


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.

1
Java 2 Platform
Servers 2

Desktop 3
machines
Optional High-end 4
Packages consumer
devices
Low-end
Optional consumer 5
Packages devices

Java 2 Smart-
Enterprise Personal Profile cards
Edition Java 2
(J2EE) Standard
Edition Foundation Profile MIDP
(J2SE)
CDC CLDC Java Card
APIS

Java Virtual Machine KVM CardVM

Java 2 Micro Edition (j2ME)


Figura 1.2: Plataforma Java
Fonte: Furgeri (2008)

Enquanto cada plataforma possui sua prpria implementao da mquina virtu-


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

e-Tec Brasil 20 Tcnicas de Programao


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 infinidade de ferramentas que pode deixar o
desenvolvedor em dvida na hora de escolher o ambiente de trabalho. No
momento, as ferramentas que mais se destacam so Netbeans e Eclipse; no
entanto, existem muitas outras.

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


vac), um interpretador (Java), um visualizador de applets (appletviewer),
bibliotecas de desenvolvimentos (packages), um depurador de programas
(JDB) e diversas documentaes (javadoc). Essa ferramenta da Sun no for-
nece um ambiente visual de desenvolvimento, porm trata-se do principal
padro a ser seguido, visto a enorme funcionalidade que possui aliada
facilidade de utilizao.

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


necessria o bloco de notas do Windows; entretanto, qualquer editor de
textos disponvel na mquina do leitor pode ser utilizado.

1.6.1 Instalao de kit de desenvolvimento da Sun


Uma das maiores dificuldades dos iniciantes em Java conseguir instalar cor-
retamente o kit de ferramentas da Sun, uma vez que nem todo o processo
ocorre de forma automtica como na maioria dos instaladores de software.
Por esse motivo, importante dedicar um tempo a esse processo, mesmo
sabendo que existem muitas variaes, dependendo do sistema operacional
em que a ferramenta ser instalada.

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


das em sua mquina todas as ferramentas de desenvolvimento. Por isso,
apresentamos a instalao das ferramentas mnimas necessrias criao de
aplicaes em Java.

A Sun fornece download gratuito de sua ferramenta no endereo http://


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

Aula 1 Plataforma Java 21 e-Tec Brasil


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 final do nome normalmente se referem ao update. Ao instalar o JDK,
so criadas diversas pastas, como as mostradas na Figura 1.4.

e-Tec Brasil 22 Tcnicas de Programao


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 configuraes das variveis de ambiente, as quais dependem


do sistema operacional em que voc est instalando o JDK. Os proce-
dimentos apresentados em seguida se referem configurao para o
ambiente Windows.

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


trole. Defina as variveis seguindo os procedimentos:

a) Acesse o painel de controle.

b) Abra o item sistema.

Aula 1 Plataforma Java 23 e-Tec Brasil


Figura 1.5: Janela de configurao 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 configurao 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 definidas em variveis do sistema em vez
de variveis de usurio, como sugerido. A diferena que, quando
definidas em variveis de usurios, elas funcionam somente para o seu
usurio, e em variveis de sistema funcionam para todos os usurios.

e-Tec Brasil 24 Tcnicas de Programao


5. Surge a janela nova varivel de usurio. No campo nome da vari-
vel coloque o nome da varivel que ser includa, por exemplo, JAVA_
HOME, e no campo valor da varivel coloque o caminho referente
varivel que voc nomeou, C:\arquivo de programas\java\jdk1.6.0_21
(sem as aspas), e clique no boto OK.

6. Faa o mesmo procedimento de incluso com as variveis path e class-


path, definindo os seus nomes e incluindo os valores correspondentes
(Figura 1.7):

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


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

Figura 1.7: Janela de configurao da varivel de ambiente


Fonte: Printscreen Windows 2000 e XP

7. Verifique se a instalao foi realizada com sucesso. Entre em um diretrio


qualquer no prompt de comando e digite javac seguido da tecla Enter.
Se aparecer uma mensagem como javac no reconhecido como um Como sugesto de link para
instalao do Java, utilize o
comando interno, porque o Java no foi instalado corretamente Se endereo: http://www.youtube.
isso ocorrer, refaa a configurao, verificando principalmente as confi- com/watch?v=wvzUm0ys0vM&
feature=related
guraes das variveis de ambiente. Se ao digitar javac aparecer uma
tela com instrues de help do Java, significa que a instalao e a confi-
gurao foram realizadas com sucesso.

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


que se funciona.

Aula 1 Plataforma Java 25 e-Tec Brasil


Figura 1.8: Janela de verificao 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 configuraes avan-


adas do sistema, em seguida no boto variveis de ambiente. Conti-
nue executando o passo 4 anterior referente ao Windows XP/2000.

Observaes:

Em funo de constantes atualizaes do JDK, o leitor deve atentar para o


nmero da verso da ferramenta carregada no processo de download, de
maneira a fazer sua correta instalao. O mesmo nome da pasta principal
(exatamente o mesmo nome) deve ser inserido nas variveis de ambiente.
O trecho em negrito no cdigo anterior ser varivel, dependendo da
verso instalada.

e-Tec Brasil 26 Tcnicas de Programao


Ateno especial deve ser dada quando a instalao for realizada no
Windows Vista. Se o firewall nativo estiver ativado, talvez seja necessrio
desbloquear o Java. Se o Java estiver bloqueado, pode ocorrer um erro
referente violao de acesso por parte da mquina virtual quando ele
for executado.

Outro ponto ser observado com relao ao Vista refere-se configura-


o das variveis de ambiente, as quais tiveram de ser definidas com o
caminho reduzido do modo MS-DOS> por exemplo, o contedo da vari-
vel path (c:\arquivos de programas\java\jdk1.6.0_03\bin) foi definido
como C:\arquiv~1\java\jdk1.6.0\bin: caso contrrio, o compilador no
seria localizado. O mesmo procedimento foi realizado para as variveis
JAVA_HOME e classpath.

1.7 Primeiro contato com o 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 definida pela Sun,
todo nome de classe inicia com letra maiscula.

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


salve-o com esse mesmo nome em uma pasta.
Como sugesto de link, utilize o
endereo: http://www.youtube.
com/watch?v=xGM9uBOvMgQ
&feature=related

Figura 1.9: Exemplo01


Fonte: Elaborada pelo autor

Aula 1 Plataforma Java 27 e-Tec Brasil


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.

e-Tec Brasil 28 Tcnicas de Programao


Resumo
Nesta aula falamos sobre os conceitos iniciais de Java, como configurao e
instalao. Abordamos o conceito de programao em Java (como variveis
de ambiente, classes, padres, etc.), assim como o funcionamento do seu
ambiente de desenvolvimento.

Atividades de 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?

Aula 1 Plataforma Java 29 e-Tec Brasil


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.
Aula 2 Aspectos fundamentais
sobre Java

Objetivos

Realizar o primeiro contato com Java.

Demonstrar declarao de dados.

Verificar os conversores de tipo em Java.

2.1 Tipos de dados


Assim como em outras linguagens, antes de utilizar variveis necessrio
saber definir um tipo de dado. Os tipos de dados em Java so portteis entre
todas as plataformas de computadores que suportam essa linguagem.

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


que para uma determinada plataforma esse nmero seja armazenado com
16 bits e em outra 32 bits. Em Java isso no ocorre, uma vez que um tipo de
dado ter sempre a mesma dimenso.

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


veis so:

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

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

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

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

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

Aula 2 Aspectos fundamentais sobre Java 31 e-Tec Brasil


Float: 4 bytes.
Double: 8 bytes.

Quadro 2.1: Os tipos primitivos em Java

Tipo de dados Definio Tipo Tamanho (bits) Exemplos

Letras, nmeros e
Literal (caractere) char 16 a, ?, *
smbolos

byte 8 0, 1, 23

Nmeros inteiros int 32 0, 1, 23


Inteiro
positivos ou negativos short 16 0, 1, 23

long 64 0, 1, 23

0.34
float 32
Nmeros com casas 8.65
Real (ponto flutuante) decimais, positivos ou
negativos 0.34
double 64
8.65

Verdadeiro (1) true


Lgico (Booleano) boolean 8
ou falso (0) false

Fonte: Furgeri (2008)

Identificador 2.2 Definio de variveis e constantes


a localizao da memria
capaz de armazenar o valor de Uma varivel ou constante um tipo de identificador cujo nome, que
um certo tipo, para o qual se selecionado pelo programador, associado a um valor que pertence a um
d um nome que descreve seu
significado ou propsito. tipo de dado.

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


no podem utilizar palavras reservadas do Java.

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


nido antes de serem utilizados no programa, ou seja, eles devem ser obriga-
toriamente declarados, independentemente do ponto do programa, seja no
meio, no incio ou no final, desde que antes de sua utilizao no programa.

Essa caracterstica do identificador em Java difere da maioria das linguagens


de programao. A linguagem Pascal, por exemplo, possui um local exclusi-
vo para declarao de variveis.

Uma varivel precisa ser declarada para poder ser utilizada. Opcionalmente,
ela pode ser inicializada j no momento de sua declarao. O cdigo da Fi-
gura 2.1 mostra alguns exemplos de manipulao de variveis em Java.

e-Tec Brasil 32 Tcnicas de Programao


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 final da linha) ou com /* */
(para comentar tudo o que estiver entre o /* e o */).

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


Exemplo02 dever ser:

12
4
x

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

Quando for necessrio definir uma nova varivel com um tipo de dado di-
ferente, por conveno, utiliza-se uma nova linha. O mais comum entre os
programadores Java definir um tipo de dados e declarar uma lista com um possvel criar mais de uma
varivel do mesmo tipo na
ou mais nomes de variveis desejadas desse tipo. Nessa lista os nomes so mesma linha, separando-as por
separados por vrgulas e a declarao terminada por ; (ponto e vrgula). uma vrgula. Exemplo: int x, y, z;

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:

Aula 2 Aspectos fundamentais sobre Java 33 e-Tec Brasil


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

quando o nome da varivel tiver mais de uma palavra, a primeira letra da


segunda palavra em diante deve ser maiscula. Todos os outros caracte-
res devem ser minsculos.

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

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


final da maioria das linhas de cdigo.

2.3 Declarao de 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 fi-
nal. Essas constantes so usadas para armazenar valores fixos, geralmente,
definidos no incio de uma classe. Por conveno os nomes de constantes
devem ser escritos em letras maisculas. Exemplos: na Matemtica temos a
constante PI cujo valor 3,1416 (isto , p=3,1416); na Fsica temos o valor
da acelerao da GRAVIDADE da Terra (g=9,81 m/s2).

Para a declarao de constantes em Java utiliza-se a palavra reservada final


antes da definio do tipo de varivel:

final double PI=3.14;


final double GRAVIDADE=9.81;

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


classe, o compilador gera uma mensagem de erro. No obrigatrio iniciali-
zar o contedo de uma varivel final no momento de sua declarao

2.4 Comentrios
Os comentrios so linhas adicionadas ao programa que servem para
facilitar seu entendimento por parte do programador, ou ainda por outra
pessoa que o consulte. Essas linhas no afetam o programa em si, pois no
so consideradas parte do cdigo. O Java aceita trs tipos de comentrio:
de linha, de mltiplas linhas e de documentao.

e-Tec Brasil 34 Tcnicas de Programao


Para inserir comentrios de linha nica, utiliza-se // (duas barras) em qual-
quer local do programa e tudo o que tiver escrito depois desse sinal e na
mesma linha ser considerado um comentrio.

Para inserir comentrios que envolvam vrias linhas, utiliza-se /* (barra aste-
risco) para marcar o incio e */ (asterisco barra) para o final, ou seja, tudo o
que estiver entre esses dois sinais ser considerado comentrio.

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


tem o propsito de possibilitar a documentao do programa por meio de
um utilitrio (javadoc) fornecido pela Sun junto com o SDK.

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


rios no aparecem na execuo do programa.

Figura 2.2: 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-

Aula 2 Aspectos fundamentais sobre Java 35 e-Tec Brasil


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.

e-Tec Brasil 36 Tcnicas de Programao


Quadro 2.3: Operadores relacionais em Java

Significado 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

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

Aula 2 Aspectos fundamentais sobre Java 37 e-Tec Brasil


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;
float y = x;
double z = y;

e-Tec Brasil 38 Tcnicas de Programao


b) converso explcita quando o programador precisa explicitar no cdi-
go que um valor ser convertido de um tipo para outro. No caso de um
nmero real para um inteiro, por exemplo, pode haver perda na preciso
do nmero.

Veja o exemplo a seguir:

float a = 9;
float b = a/8; // b = 1.125
int c = (int)b; /* Aqui estamos forando a converso para um nmero
inteiro. Nesse caso, a varivel c armazenar apenas a parte inteira da
varivel b, ou seja, 1 */
System.out.println(b);
System.out.println(c);

O resultado da execuo deste trecho de cdigo :

1.125
1

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

Seguindo o sentido das flechas da Figura 2.8 vemos os tipos que podem ser
implicitamente convertidos em outros. Seguindo o sentido contrrio, vemos
os tipos que precisam ser convertidos explicitamente:

short

byte char

int

long

float

double

Figura 2.8: Converses possveis entre tipos primitivos em Java


Fonte: Elaborada pelo autor

Aula 2 Aspectos fundamentais sobre Java 39 e-Tec Brasil


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.

e-Tec Brasil 40 Tcnicas de Programao


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

Os mtodos disponveis para a entrada de dados na classe java.lang.System


so bastante precrios. Os trs principais mtodos so:

a) read(): l um byte;

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

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

A leitura de bytes equivale entrada de caracteres simples, o que pouco


confortvel quando estamos trabalhando com valores numricos (inteiros
ou reais), strings ou outra informao diferente de caracteres, pois exige que
cada caractere fornecido pelo usurio seja testado e concatenado com os
demais para a formao de um determinado valor.

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


classe, que chamaremos aqui de Entrada, que contm trs mtodos para
leitura de valores digitados pelo usurio:

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

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

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

No cdigo da Figura 2.11, utilizamos a classe DatainputStream que per-


tence ao pacote java.io. Entenda o pacote como um grupo de classes do
mesmo tipo armazenadas em uma pasta qualquer. O asterisco presente em
import java.io.* indica que todas as classes do pacote java.io devem
ser carregadas.

Aula 2 Aspectos fundamentais sobre Java 41 e-Tec Brasil


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 float e imprima o valor convertido. Qual o
resultado impresso na tela?

e-Tec Brasil 42 Tcnicas de Programao


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

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

7. Crie variveis que contenham o primeiro termo e a razo de uma Pro-


gresso Aritmtica, alm de um inteiro n qualquer (que indique o nme-
ro de termos dessa P.A.). Utilizando os valores criados, calcule o n-simo
termo da progresso e a soma de seus n primeiros elementos.

8. Agora, crie variveis que contenham o primeiro termo e a razo de uma


Progresso Geomtrica, e um inteiro n qualquer (que indique o nmero
de termos dessa P.G.). Calcule o n-simo termo da progresso e a soma
de seus n primeiros elementos.

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


e calcule seu volume.

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

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

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

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

Aula 2 Aspectos fundamentais sobre Java 43 e-Tec Brasil


Aula 3 Estruturas condicionais
e de controle

Objetivos

Utilizar corretamente as estruturas condicionais.

Verificar as diferentes estruturas de repetio.

Verificar aplicaes prticas.

3.1 Comandos 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 significa SE) executa um bloco de instrues
caso uma determinada condio seja verdadeira. A clusula ELSE (que em
portugus significa SENO) executa um bloco de instrues caso a condio
seja falsa. A sintaxe do IF-ELSE no Java a seguinte:

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

Aula 3 Estruturas condicionais e de controle 45 e-Tec Brasil


O trecho de cdigo a seguir, por exemplo, no imprime nada na tela, pois
37 no maior que 40:

int x = 37;
if ( x > 40 ) {
System.out.println(x);
}

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

int x = 15;
if ( x < 18 ) {
System.out.println(Entrada permitida.);
}
else {
System.out.println(Entrada proibida.);
}

Podemos tambm concatenar expresses booleanas com os operadores lgi-


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

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


sagem de acordo com sua idade (nesse caso, no pagam passagens pessoas
com at 2 anos ou a partir de 60 anos):

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


System.out.println(Usurio deve pagar passagem.);
}
else {
System.out.println(Passagem gratuita.);
}

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


que o anterior:
Como sugesto de link, utilize o
endereo: http://www.youtube.
com/watch?v=dijtgZiGtnA if ( x <= 2 || x >= 60 ) {
System.out.println(Passagem gratuita.);
}
else {
System.out.println(Usurio deve pagar passagem.);
}

e-Tec Brasil 46 Tcnicas de Programao


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 eficiente no caso de grandes desvios
condicionais. Exemplo:

switch (x) {
case 0: System.out.println(zero); break;
case 1: System.out.println(um); break;
case 2: System.out.println(dois); break;
case 3: System.out.println(tres); break;
case 4: System.out.println(quatro); break;
case 5: System.out.println(cinco); break;
case 6: System.out.println(seis); break;
case 7: System.out.println(sete); break;
case 8: System.out.println(oito); break;
case 9: System.out.println(nove); break;
default : System.out.println(Nmero desconhecido);
}

3.2 Excees em Java


O Java oferece duas importantes estruturas para o controle de erros muito
semelhantes s estruturas existentes na linguagem C++: try-catch e try-finally.
Ambas tm o propsito de evitar que o programador tenha que realizar testes
de verificao e avaliao antes da realizao de certas operaes, desviando,
automaticamente, o fluxo de execuo para rotinas de tratamento de erro.
Utilizando essas diretivas (detalhadas nas prximas sees) delimita-se um tre-
cho de cdigo que ser monitorado, automaticamente, pelo sistema.

3.3 Uso da estrutura try 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 especfico desse erro. A sintaxe a seguinte:

Aula 3 Estruturas condicionais e de controle 47 e-Tec Brasil


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, significa que o argumento no
um nmero inteiro vlido. A exceo usada, nesse caso, o java.lang.
NumberFormatException.

Outro erro de que podemos tratar o caso de no ser fornecido o argumento des-
se mesmo programa, utilizando a exceo ArrayIndexOutOfBoundsException.
Nesse caso, ocorrer um erro ao tentarmos acessar o ndice 0 do vetor (que est
vazio). O cdigo a seguir mostra como fazemos esses dois tratamentos com o
TRY-CATCH:

int j = 10;
try {
while (j > Integer.parseInt(args[0])){
System.out.println(+j);
j--;
}
}
catch (ArrayIndexOutOfBoundsException e){
System.out.println(No foi fornecido um argumento.);
}
catch (java.lang.NumberFormatException e)
{
System.out.println(Argumento no um inteiro vlido.);
}

Podem existir inmeros blocos catch no tratamento de erros (cada um para


um tipo de exceo).

e-Tec Brasil 48 Tcnicas de Programao


3.4 Uso da estrutura try-finally
Com o TRY-FINALLY, podemos assegurar que uma rotina de finalizao seja
garantidamente executada mesmo que ocorra um erro (isto , o trecho de
cdigo contido na clusula FINALLY executado sempre que o programa
passa pela clusula TRY). A sintaxe do TRY-FINALLY a seguinte:

try {
<cdigo normal>;
} finally {
<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 finally.

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

public class TratamentoDeErro{


public static void main(String[] args ){
int[] array = {0, 1, 2, 3, 4, 5}; // array de 6 posies
try{
for(int i=0; i<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);
}
finally{
System.out.println(Isto SEMPRE executa!);
}
}
}

Aula 3 Estruturas condicionais e de controle 49 e-Tec Brasil


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 modificar 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++) {

e-Tec Brasil 50 Tcnicas de Programao


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

Como sugesto de link, utilize o


endereo: http://www.youtube.
com/watch?v=8krfObWwZ8I&f
Figura 3.2: Execuo do programa Exemplo0307 eature=related
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.

Aula 3 Estruturas condicionais e de controle 51 e-Tec Brasil


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

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


de cada lado.

8. Imprima o fatorial de um nmero inteiro qualquer.

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


nmero.

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

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

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

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

14. Escreva um programa que verifique se uma nota pssima (nota=1),


ruim (2), regular (3), boa (4), tima (5) ou nenhuma delas (nota invlida).

15. Crie trs variveis inteiras e um trecho de cdigo que descubra a maior
entre elas. Imprima as trs variveis em ordem crescente. Verifique se as
mesmas trs variveis podem ser lados de um tringulo (ou seja, nenhu-
ma pode ser maior que a soma das outras duas).

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

17. Crie variveis contendo as notas de trs provas feitas por um aluno. Cal-
cule a mdia parcial do aluno (mdia aritmtica simples) e verifique se
ele passou direto. Se no, calcule sua mdia final (peso 4 para a mdia
parcial e peso 6 para uma outra varivel contendo a nota de sua prova
final) e verifique se ele ficou reprovado.

e-Tec Brasil 52 Tcnicas de Programao


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 define duas constantes matemticas, sendo Math.PI o va-


lor de pi (p= 3,14159265358979323846) e Math.E que se refere ao valor
da base e para logaritmos naturais (e=2,7182818284590452354).

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

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

Aula 4 Funes matemticas e de string 53 e-Tec Brasil


nas a parte inteira do nmero verificado. O tipo double o nico que pode
ser utilizado, uma vez que o mtodo ceil no aceita o tipo float. 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.floor(<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

e-Tec Brasil 54 Tcnicas de Programao


Figura 4.4: Execuo do programa Exemplo0402
Fonte: Elaborada pelo autor

4.1.3 Mtodo max


Utilizado para verificar o maior valor entre dois nmeros, que podem
ser do tipo double, float, int ou long. A sua sintaxe a seguinte: Math.
max(<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, flo-
at, int ou long. A sua sintaxe a mesma do mtodo max, mudando apenas
para Math.min mostrada a seguir:

Aula 4 Funes matemticas e de string 55 e-Tec Brasil


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

e-Tec Brasil 56 Tcnicas de Programao


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 Por exemplo, para simular o


sorteio de nmeros entre 0 e 99
utilizado para gerar valores de forma aleatria. Toda vez que o mtodo random para um jogo de loteria qualquer,
chamado, ser sorteado um valor do tipo double entre 0 e 1 (o valor 1 nunca torna-se necessrio o sorteio de
nmeros inteiros aleatrios no
sorteado). Nem sempre essa faixa de valores suficiente numa aplicao real. intervalo de 0 a 99.

Aula 4 Funes matemticas e de string 57 e-Tec Brasil


Para que esses nmeros possam ser sorteados, preciso utilizar o operador
de multiplicao (*) em conjunto com o mtodo random. Com isso torna-se
possvel definir o intervalo em que o nmero ser sorteado. O conversor (int)
tambm pode ser usado para truncar a parte do ponto flutuante (a parte de-
pois do ponto decimal) para que um nmero inteiro seja gerado, da seguinte
forma: (int) (math.random() * 100).

Com isso seriam gerados nmeros inteiros entre 0 e 99, atendendo plena-
mente necessidade exposta.

O Exemplo0407 demonstra o uso do mtodo random para simular a ge-


rao de cinco cartes de loteria com seis nmeros cada (Figura 4.13).

Figura 4.13: 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.

e-Tec Brasil 58 Tcnicas de Programao


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 definir um modelo conhecido pelo


nome de pattern.

Considere pattern como o estilo de formatao que ser apresentado sobre


um valor numrico.

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


matao deve ser usado para apresentar um nmero.

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


senta os caracteres mais usados.

Quadro 4.1: Caracteres mais utilizados na classe DecimalFormat

Caractere Significado
Imprime o dgito normalmente, ou caso ele no exista, coloca 0 em seu lugar.
0 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.

Aula 4 Funes matemticas e de string 59 e-Tec Brasil


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 definio do pattern no mo-
mento da inicializao do objeto df. Uma definio vlida pode ser:
DecimalFformat df = decimalformat (000). possvel observar
que a definio do pattern pode ser realizada dentro dos parnteses.

Linha 8: contm a definio do pattern pelo mtodo applypattern


(df.appypattern(000). Essa instruo define que todos os nmeros
impressos a partir do objeto df sero formatados com trs dgitos,
mesmo que eles possuam menos que isso, conforme exemplificado
no Quadro 4.1. As linhas 12,16, 20, 24 e 28 redefinem o pattern,

e-Tec Brasil 60 Tcnicas de Programao


aplicando novas formataes ao objeto df, isto , aos nmeros que
sero impressos pelo mtodo format.

Linha 29: apresenta uma maneira de formatar um nmero a partir de


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

O resultado da execuo do programa Exemplo0408 aparece na Figura 4.16

4.2 Funes com strings


Uma string um tipo que corresponde unio de um conjunto de caracte-
res.

Em Java, as strings so instncias da classe String, isto , geram objetos que


possuem propriedades e mtodos, diferentemente dos tipos primitivos com
int, float, double, etc.

Essas strings podem ser manipuladas de vrias formas. Por exemplo, pos-
svel verificar seu comprimento, retirar um pedao dela, acessar ou mudar
caracteres individuais. As strings constituem uma cadeia de caracteres entre
aspas. Exemplo: Frase = linguagem Java da mesma forma que as fun-
es matemticas, existem diversos mtodos para manipulao de strings,
os quais acompanham a seguinte sintaxe:

<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- Na prtica, o mtodo length
muito utilizado quando
tes. Esse mtodo retorna sempre um valor do tipo int. necessrio ler uma varivel
string do comeo at o final,
tanto para a busca de caracteres
Veja sua sintaxe: < string>.length() ou palavras quanto para a
criao de banners, algo
extremamente usado na internet.
O Exemplo0410 mostra o uso do mtodo length conforme Figuras 4.17 e
4.18 a seguir.

Aula 4 Funes matemticas e de string 61 e-Tec Brasil


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 especificado entre parnteses. Esse ndice refere-se posio do
caractere na string, sendo 0 (zero) o ndice do primeiro caractere, 1 (um) o
do segundo e assim por diante.

O mtodo charAt til quando for necessrio verificar a existncia de um


caractere na string.

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

e-Tec Brasil 62 Tcnicas de Programao


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

Aula 4 Funes matemticas e de string 63 e-Tec Brasil


nica observao se refere ao fato de que esses mtodos no alteram o valor
original da string. Mesmo aplicando os mtodos das linhas 6 e 7, o contedo
das variveis palavra1 e palavra2 permanece o mesmo, isto , a transfor-
mao ocorre apenas com fins de impresso em tela.

Se for necessrio alterar o contedo de uma varivel string, substituindo seu


valor original pelo transformado, a prpria varivel deve receber o valor de
sua transformao, por exemplo: palavra1=palavra.toLowerCase().

Figura 4.21: 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 especificados, funcionando basicamente da mesma forma que o mtodo
charAt, dentro de um lopping, conforme indica a seo 4.2.2. A sintaxe de
substring a seguinte: < string>.substring(< ndice inicial>,[<indice final>]).

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


dos caracteres (da mesma forma que charAt, o ndice inicia-se em 0). O
segundo argumento opcional e especifica o ndice final, em que termina
a cpia dos caracteres; entretanto, o ndice final deve especificar um ndice
alm do ltimo caractere.

Para melhor entendimento do mtodo substring, considere a varivel frase


com o seguinte contedo:

e-Tec Brasil 64 Tcnicas de Programao


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

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

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


apresentar alguns exemplos:

1. String x= frase. substring (10) - x Recebe o contedo JAVA , pois ao


passar apenas o primeiro argumento para o mtodo substring, ele re-
torna da posio informada (no caso 10, a posio da letra J) at o ltimo
caractere da string.

2. String x= frase. substring (3) - x Recebe o contedo GUAGEM JAVA


isto , do caractere de ndice 3 at o ltimo caractere da string frase.

3. String x= frase. substring (3,9) - x Recebe o contedo GUAGEM , isto


, do caractere de ndice 3 at o caractere de ndice 8 (9-1).

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


caractere de ndice 0 at o caractere de ndice 0 (1-1).

5. String x= frase. substring (10,14) - x Recebe o contedo JAVA , isto ,


do caractere de ndice 10 at o caractere de ndice 13 (14-1). Observe
que o resultado deste exemplo igual ao do exemplo 1.

Se os ndices especificados estiverem fora dos limites da string, gerado o


erro stringlndexOutOfBoundsException. No exemplo, se voc usar frase.
substring(10,20) ocorre o erro citado, uma vez que no existe ndice 20.

O Exemplo0413 apresenta um cdigo que usa o mtodo substring para


separar as palavras de uma frase pela manipulao de seus ndices, ilustrado
nas Figuras 4.23 e 4.24 a seguir.

Aula 4 Funes matemticas e de string 65 e-Tec Brasil


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 final de uma determinada string. So removidos apenas os espaos do
incio e do fim da string.

No so removidos os espaos entre as palavras.

Sua sintaxe a seguinte:

<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

e-Tec Brasil 66 Tcnicas de Programao


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


final. Quando no utilizado o mtodo trim, os espaos permanecem na
string: em contrapartida, ao usar trim, os espaos desaparecem.

O mtodo frase. trim () no retirou, realmente, os espaos em branco da


varivel, ou seja, apenas foi mostrado na tela um trim da varivel, que con-
sequentemente a exibe sem os espaos em branco, mas a varivel em si
ainda continua com os espaos no seu incio e no seu final.

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


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

4.2.6 Mtodo replace


utilizado para substituio de caracteres, ou grupo de caracteres, em uma de-
terminada string. Para seu funcionamento, necessrio informar o(s) caractere(s)
que deseja substituir e por qual(is) caractere(s) ele(s) ser(o) substitudos(s).
Caso no haja na string nenhuma ocorrncia do caractere a ser substitudo, a
string original retornada, isto , no ocorre nenhuma alterao.

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

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


u) e a linha 10 substitui uma palavra por outra (na por NA). Da mes-
ma forma que trim, o mtodo replace no altera o contedo da varivel.
Para fazer com que uma varivel receba o resultado de uma troca de carac-
teres, faa como apresentado na linha 6.

Para melhor compreenso dos resultados observe o Exemplo0415 nas Figu-


ras 4.27 e 4.28 a seguir.

Aula 4 Funes matemticas e de string 67 e-Tec Brasil


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.

e-Tec Brasil 68 Tcnicas de Programao


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

Aula 4 Funes matemticas e de string 69 e-Tec Brasil


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) verificamos que a linha 5 contm o


texto que ser usado nas pesquisas. A linha 6 declara um caractere a que
ser buscado no texto. As formas de busca so as seguintes:

Figura 4.31: 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.

e-Tec Brasil 70 Tcnicas de Programao


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

Ja

Jav

Java

Jav

Ja

Aula 4 Funes matemticas e de string 71 e-Tec Brasil


Aula 5 Criando funes

Objetivos

Identificar 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,
Mtodo
isto , so pequenos blocos que, juntos, compem um sistema maior. Os uma sub-rotina que pode
ser invocada toda vez que sua
mtodos recebem um determinado nome e podem ser chamadas vrias ve- funcionalidade for necessria em
zes durante a execuo de uma classe. um trecho da classe ou ainda a
partir de outra 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 verificao 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:

Qualificador tipo_retorno_metodo nome_metodo ([lista de argumentos])


{
Cdigo do corpo;
}

Aula 5 Criando funes 73 e-Tec Brasil


O qualificador pode ser do tipo:

Qualificador a) Public: o mtodo visvel por qualquer classe. o qualificador mais aber-
conhecido tambm pelo
nome de modificador e define a to no sentido de que qualquer classe pode usar esse mtodo.
visibilidade do mtodo. Trata-se
de uma forma de especificar se b) Private: o mtodo visvel apenas pela prpria classe. o qualificador
o mtodo visvel apenas para
a prpria classe em que est mais restritivo.
declarada, ou pode ser visualizado
e utilizado por classes externas. 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 definidos como void.

Dessa forma, todos os mtodos sem retorno observam a seguinte estrutura:

Qualificador void nome_mtodo ([lista de argumentos])


{
Cdigo do corpo;
}

e-Tec Brasil 74 Tcnicas de Programao


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

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.

Aula 5 Criando funes 75 e-Tec Brasil


Quando declarada a palavra reservada void, significa 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.

e-Tec Brasil 76 Tcnicas de Programao


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

Aula 5 Criando funes 77 e-Tec Brasil


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

e-Tec Brasil 78 Tcnicas de Programao


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.

Aula 5 Criando funes 79 e-Tec Brasil


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

e-Tec Brasil 80 Tcnicas de Programao


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

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 Definio 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 Os arrays so utilizados para
armazenar um conjunto que
variveis, possvel a declarao de apenas uma: trata-se de uma varivel tenham o mesmo tipo de dado
definida como um vetor (array) de nomes. primitivo ou a mesma classe.

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

Aula 6 Utilizando vetores e matrizes 83 e-Tec Brasil


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.

e-Tec Brasil 84 Tcnicas de Programao


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

Aula 6 Utilizando vetores e matrizes 85 e-Tec Brasil


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

e-Tec Brasil 86 Tcnicas de Programao


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

Aula 6 Utilizando vetores e matrizes 87 e-Tec Brasil


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.

e-Tec Brasil 88 Tcnicas de Programao


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 indefinida quantidade de nmeros


inteiros pela linha de execuo e no final 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 final verifique 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 final mostre a mdia da classe e a mdia da escola em geral.

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 Definio
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 fluxo
(Stream), permitindo a manipulao de diferentes formatos de arquivo, en- Arquivo
um conjunto de dados
tre eles: txt, data, gif. armazenados em uma memria
secundria no voltil que pode
ser recuperado pelo programa a
qualquer instante.
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.

Aula 7 Manipulando arquivos 91 e-Tec Brasil


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.

e-Tec Brasil 92 Tcnicas de Programao


Figura 7.1: Exemplo1101
Fonte: Elaborada pelo autor

Figura 7.2: Execuo do programa Exemplo1101


Fonte: Elaborada pelo autor

Aula 7 Manipulando arquivos 93 e-Tec Brasil


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
O pacote java.io necessrio texto, conforme indica a Figura 7.2. Ao pressionar o boto Gravar, o con-
para a manipulao de arquivos
de fluxo. 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:

e-Tec Brasil 94 Tcnicas de Programao


a) criar um arquivo de fluxo 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 fica
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 verifique que o cur-


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

Aula 7 Manipulando arquivos 95 e-Tec Brasil


Figura 7.3: Exemplo1102
Fonte: Elaborada pelo autor

Figura 7.4: Execuo do programa Exemplo1102


Fonte: Elaborada pelo autor

e-Tec Brasil 96 Tcnicas de Programao


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 final do arquivo for encontrado, retornado o valor -1.

Aula 7 Manipulando arquivos 97 e-Tec Brasil


Tambm verificado se o ponteiro j se encontra no final 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.

e-Tec Brasil 98 Tcnicas de Programao


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 Definio 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 flexvel, 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:

Aula 8 Estruturas de dados em Java: listas 99 e-Tec Brasil


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


conjunto de operaes sobre os objetos do tipo lista. O conjunto de opera-
es pode ser definido 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:

e-Tec Brasil 100 Tcnicas de Programao


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.

Itens

primeiro = 0 x1
1 x2
.
.
.

ltimo - 1 xn

.
.
.

maxTam - 1

Figura 8.1: Lista utilizando arranjo


Fonte: Elaborada pelo autor

A estrutura lista utilizando arranjo uma possvel implementao para as


nove operaes definidas 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.

Aula 8 Estruturas de dados em Java: listas 101 e-Tec Brasil


Figura 8.2: Lista com arranjo
Fonte: Elaborada pelo autor

Os itens so armazenados em um arranjo de tamanho suficiente para arma-


zenar a lista.

e-Tec Brasil 102 Tcnicas de Programao


O i-simo item da lista est armazenado na i-sima posio do arranjo,
1 i <ltimo.

A constante MaxTam define 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 simplificar as operaes sobre a lista (Figura 8.3).

Lista x1 ... xn ni1

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 definidas anteriormente para o tipo
lista so mostradas no exemplo mostrado na Figura 8.4 a seguir.

Aula 8 Estruturas de dados em Java: listas 103 e-Tec Brasil


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.

e-Tec Brasil 104 Tcnicas de Programao


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.

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 Definio 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 modelo padro da pilha o
de um monte de pratos em uma
prateleira, sendo conveniente
O ltimo item inserido o primeiro item que pode ser retirado da retirar pratos ou adicionar novos
pratos na parte superior.
lista. So as chamadas listas LIFO (last-in, first-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.

Aula 9 Estruturas de dados em Java: pilha 107 e-Tec Brasil


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

e-Tec Brasil 108 Tcnicas de Programao


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.

Itens

primeiro = 0 x1

1 x2

.
.
.

topo - 1 xn

.
.
.

maxTam - 1

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

Aula 9 Estruturas de dados em Java: pilha 109 e-Tec Brasil


ni1

x
1

..
.

x
1-1

topo xn

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.

e-Tec Brasil 110 Tcnicas de Programao


Figura 9.4: Exemplo de pilha com estrutura autoreferenciada
Fonte: Elaborada pelo autor

Aula 9 Estruturas de dados em Java: pilha 111 e-Tec Brasil


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
eficincia? Por qu?

3. possvel resolver o problema da representao por alocao sequencial


para mais de duas pilhas?

e-Tec Brasil 112 Tcnicas de Programao


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

Referncias 113 e-Tec Brasil


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

e-Tec Brasil 114 Tcnicas de Programao


Tcnicas de Programao
Antonio Luiz Santana

Curso Tcnico em Informtica

Вам также может понравиться