1 / 9 E N G E N H A R I A
I N F O R M Á T I C A Ano Lectivo 2012/2013 1º Semestre
FOLHA 1 - INTRODUÇÃO À LINGUAGEM DE PROGRAMAÇÃO JAVA
1. Instruções detalhadas para o primeiro programa
As instruções seguintes têm como objectivo auxiliar a escrita do seu primeiro programa em Java, e destinam-se a utilizadores de Sistemas Operativos Microsoft Windows. Para escrever o primeiro programa será necessário que as seguintes aplicações estejam instaladas:
• The JavaTM 2 Platform, Standard Edition. É possível descarregá-la do seguinte endereço:
http://www.oracle.com/technetwork/java/javase/downloads/index.html As instruções de instalação poderão ser consultadas no seguinte endereço: http://docs.oracle.com/javase/7/docs/webnotes/install/index.html
• Um editor de texto.
Poder-se-á utilizar o Bloco de Notas, o editor incluído no Windows, que poderá ser acedido a partir do menu Iniciar, no sub menu Programas > Acessórios > Bloco de Notas.
O ambiente das aulas práticas já se encontra devidamente preparado, pelo que não deverá ser necessário qualquer tipo de instalação.
No entanto, e com a finalidade de verificar o seu correto funcionamento, selecione, a partir do menu Iniciar, no sub menu Programas > Acessórios, a aplicação Linha de Comandos. Introduza o comando javac e pressione a tecla Enter. Se for exibida a lista de opções do
comando javac o ambiente de trabalho está, de facto, corretamente configurado.
Caso seja devolvida uma mensagem de erro indicando que o comando ou nome do ficheiro é inválido, significa que o Windows não conseguiu encontrar o compilador Java, pelo que deverá atualizar a variável PATH do sistema. Instruções sobre como fazê-lo poderão ser consultadas no seguinte endereço:
http://docs.oracle.com/javase/7/docs/webnotes/install/windows/jdk-installation-windows.html#path
2 / 9
2. Criação da Primeira Aplicação (Hello World)
O primeiro programa – HelloWorldApp – irá, simplesmente, imprimir na consola a saudação “Hello world!”. Para criar este programa será necessário:
I. Criar o Ficheiro de Código Fonte (Source File).
O Ficheiro de Código Fonte contém texto, escrito na linguagem de programação Java, e que todos os programadores deverão compreender. A sua extensão deverá ser .java. Pode editar-se um Ficheiro de Código Fonte com qualquer editor de texto. Sublinhe-se que este ficheiro não é executável.
II. Compilar o Ficheiro Fonte para um Ficheiro de Bytecode (Bytecode File).
O compilador traduz o texto do Ficheiro de Código Fonte para instruções que a Máquina Virtual do Java (Java VM) possa compreender e executar; traduz, portanto, o Ficheiro de Código Fonte para um Ficheiro de Bytecode. Este ficheiro terá a extensão .class. III. Correr o programa contido no Ficheiro de Bytecode.
O interpretador Java instalado no computador implementa a Java VM; este interpretador executa as instruções contidas no Ficheiro de Bytecode, traduzindo-as para instruções que o computador possa compreender.
Nota: quando se compila um programa escrito em Java, não são geradas instruções para uma plataforma específica; ao invés, é gerado bytecode, que é um conjunto instruções para a Java VM. Se a plataforma – quer seja Windows, Unix, MacOS ou um browser – tiver a Java VM instalada, compreenderá esses bytecodes e executará o programa. Eis a razão pela qual a linguagem Java é considerada “write once, run anywhere”.
3 / 9
2.1. Criar o Ficheiro de Código Fonte
Deverá abrir o Bloco de Notas e digitar o seguinte código:
/**
* The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output.
*/
public class HelloWorldApp {
public static void main(String[] args) { // Display "Hello World!"
System.out.println("Hello World!"); }
}
Guarde o código num ficheiro; o seu nome deverá, necessariamente, ter o mesmo nome da Classe – HelloWorldApp – e a extensão .java. Deverá, portanto, ser denominado HelloWorldApp.java.
Refira-se, a propósito, que a linguagem Java diferencia maiúsculas/minúsculas (case-sensitive), pelo que HelloWorldApp é diferente de hellowordapp.
2.2. Compilar o Ficheiro de Código Fonte
Na Linha de Comandos, selecione a diretoria onde gravou o ficheiro HelloWorldApp.java.
Para compilar a aplicação, insira o seguinte comando:
4 / 9
2.3. Executar o programa contido no Ficheiro de Bytecode
Na mesma diretoria, insira o seguinte comando:
java HelloWorldApp
O resultado deverá ser semelhante ao seguinte:
3. Explicação do código da aplicação Hello World
Uma classe – o bloco básico de uma linguagem de Programação Orientada a Objetos como o Java – é um modelo que descreve os dados e os comportamentos associados com instâncias dessa classe. Quando se instancia uma classe, é criado um objecto que tem o mesmo comportamento de outras instâncias dessa mesma classe. Os dados associados a uma classe ou objecto são armazenados em variáveis; o comportamento associado a uma classe ou objecto é implementado com recurso a métodos.
/**
* The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output.
*/
public class HelloWorldApp {
public static void main(String[] args) { // Display "Hello World!"
System.out.println("Hello World!"); }
}
A palavra-chave class inicia a definição da Classe, denominada HelloWorldApp. As
variáveis e métodos da classe estão delimitados por chavetas no início e fim do bloco de definição.
A aplicação “Hello World” não possui quaisquer variáveis, e tem um único método denominado main. Quando o interpretador Java executa uma aplicação – através da invocação
5 / 9 da classe de controlo da aplicação – começa por chamar o método main dessa classe. O método main chamará, então, os outros métodos necessários para executar a aplicação.
Esta aplicação é um dos mais simples programas que podem ser escritos na linguagem de programação Java (e que, de facto, faça qualquer coisa). É precisamente devido à sua simplicidade que não é necessário definir quaisquer outras classes que não a classe
HelloWorldApp. No entanto, esta aplicação usa, de facto, uma outra classe – a classe System
– que é parte da API (“Application Programming Interface”) fornecida com o ambiente Java. Nesta linha de código é executada a instrução que imprime para o ecrã a mensagem “Hello World!”.
4. Problemas comuns no Compilador e no Interpretador
4.1. Problemas do Compilador
4.1.1. Erros de Sintaxe
Caso se digite erroneamente uma parte de um programa, o compilador poderá emitir um erro de sintaxe. A mensagem indica, habitualmente, o número da linha onde o erro foi detectado, o código nessa linha, e a posição do erro no código. Segue-se o exemplo de um erro causado pela omissão de um ponto e vírgula (;) no fim de uma instrução:
testing.java:14: `;' expected.
System.out.println("Input has " + count + " chars.") ^ 1 error
Por vezes, o compilador não consegue identificar a intenção do programador, e imprime uma mensagem de erro algo confusa que se poderá propagar por várias linhas. Por exemplo, na seguinte secção de código foi omitido um ponto e vírgula (;) na linha a negrito:
while (System.in.read() != -1) count++
System.out.println("Input has " + count + " chars.");
Ao processar este código, o compilador emite duas mensagens de erro:
testing.java:13: Invalid type expression. count++
^
testing.java:14: Invalid declaration.
System.out.println("Input has " + count + " chars."); ^
6 / 9 O compilador emite duas mensagens de erro porque após processar count++, o estado do compilador indica que este se encontra no meio de uma expressão. Sem o ponto e vírgula, é impossível ao compilador saber se a instrução está completa.
Caso sejam emitidos quaisquer erros de sintaxe, o programa não foi compilado com sucesso, pelo que o compilador não criou um ficheiro do tipo .class. Será, pois, necessário analisar
cuidadosamente o programa, corrigir os erros detectados, e tentar de novo. 4.1.2. Erros de Semântica
Além de analisar a correção sintáctica do programa, o compilador verifica outras incorreções básicas. Por exemplo, o compilador emite uma mensagem de erro de cada vez que uma variável não for iniciada:
testing.java:13: Variable count may not have been initialized. count++
^
testing.java:14: Variable count may not have been initialized. System.out.println("Input has " + count + " chars."); ^
2 errors
O programa não foi, mais uma vez, compilado, pelo que será necessário corrigir os erros e tentar outra vez.
4.2. Problemas do Interpretador
Um erro comum é a tentativa de interpretar o ficheiro .class criado pelo compilador. Por
exemplo, se se tentar interpretar o ficheiro HelloWorldApp.class em vez da classe HelloWorldApp, o interpretador exibirá a seguinte mensagem de erro:
Can't find class HelloWorldApp.class
O argumento para o interpretador Java é, portanto, o nome da classe que se pretende utilizar, e não o nome do ficheiro.
Um outro erro relaciona-se com o facto de o interpretador Java necessitar que a classe a executar possua um método denominado main, precisamente porque precisa de saber onde
começar.
Se tentarmos executar uma classe que não tenha o método main, o interpretador mostrará a seguinte mensagem de erro:
7 / 9
In class classname: void main(String argv[]) is not defined
5. Exercícios
1. Escreva um programa na linguagem de programação Java que peça ao utilizador dois números inteiros e mostre o resultado da soma no ecrã.
2. Escreva um programa na linguagem de programação Java que peça ao utilizador a altura e largura de um triângulo e mostre o resultado da respectiva área do triângulo.
3. Escreva um programa na linguagem de programação Java que peça ao utilizador o raio de uma circunferência e mostre os valores respectivos da área e perímetro da circunferência. 4. Escreva um programa que troque o conteúdo de duas variáveis reais cujos valores são solicitados ao utilizador.
5. Altere o programa da questão anterior de modo a que os valores sejam mostrados como números inteiros.
6. Escreva um programa que leia a altura e o peso de uma pessoa e apresente o valor do seu índice de massa corporal (IMC).
Nota: IMC = peso / altura2
7. Escreva um programa, que calcule a distância de um ponto a uma circunferência. O ponto é definido pelas suas coordenadas X e Y e a circunferência é definida pelas coordenadas do centro Xc, Yc e pelo raio R. O valor do raio é fixo e igual a 3, os restantes valores devem ser pedidos ao utilizador.
Nota: A distância d entre dois pontos de coordenadas (X1,Y1) e (X2,Y2) é dada pela expressão d =
(
X1−X2) (
2 + Y1−Y2)
2Para o cálculo da raiz quadrada use a função Math.sqrt(valor) que pertence à package java.lang.Math.
8. Elabore um programa que leia um caracter do teclado e mostre o respectivo valor ASCII. 9. Elabore um algoritmo que obtenha a temperatura em graus celsius e que calcule o valor correspondente em graus Kelvin.
Grau Kelvin = 273.15 + Celsius
10. Elabore um programa que leia a idade de uma pessoa expressa em anos, meses e dias e a mostre expressa apenas em horas.
8 / 9 11.
a) Escreva um método que receba como parâmetro um valor expresso em Escudos e devolva o valor equivalente em €.
b) Suponha agora que pretende converter uma quantia expressa em libras para dólares americanos. Será que poderia utilizar o método escrito na alínea anterior? Escreva agora outro método que, dado um valor expresso numa qualquer divisa e uma taxa de câmbio, converta o valor recebido para outra divisa utilizando essa taxa.
c) Escreva um programa que permita testar os dois métodos.
12. O arredondamento de um número pode ser realizado multiplicando o mesmo por uma potência de 10, somando-lhe 0.5, truncando-lhe a parte fraccionária e dividindo-o pela mesma potência de 10.
Por exemplo, para arredondar 43.89765 às centésimas devemos fazer: 1. 43.89765 * 100 = 4389.765;
2. 4389.765 + 0.5 = 4390.265; 3. parte inteira de 4390.265 = 4390; 4. 4390 / 100 = 43.90.
a) Escreva um método que permita arredondar um número ao factor 1/y em que y é múltiplo de 10.
b) Escreva um programa que permita testar o método anterior.
13. Pretende-se um programa que calcule o prejuízo provocado pelas fugas de água numa habitação. Sabendo que, por minuto, perdem-se sensivelmente:
• Canalização - 0,00000000053 m3; • Torneira - 0,000016 m3; • Autoclismo - 0,00023 m3;
a) Escreva um método que calcule a quantidade de água (m3) desperdiçada num ano, dado o respectivo valor por minuto.
b) Utilizando o método escrito na alínea anterior, elabore um programa que calcule e apresente no ecrã o total de água desperdiçada pelas 3 componentes da habitação, bem como as respectivas percentagens.