Você está na página 1de 6

Universidade Federal do ABC Disciplina: Linguagens de Programao (BC-0501) Assunto: Primeiro programa em Java (compilao e execuo)

Primeiro programa em Java (compilao e execuo)


Introduo
Este roteiro de aula prtica tem o objetivo de auxiliar o aluno a escrever, compilar e executar o seu primeiro programa na linguagem Java. Compilar significa traduzir o programa escrito em uma linguagem de programao de alto nvel (ex: Java) em uma linguagem de mquina, que pode ser compreendida e executada pelo processador (ex: Intel Pentium) do computador em um determinado sistema operacional (ex: Microsoft Windows). No caso de Java, o programa no compilado para uma plataforma (processador e sistema operacional) especfica, mas para uma linguagem chamada bytecode de uma mquina virtual (JVM Java Virtual Machine). A mquina virtual emulada em software em vrias plataformas diferentes, de modo que um mesmo programa em bytecode pode ser executado em todas elas. Essa caracterstica se chama portabilidade. Repare que isso no verdade para outras linguagens. O programa ser digitado pelo aluno usando um editor de textos comum (ex: Bloco de Notas) e compilado manualmente atravs de linha de comando (ex: o prompt de comando, do Windows). Para os prximos programas em Java ser utilizado um ambiente (aplicao) mais amigvel, mas tambm mais complexo, chamado de IDE (Integrated Development Environment ou ambiente integrado de desenvolvimento). Obs.: Essa prtica foi concebida para ser realizada no sistema operacional Microsoft Windows para torn-la mais apropriada para iniciantes. Entretanto, com pequenas modificaes, ela pode ser executada em outros ambientes, como Linux. O programa Java e a forma de compilao e execuo permanecem inalterados.

Preparativos iniciais
Esta prtica supe que JDK (Java Standard Edition Development Kit) est instalado na mquina, mais precisamente o Java 5, com o JDK jdk1.5.0_08 (isso significa que o Java 5). 1. Verifique se o JDK est instalado e qual a verso dele. Use o Windows Explorer (clicar com o boto da direita em Iniciar e ento selecionar a opo Pesquisar no menu). V na pasta Java dentro de Arquivos de Programas e veja a verso do JDK. Qualquer verso que seja jdk1.5 (Java 5) pode ser usada. 2. Verifique se o compilador e interpretador esto configurados para serem acessados atravs da linha de comando. Inicie um prompt de comando, clicando em Iniciar, depois em Executar, digitando cmd e clicando em OK. A janela que aparecer dever ser como:

3. Digite o comando path, que mostra o contedo da varivel PATH, que informa em quais caminhos (pastas e sub-pastas) o sistema operacional deve procurar os programas a serem executados. Se o caminho da pasta onde os programas se encontram estiver configurado, deve haver Arquivos de programas\Java\jdk1.5.0_08\bin como parte do resultado desse comando. 4. Teste o compilador Java, digitando javac. Se uma mensagem grande, iniciada por Usage: javac <options> <source files> for impressa, ento o compilador foi executado. Seno, uma mensagem de erro como a seguinte deve ser apresentada: 'javac' no 1

reconhecido como um comando interno ou externo, um programa opervel ou um arquivo em lotes.. 5. No caso de haver erro, uma soluo digitar o caminho completo: c:\"Arquivos de programas"\Java\jdk1.5.0_08\bin\javac, que pode ser inconveniente. 6. Outra soluo alterar a configurao para aquele promt de comando, mas que ter que ser refeita todas as vezes todas as vezes que se abrir um novo prompt. Isso realizado atravs do comando path %PATH%;c:\Arquivos de programas\Java\jdk1.5.0_08\bin. Teste novamente. 7. Uma soluo definitiva alterar as configuraes do sistema que valer definitivamente para todos os programas do Windows. Na rea de trabalho, clique com o boto da direita em Meu computador e depois selecione a opo Propriedades no menu. Ento, selecione a aba Avanado e clique no boto Variveis de ambiente. Na parte inferior da janela, selecione a varivel Path e clique em Editar. Em Valor da varivel, v at o final da linha e acrescente ;c:\Arquivos de programas\Java\jdk1.5.0_08\bin. Lembre-se de iniciar com ; (ponto e virgula), que separa os diferentes caminhos que esto configurados nessa varivel. Abra outro prompt de comando e teste o comando javac. Observao: Em algumas situaes voc pode no ter permisso de mudar as configuraes do sistema. Nesse caso, a soluo mais adequada seria a segunda (alterar o contedo da varivel PATH manualmente todas as vezes).

Exerccio a Digitando o programa


8. Abra o Bloco de Notas (clicando em Iniciar/Programas/Acessrios/Bloco de Notas) ou outro editor simples que salve o texto em formato ASCII e digite o programa abaixo (sem os nmeros de linhas): 1 2 3 4 5 6 7 8 // Primeiro programa em Java public class BemVindo { public static void main(String args[]) { System.out.println("Bem-vindo a UFABC"); } }

9. Explicao do programa: A linha 1 contem um comentrio, pois iniciada com // . Existem outras formas de se inserir comentrios em um programa Java. A linha 2 contem a declarao da classe BemVindo. Por enquanto suficiente entender que uma classe precisa das palavras reservadas public e class e que BemVindo um nome qualquer, mas que como ser visto adiante, precisa ser igual ao nome do arquivo que vai conter a classe. Na linha 3, o caractere { (abre chaves) indica que tudo o vem a seguir pertence classe BemVindo, at o seu encerramento com }. A linha 4 declara o mtodo principal (main) dessa classe, que ser executado quando o programa for iniciado. A declarao public static void main(String args[]) necessria exatamente desta forma (com o tempo, cada palavra ser compreendida, mas por enquanto suficiente saber que isso necessrio). Nem todas as classes precisam ter um mtodo main. Na linha 5, o caractere { (abre chaves) indica que tudo o vem a seguir pertence ao mtodo main, at o seu encerramento com }. A linha 6 contem o comando System.out.println(Bem-vindo a UFABC); que imprime na tela (linha de comando) a mensagem Bem-vindo a UFABC. System.out um objeto de sada padro e println um mtodo que imprime um string (conjunto de caracteres) e passa para a prxima linha. Existem outros mtodos para imprimir na tela como ser visto a seguir, alm de mtodos para imprimir em janelas grficas. Repare que no foi usada a crase, como seria necessrio em bom portugus. No entanto, existem alguns problemas com relao acentuao, principalmente quando se lida com programas que executam em linha de comando. Todos que j acessaram endereos na Internet, sem pontuao e cedilhas j experimentaram isso. 2

As linhas 7 e respectivamente.

encerram

mtodo

main

classe

BemVindo,

10. Salve o programa com o nome BemVindo.java, sem as aspas em uma pasta de fcil acesso, como C:\temp\java. Se essa pasta no existir, ela deve ser criada. A extenso .java obrigatria em programas Java. O nome antes da extenso deve obrigatoriamente ser igual ao nome da classe public, observando que existe diferena entre letras maisculas e minsculas. Em ingls, diz-se que Java case sensitive porque o compilador sensvel a diferenas entre letras maisculas (upper case) e minsculas (lower case). Um arquivo pode conter vrias classes, mas apenas uma delas deve ser declarada como public. Entretanto, desaconselhado usar essa prtica de programao, ou seja, recomenda-se usar apenas uma classe public em cada arquivo .java.

Exerccio b Compilando e executando o programa


11. Assumindo que o JDK est devidamente instalado na sua mquina e que o acesso a ele via linha de comando est devidamente configurado, o prximo passo compilar o programa. Abra o prompt de comando do Windows, atravs de Iniciar/Executar, digitar cmd em Abrir e clicar em OK.Ento, digite o comando cd c:\temp\java para mudar para o diretrio (pasta) apropriado (cd = change directory), assumindo que c:\temp\java a pasta onde o arquivo contendo o programa digitado foi salvo (item 10). 12. Para compilar o programa, use o compilador javac digitando o comando: C:\Temp\java>javac BemVindo.java C:\Temp\java> Caso no haja nenhum erro, a tela voltar para o prompt de comando sem mostrar nenhuma mensagem. Mensagens de erro sero mostradas caso contrrio (o que mais comum !, ou seja, muito difcil, mesmo para programadores experientes, digitar um programa e no cometer nenhum tipo de erro de sintaxe). 13. Observe que, se no houver nenhum erro de compilao, um arquivo com o nome BemVindo.class criado, contendo os bytecodes referente a este programa Java. 14. Para executar o programa, use o comando java", que carrega a JVM e interpreta os bytecodes. O comando e o seu resultado esperado so: C:\Temp\java>java BemVindo Bem-vindo a UFABC C:\Temp\java> Observe que a extenso .class no deve ser includa no nome do arquivo. Caso contrrio, ocorrer um erro.

Exerccio c Observando e compreendendo mensagens de erro


15. As possibilidades para a ocorrncia de erros quando se compila e executa um programa so muito grandes, e com a experincia se aprende a identificar e corrigir os mais comuns. Outros, no entanto, no so nada bvios e freqentemente consomem uma boa parte do tempo dos programadores. Alguns exemplos so apresentados a seguir (caso voc ainda no os tenha experimentado). 16. Erros referentes ao nome do arquivo .java errado. C:\Temp\java>javac BenVindo.java (foi digitado Ben com n). error: cannot read: BenVindo.java 1 error C:\Temp\java>javac Bem Vindo.java (Bem Vindo com um espao em branco). 3

javac: invalid flag: Bem Usage: javac <options> <source files> ... 17. Erros referentes ao arquivo .class. Exclua o arquivo BemVindo.class (pode usar o comando del" ou ento o Windows Explorer). C:\Temp\java>java BemVindo Exception in thread "main" java.lang.NoClassDefFoundError: BemVindo Essa mensagem estranha (por enquanto) significa que o arquivo BemVindo.class no foi encontrado. 18. Compile novamente o programa, com javac e digite o comando: C:\Temp\java>java BemVindo.class Exception in thread "main" java.lang.NoClassDefFoundError: BemVindo/class Dessa vez, o erro ocorreu porque foi digitada a extenso .class , que deve ser omitida.. 19. Erros referentes ao nome do arquivo diferente do nome da classe public. Faa uma cpia do programa BemVindo.java para algo como MeuPrograma.java e tente compil-lo: C:\Temp\java>javac MeuPrograma.java MeuPrograma.java:3: class BemVindo is public, should be declared in a file BemVindo.java public class BemVindo ^ 1 error C:\Temp\java> Essa mensagem identifica um erro na linha 3 (:3:), porque a classe BemVindo pblica e deve ser declarada em um arquivo chamado BemVindo.java. Experimente tambm alterar o nome do arquivo BemVindo.java para letras minsculas, ou seja, bemvindo.java. O compilador ir fazer a mesma reclamao. 20. Erros de sintaxe (escrita) no programa. Retire o caractere ; (ponto de virgula) do final da linha System.out.println(Bem-vindo a UFABC);. C:\Temp\java>javac BemVindo.java BemVindo.java:8: ';' expected } ^ 1 error Essa mensagem reclama da falta do ;. Uma pergunta que surge facilmente : por que ele diz que o problema na linha 8, antes do } e no na linha 7, depois do )? A reposta que o ; no precisa necessariamente estar no final da linha e o compilador o procura nas prximas linhas at encontrar algo que no devia estar l, no caso o }. Experimente incluir o ; antes do } na linha 8 ou abrir uma linha depois da linha 7 e antes da linha 8 atual e incluir somente o ;, para confirmar como isso funciona. No entanto, no considerada uma boa prtica de programao, porque dificulta a legibilidade e compreenso do programa. 21. Experimente introduzir outros erros de sintaxe, como por exemplo, remover o } final ou alterar uma palavra public para publica.

Exerccio d Alterando o programa


22. Como j foi mencionado, existem outros mtodos para imprimir uma mensagem em uma tela de linha de comando, alm do println, que sero explorados agora. 4

23. Faa uma cpia do programa BemVindo.java para BemVindo2.java. Lembre-se de alterar o nome da classe pblica tambm. 24. Usando o mtodo print. Substitua a linha: 6 por 6 6.1 System.out.print ("Bem-vindo a "); System.out.println (" UFABC "); System.out.println("Bem-vindo a UFABC ");

Compile o programa. O resultado deve ser igual ao programa anterior, porque o mtodo print imprime a mensagem, mas no passa para a prxima linha 25. Substitua agora o mtodo print por println e veja o resultado. As mensagens Bem-vindo a e UFABC devem ser impressas em linhas diferentes agora. 26. Usando o mtodo printf, para obter uma sada formatada. O printf consegue tratar de diferentes tipos de dados e no apenas strings (conjuntos de caracteres). Edite o arquivo chamado MeuPrograma.java criado anteriormente e faa as modificaes indicadas a seguir. 27. Pulando de linha com a seqncia de escape \n. Use o comando printf da seguinte forma: 6 System.out.printf("Bem-vindo a UFABC\n "); O \n dentro do printf informa que a sada deve passar para a prxima linha. Insira outros \n em outros pontos da mensagem para ver o efeito. Existem outras seqncias de escape, como \t, \r e \\. Experimente-as. Observe que essas seqncias funcionam tambm com print e println, mas so mais freqentemente usadas com printf (por conta das origens na linguagem C). 28. Usando a sada formatada. Transforme a linha de impresso anterior em um comentrio (com //) e digite esta: System.out.printf("%s\n%s\n", "Bem-vindo ", " a UFABC "); Agora o mtodo printf est sendo invocado (usado) com 3 argumentos, separados por vrgulas. O primeiro argumento contm o string de argumento composto de especificadores de formato (iniciados por %) e seqncias de escape. Nesse caso, %s significa que vai ser formatado um string. Repare que existe dois %s no string de argumento e outros dois argumentos aps ele. necessrio que haja um casamento entre a quantidade de especificadores de formato e de argumentos aps o string de argumentos. Existem outros especificadores de formato, como para nmeros inteiros (%d) e reais (%f). 29. Novamente comente a linha de impresso anterior (com //) e digite esta: System.out.printf("%s\n%s%d\n%s%f\n", "Nome: Maria", "Idade: ", 19, "Altura: ", 1.69); Repare agora que a seqncia representa a formatao da sada e ficou mais complexa %s\n%s%d\n%s%3.2f\n. Existem cinco especificadores de formato e cinco argumentos aps o string de argumento. Os tipos dos especificadores devem coincidir com os tipos dos argumentos, ou seja, por exemplo %s com Idade: , %d com 19 e %f com 1.69. Experimente trocar a idade (19) por um nome, para observar um erro de execuo. Porm, nem sempre ocorrem erros desse tipo para nos avisar, porque Java tenta fazer converso de tipos em tempo de execuo. Algumas vezes o programa fica com um erro de lgica e pode imprimir resultados incorretos, inclusive em relatrios importantes (imagine, no balano de uma empresa, ou nome seu contra-cheque!). Para a altura ser impressa apenas com duas casas decimais, substitua %f por %.2f. Outra maneira de obter o mesmo efeito, mas misturando as mensagens com o string de argumento e separando dos verdadeiros valores : System.out.printf(Nome: %s\nIdade: %d\nAltura: %3.2f\n, Maria", 19, 1.69);

Exerccio para casa


1. Uma prtica comum entre programadores que o seu primeiro programa em uma linguagem de programao deve dizer ol para o mundo, em ingls Hello world!. Escreva um programa que imprima essa mensagem, lembrando-se de coincidir o nome do arquivo com o nome da classe. Faa pelo menos trs verses desse programa, para usar os mtodos System.out.print, System.out.println e System.out.printf. 2. Escreva um programa que imprime os nmeros de 1 a 10 em uma linha e de 11 a 20 na linha seguinte. Os nmeros devem ter um espao de alguns caracteres entre eles e os de baixo devem estar alinhados com os de cima. Dica: use a seqncia de escape \t para que os nmeros se posicionem em marcas de tabulao pr-definidas. 3. No programa anterior, os nmeros de baixo foram alinhados aos de cima pela esquerda, quando o comum para nmeros o alinhamento pela direita. Escreva um programa que faa o alinhamento pela direita. Dica: Use o especificador de formato %d indicando a quantidade de dgitos que o numero deve ter que voc obter o alinhamento pela direita. 4. Faa um programa que imprima a seguinte operao matemtica: 123 + 8 --131