Como Funciona A Linguagem Java

Fazer download em doc, pdf ou txt
Fazer download em doc, pdf ou txt
Você está na página 1de 14

Como funciona a linguagem Java

por Marshall Brain - traduzido por HowStuffWorks Brasil

Introdução
Já parou para imaginar como funcionam os programas de computador? Já quis aprender
como criar seus próprios programas? Se você tem 14 anos de idade e gostaria de
aprender a criar seu primeiro jogo, ou se tem 70 e faz 20 anos que está curioso sobre
programação de computadores enfim não importa a idade, este artigo foi feito
especialmente para você. Nesta edição, ensinaremos como os programas de computador
funcionam. Vamos começar com a linguagem de programação Java.
E para ensiná-lo, vamos supor várias coisas:
 presumiremos que você não saiba nada sobre programação. No entanto, se já
conhece um pouco sobre isso, a primeira parte deste artigo vai parecer fácil
demais para você. Sinta-se à vontade para pular as seções até chegar algo que
você não conheça;
 presumiremos que você conhece um pouco sobre o computador que está
usando, ou seja já sabe editar, copiar, apagar e renomear arquivos, encontrar
informações no seu sistema e outras coisas do tipo;
 para simplificar as coisas, vamos supor também que você está usando uma
máquina com Windows 95, 98, 2000, NT ou XP, e para aqueles que não estão
usando um desses sistemas operacionais, já sabem que terão de transpor os
conceitos para o sistema que estiverem usando, certo?
 e, por último, mas não menos importante, vamos supor que você tem vontade
de aprender.
Todas as ferramentas de que precisa para começar a programar em Java estão
disponíveis na internet, de graça. Também há uma grande quantidade de material
educativo sobre o assunto, o que significa que dá para continuar a aprender mais mesmo
depois que terminar de ler este artigo. É possível aprender a programação em Java sem
gastar dinheiro com compiladores, ferramentas de desenvolvimento, material para leitura,
etc. E depois que tiver aprendido Java, fica fácil aprender outras linguagens. Por isso, não
se preocupe pelo fato de ser um iniciante no assunto, você veio para o lugar certo.
Bem, considerando tudo isso, estamos prontos para continuar. Mãos à obra

Alguns termos
Lembre-se vamos supor que você não sabe nada sobre programação. Aqui vão alguns
termos para deixar as coisas mais compreensíveis:
 programa de computador - um programa de computador é um conjunto de
instruções que diz ao computador exatamente o que deve fazer. Estas
instruções podem dizer ao computador para somar alguns números ou
comparar 2 números. E, também, tomar uma decisão dependendo do resultado
da comparação ou o que quer que você consiga imaginar! Mas um programa de
computador não é nada mais do que um conjunto de instruções para o
computador, assim como uma receita é um conjunto de instruções para um
cozinheiro ou notas musicais são um conjunto de instruções para um músico. O
computador segue suas instruções à risca e acaba fazendo algo que você
precisa (como calcular o seu orçamento mensal, exibir um jogo na tela ou
executar um processador de textos).
 linguagem de programação - para que o computador consiga reconhecer as
instruções que você deu, elas precisam ser escritas em um idioma que ele
entenda: uma linguagem de programação. Da mesma maneira que há vários
idiomas diferentes, também há muitas linguagens de programação por aí
(Fortran, Cobol, Basic, Pascal, C, C++, Java, Perl). No fundo, todas elas
expressam mais ou menos os mesmos conceitos, mas de maneiras diferentes.
 compilador - um compilador traduz um programa de computador escrito em
uma linguagem que pode ser lida por humanos (como o Java) para uma forma
que o computador possa entender e executar. Sabe aqueles arquivos EXE que
existem no seu computador? Então! Eles são os arquivos que os compiladores
geram e contêm programas executáveis, programas em linguagem de
máquina que foram traduzidos a partir de programas escritos em linguagem de
humanos.
Para que você possa começar a escrever programas na linguagem de programação
chamada de Java, vai precisar de um compilador específico para essa linguagem. A
próxima seção vai guiá-lo por todo o processo de download e instalação de um
compilador. Depois de ter obtido um compilador, estaremos prontos para começar. Mas,
dependendo da sua conexão Internet, esta parte do processo vai levar algum tempo, com
uma grande parte dele sendo usada para fazer o download de vários arquivos grandes. E,
além disso, você também vai precisar de cerca de 40 megabytes de espaço livre em disco
rígido (certifique-se de que tem esse espaço disponível antes de começar!)

Fazendo o download do compilador Java


Para ter um ambiente de desenvolvimento Java configurado em sua máquina, você
"desenvolve" ou "escreve", programas de computador usando um "ambiente de
desenvolvimento". Você vai ainda ter de completar as seguintes etapas:
 fazer o download de um arquivo grande que contenha o ambiente de
desenvolvimento Java (o compilador e outras ferramentas).;
 fazer o download de outro arquivo grande com a documentação sobre o Java;
 caso não tenha o WinZip (ou outro programa equivalente) na sua máquina, vai
ter de fazer o download de um arquivo que contenha o WinZip e instalá-lo;
 instalar o ambiente de desenvolvimento Java;
 instalar a documentação;
 configurar algumas variáveis de ambiente;
 testar e verificar se está tudo bem.
Mas antes de começarmos, facilitaria um pouco se você criasse um novo diretório, no seu
diretório temporário, para armazenar os arquivos que vai "baixar". Vamos chamar esta
pasta de diretório de download.
Passo 1 - faça o download do ambiente de desenvolvimento Java
Acesse a página http://java.sun.com/javase/downloads/ (em inglês). Faça o download do
programa SDK clicando no link "Download J2SE SDK". Em seguida, vai aparecer um
contrato de licença. Clique em "Accept". Selecione o seu sistema operacional e faça o
download do arquivo para o seu diretório de download. Esse arquivo é gigante e vai
demorar algum tempo para terminar o processo. E se prepare, pois os 2 próximos arquivos
também são grandes.
Passo 2 - faça o download da documentação do Java
Procure na página http://java.sun.com/javase/reference/index.jsp a documentação mais
indicada para seu sistema operacional..
Passo 3 - faça o download e instale o WinZip
Se não tiver uma versão do WinZip ou algum programa equivalente no seu computador,
acesse a página http://www.winzip.com/ (em inglês) e faça o download de uma cópia de
teste do WinZip. Para instalá-lo, rode o arquivo EXE. Vamos usá-lo em alguns instantes
para instalar a documentação.
Passo 4 - instale o kit de desenvolvimento
Execute o arquivo que você baixou no passo 1. Ele vai ser descompactado e instalado
automaticamente.
Passo 5 - instale a documentação
Leia as instruções de instalação da documentação. Elas vão lhe dizer para mudar o
arquivo de documentação para o mesmo diretório em que você acabou de instalar o
arquivo de desenvolvimento. Descompacte a documentação e coloque-a no lugar correto.
Passo 6 - configure o seu ambiente
Como instruído nesta página (em inglês) é necessário mudar sua variável PATH. A
maneira mais fácil de fazer isso é abrir uma janela do MS-DOS e digitar PATH para ver
qual a sua configuração no momento. Aí, é só abrir o arquivo "autoexec.bat" no Bloco de
Notas e fazer as alterações no PATH especificadas nas instruções.
Passo 7 - teste
Agora, já é possível abrir outra janela do MS-DOS e digitar javac. Se tudo foi configurado
adequadamente, vai aparecer um texto de 2 linhas dizendo como usar o javac. Esse é o
sinal de que tudo está pronto. Porém, se a mensagem "Bad Command or File Name"
aparecer, é o sinal de que algo deu errado. Releia as instruções de instalação para
descobrir o que você fez de errado. Certifique-se de que o PATH está configurado
corretamente e funcionando. Volte, releia as instruções acima e seja persistente até
conseguir resolver o problema.
Parabéns! Você tem o orgulho de ser o dono de uma máquina capaz de compilar
programas em Java. Está na hora de começar a criar programas!
A propósito, uma das coisas que você descompactou é um diretório de demonstração
cheio de exemplos legais do que dá para fazer com o Java. E o melhor, todos esses
exemplos estão prontos para serem executados. Tire um tempinho para encontrar o
diretório e brincar com alguns dos exemplos. Como há vários que fazem sons, veja se os
seus alto-falantes estão ligados. Para rodar os exemplos, encontre as páginas com nomes
como example1.html e as abra no mesmo programa que você usa para navegar na
internet.

Seu primeiro programa


O seu primeiro programa vai ser simples e direto. Ele vai criar uma área de desenho e
desenhar uma linha diagonal através dela. Para criar este programa, você terá de:
 abrir o bloco de notas e digitar (ou cortar e colar) o programa
 salvar o programa
 compilar o programa com um compilador Java para criar um applet Java
 corrigir problemas que aparecerem
 criar uma página da web (HTML) para "abrigar" o applet que você criou
 executar o applet Java
O programa que vamos usar para essa demonstração é este aqui:
import java.awt.Graphics;
public class FirstApplet extends java.applet.Applet
{
public void paint(Graphics g)
{
g.drawLine(0, 0, 200, 200);
}
}

Passo 1 - digite o programa


Crie um novo diretório para ele. Abra o bloco de notas (ou qualquer outro editor de texto
capaz de criar arquivos TXT). Digite ou corte e cole o programa na janela do Bloco de
Notas. Preste atenção: a diferença entre maiúsculas e minúsculas é importante
quando estiver digitando o programa. Por isso, é necessário digitar as maiúsculas e
minúsculas exatamente como no nosso exemplo. Leia novamente o programa acima. Ele
não vai funcionar a menos que você digite EXATAMENTE da mesma maneira.
Passo 2 - salve o arquivo
Salve o arquivo com o nome FirstApplet.java no diretório que criou no passo 1,
a diferença entre maiúsculas e minúsculas também importa na hora de escrever o
nome do arquivo. Certifique-se de que 'F' e 'A' estejam em maiúsculas e todos os outros
caracteres estejam em minúsculas.
Passo 3 - compile o programa
Abra uma janela do MS-DOS. Mude o diretório ("cd") para o diretório que contém o
FirstApplet.java. Digite:
javac FirstApplet.java

Maiúsculas são diferentes de minúsculas! Agora, há duas possibilidades: ou ele vai


funcionar, e não aparecerá nada na janela, ou vão aparecer alguns erros. No caso de não
aparecerem erros, será criado um arquivo com o nome de FirstApplet.class logo após o
FirstApplet.java, no mesmo diretório.
Certifique-se de que o arquivo foi salvo com o nome FirstApplet.java em vez de
FirstApplet.java.txt. A maneira mais fácil de fazer esta verificação é digitar dir na janela
do MS-DOS e olhar o nome do arquivo. Caso ele tenha uma extensão .txt, renomeie o
arquivo para retirar esta extensão. Outra maneira de fazer essa verificação é executar o
Windows Explorer e selecionar Opções no menu Exibir. Certifique-se de que a opção
"Ocultar as extensões dos tipos de arquivos conhecidos" NÃO está selecionada e olhe o
nome do arquivo no próprio Explorer. Modifique se for necessário.
Passo 4 - corrija quaisquer problemas
Se houver erros, corrija-os. Compare o seu programa com o programa acima e faça com
que sejam exatamente idênticos. E vá recompilando até sumirem todos os erros. Se o
javac não estiver funcionando, volte à seção anterior e corrija sua instalação.
Passo 5 - crie uma página HTML
Chegou a hora de criar uma página HTML para "abrigar" o applet. Para isso, abra mais
uma janela do bloco de notas e digite o seguinte:
<html>
<body>
<applet code=FirstApplet.class width=200 height=200>
</applet>
</body>
</html>

Salve esse arquivo no mesmo diretório e com o nome de applet.htm.


Se você nunca trabalhou com HTML antes, leia Como funcionam as página da Internet. O
código do passo anterior é o modo de acessar o applet Java, a paritr de uma página web.
Passo 6 - execute o applet
Na janela do MS-DOS, digite:
appletviewer applet.htm

Deve surgir uma linha diagonal sendo traçada do canto superior esquerdo ao canto inferior
direito:
Aumente um pouco a janela de visualização do applet para conseguir ver a linha toda.
Além disso, também dá para abrir a página HTML em qualquer navegador moderno como
o Netscape Navigator ou o Microsoft Internet Explorer e ver quase a mesma coisa.
É isso aí! Você acabou de criar se primeiro programa!!!

Entendendo o que acabou de acontecer


Mas o que foi que eu fiz? Em primeiro lugar, você escreveu um código para um applet
Java extremamente simples. Um applet é um programa Java que pode ser executado
dentro de um programa de navegação na internet (browser), ao contrário de um aplicativo
Java, que é um programa independente executado em um computador local (os
aplicativos Java são um pouco mais complicados e não tão populares, por isso estamos
começando com os applets). Depois, compilamos o applet usando o javac. O passo
seguinte foi criar uma página da internet extremamente simples cuja função era somente
"abrigar" o applet. Rodamos o applet usando o appletviewer, embora também dê para
executá-lo, facilmente, em um programa de navegação.
O programa em si tem cerca de 10 linhas:
import java.awt.Graphics;
public class FirstApplet extends java.applet.Applet
{
public void paint(Graphics g)
{
g.drawLine(0, 0, 200, 200);
}
}
Este é um dos applets mais simples que você pode criar. Para entendê-lo por completo,
será necessário aprender bastante, especialmente no que diz respeito às técnicas de
programação orientadas a objetos. E já que estou presumindo que você não tem a
mínima noção sobre programação, gostaria que nos concentrássemos em só uma só linha
deste programa no momento:
g.drawLine(0, 0, 200, 200);

Esta é a linha do programa que faz todo o trabalho. É ela que desenha a linha diagonal. O
resto do programa, por sua vez, é a armação que dá suporte àquela linha, e vamos nos
permitir ignorar a armação no momento. O que você fez nesse programa foi mandar o
computador desenhar uma linha do canto superior esquerdo (0,0) ao canto inferior direito
(200, 200). E o computador, obediente que é, desenhou exatamente como mandamos.
Essa é a essência da programação de computadores!
(Repare também que, na página HTML, configuramos o tamanho da janela do applet (no
passo 5 acima) para ter largura e altura iguais a 200.)
Neste programa, nós usamos um método (ou função) chamada drawLine e passamos 4
parâmetros para ela (0, 0, 200, 200). A linha termina com um "ponto e vírgula". Ele atua
como o ponto final no fim de uma frase. A linha começa com g., o que significa que
queremos usar a função chamada de drawLine no objeto específico g (que, como você
pode conferir uma linha acima, é da classe Graphics, ou gráfico, em Português. Não se
preocupe, ainda vamos entrar nos detalhes sobre classes e suas funções neste artigo).
Um método não é nada mais do que um comando, ou seja, ele manda o computador fazer
algo. No nosso caso, drawLine manda o computador desenhar uma linha entre os pontos
especificados: (0, 0) e (200, 200). Imagine a janela tendo sua coordenada 0,0 no canto
superior esquerdo, com os eixos positivos X e Y se estendendo para a direita e para baixo.
Cada ponto na tela (cada pixel) representa um incremento na escala.

Experimente o mesmo programa com números diferentes para os 4 parâmetros. Altere um


número ou 2, salve suas modificações, recompile usando o javac e execute novamente
o applet após cada mudança feita. Vamos ver o que você consegue descobrir.
E que outras funções posso usar além de drawLine? Para descobrir isso, temos de olhar
a documentação da classe Graphics. Ao instalar o kit de desenvolvimento Java e
descompilar a documentação, um dos arquivos descarregados no processo se chama
java.awt.Graphics.html. É ele que explica essa classe específica. Na minha máquina, o
caminho exato para este arquivo é o D:jdk1.1.7docsapijava.awt.Graphics.html. Na sua,
porém, o caminho deve ser um pouco diferente (mas não tão diferente assim), tudo
depende de onde você instalou o kit. De qualquer maneira, encontre o arquivo e o abra. Lá
em cima no arquivo há uma seção chamada "Method Index" (Índice de métodos). Ela nada
mais é do que uma lista de todas as funções dessa classe. A função drawLine é uma
delas, mas existem várias outras. Alguns exemplos do que você pode desenhar:
 linhas
 arcos
 ovais
 polígonos
 retângulos
 seqüências
 caracteres
Leia a respeito e teste algumas dessas funções diferentes para descobrir o que é possível
fazer. Por exemplo, experimente este código:
g.drawLine(0, 0, 200, 200);
g.drawRect(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
Ele vai desenhar uma caixa com 2 diagonais (lembre-se de deixar a janela grande o
bastante para conseguir ver tudo). Agora, tente desenhar outras formas. Aproveite e leia
sobre como alterar a cor com a função setColor. Por exemplo:
import java.awt.Graphics;
import java.awt.Color;
public class FirstApplet extends java.applet.Applet
{
public void paint(Graphics g)
{
g.setColor(Color.red);
g.fillRect(0, 0, 200, 200);
g.setColor(Color.black);
g.drawLine(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
}
}
Repare que foi adicionada uma nova linha import na segunda linha do programa. O
resultado deste programa fica assim:

Uma coisa que pode estar passando pela sua cabeça neste momento é: "Como é que ele
sabia que tinha de usar Color.red em vez de somente red (vermelho), e como ele sabia
que tinha de adicionar uma segunda linha import?" Bom, esse é o tipo de coisa que você
aprende com exemplos. Como lhe mostrei um exemplo de como usar o método setColor,
agora você sabe que sempre que quiser mudar a cor, terá de usar Color. seguido por um
nome de cor como parâmetro para o método setColor; também vai lembrar de adicionar a
linha import apropriada no começo do programa. Se for olhar o setColor na
documentação, vai ver que tem um link que fala sobre a classe Color, e dentro dele há
uma lista de todos os nomes de cores válidos e técnicas para criar novas cores (sem
nome). É só ler, guardar na cabeça e agora já sabe como alterar as cores em Java. Essa é
a essência de se tornar um programador: aprender novas técnicas e lembrar delas no
próximo programa que você for criar. E para aprender essas novas técnicas, você lê um
exemplo (como fizemos aqui) ou lê a documentação. Ou, ainda, olha um código de
exemplo (como os que estão no diretório de demonstração). Se o seu cérebro gosta de
explorar, aprender e lembrar de coisas, você vai adorar programação!
Nesta seção, você aprendeu como escrever códigos lineares e seqüências, ou seja, blocos
de códigos que consistem em métodos começando na parte superior e vão descendo
(experimente desenhar uma das linhas antes de desenhar o retângulo vermelho e veja o
que acontece. Ela será coberta pelo retângulo e ficará invisível, o que nos ensina que a
ordem das linhas na seqüência do código é importante). Linhas de código em seqüência
formam o núcleo básico de qualquer programa de computador. Agora, antes de irmos para
a próxima seção, faça testes com todos os diferentes métodos de desenho e veja o que
acontece.

Bugs e depuração
Uma coisa que você vai notar enquanto aprende sobre programação é que você costuma
cometer um certo número de erros e suposições que fazem com que o seu programa: 1)
não possa ser compilado; ou 2) produza resultados inesperados na execução. Esses
problemas são conhecidos como bugs (erros), e a ação de removê-los chama-se
depuração. Os programadores costumam passar metade do seu tempo fazendo isso.
Eu sei que você é capaz e vai ter tempo e oportunidade de sobra para criar os seus
próprios bugs, mas vou criar alguns para deixá-lo mais familiarizado com as
possibilidades. No seu programa, apague um dos "ponto e vírgula" do final de uma linha e
tente compilar o programa com o javac. O compilador vai lhe mostrar uma mensagem de
erro. Isso se chama erro de compilador e temos de eliminar todos eles antes de poder
executar o programa. Outra possibilidade é cometer um erro de digitação no nome de uma
função. Experimente esquecer de digitar um "{" ou eliminar uma das linhas import para
ficar acostumado com os diferentes erros de compilador. A primeira vez que você vir um
certo tipo de erro de compilador, pode ficar bem frustrado. No entanto, se fizer
experiências assim (com erros conhecidos criados de propósito), vai se sentir mais
familiarizado com vários dos erros comuns.
Um bug, também conhecido como erro de execução ou erro em tempo de execução,
acontece quando o programa é compilado, normalmente e consegue ser executado, mas
não produz o resultado planejado durante a programação. Por exemplo, este código
produz um triângulo vermelho com duas linhas diagonais que o cruzam:
g.setColor(Color.red);
g.fillRect(0, 0, 200, 200);
g.setColor(Color.black);
g.drawLine(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
O código a seguir, por outro lado, produz apenas o retângulo vermelho (ele cobre as 2
linhas):
g.setColor(Color.black);
g.drawLine(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
g.setColor(Color.red);
g.fillRect(0, 0, 200, 200);
Embora o código seja quase idêntico, o resultado é completamente diferente na execução.
E se o resultado esperado for visualizar 2 linhas diagonais, o código do segundo exemplo
contém um bug.
Lá vai outro exemplo:
g.drawLine(0, 0, 200, 200);
g.drawRect(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
Este código produz uma caixa com uma moldura em preto e 2 diagonais. Já este próximo
pedacinho de código produz apenas uma diagonal:
g.drawLine(0, 0, 200, 200);
g.drawRect(0, 0, 200, 200);
g.drawLine(0, 200, 0, 200);
Novamente, se o que você queria era ver 2 diagonais, o segundo código contém um bug
(examine-o até descobrir o que há de errado). Este é o tipo de bug que, por ser muito sutil,
pode levar tempo para ser encontrado.
E não se preocupe, pois você vai ter bastante tempo para praticar a "arte" de encontrar
seus próprios bugs. O programador comum gasta cerca de metade de seu tempo
procurando, encontrando e eliminando esses erros. Então, tente não ficar frustrado quando
ocorrerem, eles fazem parte da vida de um programador.

Variáveis
Todos os programas utilizam variáveis para guardar, temporariamente, alguns dados . Por
exemplo, se você pedir um número de um usuário em alguma parte do programa, vai
armazená-lo em uma variável para que possa utilizar depois.
As variáveis devem ser definidas (ou declaradas) em um programa antes que você possa
usá-las, e além disso, é necessário atribuir um tipo específico a cada variável. Mais um
exemplo: você pode definir uma variável para ter um tipo que permita armazenar números,
e definir outra para ter um tipo que a deixe armazenar o nome de uma pessoa. (Como o
Java requer que você defina as variáveis antes de usá-las e diga o tipo de valor que
deseja armazenar nelas, ela é chamada de uma linguagem de tipagem forte. Como você
deve estar se perguntando, há linguagens que não requerem isso, são as linguagens de
tipagem fraca. No geral, ao criar programas grandes, a tipagem forte costuma reduzir o
número de erros de programação que você pode cometer).
import java.awt.Graphics;
import java.awt.Color;
public class FirstApplet extends java.applet.Applet
{
public void paint(Graphics g)
{
int width = 200;
int height = 200;
g.drawRect(0, 0, width, height);
g.drawLine(0, 0, width, height);
g.drawLine(width, 0, 0, height);
}
}

Neste programa, declaramos 2 variáveis chamadas width (largura) e height (altura). E


também declaramos que o tipo delas é int. Este é o tipo de variável capaz de armazenar
um número inteiro (por exemplo, 1, 2, 3). E, finalmente, inicializamos ambas com o valor
de 200. Outra forma de dizer a mesma coisa seria:
int width;
width = 200;
int height;
height = 200;
A primeira forma é um pouquinho mais rápida de ser digitada.
O ato de definir o primeiro valor de uma variável é chamado de inicialização da variável.
Um erro de programação comum acontece quando você esquece de inicializá-la. Para ver
esse bug, experimente eliminar a parte da inicialização no código (a parte "= 200") e
recompile o programa para ver o que acontece. Você vai ver que o compilador reclama
desse problema e essa é uma característica bem legal porque vai ajudá-lo a economizar
muito tempo.
Há dois tipos de variáveis em Java: as variáveis simples (primitivas) e as classes.
O tipo int é uma variável simples. Ela é capaz de armazenar um número e nada mais do
que isso. Basta declarar uma int, definir um valor e usá-la. As classes, por outro lado,
podem conter partes múltiplas e têm métodos que facilitam seu uso. Um exemplo bom e
direto de uma classe é a Rectangle (retângulo), e vamos começar por ela.
Uma das limitações do programa no qual trabalhamos até agora é o fato de que ele
presume que a janela tem um tamanho de apenas 200 pixels x 200 pixels. E se
quiséssemos perguntar para a janela: "Qual é o seu tamanho?," e criar nosso retângulo e
diagonais nos baseando neste tamanho? Se você voltar um pouco e olhar a página da
documentação referente à classe Graphics (java.awt.Graphics.html, o arquivo que lista
todas as funções de desenho disponíveis), vai ver que uma das funções se chama
getClipBounds. Clique nesse nome de função para ver a descrição completa. Na
verdade, essa função não aceita nenhum parâmetro. Em vez disso, ela retorna um valor
do tipo Rectangle. O retângulo que ela retorna contém a largura e a altura da área
disponível para desenho. Se você clicar em Rectangle nessa página da documentação,
vai ser levado para a página referente à classe Rectangle (java.awt.Graphics.html). Ao
olhar na seção Variable Index (Índice de Variáveis) na parte superior da página, vai
descobrir que essa classe contém 4 variáveis chamadas de x, y, width (largura) e height
(altura), respectivamente. Sabendo isso, o que queremos fazer é saber o tamanho do
maior retângulo possível usando getClipBounds, pegar a largura e a altura desse
retângulo e salvar esse valores nas variáveis width e height que criamos no exemplo
anterior, assim:
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Rectangle;
public class FirstApplet extends java.applet.Applet
{
public void paint(Graphics g)
{
int width;
int height;
Rectangle r;
r = g.getClipBounds();
width = r.width - 1;
height = r.height - 1;
g.drawRect(0, 0, width, height);
g.drawLine(0, 0, width, height);
g.drawLine(width, 0, 0, height);
}
}
Ao executar este exemplo, vai notar que o retângulo e as diagonais cabem direitinho
dentro da área de desenho. E mais: se alterar o tamanho da janela, o retângulo e as
diagonais são desenhadas novamente de maneira automática e de acordo com o novo
tamanho. Há 5 novos conceitos introduzidos nesse código, vamos ver quais são eles:
1. em primeiro lugar, por estarmos usando a classe Rectangle, precisamos importar
java.awt.Rectangle na terceira linha do programa;
2. neste programa, declaramos 3 variáveis, 2 (width e height) são do tipo int e uma
(r) é do tipo Rectangle;
3. usamos a função getClipBounds para descobrir o tamanho da área de desenho.
E como ela não aceita parâmetros, não lhe demos nenhum ("( )"). Mas ela retorna
um "Rectangle". Escrevemos a linha "r = g.getClipBounds();" como uma maneira de
dizer: "Por favor, coloque o retângulo retornado na variável r";
4. essa variável r, pelo fato de pertencer à classe Rectangle, contém 4 variáveis: x, y,
largura e altura (leia a documentação da classe Rectangle para aprender esses
nomes). Se você quiser ter acesso a elas, use o operador "." (ponto). Por isso, a frase
"r.width" quer dizer: "Dentro da variável r, pegue o valor chamado width". Este valor
vai ser colocado na nossa variável local que também tem o nome de width. Repare
que subtraímos 1 no processo. Faça um teste para ver o que acontece se não fizer
isso. Aproveite e também tente subtrair 5 em vez de 1;
5. por último, usamos width e height nas funções de desenho;
Uma questão que costuma ser feita nesse ponto é: "É obrigatório declarar variáveis com o
nome de width e height?" A resposta é não. Poderíamos ter digitado r.width - 1
diretamente na função de desenho. Mas criar variáveis facilita na hora da leitura e é
recomendado que você crie este hábito.
A linguagem Java é compatível com muitos tipos de variáveis simples. Estas 3 são as mais
comuns:
 int - valores inteiros (1, 2, 3...)
 float - valores decimais (3,14159, por exemplo)
 char - caracteres (a, b, c...)
Dá para realizar operações matemáticas com os tipos simples. Entre as operações que a
linguagem Java entende, estão + (soma), - (subtração), * (multiplicação) e / (divisão). Aqui
vai um exemplo de como você poderia usar essas operações em um programa. Digamos,
por exemplo, que você quer calcular o volume de uma esfera com um diâmetro de 10
metros. Este código faria exatamente o que você quer:
float diameter = 10;
float radius;
float volume;
radius = diameter / 2.0;
volume = 4.0 / 3.0 * 3.14159 * radius * radius * radius;

O primeiro cálculo diz: "Divida o valor da variável chamada diameter (diâmetro) por 2,0 e
coloque o resultado na variável chamada radius (raio)". Perceba que o sinal "=" significa
"Coloque o resultado do cálculo à direita dentro da variável cujo nome está à esquerda".

Dando voltas
Uma das coisas que os computadores fazem muito bem é realizar cálculos e operações
repetitivas. Nas seções anteriores, vimos como escrever "blocos seqüenciais de código", o
que, automaticamente nos leva a falar sobre as técnicas para fazer um bloco destes
acontecer repetidamente.
Por exemplo, digamos que eu lhe peça para desenhar a seguinte figura:

Um bom começo seria desenhar as linhas horizontais assim:

Uma maneira de desenhar as linhas seria criar um bloco seqüencial de código:


import java.awt.Graphics;
public class FirstApplet extends java.applet.Applet
{
public void paint(Graphics g)
{
int y;
y = 10;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
}
}

Para alguns programadores iniciantes, a frase "y = y + 25;" pode parecer estranha na
primeira vez que a virem, mas o que ela significa é: "Pegue o valor que está na variável y,
some 25 e coloque o resultado de volta na variável y." Por exemplo, se y contiver 10 antes
da linha ser executada, ele terá 35 imediatamente após a linha ter sido executada.
Não é difícil perceber logo de cara que esse código contém 2 linhas iguais sendo repetidas
várias vezes. O que acontece é que, neste caso, a repetição não é tão trabalhosa, mas
imagine se você quisesse criar uma tabela com milhares de linhas e colunas. Ia ser muito
cansativo escrever o programa usando este método de repetição. A solução para esse
problema é um loop, como você pode ver abaixo:
import java.awt.Graphics;
public class FirstApplet extends java.applet.Applet
{
public void paint(Graphics g)
{
int y;
y = 10;
while (y <= 210)
{
g.drawLine(10, y, 210, y);
y = y + 25;
}
}
}

Ao executar este programa, vai ver que ele desenha 9 linhas horizontais com 200 pixels de
comprimento.
A expressão while é uma expressão de loop na linguagem Java. Ela manda o Java agir da
seguinte maneira: na frase em que pode ler while, o Java observa a expressão entre
parênteses e pergunta, "O y é menor ou igual a 210?":
 caso a resposta seja positiva, o Java insere o bloco de código colocado entre
chaves, "{" e "}". A parte do loop acontece ao final do bloco de código. Quando
o Java chega à chave final, volta à frase com o while e faz a mesma pergunta
novamente. Pode ser que essa seqüência de loop ocorra várias vezes.
 mas se a resposta for negativa, ele pula o código colocado entre as chaves e
segue em frente.
Quando executar esse programa, vai ver que o valor inicial de y é 10. Como dez é menor
do que 210, o Java bloqueia as chaves, desenha uma linha de (10,10) a (210,10), define y
como 35 e volta à frase while. E como 35 é menor do que 210, o Java bloqueia as chaves
mais uma vez, desenha uma linha de (10,35) a (210,35), define y como 60 e retorna à
frase while. E isso vai se repetindo até que y seja maior do que 210, a única condição em
que o programa pára.
E podemos completar nossa grade adicionando um segundo loop ao programa, veja só:
import java.awt.Graphics;
public class FirstApplet extends java.applet.Applet
{
public void paint(Graphics g)
{
int x, y;
y = 10;
while (y <= 210)
{
g.drawLine(10, y, 210, y);
y = y + 25;
}
x = 10;
while (x <= 210)
{
g.drawLine(x, 10, x, 210);
x = x + 25;
}
}
}

Acho que você percebeu que a frase while tem 3 partes:


 há um passo de inicialização que define y como 10;
 depois vem um passo de avaliação dentro dos parênteses da frase while;
 e por último, em algum lugar da frase, há um passo de acréscimo, que
aumenta o valor de y.
Além disso, o Java também suporta uma outra maneira de fazer a mesma coisa de um
jeito mais compacto do que a frase com while. Basta usar o comando for. Se você tiver
um comando while, da seguinte forma:
y = 10;
while (y <= 210)
{
g.drawLine(10, y, 210, y);
y = y + 25;
}
Então, a frase equivalente a for vai ter a seguinte aparência:
for (y = 10; y <= 210; y = y + 25)
{
g.drawLine(10, y, 210, y);
}

Dá para ver que tudo o que esse novo tipo de programa faz é condensar as linhas de
inicialização, avaliação e acréscimo em uma só linha. Não passa de uma maneira de
reduzir o tamanho do programa que você escreveu.
E já que estamos aqui, lá vão 2 pontos rápidos a respeito dos loops:
 em muitos casos, também seria fácil inicializar y como 210 e subtrair 25 a cada
passagem pelo loop. A avaliação iria perguntar: "o y é maior ou igual a 10?" A
escolha é só sua, mas o que posso dizer é que a maioria das pessoas acha
mais fácil somar do que subtrair. E você, o que acha?
 o passo de acréscimo é muito importante. Um exemplo disso é o seguinte:
digamos que você deixou de fora, sem querer, a parte que diz "y = y + 25;"
dentro do loop. O que iria acontecer é que o valor de y nunca mudaria (ficando
sempre em 10), o que não o deixaria ficar maior do que 210 e o loop continuaria
para sempre (ou até que você o parasse, desligando o computador ou fechando
a janela). Essa condição é chamada de loop infinito e é um bug bem comum.
Para praticar um pouco o loop, tente escrever programas que desenhem as seguintes figuras:

Para obter mais informações sobre o Java e outras linguagens de programação, confira os
links na próxima página.

Mais informações
Artigos relacionados
 Como funciona a programação em C
 Como funciona a linguagem Perl
 Como funcionam os scripts em CGI
 Como funciona a lógica booleana
 Como funcionam as páginas da Internet

Mais links interessantes (em inglês)


 The Java Tutorial (Tutorial de Java)
 Java FAQ (Perguntas e respostas sobre o Java)
 The Java Language Environment: A White Paper (O ambiente da linguagem
Java: um papel em branco)
 Introducing Java - Your First Applet (Apresentando o Java: seu primeiro mini-
aplicativo)
 New to Java Programming Center (Novo no centro de programação em Java)
 Tutorial Java (em português)

Você também pode gostar