Você está na página 1de 39

LEB/LEF/MIEBIOM/MIEF

Introdução ao Java

Sistemas Informáticos
[http://www.oracle.com/technetwork/java]

1
O meu 1º programa

LEB/LEF/MIEBIOM/MIEF
public class FirstProgram
{
public static void main(String[] args)
{

Sistemas Informáticos
System.out.print("Hello, 2 + 3 = ");
System.out.println(2 + 3);
System.out.println("Goodbye");
}
}

2
FirstProgram.java Nome do programa.
Deve ser igual ao nome
do ficheiro.

LEB/LEF/MIEBIOM/MIEF
public class FirstProgram
{
public static void main(String[] args)
{

Sistemas Informáticos
System.out.print("Hello, 2 + 3 = ");
System.out.println(2 + 3);
System.out.println("Goodbye");
}
}

Código do programa
(zona vermelha) 3
Compilação & Execução

LEB/LEF/MIEBIOM/MIEF
FirstProgram.java FirstProgram.class Saída:

Código Hello, 2 + 3 = 5
Java Correr
Fonte Compilar Goodbye
bytecode
Java javac java

Sistemas Informáticos
4
Uma solução mais amigável:
Eclipse IDE for Java Developers

LEB/LEF/MIEBIOM/MIEF
Sistemas Informáticos
5
Escrever no ecrã/consola

LEB/LEF/MIEBIOM/MIEF
System.out.print("Hello, 2 + 3 = "); Mostra uma String
System.out.println(2 + 3);
System.out.println("Goodbye"); Mostra o valor da soma

Sistemas Informáticos
• Com exceção de instruções especiais, cada instrução termina
com ponto e vírgula.

• System.out refere-se (por defeito) ao ecrã do computador e


print é uma instrução para imprimir algo no ecrã.
6
print vs. println

LEB/LEF/MIEBIOM/MIEF
Código Saída
System.out.println("hello"); hello
System.out.println("there"); there

Sistemas Informáticos
System.out.print("one "); one two three
System.out.print("two "); four five
System.out.println("three ");
System.out.print("four ");
System.out.println("five ");

7
Variáveis em Java

LEB/LEF/MIEBIOM/MIEF
• Java é uma linguagem estaticamente tipada à O tipo de
dados de cada variável deve ser definido explicitamente

• Java é também uma linguagem fortemente tipada à O tipo


de uma variável permanece o mesmo até ser removido da

Sistemas Informáticos
memória

• Declaração de variáveis (sem atribuição de valor)


• int alunos;
• Declara uma variável com nome alunos, que conterá valores inteiros
• Existem outros tipos disponíveis, como float (real)
• O tipo de dados da variável é indicado apenas uma vez, ao
8
declarar a variável
Atribuição de valores a variáveis

LEB/LEF/MIEBIOM/MIEF
• Atribuição de um valor a uma variável: VariableName = expression;
• Esta instrução leva o computador a :
1) Calcular o valor da expressão
2) Armazene o novo valor na variável indicada, substituindo o valor anterior

Sistemas Informáticos
int alunos = 240; alunos 240
alunos = 210;
alunos = 210;

alunos 210 9
Exemplo

LEB/LEF/MIEBIOM/MIEF
Código:
float saldo;
float ganho;
float taxa;

Sistemas Informáticos
saldo = 1000;
taxa = 0.09;
ganho = taxa * saldo;
saldo = saldo + ganho;

saldo ganho taxa


Memória:
1000
1090 90 0.09 10
Atribuição de valores

LEB/LEF/MIEBIOM/MIEF
int n;
n = 10;
8 + 1 = n;
n + 1 = n;

Sistemas Informáticos
• O que está errado no Código anterior?

11
Atribuição de valores

LEB/LEF/MIEBIOM/MIEF
int n;
n = 10;
8 + 1 = n;
n + 1 = n;

Sistemas Informáticos
• O que está errado no Código anterior?

• A sintaxe para atribuir valor a uma variável é sempre:


nomevariável = expressão;

• A forma inversa está gramaticalmente incorreta


12
Variáveis em Java: Exemplo

LEB/LEF/MIEBIOM/MIEF
• Para referenciar uma variável, use p seu identificador (nome).
O valor atual da variável é usado.

Sistemas Informáticos
public class VarExemplo
{
public static void main(String args[])
{
int alunos = 20;
System.out.println(alunos);
alunos = 10;
System.out.println(alunos);
}
}
13
Tipos de dados

LEB/LEF/MIEBIOM/MIEF
• Tipos básicos

• The Java language has eight predefined data types, often called
basic (primitive) data types

Sistemas Informáticos
Inteiros: byte, int, short, long
Reals: float, double
Caracter: char
Booleanos: boolean

14
Tipos de dados

LEB/LEF/MIEBIOM/MIEF
Tipo primitivo Tamanho (bit)
(Tamanho em bytes)
boolean 1
char 16 (2 byte)

Sistemas Informáticos
byte 8 (1 byte)
short 16 (2 byte)
int 32 (4 byte)
long 64 (8 byte)
float 32 (4 byte)
double 64 (8 byte)

15
Tipos de dados para inteiros

LEB/LEF/MIEBIOM/MIEF
Espaço
Tipo em Valor mínimo Valor máximo
memória

Sistemas Informáticos
byte 8 bit -128 127
short 16 bit -32768 32767
int 32 bit -2 147 483 648 2 147 483 647
long 64 bit -9 223 372 036 854 775 808 9 223 372 036 854 775 807

int inteiro = 5;

16
Tipos de dados para reais

LEB/LEF/MIEBIOM/MIEF
• Números de virgula flutuante
• Valores com parte fracionária

Espaço

Sistemas Informáticos
Tipo em Valor mínimo Valor máximo
memória
float 32bit -3.4 x 10^38 3.4 x 10^38
double 64bit -1.7 x 10^308 1.7 x 10^308

double numero = 5.6; 17


Valores de virgula flutuante

LEB/LEF/MIEBIOM/MIEF
• Exemplos: 0.09 -0.034 345.6 .00

• Também pode ser escrito em notação científica, por exemplo:

Sistemas Informáticos
• 2.0e2 (200.0)
• -7.321e-3 (-0.007321)

18
Em Java double é assumido por
defeito

LEB/LEF/MIEBIOM/MIEF
• Uma constante de virgula flutuante é de precisão dupla por
padrão.
• Por examplo, o Código seguinte gera um erro de compilação:
• float rate = 0.09;
• Para forçar uma constante numérica a ser float em vez de

Sistemas Informáticos
double, use o sufixo f:
• float rate = 0.09f;
• Quais das seguintes constantes numéricas são aceitáveis em
código Java?
• 9,87
• 0
• 3.57*E2
• 3.57E+2 19
Tipo Boolean

LEB/LEF/MIEBIOM/MIEF
• Uma variável do tipo boolean só pode assumir um de dois
valores: true or false

Sistemas Informáticos
Espaço em
Tipo Valor
memória
boolean 1bit true ou false

boolean val = true; 20


Tipo Caracter

LEB/LEF/MIEBIOM/MIEF
• Java usa um conjunto de caracteres chamado Unicode, que é
uma extensão do código ASCII.

• Inclui todos os caracteres de um teclado normal, bem como


caracteres de controlo (por exemplo, tabulação, mudança de

Sistemas Informáticos
lina,…)

Espaço em
Tipo Valor
memória
char 16bit Any Unicode

• Os caracteres são definidos entre apóstrofos:


21
char teste = 'c';
Tipos de dados: Strings

LEB/LEF/MIEBIOM/MIEF
• Uma variável do tipo String pode conter uma cadeia de caracteres.

• Não é mais um tipo primitivo (por exemplo, int, double), o que na


prática significa que possui métodos associados (ou seja, funções)
que lhe permitem realizar operações complexas.

Sistemas Informáticos
• Strings são definidas entre aspas e podem ser concatenadas usando
o sinal +

• String str1 = "hello";


• String str2 = "world!";
• String str3 = str1 + str2;

• É possível concatenar uma String com um número (como resultado é 22


obtida uma String)
Strings: Exemplo básico

LEB/LEF/MIEBIOM/MIEF
public class ExemploStrings
{
public static void main(String[] args)
{
System.out.println("ola!"); // prints ola!

String cumprimento = "ola!";

Sistemas Informáticos
System.out.println(cumprimento); // prints ola!

int alunos = 20;


System.out.println("Eng. Física tem" + alunos + "alunos");
alunos = 10;
System.out.println("Eng. Biomédica tem" + alunos + "alunos");
}
}

23
Constantes em Java

LEB/LEF/MIEBIOM/MIEF
• Uma constante armazena um valor que não pode ser alterado.

• Exemplo:
final int MAX_STUDENTS = 300;

Sistemas Informáticos
24
Constantes em Java

LEB/LEF/MIEBIOM/MIEF
• Uma constante armazena um valor que não pode ser alterado.
• Exemplo:
final int MAX_STUDENTS = 300;

MAX_STUDENTS = 400 Erro!

Sistemas Informáticos
• A constante MAX_STUDENTS com o valor 300 é declarada

• A palavra reservada final indica que é uma constante

• Deve ser definido com todos os caracteres em maiúsculas.

• Use constantes para tornar os programas mais legíveis e fáceis de 25


manter.
Comentários

LEB/LEF/MIEBIOM/MIEF
• Um comentário é uma observação/nota em um programa
para esclarecer algo a um leitor humano.
• Os comentários são ignorados pelo compilador.
• Duas maneiras de indicar comentários:

Sistemas Informáticos
• Double slash: tudo até o final da linha é ignorado.
• /* and */: tudo entre /* e */ é ignorado.

int num; // the number of students

/* this is a comment 26
still a comment */
Expressões aritméticas em Java

LEB/LEF/MIEBIOM/MIEF
• Operadores: ( ) * / % + -

Exemplo: 5 * (2 + 3) + 7 = 32

Sistemas Informáticos
• O operador % retorna o resto da divisão:
• 13 % 4 à 1
• 8.6 % 2.0 à 0.6

27
Precedências

LEB/LEF/MIEBIOM/MIEF
• Regras usuais de precedência da aritmética (* e / têm
precedência maior que + e -)

• Os parênteses têm maior precedência.

Sistemas Informáticos
• Quando os operadores têm a mesma precedência, a
expressão deve ser avaliada da esquerda para a direita.

• Avalie as seguintes expressões Java:


• 1+4/4=
• 2 * (1 + 2) / 3 =
28
• 5%3%2=
Precedências

LEB/LEF/MIEBIOM/MIEF
• Regras usuais de precedência da aritmética (* e / têm
precedência maior que + e -)

• Os parênteses têm maior precedência.

Sistemas Informáticos
• Quando os operadores têm a mesma precedência, a
expressão deve ser avaliada da esquerda para a direita.

• Avalie as seguintes expressões Java:


• 1+4/4=2
• 2 * (1 + 2) / 3 = 2
29
• 5%3%2=0
Como evitar divisões inteiras

LEB/LEF/MIEBIOM/MIEF
• Como em outras linguagens o operador divisão (/) dá:
• Resultados inteiros se usado com operandos inteiros (exemplo: 7/4
dá 1)
• Resultados reais se pelo menos um dos operandos for real
(exemplo: 7.0/4 dá 1.75)

Sistemas Informáticos
• Para evitar isso, podemos usar um operador casting e converter um
número inteiro em double ou float, por exemplo.

double x;
x = 5 / 2; // x is 2.0
x = (float) 5 / 2; // x is 2.5
x = 5 / (double) 2; // x is 2.5

30
• Alternativamente, podemos multiplicar um dos operandos inteiros
por 1.0
Expressões Booleanas

LEB/LEF/MIEBIOM/MIEF
• São avaliadas como true ou false

• Podem ser construídas com operadores relacionais e lógicos

• Operadores relacionais (podem ser usados com todos os tipos


primitivos, incluindo char):

Sistemas Informáticos
• < “menor que”
• <= “menor ou igual que”
• > “maior que”
• > = “maior ou igual que”
• == “igual a”
• ! = “diferente de”

• Exemplo:
• 5 > 6 à false 31
• 7 == 7 à true
Expressões Booleanas

LEB/LEF/MIEBIOM/MIEF
• Operadores lógicos
• ! NÃO (¬)
• && E (Ù)

Sistemas Informáticos
• || OU (Ú)

• Exemplos:
• (10 > 5) à true
• (10 > 5 && 3 != 3) à false

32
Operatores lógicos

LEB/LEF/MIEBIOM/MIEF
P Q !P P && Q P || Q
False False True False False

Sistemas Informáticos
False True True False True
True False False False True
True True False True True

33
Exemplo

LEB/LEF/MIEBIOM/MIEF
int a = 1;
int b = 4;
int c = 2;
boolean resultado = true;
resultado = (b * b) < (4 * a * c); Verdadeiro / Falso?

Sistemas Informáticos
• É possível imprimir o valor de um booleano!

System.out.println(resultado);
System.out.println(2 * 2 == 4); // ß Imprime true

34
Precedências

LEB/LEF/MIEBIOM/MIEF
Operador Descrição
Baixa precedência || Disjunção
&& Conjunção

Sistemas Informáticos
! Negação
<, <=, >, >=, !=, == Comparações
+, - Adição e Subtração
Produto, Divisão e Resto
*, /, %
da divisão
Alta precedência () Parêntesis

35
Operadores de Incremento e
Decremento

LEB/LEF/MIEBIOM/MIEF
• O operador de incremento (++) é uma forma abreviada de
aumentar uma variável em 1, por exemplo:
• c++; // equivalente a c = c + 1
• O operador de decremento (--) é uma forma abreviada de diminuir
uma variável em 1.

Sistemas Informáticos
• x--; // equivalente a x = x – 1
• Esses operadores podem ser usados para aumentar ou diminuir
antes ou depois do valor ser usado, por exemplo:
• a = b++;// copiar o valor de “b” para “a”, e depois incrementar “b”
• a = ++b;// incrementar b, e depois atribuir o valor de “b” a “a”
• ++ e -- have higher têm maior precedência que os operadores 36
aritméticos
Qual o resultado?
public class DataTypes

LEB/LEF/MIEBIOM/MIEF
{
public static void main(String[] args)
{
int j, k, m;
int d= 122;
j = d++; // j=122, d=123
System.out.println("j= " + j); //j=122

Sistemas Informáticos
k = ++d; //d=124, k=124
System.out.println("k= " + k); //k=124
m = --d; //d=123, m=123
System.out.println("m= " + m); //m=123
m = k % j; //m=124%122, =2
System.out.println("m= " + m);
j = 5;
k = 3;
m = j/k; //m=5/3, =1
37
System.out.println("m= " + m);
}
}
Incremento/Decremento (2)

LEB/LEF/MIEBIOM/MIEF
• O operador de incremento (++) é uma forma abreviada de
aumentar uma variável em 1, de outra forma:
• x+=1; // igual a x = x + 1 ou x++
• O operador de decremento (--) é uma forma abreviada de

Sistemas Informáticos
diminuir uma variável em 1, de outra forma:
• x-=1; // igual a c = c - 1 or c--

• Forma geral:
• x+=y
• x-=y
38
Mais em …

LEB/LEF/MIEBIOM/MIEF
• The Java Tutorials – Language Basics
• http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html

Sistemas Informáticos
39

Você também pode gostar