INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TÉCNICO EM INFORMÁTICA DISCIPLINA: PROGRAMAÇÃO ORIENTADA A OBJETOS PROFESSOR: REINALDO GOMES ASSUNTO: PRIMEIRO PROGRAMA EM JAVA (COMPILAÇÃO E EXECUÇÃO) AULA PRÁTICA Nº 2 Introdução Este roteiro de aula prática 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 programação de alto nível (ex: Java) em uma linguagem de máquina, 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 não é compilado para uma plataforma (processador e sistema operacional) específica, mas para uma linguagem chamada bytecode de uma máquina virtual (JVM Java Virtual Machine). A máquina virtual é emulada em software em várias plataformas diferentes, de modo que um mesmo programa em bytecode pode ser executado em todas elas. Essa característica se chama portabilidade. Repare que isso não é verdade para outras linguagens. O programa será digitado pelo aluno usando um editor de textos comum (ex: Bloco de Notas) e compilado manualmente através de linha de comando (ex: o prompt de comando, do Windows). Para os próximos programas em Java será utilizado um ambiente (aplicação) mais amigável, mas também mais complexo, chamado de IDE (Integrated Development Environment ou ambiente integrado de desenvolvimento). Obs.: Essa prática foi concebida para ser realizada no sistema operacional Microsoft Windows para torná-la mais apropriada para iniciantes. Entretanto, com pequenas modificações, ela pode ser executada em outros ambientes, como Linux. O programa Java e a forma de compilação e execução permanecem inalterados. Preparativos iniciais Esta prática supõe que JDK (Java Standard Edition Development Kit) está instalado na máquina, mais precisamente o Java 6, com o jdk1.6.0 (isso significa que é o Java 6). 1. Verifique se o JDK está instalado e qual a versão dele. Use o Windows Explorer (clicar com o botão da direita em Iniciar e então selecionar a opção Pesquisar no menu). Vá na pasta Java dentro de Arquivos de Programas e veja a versão do JDK. Qualquer versão que seja jdk1.6 (Java 6) pode ser usada. 2. Verifique se o compilador e interpretador estão configurados para serem acessados através 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 conteúdo da variável 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, 1
deve haver Arquivos de programas\java\jdk1.6\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, então o compilador foi executado. Senão, uma mensagem de erro como a seguinte deve ser apresentada: 'javac' não é reconhecido como um comando interno ou externo, um programa operável ou um arquivo em lotes.. 5. No caso de haver erro, uma solução é digitar o caminho completo: c:\"arquivos de programas"\java\jdk1.6\bin\javac, que pode ser inconveniente. 6. Outra solução é alterar a configuração para aquele promt de comando, mas que terá que ser refeita todas as vezes que se abrir um novo prompt. Isso é realizado através do comando path %PATH%;c:\Arquivos de programas\java\jdk1.6\bin. Teste novamente. 7. Uma solução definitiva é alterar as configurações do sistema que valerá definitivamente para todos os programas do Windows. Na área de trabalho, clique com o botão da direita em Meu computador e depois selecione a opção Propriedades no menu. Então, selecione a aba Avançado e clique no botão Variáveis de ambiente. Na parte inferior da janela, selecione a variável Path e clique em Editar. Em Valor da variável, vá até o final da linha e acrescente ;c:\arquivos de programas\java\jdk1.6\bin. Lembre-se de iniciar com ; (ponto e virgula), que separa os diferentes caminhos que estão configurados nessa variável. Abra outro prompt de comando e teste o comando javac. Observação: Em algumas situações você pode não ter permissão de mudar as configurações do sistema. Nesse caso, a solução mais adequada seria a segunda (alterar o conteúdo da variável PATH manualmente todas as vezes). Exercício a Digitando o programa 8. Abra o Bloco de Notas (clicando em Iniciar/Programas/Acessórios/Bloco de Notas) ou outro editor simples que salve o texto em formato ASCII e digite o programa abaixo (sem os números de linhas): 1 // Primeiro programa em Java 2 public class BemVindo 3 { 4 public static void main(string args[]) 5 { 6 System.out.println("Bem-vindo ao IF-AL!"); 7 } 8 } 9. Explicação do programa: A linha 1 contem um comentário, pois é iniciada com //. Existem outras formas de se inserir comentários em um programa Java. A linha 2 contem a declaração 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 método principal (main) dessa classe, que será executado quando o programa for iniciado. A declaração public static void main(string args[]) é necessária exatamente desta forma (com o tempo, cada palavra será compreendida, mas por enquanto é suficiente saber que isso é necessário). Nem todas as classes precisam ter um método main. Na linha 5, o caractere { (abre chaves) indica que tudo o vem a seguir pertence ao método main, até o seu encerramento com }. A linha 6 contem o comando System.out.println( Bem-vindo ao IF-AL! ); que imprime na tela (linha de comando) a mensagem Bem-vindo ao IF-AL!. System.out é um objeto de saída padrão e println um método que imprime um string (conjunto de caracteres) e passa para a próxima linha. Existem outros métodos para imprimir na 2
tela como será visto a seguir, além de métodos para imprimir em janelas gráficas. Repare que não foi usada a crase, como seria necessário em bom português. No entanto, existem alguns problemas com relação à acentuação, principalmente quando se lida com programas que executam em linha de comando. Todos que já acessaram endereços na Internet, sem pontuação e cedilhas já experimentaram isso. As linhas 7 e 8 encerram o método main e a classe BemVindo, respectivamente. 10. Salve o programa com o nome BemVindo.java, sem as aspas em uma pasta de fácil acesso, como D:\temp\java. Se essa pasta não existir, ela deve ser criada. A extensão.java é obrigatória em programas Java. O nome antes da extensão deve obrigatoriamente ser igual ao nome da classe public, observando que existe diferença entre letras maiúsculas e minúsculas. Em inglês, diz-se que Java é case sensitive porque o compilador é sensível a diferenças entre letras maiúsculas (upper case) e minúsculas (lower case). Um arquivo pode conter várias classes, mas apenas uma delas deve ser declarada como public. Entretanto, é desaconselhado usar essa prática de programação, ou seja, recomenda-se usar apenas uma classe public em cada arquivo.java. Exercício b Compilando e executando o programa 11. Assumindo que o JDK está devidamente instalado na sua máquina e que o acesso a ele via linha de comando está devidamente configurado, o próximo passo é compilar o programa. Abra o prompt de comando do Windows, através de Iniciar/Executar, digitar cmd em Abrir e clicar em OK.Então, digite o comando cd c:\temp\java para mudar para o diretório (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: javac BemVindo.java Caso não haja nenhum erro, a tela voltará para o prompt de comando sem mostrar nenhuma mensagem. Mensagens de erro serão mostradas caso contrário (o que é mais comum, ou seja, é muito difícil, mesmo para programadores experientes, digitar um programa e não cometer nenhum tipo de erro de sintaxe). 13. Observe que, se não houver nenhum erro de compilação, 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 são: java BemVindo Bem-vindo ao IF-AL! Observe que a extensão.class não deve ser incluída no nome do arquivo. Caso contrário, ocorrerá um erro. Exercício c Observando e compreendendo mensagens de erro 15. As possibilidades para a ocorrência de erros quando se compila e executa um programa são muito grandes, e com a experiência se aprende a identificar e corrigir os mais comuns. Outros, no entanto, não são nada óbvios e freqüentemente consomem uma boa parte do tempo dos programadores. Alguns exemplos são apresentados a seguir (caso você ainda não os tenha experimentado). 16. Erros referentes ao nome do arquivo.java errado. javac BenVindo.java (foi digitado Ben com n ). 3
error: cannot read: BenVindo.java javac Bem Vindo.java ( Bem Vindo com um espaço em branco). 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 então o Windows Explorer). java BemVindo Exception in thread "main" java.lang.noclassdeffounderror: BemVindo Essa mensagem estranha (por enquanto) significa que o arquivo BemVindo.class não foi encontrado. 18. Compile novamente o programa, com javac e digite o comando: java BemVindo.class Exception in thread "main" java.lang.noclassdeffounderror: BemVindo/class Dessa vez, o erro ocorreu porque foi digitada a extensão.class, que deve ser omitida.. 19. Erros referentes ao nome do arquivo diferente do nome da classe public. Faça uma cópia do programa BemVindo.java para algo como MeuPrograma.java e tente compilá-lo: javac MeuPrograma.java MeuPrograma.java:2: class BemVindo is public, should be declared in a file BemVindo.java public class BemVindo ^ Essa mensagem identifica um erro na linha 2 ( :2: ), porque a classe BemVindo é pública e deve ser declarada em um arquivo chamado BemVindo.java. Experimente também alterar o nome do arquivo BemVindo.java para letras minúsculas, ou seja, bemvindo.java. O compilador irá fazer a mesma reclamação. 20. Erros de sintaxe (escrita) no programa. Retire o caractere ; (ponto de virgula) do final da linha System.out.println( Bem-vindo ao IF-AL! );. javac BemVindo.java BemVindo.java:7: ';' expected } ^ Essa mensagem reclama da falta do ;. Uma pergunta que surge facilmente é: por que ele diz que o problema é na linha 7, antes do } e não na linha 6, depois do )? A reposta é que o ; não precisa necessariamente estar no final da linha e o compilador o procura nas próximas linhas até encontrar algo que não devia estar lá, no caso o }. Experimente incluir o ; antes do } na linha 7 ou abrir uma linha depois da linha 6 e antes da linha 7 atual e incluir somente o ;, para confirmar como isso funciona. No entanto, não é considerada uma boa prática de programação, porque dificulta a legibilidade e compreensão do programa. 21. Experimente introduzir outros erros de sintaxe, como por exemplo, remover o } final ou alterar uma palavra public para publica. 4
Exercício d Alterando o programa 22. Como já foi mencionado, existem outros métodos para imprimir uma mensagem em uma tela de linha de comando, além do println, que serão explorados agora. 23. Faça uma cópia do programa BemVindo.java para BemVindo2.java. Lembre-se de alterar o nome da classe pública também. 24. Usando o método print. Substitua a linha: 6 System.out.println("Bem-vindo ao IF-AL! "); por 6 System.out.print ("Bem-vindo ao "); 6.1 System.out.println (" IF-AL! "); Compile o programa. O resultado deve ser igual ao programa anterior, porque o método print imprime a mensagem, mas não passa para a próxima linha 25. Substitua agora o método print por println e veja o resultado. As mensagens Bem-vindo ao e IF-AL devem ser impressas em linhas diferentes agora. Exercícios complementares 1. Escrever um programa em Java que leia dois números e imprima a soma deles. Faça com que o projeto se pareça com o programa se pareça com o código a seguir: 1 import java.util.*; 2 3 public class Soma { 4 public static void main(string[] args) { 5 Scanner sc = new Scanner(System.in); 6 System.out.println("digite um numero: "); 7 int NumA = sc.nextint(); 8 System.out.println("digite outro numero: "); 9 int NumB = sc.nextint(); 10 int Soma = NumA + NumB; 11 System.out.println ("Soma dos numeros: " + Soma); 12 } 13 } 2. Explicação do programa: A linha 1 é necessária para importar uma série de classes pré-existentes de Java, que estão no pacote java.util. Importar significa dizer ao compilador que ele procurar classes e métodos neste pacote durante a compilação, caso algum nome desconhecido seja encontrado. A linha 5 cria um objeto chamado sc da classe Scanner, que tem funcionalidades para ler do teclado, que é o desejado nesse programa. O operador = é o comando de atribuição. Significa que a variável do lado esquerdo recebe o valor do lado direito. Uma vez que um valor é atribuído a uma variável, ela mantém aquele valor até ser modificado, ou nesse caso, até o final do programa. A linha 7 chama o método nextint, que espera o usuário digitar um número inteiro e atribui o valor para a variável chamada NumA (que vai armazenar esse valor) Na linha 10 é feita uma operação de adição dos conteúdos das variáveis NumA e NumB e o resultado é atribuído a uma variável chamada Soma. A linha 11 imprime uma mensagem e o valor da variável Soma (o operador + é usado para concatenar a saída). 3. Altere o programa para que ele também calcule subtração, multiplicação e divisão. 5