Você está na página 1de 23

AULA TEÓRICA 4

Tema 3. Linguagem de programação de alto nível Java


Ø LP Java. Estrutura de um programa em Java.
Ø Identificadores. Variáveis e constantes.
Ø Tipos de dados básicos (primitivos):
u representação de números inteiros e decimais;
u representação de valores lógicos.
u representação de caracteres.
Ø Classe String.
Ø Expressões.
Ø Operadores de incrementação e de decrementação unária de
variáveis.
Ø Classe Math.
Ø Conversões do tipo
Ø Expressões lógicas
1
Linguagem de programação
Java
q foi criada nos anos 90 com por uma equipe de programadores
chefiada por James Gosling, na empresa Sun Microsystems
com objectivo de criar uma nova LP que pudesse ser
executada em qualquer tipo do computador;
q foi considerado um computador virtual que se imagina capaz
de executar um código constituído por instruções simples. Este
código é chamado por bytecode, pois é usado 1 byte para
representar cada instrução;
q compilador de Java, ao contrário dos compiladores tradicionais,
não vai gerar código executável, mas sim bytecode;
q é necessário que cada computador tenha um programa que
possa interpretar e executar bytecode. Ao conjunto de todos
os intérpretes disponíveis dá-se o nome de máquina virtual
Java (JVM- Java Virtual Machine). 2
Para criar programas em Java é necessário ter o
Java Development Kit (JDK) instalado no
computador.

O JDK inclui diversas ferramentas úteis, como seja o


compilador (chamado javac), o interprete de bytecode
(chamado java) e um largo conjunto de classes já
programadas com respectiva documentação.

É comum a utilização de ambientes integrados de


desenvolvimento que facilitam a utilização do JDK
(tais como Gel, Eclipse, BlueJ, NetBeans, JBilder,
etc.)
3
Estrutura de um programa em Java
Um programa em Java é um conjunto de uma ou mais classes,
uma das quais será a principal e deve ter o mesmo nome que o
ficheiro.
Uma classe pode ser vista como um conjunto de variáveis e
subprogramas(métodos).
Métodos são blocos de instruções que contêm uma
identificação, realizam determinada tarefa e podem retornar
algum tipo de informação. Método main()é o método principal.
Três tipos de componentes principais constituem um programa:
v Declarações, que reservam a memória para o
armazenamento da informação envolvida.
v Instruções, que definem as acções e decisões a tomarem.
v Comentários que são úteis para os humanos, mas ignorados
pelo computador. 4
O conjunto de caracteres do Java
A sintaxe do Java inclui palavras reservadas, símbolos,
identificadores e valores. Utilizam-se:
Ø as letras de A a Z (maiúsculas e minúsculas),
Ø os dígitos 0 a 9,
Ø os símbolos especiais:
+ . < (
- : <= )
* ; > [
/ ‘ >= ]
% , == {
= ^ != }
q palavras reservadas que têm em Java um significado padrão
e predefinido. Por exemplo, while, if e new são instruções
e class, int indicam tipos de informação declarada. 5
Identificadores
Um identificador é um nome que é dado a um elemento do
programa, tal como uma constante, variável, subprograma ou
classe.
Os identificadores são compostos de letras (somente da língua
inglesa), dígitos, caracteres _ e $ em qualquer ordem, desde
que o primeiro caracter não seja um digito.
O Java distingue entre maiúsculas e minúsculas, ou seja, Max,
max e MAX são considerados identificadores diferentes.
É comum usar certas convenções para os identificadores:
• o nome de uma classe começa por maiúscula (Poligono);
• o nome de um subprograma(método) começa por minúscula
(por ex. main());
• o nome de uma variável começa por minúscula (cateto1);
• o nome de uma constante é todo em maiúsculas (TAXA). 6
MNão pode usar palavras reservadas como identificadores
x1, 2x1, soma, a_b, $dollar, máximo, teste 1

Variáveis
Uma variavel representa uma localização em memória do
computador que tem um nome atribuído pelo programador e
que vai servir para guardar informação de um determinado tipo.
O valor de uma variável pode variar durante a execução de um
programa.
A declaração de variáveis é obrigatória. A sintaxe da declaração
de variáveis é a seguinte:
tipo_dado nome_da_variavel;
ou tipo_dado nome_da_variavel=valor_inicial;
Segunda forma, alem de declarar, inicializa a variável com valor
fornecido.
7
Exemplos: int numConta;
int valMax = 1;
double preco, total;

Constantes
Constantes são os dados cujos valores se mantém inalterados
ao longo do programa.
A sintaxe de declaração de uma constante é a seguinte:
final tipo_de_dado NOME_DE_CONSTANTE = valor;

Exemplo: final int MAX_STUDENTS = 25;


MNão pode mudar o valor da constante após a sua declaração!

8
Tipos de dados básicos (primitivos)
Um tipo de dados é definido pela gama de valores que pode
representar e pelas operações que sobre eles se podem
efectuar.

Java permite tratar 8 tipos de dados predefinidos:


– boolean,
– char,
– byte,
– short,
– int,
– long,
– float,
– double. 9
Representação de números inteiros
A representação de números inteiros é assegurada pelos
seguintes tipos:

Tipo Memória Menor valor Maior valor


ocupada
byte 8 bits -128 127
short 16 bits -32 768 32 767
int 32 bits -2 147 483 648 (-231) 2 147 483 647 (231-1)
long 64 bits -263 (263-1)

Para alem de representação decimal, os números podem


também ser representados nas bases octal e hexadecimal. Para
isso usam-se prefixos: 0 – para octal e 0x para hexadecimal.
Por exemplo: int peso = 0x12a;
10
Representação de números decimais
A representação de números decimais é assegurada pelos
seguintes tipos:

Tipo Memória Menor valor Maior valor


ocupada
float 32 bits -3.4 x 1038 3.4 x 1038
double 64 bits -1.7 x 10308 1.7 x 10308

Os valores reais podem ser representados usando a notação


decimal (por ex. 34.054) ou a notação exponencial (por ex.
2.5E-6 que representa o número 2,5 x 10-6).
Em qualquer dos casos, o número pode ser seguido das letras f
(ou F) ou d (ou D) indicando que se pretende o seu
armazenamento como float ou como double. A ausência de
indicação implica que o número seja considerado como double.
11
Representação de valores lógicos
O tipo boolean é um tipo de dados para guardar valores
lógicos, nomeadamente true (verdade) e false (falso).
Tipo Memória ocupada Valores
boolean 1 bit true ou false

Instrução de atribuição
A atribuição permite armazenar um valor numa variável. Esse valor
pode ser fornecido directamente ou resultar do cálculo de uma
expressão.

int alunos = 80;


alunos= 2 * alunos;
12
Representação de caracteres
O tipo char é usado para guardar caracteres individuais que
são representados internamente no computador pelos seus
códigos ASCII. A declaração de variáveis deste tipo é feita da
seguinte forma:
char letra; ou char letra = 'a';
O uso de caracteres é feito entre apóstrofos ' '. Por exemplo:
letra = 'M';
Uma vez que as variáveis do tipo char armazenam códigos, que
são números, é possível fazer algum tipo de aritmética com
estes variáveis, nomeadamente incrementações e
decrementações.
Tipo Memória ocupada Valores
char 16 bits Qualquer caracter pertencente ao Unicode
13
14
!
Classe String
A classe String é uma das classes predefinidas da Java e serve para
manipular cadeias de caracteres.

Declaração de uma variável do tipo String

Para criar declarar uma variável da classe String pode usar uma instrução
na forma abreviada:

String frase = "Programar aprende-se programando";

Métodos da classe String

Existem vários métodos que permitam manipular dados do tipo String e


que vão ser aprendidos mais tarde.

15
Expressões
Uma expressão é uma sequência de operadores e de valores.
A linguagem Java tem definido um conjunto de operadores,
aritméticos e lógicos, que permitem a construção de
expressões.
Operador Prioridade Operação
* 1 Multiplicação
/ 1 Divisão
% 1 Resto da divisão
+ 2 Adição
- 2 Subtração
MOperador divisão apresenta comportamentos diferentes em
função do tipo de operandos a que é aplicado. No caso de
algum dos operandos ser real (float ou double), o
resultado será também um número real. Por exemplo:
double x = 10/4.0; //x ¬ 2.5 16
MNo entanto, se ambos os operadores forem inteiros, o
resultado será também um inteiro, pelo que a parte
fraccionária do resultado é desprezada. Assim,
int y = 10/4; //y ¬ 2

O operador % permite calcular o resto de uma divisão. Por


exemplo:
int z = 13 % 4;//z ¬ 1
Ainda que este operador seja geralmente mais útil para calcular
o resto de divisões inteiras, o Java permite também a sua
utilização com operandos reais. Por exemplo:
double f = 8.6 % 2.0; //f ¬ 0.6
Operadores de incrementação e de decrementação unária
de variáveis
++ (soma 1 ao seu operando)
-- (subtrai 1 ao seu operando)
17
Exemplo:
conta++; //pós-incremento
conta--; //pós-decremento
ou ainda:
++conta; //pré-incremento
--conta; //pre-decrimento
A distinção entre as duas formas destes operadores, antes ou
depois do operando, só é relevante quando fazem parte de uma
expressão maior.
Por exemplo, supondo que a variável num tem o valor 7, a
expressão x = ++num; incrementa o valor de num (para 8)
e depois atribui-o a x (por isso x passa a ter o valor 8).
Se for x = num++; primeiro é feita a atribuição de num a x
(x fica com o valor 7) e só depois é que é feita a incrementação
de num.
18
Java fornece vários operadores de atribuição (+=, -=, *=, /=)
para abreviar expressões de atribuição. Por exemplo, podemos
abreviar a instrução
c = c + 3; como c += 3;

O operador += adiciona o valor da expressão à direita do


operador ao valor da variável à esquerda do operador, e
armazena o resultado na variável à esquerda do operador.

19
Classe Math
O JDK (Java Development Kit) inclui um largo conjunto de
classes e métodos que podem ser utilizados para variados fins.

Os métodos pré-programados da classe Math permitem realizar


certos cálculos matemáticos comuns.

Por exemplo, Math.random() gere um número aleatório entre


0 e 1, Math.sin(a) calcula o seno de um ângulo. É
aconselhável a consulta da documentação do JDK para obter
uma lista completa de metodos existentes no Math.
....
int base = 3, expoente = 4;
double resultado = Math.pow(base,expoente);
. . . 20
Conversões de tipo
O tipo do resultado de uma expressão aritmética depende do
tipo dos seus operandos. Se todos eles forem do mesmo tipo, o
resultado será também desse tipo. No caso contrário devem ser
feitas as conversões de tipo.
Algumas são feitas automaticamente e de modo a que não haja
perda de informação, pelo que nem todas as transformações
são possíveis.
A cadeia de conversão automática do compilador é a seguinte:

byte > short > int > long > float > double

int var_int = 10, result_int;


double var_double = 5.9, result_double;
result_double = var_int + var_double;
result_int = var_int + var_double;
21
result_int = (int) (var_int + var_double);
Expressões lógicas
Existem tambem operadores relacionais e operadores lógicos.
Estes operadores permitem a construção de expressões que têm
como resultado um valor lógico, true ou false.
Operadores relacionais: >, <, >=, <=, == (igual a), != (diferente de)
Operadores lógicos: && (conjunção), || (disjunção), ! (negação)
O operador && tem dois operandos e devolve true apenas se ambos
os operadores forem true, caso contrário devolve false.

A B A && B A||B
F F F F
F T F T
T F F T
T T T T

A operação de negação recebe apenas um operando lógico e inverte


o seu valor.
É comum que os operandos utilizados pelos operadores lógicos
resultem de expressões que envolvem operadores relacionais.
Qual é o resultado de expressão (10 > 5 && 4 != 3) ? 22
Referência bibliográfica:
António José Mendes; Maria José Marcelino.
“Fundamentos de programação em Java 2”. FCA. 2002.
Carriço, José; Carriço, António.
"Computadores, Tecnologias e sistemas de Informação- O Núcleo de Sistema“.
Centro de Tecnologias de Informação Ltd. Lisboa. 1997
Carriço, José; Carriço, António.
"Computadores, Tecnologias e sistemas de Informação- Periféricos, Internet e multimédia“.
Centro de Tecnologias de Informação Ltd. Lisboa. 1997.
Carriço, José; Carriço, António.
"Computadores, Tecnologias e sistemas de Informação- Tecnologias de Software“.
Centro de Tecnologias de Informação Ltd. Lisboa.1997.
Elliot Koffman; Ursula Wolz.
“Problem Solving with Java”. 1999.
John R. Hubbard.
“Theory and problems of programming with Java”. Schaum’s Outline series. McGraw-Hill.
H. Deitel; P. Deitel.
“Java, como programar”. 4 edição. 2003. Bookman.
Rui Rossi dos Santos.
“Programando em Java 2– Teoria e aplicações”. Axcel Books. 2004

23