Aqui você encontra infomações sobre Informática, Eletrônica, Elétrica, Mecânica e Automação

quarta-feira, 30 de março de 2011

Como funciona a linguagem java

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:

terça-feira, 29 de março de 2011

Como funciona a linguagem java

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.

segunda-feira, 28 de março de 2011

Como funciona a linguagem java

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

domingo, 27 de março de 2011

Como funciona a linguagem java

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

sábado, 26 de março de 2011

Como funcionam as portas eletrônicas

Construindo o regulador

Para construir o regulador, você precisará de três peças:
  • um regulador de 5 volts 7805 em um encapsulamento TO-220

  • dois capacitores eletrolíticos de qualquer valor entre 100 e 1.000 microfarads


Um capacitor eletrolítico

O 7805 recebe uma tensão entre 7 e 30 volts e a regula para exatamente 5 volts. O primeiro capacitor elimina qualquer ruído proveniente do transformador, de modo que o 7805 receba uma tensão de entrada regular, e o segundo capacitor atua como um equilibrador de carga para assegurar uma saída consistente do 7805.
O 7805 possui três pinos. Se você olhar pela frente (o lado com a gravação), os três pinos serão, da esquerda para a direita, a tensão de entrada (7 a 30 volts), o terra e a tensão de saída (5 volts).
Para conectar o regulador ao transformador, você pode usar esta configuração:
Os dois capacitores são representados por linhas paralelas. O sinal "+" indica que os capacitores eletrolíticos são polarizados: um capacitor eletrolítico apresenta um terminal positivo e um terminal negativo (um dos quais é identificado). Você precisa se assegurar quanto à polaridade correta quando instalar o capacitor.
Você pode construir este regulador em sua placa de montagem. Para isso, precisará entender como é feita a fiação interna da placa de montagem. A figura a seguir mostra essa fiação:
Nas bordas externas da placa de montagem há duas linhas de terminais que percorrem toda a extensão da placa. Todos esses terminais são conectados internamente. Você passará +5 volts através deles e aterrará os outros. No centro da placa existe um canal. Em qualquer lado do canal há conjuntos de cinco terminais interconectados. Você pode usar seu multímetro para ver as interconexões. Coloque o dial do multímetro em seu ajuste de ohms e, em seguida, introduza fios em diferentes pontos da placa de montagem (as pontas de prova do multímetro provavelmente serão muito largas para se encaixarem nos orifícios da placa de montagem).
No ajuste de ohms, o multímetro mede a resistência. A resistência será zero se houver uma conexão entre dois pontos (encoste uma ponta de prova na outra para ver isso) e será infinita se não houver conexão. Você descobrirá que os pontos na placa realmente estão interconectados conforme é mostrado no diagrama. Outra maneira de ver as conexões é puxar o adesivo na parte posterior da placa de montagem um pouco para trás e ver os conectores metálicos.
Agora conecte as peças para seu regulador:
  1. conecte o fio-terra do transformador a uma das tiras externas longas da placa de montagem;
  2. encaixe o 7805 em três das fileiras de cinco orifícios;
  3. conecte o terra da barra de terminais ao pino central do 7805 com um fio: simplesmente corte um pedaço de fio, desencape ambas as extremidades e encaixe-as;
  4. conecte o fio positivo do transformador ao pino esquerdo (entrada) do 7805;
  5. conecte um capacitor a partir do pino esquerdo do 7805 ao terra, prestando atenção à polaridade;
  6. conecte o pino de 5 volts do 7805 à longa barra de terminais externa na placa de montagem;
  7. Conecte o segundo capacitor entre as barras de 5 volts e de aterramento.
Você criou seu regulador. Ele poderá se parecer com este quando estiver pronto:


Em ambas as figuras acima, as linhas provenientes do transformador entram pelo lado esquerdo. Você pode ver a linha do terra do transformador conectada diretamente à barra de aterramento que passa pelo comprimento da placa, na parte inferior. A barra superior fornece +5 volts e está conectada diretamente ao pino +5 do 7805. O capacitor esquerdo filtra a voltagem do transformador, enquanto o capacitor direito filtra os +5 volts produzidos pelo 7805. O LED se conecta entre as barras +5 e de aterramento, através do resistor, e permite que você veja quando a alimentação de energia é "ativada".
Encaixe o transformador e meça a tensão de entrada e saída do 7805. Você deverá ver exatamente 5 volts saindo do 7805, independente da tensão fornecida pelo seu transformador. Caso isso não ocorra, desconecte imediatamente o transformador e faça o seguinte:
  • remova os capacitores. Encaixe o transformador de volta por um momento e veja se ocorreu alguma mudança;
  • assegure-se de que o fio terra e o fio positivo provenientes do transformador não estejam invertidos (se estiverem, é provável que o 7805 esteja muito quente e, possivelmente, queimado);
  • assegure-se de que o transformador esteja produzindo qualquer tensão, desconectando-o e verificando-o com seu voltímetro. Veja a página anterior para aprender como fazer isso.
Assim que constatar 5 volts saindo do regulador, você poderá fazer novos testes e comprovar que ele está ativado conectando um LED a ele. Você precisa conectar um LED e um resistor em série: isso é fácil de fazer em sua placa de montagem. Você precisa usar o resistor, caso contrário o LED irá queimar imediatamente. Um bom valor para o resistor é 330 ohms, apesar de que qualquer valor entre 200 e 500 ohms funciona perfeitamente. Os LEDs, sendo diodos, possuem uma polaridade. Então, se ele não acender, tente inverter as pontas e ver se isso ajuda.
Pode parecer que deu muito trabalho apenas para fazer a fiação da fonte de alimentação e colocá-la em funcionamento. Mas você já aprendeu algumas coisas nesse processo. Agora podemos experimentar as portas booleanas.

Brincando com portas booleanas

Se você usasse a tabela na página anterior para fazer o pedido de suas peças, teria seis chips diferentes contendo seis tipos de portas:
  • 7400 - NAND (quatro portas por chip)
  • 7402 - NOR (quatro portas por chip)
  • 7404 - NOT (seis portas por chip)
  • 7408 - AND (quatro portas por chip)
  • 7432 - OR (quatro portas por chip)
  • 7486 - XOR (quatro portas por chip)
No interior dos chips, as coisas são assim:
Vamos começar com um chip AND 7408. Se você olhar para o chip, haverá normalmente um ponto no pino 1, ou uma marca na extremidade deste pino. Também pode haver alguma outra marcação para indicar o pino 1. Pressione o chip na placa de montagem de modo que ele se encaixe no canal central. Você pode ver nos diagramas que, em todos os chips, o pino 7 deve se conectar ao terra e o pino 14 deve se conectar a +5 volts. Assim, conecte estes dois pinos de maneira apropriada. Se você os conectar invertidos, queimará o chip: tome muito cuidado para não invertê-lo. Caso queime um chip acidentalmente, jogue-o fora para não confundi-lo com suas peças boas. Agora conecte um LED e o resistor entre o pino 3 do chip e o terra. O LED deve acender. Caso contrário, inverta o LED para que ele acenda. Seu CI deve se parecer com este:

Nesta figura, o chip está recebendo +5 volts no pino 14 (fio vermelho) e o terra no pino 7 (fio preto). O resistor deixa o pino 3 e se conecta ao LED, o qual também está conectado ao terra. Conecte os fios de +5 e terra às entradas A e B da porta para exercitá-la.
Eis o que está acontecendo: em TTL, +5 representa um binário "1" e o terra representa um binário "0". Se um pino de entrada de uma porta não está conectado a nada, ele "flutua alto", o que significa que a porta assume haver um "1" no pino. Assim, a porta AND deve estar vendo "1s" nas entradas A e B, o que significa que a saída no pino 3 está fornecendo 5 volts. Então o LED se acende. Se você aterrar o pino 1 ou 2 no chip, o LED se apagará. Esse é o comportamento padrão para uma porta AND, conforme descrito em Como funciona a lógica booleana.
Experimente as outras portas conectando-as em sua placa de montagem e veja que todas se comportam de acordo com as tabelas lógicas apresentadas no artigo sobre a lógica booleana. Então, tente fazer a fiação de algo mais complicado. Por exemplo, faça a fiação para a porta XOR ou bit Q do adicionador completo, e veja que o comportamento é o esperado.