Você está na página 1de 15

Programao Orientada por Objectos had, jvo

Tutorial 1: Familiarizao com o JDK, Eclipse e Mooshak


Tutorial 1A: Java a partir da linha de comandos 0. Verificar se a mquina virtual e o compilador esto instalados e acessveis em qualquer ponto da rvore do directrio. 0.1. Windows: A partir do menu Start -> Run, escreva cmd e pressione <enter> de modo a abrir a linha de comandos. Linux: Numa consola em modo de texto ou abrindo uma consola virtual ou xterm no ambiente grfico. Na linha de comandos escreva:
javac -version

0.2.

Se o compilador estiver instalado e acessvel ser mostrada a sua verso e um resumo dos parmetros do compilador:
javac 1.6.0_26 javac: no source files Usage: javac <options> <source files> where possible options include: -g Generate all debugging info (...)

0.3.

Agora, na mesma linha de comandos escreva:


java -version

Se a mquina virtual (JVM) de Java estiver instalada e acessvel ser mostrada a sua verso:
java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

0.4.

Se as verses do compilador e da JVM forem apresentadas o JAVA SDK (JDK) est instalado podendo ser desenvolvidas e executadas aplicaes JAVA. Se No forem apresentadas deve-se verificar se a instalao foi efectuada. Para isso procurar um directrio semelhante a:
C:\Program Files\Java\jdk1.6.0_26 /opt/jdk1.6.0_26 (Windows) (Linux)

0.4.1.

Se este directrio existir verificar se o compilador e JVM esto presentes:


C:\Program Files\Java\jdk1.6.0_26\bin\java C:\Program Files\Java\jdk1.6.0_26\bin\javac /opt/jdk1.6.0_26/bin/java /opt/jdk1.6.0_26/bin/javac (Windows) (Linux)

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 1

Programao Orientada por Objectos had, jvo

Se estiverem apenas necessrio indicar no caminho de busca estas ferramentas, tal como indicado no ponto 0.4.2. Se no existirem necessrio instalar primeiro o JDK. O ficheiro de instalao para Windows ou Linux pode ser obtido no site da Oracle, em: http://www.oracle.com/technetwork/java/javase/downloads/index.html Aps efetuado o download executar o ficheiro de instalao. Em sistemas Linux poder tambm estar disponvel atravs do gestor de pacotes de instalao, o instalador do JDK, embora possa ser uma verso no to atualizada como a obtida no site da Oracle. Em sistemas baseados no Debian (Debian, ubuntu, etc.) a instalao pode ser efetuada na linha de comandos com:
apt-get install openjdk-6-jdk apt-get install openjdk-7-jdk apt-get install oracle-java7-installer (JDK livre) (JDK oracle)

0.4.2.

Aps a instalao poder ser necessrio indicar no caminho de busca as ferramentas da linha de comandos. Para isso em Windows sobre o cone My Computer clicar com o boto esquerdo, ou de contexto, e escolher properties:

Editar a varivel de ambiente path, de modo a acrescentar ao caminho de busca j existente um ponto e vrgula e o caminho para o directrio com as ferramentas do SDK:
; C:\Program Files\Java\jdk1.6.0_27\bin\

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 2

Programao Orientada por Objectos had, jvo

necessrio abrir uma nova linha de comandos para que seja atualizado o caminho de busca e verificar se o compilador e a JVM j esto acessveis escrevendo o seu nome na linha de comandos, como indicado em 0.2 e 0.3. Em Linux pode-se adicionar o caminho de busca ao ficheiro de perfil do sistema:
/etc/profile

No final deste ficheiro adicionar a linha seguinte e gravar:


export PATH = $PATH;/opt/jdk1.6.0_27/bin

Este ficheiro executado sempre que o sistema inicializa. Para evitar inicializar o sistema apenas para atualizar o caminho de busca, podemos executar o ficheiro com perfil do sistema (que um script da shaell) na linha de comandos com:
. /etc/profile

Nota: Repare-se que necessrio escrever um ponto final . antes do nome do ficheiro para que este seja executado Agora verificar se o compilador e a JVM j esto acessveis escrevendo o seu nome na linha de comandos, como indicado em 0.2 e 0.3.

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 3

Programao Orientada por Objectos had, jvo

1. Java Hello World Normalmente o primeiro programa que se apresenta numa dada linguagem de programao apenas imprime uma frase no ecr (o famoso Hello world). Abaixo encontra-se uma verso para Java:
// Ficheiro: HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }

Repare-se que o ponto de entrada no programa, a funo main ( ), ao contrrio da linguagem C/C++, tem de estar dentro de uma classe pblica. O ficheiro com o cdigo fonte deve ter o mesmo nome desta classe, com extenso .java. A funo ou mtodo void main (stirng args[]) dever ser pblico para que possa ser acedido de fora da classe e esttico para que seja acessvel mesmo sem que a classe seja instanciada. Esta funo no retorna nada, sendo por isso void. Como argumentos tm-se um array de Strings onde se pode aceder aos parmetros da linha de comandos. 1.1. Criar um directrio na rea de utilizador, por exemplo: y:\disk1\poo\HelloJava ~/disk1/poo/HelloJava Abrir um editor de texto, como por exemplo o Notepad, Notepad++, GEdit e escrever o cdigo acima e guardar com o nome: HelloWorld.java no directrio j criado. Na linha de comandos compilar com:
javac HelloWorld.java

1.2.

1.3.

criado o ficheiro HelloWorld.class, com cdigo adequado a ser interpretado pela JVM. 1.4. Para executar, na linha de comandos basta invocar a JVM indicando o ficheiro *.class que se pretende executar sem extenso:
java HelloWorld

Deve ser apresentado na linha de comandos a frase:


Hello world!

Nota: Mesmo na linha de comandos, ao invocar a JVM, devem ser respeitadas o caso, isto as letras maisculas e minsculas no nome da classe a executar.

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 4

Programao Orientada por Objectos had, jvo

2. Distncia entre 2 pontos no 1 quadrante Pretende-se desenvolver um editor grfico em que seja possvel escolher dois pontos e calcular a distncia entre eles. Vamos admitir que neste editor os pontos (pixels ou elementos de imagem) tm coordenadas exclusivamente inteiras positivas, como na figura seguinte:

Se os pontos A e B tiverem de coordenadas (xA, yA) e (xB, yB) respetivamente, a distncia d entre eles dada por:
d ( x A xB ) 2 ( y A y B ) 2

Vamos comear por implementar a classe Point, que permite implementar a funcionalidade bsica indicada acima. Para isso: 2.1. Criar um diretrio na rea de utilizador, por exemplo y:\disk1\poo\EditorGrafico em Windows e ~/disk1/poo/EditorGrafico em Linux. Escrever o cdigo da classe Point, e gravar no ficheiro Point.java no directrio criado no ponto anterior:
// File: Point.java class Point { private int _x_, _y_; public Point(int x, int y) { setX(x); setY(y); } public int getX() { return _x_; } public int getY() { return _y_; } public void setX(int x) { assert x>0; _x_ = x; } public void setY(int y) { assert y>0; _y_ = y; } public double dist (Point p) { int dx = getX() - p.getX(); int dy = getY() - p.getY(); return Math.sqrt(dx*dx + dy*dy); } };

2.2.

2.3.

Escrever o cdigo do cliente, e gravar no ficheiro Client.java no mesmo directrio:


public class Client { public static void main (String[] args) { Point A = new Point(1,1); Point B = new Point(4,2); System.out.println("Distncia A-B = " + A.dist(B)); } }

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 5

Programao Orientada por Objectos had, jvo

2.4.

Navegando para o directrio onde esto os ficheiros fonte, compilar a Classe Point e a classe Client:
javac Point.java javac Client.java

ou apenas:
javac *.java

de qualquer forma resultam os ficheiro compilados:


Point.class Client.class

2.5.

Para executar a aplicao, na linha de comandos, deve ser invocada a JVM para executar a classe que contm o mtodo main ():
java Client

Deve ser apresentado na linha de comandos a distncia entre os dois pontos.

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 6

Programao Orientada por Objectos had, jvo

Tutorial 1B: Breve tutorial sobre o Eclipse O Eclipse encontra-se instalado nos PCs da sala 1.53 tanto em Windows como em Linux. Em Windows dever existir um atalho no ambiente de trabalho, semelhante a:

Se no existir o atalho, o executvel do Eclipse tipicamente encontra-se em: C:\Eclipse\eclipse.exe ou C:\Program Files\Eclipse\eclipse.exe Em Linux pode aceder-se ao Eclipse a partir do ambiente grfico Gnome no menu Applications sub-menu Programming ou development ou inici-lo correndo o executvel eclipse que se encontra no diretrio de instalao.

0. Instalao do IDE Eclipse Nota prvia: No necessrio instalar o Eclipse nos PCs da sala 1.53. 0.1. O Eclipse necessita que o JDK esteja previamente instalado como indicado na primeira parte deste tutorial, no ponto 0.4. Para instalao do eclipse deve ser efetuado o download do ficheiro de instalao de: http://www.eclipse.org/downloads/ Existem vrias verses. Para POO recomenda-se a instalao do Eclipse Classic. A instalao simples, consiste apenas em descompactar o ficheiro de instalao para um diretrio. O executvel do eclipse ficar na raiz desse diretrio com o nome eclipse.exe no Windows ou apenas eclipse em Linux. Opcionalmente pode ser criado um atalho para o IDE no ambiente de trabalho. Em sistemas Linux poder tambm estar disponvel atravs do gestor de pacotes de instalao, o instalador do Eclipse, embora possa ser uma verso no to atualizada como a obtida no site do Eclipse indicado acima. Em sistemas baseados no Debian (Debian, ubuntu, etc.) a instalao pode ser efetuada na linha de comandos, com:
apt-get install eclipse

0.2.

1. Execuo do IDE Eclipse 1.1. Ao se executar o Eclipse perguntado qual o WorkSpace que o utilizador pretende. Este consiste na raiz de uma rvore de directrios onde sero guardadas as aplicaes desenvolvidas com este IDE.
POO Lab 1 - 7

http://w3.ualg.pt/~jvo/poo

Programao Orientada por Objectos had, jvo

Deve ser escolhido um directrio na rea de utilizador, por exemplo: y:\disk1\WorkSpace. Na janela pode ser colocado uma marca para evitar que esta pergunta se faa sempre que o IDE inicia:

Pode-se verificar que no directrio y:\disk1\WorkSpace, foi criado o sub-directrio .metada. Posteriormente o WorkSpace pode ser alterado a partir do menu window->preferences, alterando as preferncias do item: General Workspace StartUp and ShutDown Prompt for WorkSpace on StartUp 1.2. Ao executar-se o Eclipse surge um ecr de boas-vindas que permite aceder a alguns tutorais sobre o ambiente, como por exemplo, criar um projecto simples, ou desenvolver aplicaes com GUI (graphical user interface). Este ecr pode ser acedido tambm a partir do menu: Help -> Welcome Ajuda para o IDE e para o Visual Editor (se instalado) pode ser acedida tambm em: Help -> Help contents

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 8

Programao Orientada por Objectos had, jvo

2. Java Hello World no Eclipse 2.1. Executar o IDE eclipse e criar um novo projecto a partir do menu: File -> New -> Project Na janela que se abre escolher Java Project e pressionar o boto next. Na janela seguinte escrever o nome do projecto: HelloWorld e pressionar o boto Finish.

Repare-se que no WorkSpace foi criado um directrio com o nome do projecto HelloWorld, e dois ficheiros que descrevem o projecto: .classpath e .project, e portanto no devem ser apagados nem modificados directamente. 2.2. Na zona esquerda do IDE a Janela PackageExplorer tm uma entrada com o nome do projecto criado. O IDE suporta alguns templates para o cdigo fonte, de modo a poupar ao programador que repita o mesmo cdigo sempre que deseja criar um novo mdulo do programa. Assim, como o mtodo main () deve estar dentro de uma classe, clicando no nome do projecto no PackageEditor e escolhendo new -> class abre-se uma janela que permite criar o cdigo base de uma dada classe. No nome da classe colocar: HelloWorld e colocar uma marca em: public static void main (String[] args) uma marca de modo que este mtodo seja criado com o corpo vazio.

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 9

Programao Orientada por Objectos had, jvo

Aps pressionar Finish criado no directrio de projecto o ficheiro HelloWorld.java, sendo tambm apresentado no centro do IDE:
public class HelloWorld { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } }

2.3.

Repare-se que o corpo do mtodo main () tem um comentrio: //TODO ..., indicando onde deve ser escrito o cdigo. Para terminar o cdigo basta substituir esta linha por:
System.out.println("Hello world!");

2.4. 2.5.

Aproveite para gravar com File -> save ou File -> Save all, ou apenas ctrl <S>. Para compilar e executar a partir do menu: Run -> Run as -> Java Application

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 10

Programao Orientada por Objectos had, jvo

Na parte inferior do IDE, na consola aparece a sada do programa, neste caso a frase: HelloWorld. Em caso de erro, na mesma posio do IDE no TAB problems surge a descrio do erro e das linhas onde ocorreu.

3. Distncia entre 2 pontos no 1 quadrante no Eclipse Vamos agora implementar o cdigo para a distncia entre dois pontos j apresentado na primeira parte deste tutorial no Eclipse: 3.1. No IDE eclipse e criar um novo projecto a partir do menu: File -> New -> Project Na janela que se abre escolher Java Project e pressionar o boto next. Na janela seguinte escrever o nome do projecto: GraphEditor e pressionar o boto Finish. No WorkSpace criado o directrio do projecto: GraphEditor. 3.2. No PackageExplorer clicar no nome do projecto e escolher new -> file, abre-se uma janela que permite criar um ficheiro de texto limpo, no directrio do projecto. Nesta janela basta dar o nome do ficheiro em File Name: Point.java e pressionar Finish. Repetir o ponto anterior para criar o ficheiro Client.java. No PackageExplorer, esquerda no IDE, aparecem agora referncias a ambos os ficheiros do projecto.

3.3.

3.4.

Neste caso no foi pedido ao IDE para criar o cdigo base de nenhuma classe nos ficheiro, pois o cdigo de ambos j foi apresentado neste enunciado. Assim clicando no nome de qualquer classe no PackageEditor abre um editor de texto para cada ficheiro, que permite copiar o cdigo fonte apresentado na primeira parte deste tutorial, para cada um dos ficheiros. Aps ter sido copiado o cdigo de ambos gravar com File -> Save all. Para compilar e executar, seleccionar no PackageEditor o nome da classe, ou do ficheiro, que contm o mtodo main (), e a partir do menu:
POO Lab 1 - 11

3.5.

http://w3.ualg.pt/~jvo/poo

Programao Orientada por Objectos had, jvo

Run -> Run as -> Java Application Em baixo do IDE, na consola aparece a distncia entre os dois pontos:
Distncia A-B = 3.1622776601683795

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 12

Programao Orientada por Objectos had, jvo

Tutorial 1C: Breve tutorial sobre o Mooshak 0. Vamos agora usar o Mooshak para verificar a correo de um programa que corresponde a uma verso do problema da distncia entre dois pontos apresentado anteriormente. O problema a resolver apresentado no fim em anexo. 0.1. Antes de mais inscreva-se num turno e num grupo. Use o link disponvel na tutoria eletrnica ou http://www.deei.fct.ualg.pt/POO/Entregas Depois, aceda ao mooshak atravs http://mooshak.deei.fct.ualg.pt/~mooshak do link da tutria ou

0.2.

0.3.

Para obter User/Password clique em Register [for On-line Contest] 0.3.1. Em Contest, selecione POO 2012/13 0.3.2. Em Group, selecione o seu turno prtico Em Name, escreva POO1213P<i>G<j> onde <i> o seu turno prtico e <j> o seu nmero de grupo, usando os dados fornecidos em http://www.deei.fct.ualg.pt/POO/Entregas. 0.4.1. Em Email, escreva o endereo de correio eletrnico de um dos elementos do grupo para onde ser enviada a password.

0.4.

0.5.

Depois de efetuado o login, pode escolher, entre outras coisas, o seguinte: 0.5.1. Problema Escolha A Tutorial 1 0.5.2. Visualizar (View) lista o enunciado do problema selecionado 0.5.3. Perguntar (Ask) coloque aqui as suas questes sobre o problema selecionado 0.5.4. Escolher ficheiro Submeter (Submit) permite fazer o upload do ficheiro com o cdigo java. Neste momento, vamos submeter sempre um nico ficheiro de cdigo. 0.5.5. Depois de devidamente testado, faa o upload do seu ficheiro .java submetendo-o. 0.5.6. Aguarde pela resposta do Mooshak e veja no Help o seu significado, se necessrio.

Alguns aspetos prticos (Extrados de http://ctp.di.fct.unl.pt/~amd/cpn/2007tiup/etapa5/praticos.html) <quote> Dados de entrada Os dados de entrada, usados para testar as solues, so lidos da entrada padro. Consistem em texto cuidadosamente formatado para ser simples de processar: Normalmente, nas primeiras linhas dos dados de entrada surgem alguns nmeros inteiros que anunciam o tamanho das diversas partes do texto que se segue. Isso evita a necessidade de testar a condio de "fim-de-ficheiro", durante a leitura dos dados. A ltima linha do ficheiro est sempre devidamente terminada por uma mudana de linha. Espaos em branco, quando usados, so sempre considerados como separadores. Os espaos em branco nunca ocorrem em grupos. Uma linha nunca comea com um espao em branco. Uma linha nunca acaba com um espao em branco.

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 13

Programao Orientada por Objectos had, jvo

Note que as linhas com nmeros inteiros que ocorrem no incio dos dados de entrada devem ser consumidas bem at ao fim para evitar desalinhamentos na leitura dos dados subsequentes. Eis como isso se faz em Java:
import java.util.* ; Scanner sc = new Scanner(System.in); /* Aviso: nunca crie mais do que um Scanner sobre o input. */ int n = sc.nextInt(); sc.nextLine(); /* Salta a mudana de linha. */

Supondo que os dados se iniciam por uma linha contendo dois inteiros separados por um espao em branco:
import java.util.* ; Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); sc.nextLine(); /* Salta a mudana de linha. */

Dados de sada Os dados de sada, produzidos pelos programas submetidos aos mooshak, so escritos na sada padro. necessrio respeitar rigorosamente o formato exigido no enunciado. Qualquer desacerto, mesmo ligeiro, suficiente para que um programa seja classificado como "Presentation error". Note que no possvel detectar visualmente certas anomalias nos dados de sada. Por exemplo: um espao em branco no final duma linha, uma linha em branco no final dos dados, a omisso da mudana de linha na ltima linha dos dados. Todas estas situaes so inaceitveis e provocam um "Presentation error". </quote>

Para submisso ao Mooshak cada programa tem de ficar integralmente includo num nico ficheiro de extenso .java. O contedo possvel de um desses ficheiros : 1. opcionalmente, uma diretiva package; 2. zero ou mais diretivas import; 3. uma ou mais definies de classes, sendo que uma e s ser pblica e ter o mesmo nome do ficheiro.

Nota final: Alguns compiladores geram avisos (warnings) quando encontram caracteres que no conseguem identificar, mesmo nos comentrios. Isto sucede com caracteres acentuados como os portugueses (por vezes pode ser apenas uma questo de codepage diferente entre o sistema onde foi escrito o cdigo e o sistema onde compilado). O Mooshak pode estar configurado para abortar a compilao no s quando o compilador encontra erros no cdigo mas tambm quando o compilador gera avisos, sendo indicado Compilation error. Por isso recomenda-se que se evite a utilizao no cdigo fonte de caracteres acentuados mesmo nos comentrios (no caso geral caracteres cujo cdigo ASCII superior a 127).
http://w3.ualg.pt/~jvo/poo POO Lab 1 - 14

Programao Orientada por Objectos had, jvo

Anexo: Distncia inteira entre dois pontos Desenvolva um programa que, dados dois pontos, calcule a parte inteira da distncia entre eles. Os pontos tm coordenadas exclusivamente inteiras positivas, como na figura seguinte.

Se os pontos A e B tiverem de coordenadas (xA, yA) e (xB, yB) respetivamente, a distncia d entre eles dada por d ( x A xB ) 2 ( y A yB ) 2

Entrada A entrada composta por duas linhas. A primeira linha contem dois inteiros, XA, YA, representado as coordenadas do ponto A, 0 <= XA <= 1000, 0 <= YA <= 1000. A segunda linha em tudo idntica primeira, representando as coordenadas do ponto B.

Sada A sada tem uma nica linha, que contm a parte inteira da distncia entre os dois pontos dados.

Exemplo de Entrada 11 42

Exemplo de Sada 3

http://w3.ualg.pt/~jvo/poo

POO Lab 1 - 15

Você também pode gostar