Vous êtes sur la page 1sur 7

Universidade Federal Rural de Pernambuco

Curso: Licenciatura em Computação


Disciplina: Programação
Professor: Anderson Costa
Assunto: Primeiro programa em Java (compilação e execução)

Prática 03 - Primeiro programa em Java (compilação e execução)

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,
deve haver “Arquivos de programas\Java\jdk1.6\bin” como parte do resultado desse
comando.

1
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 a UFRPE");
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 a UFRPE”);” que
imprime na tela (linha de comando) a mensagem “Bem-vindo a UFRPE”. “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
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

2
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:
C:\Temp\java>javac BemVindo.java

C:\Temp\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:
C:\Temp\java>java BemVindo
Bem-vindo a UFRPE

C:\Temp\java>
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.
C:\Temp\java>javac BenVindo.java (foi digitado “Ben” com “n”).
error: cannot read: BenVindo.java
1 error

3
C:\Temp\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).
C:\Temp\java>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:
C:\Temp\java>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:
C:\Temp\java>javac MeuPrograma.java
MeuPrograma.java:2: 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 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 a UFRPE”);”.
C:\Temp\java>javac BemVindo.java
BemVindo.java:7: ';' expected
}
^
1 error
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 a UFRPE ");
por
6 System.out.print ("Bem-vindo a ");
6.1 System.out.println (" UFRPE ");
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
a” e “UFRPE” 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
Exercício Propostos
1. Uma prática comum entre programadores é que o seu primeiro programa em uma linguagem
de programação deve dizer olá para o mundo, em inglês “Hello world!”. Escreva um programa
que imprima essa mensagem, lembrando-se de coincidir o nome do arquivo com o nome da
classe. Faça pelo menos duas versões desse programa, para usar os métodos
“System.out.print”, e “System.out.println”.
2. Usando o método “printf”, para obter uma saída formatada. O “printf” consegue tratar de
diferentes tipos de dados e não apenas strings (conjuntos de caracteres). Edite o arquivo
chamado MeuPrograma.java criado anteriormente e faça as modificações indicadas a seguir.
3. Pulando de linha com a seqüência de escape “\n”. Use o comando “printf” da seguinte forma:
6 System.out.printf("Bem-vindo a UFRPE\n ");
O “\n” dentro do “printf” informa que a saída deve passar para a próxima linha. Insira outros
“\n” em outros pontos da mensagem para ver o efeito.
Existem outras seqüências de escape, como “\t”, “\r” e “\\”. Experimente-as. Observe que
essas seqüências funcionam também com “print” e “println”, mas são mais freqüentemente
usadas com “printf” (por conta das origens na linguagem C).
4. Usando a saída formatada. Transforme a linha de impressão anterior em um comentário (com
“//”) e digite esta:
System.out.printf("%s\n%s\n", "Bem-vindo ", " a UFRPE ");
Agora o método “printf” está sendo invocado (usado) com 3 argumentos, separados por
vírgulas. O primeiro argumento contém o “string de argumento” composto de especificadores
de formato (iniciados por “%”) e seqüências 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 após ele. É necessário que haja um casamento entre a quantidade de
especificadores de formato e de argumentos após o string de argumentos. Existem outros
especificadores de formato, como para números inteiros (%d) e reais (%f).
5. Novamente comente a linha de impressão 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 seqüência representa a formatação da saída e ficou mais complexa
“%s\n%s%d\n%s%3.2f\n”. Existem cinco especificadores de formato e cinco argumentos após 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 execução. Porém,
nem sempre ocorrem erros desse tipo para nos avisar, porque Java tenta fazer conversão de
tipos em tempo de execução. Algumas vezes o programa fica com um erro de lógica e pode
imprimir resultados incorretos, inclusive em relatórios importantes (imagine, no balanço 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);
6. Escreva um programa que imprime os números de 1 a 10 em uma linha e de 11 a 20 na linha
seguinte. Os números devem ter um espaço de alguns caracteres entre eles e os de baixo
devem estar alinhados com os de cima. Dica: use a seqüência de escape “\t” para que os
números se posicionem em marcas de tabulação pré-definidas.
7. No programa anterior, os números de baixo foram alinhados aos de cima pela esquerda,
quando o comum para números é o alinhamento pela direita. Escreva um programa que faça
o alinhamento pela direita. Dica: Use o especificador de formato “%d” indicando a quantidade
de dígitos que o numero deve ter que você obterá o alinhamento pela direita.

6
8. Escreva um programa para calcular o cubo de um número “Inteiro”. O programa não deve
usar a classe Scanner (defina a variável numero e atribua seu valor correspondente no código
do programa). Adicionalmente, o programa deve apresentar na janela ‘Output’, a seguinte
mensagem “O cubo do numero X é Y” (onde X é o valor da variável definida no programa e Y
é o resultado).
9. A nota final de um aluno é composta por: 2 provas com peso 3 (cada uma), 1 trabalho com
peso 2 e 2 listas de exercícios com peso 1 (cada uma). Escreva um programa para calcular a
média final do aluno. O programa não deve usar a classe Scanner (defina as variáveis
necessárias e atribua seus valores correspondentes no código do programa). Adicionalmente,
o programa deve apresentar na janela ‘Output’, as notas parciais do aluno em linhas
diferentes e na última linha a seguinte mensagem “A media do aluno é Y” (onde Y é o
resultado).
10. Escreva um programa para calcular o volume de uma esfera a partir do raio da esfera. O
programa deve apresentar o título “Calculo do Volume de uma Esfera” na janela ‘Output’,
antes de pedir o raio da esfera.
11. Escreva um programa para calcular a área de um retângulo a partir da sua base e altura
(necessário entrar 2 parâmetros). O programa deve apresentar o título “Calculo da Área de
um Retângulo” na janela ‘Output’, antes de pedir a base e a altura do retângulo.
12. O programa a seguir tem um erro. Encontre o erro e corrija-o de tal forma que possa ser
compilado e executado corretamente. Qual é o erro?
// INTENTIONALLY UNCOMPILABLE!

/**
* The HelloWorldApp class implements an application that
* simply prints "Hello World!" to standard output.
*/
class HelloWorldApp2 {
public static void main(String[] args) {
System.out.println("Hello World!); // Display the string.
}

Vous aimerez peut-être aussi