Nelson Freire (ISEP–DEI-APROG 2012/13) 1/31
Linguagem JAVA Básico
APROG Algoritmia e Programação
Nelson Freire (ISEP–DEI-APROG 2012/13) 2/31
Estrutura de um Programa
Geral
Básica
Estruturas de Dados
Variáveis
Constantes
Tipos de Dados
Primitivos
Referências
Interfaces com o Utilizador
Consola
Gráfica
Linguagem Java Sumário
Operadores
Tipos
Atribuição
Aritméticos
Relacionais
Lógicos
Outros
Precedências
Instruções
Entrada
Saída
Atribuição
Decisão
Repetição
Conversão de Tipos Numéricos
Strings
Nelson Freire (ISEP–DEI-APROG 2012/13) 3/31
Programa Java
Constituído por uma ou mais classes
Linguagem Java Estrutura Geral de um Programa
Programa
Classe 1
Classe 2
Classe n
Método 1
Método 2
Método m
Classe Constituída por um
ou mais métodos
Método
Código que executa
tarefa
Exemplos
raízquadrada fatorial
Nelson Freire (ISEP–DEI-APROG 2012/13) 4/31
Classe que contém o método main (principal)
Método main
Controla execução do programa
1º método executado
Linguagem Java Classe Principal de um Programa
Classe 1
Classe i Classe Principal
(Main Class)
Programa
Método 1
Método 2
Método m
Método 1
Método 2
Método main
Nelson Freire (ISEP–DEI-APROG 2012/13) 5/31
package nome;
import nomeCompletoClasse;
public class NomePrograma { // Classe principal ; nomePrograma c/ letra inicial maiúscula
public static void main(String[] args){ // cabeçalho do método main ; é imutável
// corpo do método }
}
Java distingue letras maiúsculas das minúsculas
Declaração package
Especifica nome da package a que pertencerá nova classe
Packages permitem organizar classes Semelhante às pastas dos sistemas de ficheiros que facilitam a gestão de ficheiros Concretamente, são pastas dos sistemas de ficheiros
Declaração import
Permite à nova classe usar classes pertencentes a outras packages
Nome completo de uma classe nome da package seguido do nome da classe Exemplo: import java.util.Scanner; // java.util é package da classe Scanner
Modificador de acesso public Especifica se classe/método pode ou não ser usada por outras classes Classes/métodos públicos podem ser usados por outras classes
Linguagem Java Estrutura Básica de um Programa
// significa comentário ( ≠ código fonte. Não é executado )
Nelson Freire (ISEP–DEI-APROG 2012/13) 6/31
Categorias
Variáveis // valor pode variar durante execução do programa
Constantes // valor é constante durante execução do programa
Linguagem Java Estruturas de Dados : categorias 1/3
Nelson Freire (ISEP–DEI-APROG 2012/13) 7/31
Declaração de Variáveis
Sintaxe // para N variáveis do mesmo tipo
Tipo_de_Dado variável_1[=valor inicial] [ , …, variável_N[=valor inicial] ] ;
Exemplos
int x; // tipo int guarda inteiros; por omissão, variáveis numéricas inicializadas a 0
int z=5; // variável declarada e inicializada; = é operador de atribuição
int x=5, y, z=1; // múltiplas variáveis, do mesmo tipo, declaradas na mesma linha
Local
Em qualquer parte do corpo do método
Boa regra prática
Mais perto da utilização
[...] = opcional
Linguagem Java Estruturas de Dados : variáveis 2/3
package nome;
import nomeCompletoClasse;
public class NomePrograma {
public static void main(String[] args){
int x;
...
int y = 10;
...
}
}
Nelson Freire (ISEP–DEI-APROG 2012/13) 8/31
Declaração de Constantes
Sintaxe // para N constantes do mesmo tipo
final Tipo_de_Dado constante_1=valor [ , …, constante_N=valor] ;
Exemplos
final int X=8; // por convenção, nomes em maiúsculas
final int X=9, FATOR=20; // múltiplas constantes, mesmo tipo, declaradas na mesma linha
Local
Qualquer parte do corpo do método
Boa regra prática
Mais perto da utilização
Linguagem Java Estruturas de Dados : constantes 3/3
package nome;
import nomeCompletoClasse;
public class NomePrograma {
public static void main(String[] args){
final int X=8;
...
final int FATOR = 20;
...
}
}
[...] = opcional
Nelson Freire (ISEP–DEI-APROG 2012/13) 9/31
Um Tipo de Dados Define
Conjunto de dados
Conjunto de operações possíveis sobre esses dados
Tipos de Dados são Classificados como
Primitivos // dados são valores simples
// Ex: valores inteiros e valores reais
Referências (ou Não-Primitivos) // dados são referências de memória de objetos
// referência = endereço
// definidos por classes
// Ex: classe String - guarda texto
Linguagem Java Tipos de Dados : classificação 1/3
Nelson Freire (ISEP–DEI-APROG 2012/13) 10/31
Categorias
Inteiros: byte 1 byte (-128, 127) short 2 bytes (-32 768, 32 767) int 4 bytes (-2 147 483 648, 2 147 483 647) long 8 bytes (-9x1018, 9x1018)
Reais: float 4 bytes (-/+ 3.4 x 1038)
double 8 bytes (-/+ 1.7 x 10308 )
Outros: char boolean
Exemplos
char c = 'R', opcao= 'a'; // carateres são delimitados por plicas
boolean flag = false; // valores lógicos: false e true
double nota = 18.5; // separador decimal é o . (ponto)
Variável de Tipo Primitivo
Guarda um valor simples
Ex: int x = 5;
Conteúdo de variável de tipo primitivo
RAM
...
5
...
x
Linguagem Java Tipos de Dados : primitivos 2/3
Nomes em minúsculas
Nelson Freire (ISEP–DEI-APROG 2012/13) 11/31
Definidos por Classes
Exemplos
String // guarda texto; ver slides Java - Classes
Scanner // leitura do teclado da consola
Formatter // escrita formatada na consola
Variável de Tipo Referência
Exemplos
String cidade;
String nome = "Nico";
String ave = "águia";
Guarda uma referência de objeto da classe declarada
Referência = endereço de memória
Considerada objeto
Exemplos
nome
ave
Conteúdo de variável de tipo referência
RAM
...
referência de objeto
...
ave
...
águia
Objeto da Classe String
Linguagem Java Tipos de Dados : referências 3/3
Nomes de classes iniciadas com letra maiúscula
Nelson Freire (ISEP–DEI-APROG 2012/13) 12/31
Tipos
Consola
Interface Textual
Interface Gráfica
Caixas de Diálogo Entrada
Saída
Linguagem Java Interfaces com o Utilizador
Nelson Freire (ISEP–DEI-APROG 2012/13) 13/31
Suportada por objeto da classe Scanner // classe da package java.util
Mais pormenores Slide seguinte
package nome;
import java.util.Scanner; // importa classe Scanner para usar em main
public class NomePrograma { public static void main(String[] args){ int n; long y; double x; String nome, nome_composto; …
Scanner ler = new Scanner(System.in); // declara um objeto Scanner para ler do teclado …
n = ler.nextInt(); // lê um int do teclado e guarda em n y = ler.nextLong(); // lê um long do teclado e guarda em y x = ler.nextDouble(); // lê um double do teclado e guarda em x … nome = ler.next(); // lê uma string do teclado e guarda em nome nome_composto= ler.nextLine(); // lê uma linha e guarda em nome_composto … } }
Linguagem Java Entrada de Dados - Consola 1/2
Nelson Freire (ISEP–DEI-APROG 2012/13) 14/31
Classe Scanner
Serve para ler ficheiros de texto
Consola tratada como ficheiro de texto
Declaração de objeto Scanner
Scanner ler = new Scanner(System.in);
Cria objeto (instância) da classe Scanner (objeto ler)
Objeto System.in representa dispositivo de entrada standard (teclado)
System é classe que representa sistema de computação
in é objeto da classe System que representa dispositivo de entrada padrão
Por omissão, teclado
Leitura
Preciso invocar método do objeto Scanner adequado ao tipo de dado a ler
Sintaxe: nomeObjetoScanner.nomeMétodo()
Exemplo: ler.nextInt() // para ler int
Exemplos de instruções para ler um dado e guardá-lo numa variável
Leitura de inteiro do tipo int: int num = ler.nextInt();
Leitura de float: float num = ler.nextFloat();
Leitura de strings: String s = ler.next(); // ex: nome simples
String s = ler.nextLine(); // ex: nomes compostos
Linguagem Java Entrada de Dados - Consola 2/2
Nelson Freire (ISEP–DEI-APROG 2012/13) 15/31
Suportada pelo método showInputDialog da classe JOptionPane
package nome;
import javax.swing.JOptionPane; // importa classe JOptionPane
public class NomePrograma {
public static void main(String[] args){ …
// lê uma string e guarda em nome String nome = JOptionPane.showInputDialog("Insira um nome:"); ...
// lê um int e guarda em i int i = Integer.parseInt(JOptionPane.showInputDialog("Insira um inteiro:"));
// lê um long e guarda em l long l = Long.parseLong(JOptionPane.showInputDialog("Insira um inteiro:")); ... // lê um double e guarda em d double d = Double.parseDouble(JOptionPane.showInputDialog("Insira um real:"));
// lê um float e guarda em f float f = Float.parseFloat(JOptionPane.showInputDialog("Insira um real:")); … }
}
Linguagem Java Entrada de Dados – Interface Gráfica
Nelson Freire (ISEP–DEI-APROG 2012/13) 16/31
Suportada pelos métodos print, println e printf do objeto System.out
System é classe que representa sistema de computação
out é objeto da classe System que representa dispositivo de saída padrão
Por omissão, ecrã
Métodos de escrita
System.out.print("mensagem");
System.out.println("mensagem");
System.out.printf(string_formatação, lista_parâmetros) ;
Também pode ser usada a classe Formatter
package nome;
public class NomePrograma { public static void main(String[] args){ … System.out.print("Operação impossível!"); // Escreve mensagem e coloca cursor no fim … System.out.println("Divisão por zero!!"); // Escreve mensagem e coloca cursor no início da // linha seguinte ... System.out.printf("Média=%.1f",media); // Saída formatada; Escreve a media (double) // com uma casa decimal. Exemplo: Média=15.3 }
}
Linguagem Java Saída - Consola
printf - consultar o método String.format nos slides Java-Classes
Nelson Freire (ISEP–DEI-APROG 2012/13) 17/31
Suportada pelo método showMessageDialog da classe JOptionPane
Sintaxe
JOptionPane.showMessageDialog(null, "mensagem");
package nome;
import javax.swing.JOptionPane; // importa classe JOptionPane
public class NomePrograma {
public static void main(String[] args){
double media; … JOptionPane.showMessageDialog(null, "Não foram encontrados números pretendidos");
… JOptionPane.showMessageDialog(null, "Média=" + média); // Saída não formatada
... String s = String.format("Média=%.1f",media);
JOptionPane.showMessageDialog(null, s); // Saída formatada }
}
Linguagem Java Saída – Interface Gráfica
Nelson Freire (ISEP–DEI-APROG 2012/13) 18/31
Atribuição = // Ex: x = x + z;
Aritméticos + // Soma - // Subtracção * // Produto / // Divisão real ou inteira; Divisão inteira se ambos os operandos forem inteiros. % // Resto da divisão
Relacionais > // Maior >= // Maior ou igual < // Menor
Nelson Freire (ISEP–DEI-APROG 2012/13) 19/31
[ ] . () chamada_método
! ++ -- (cast) new
* / % a / b * c (a / b) * c
+ -
< >= instanceof
== !=
&&
||
?:
= += -= *= /= %= a -= b += c (a -= b) += c
Maior
Menor
Associatividade no mesmo nível Exemplos Operadores Precedência
Precedências dos Operadores
Linguagem Java Operadores 2/2
Nelson Freire (ISEP–DEI-APROG 2012/13) 20/31
Sintaxe
variável = expressão; // expressão tem de ser do tipo da variável
Exemplos
package nome;
public class NomePrograma { public static void main(String[] args){ int x, y; double z; int d, idade; … x = 5; …
d = idade – 12; // idade e d têm de ser do mesmo tipo … z = x * 10 – Math.pow(2,5); // Math.pow(2,5) = 25
}
}
Linguagem Java Instrução de Atribuição
Nelson Freire (ISEP–DEI-APROG 2012/13) 21/31
Sintaxe
if (condição) { // = SE ... ENTÃO // acção
} // bloco = { ... } ; obrigatório para acção com mais de 1 instrução
if (condição) { // = SE ... ENTÃO ... SENÃO
// acção 1 } else {
// acção 2 }
// = CASO ... SEJA
switch(expressão) { // expressão tem de ser do tipo inteiro, caracter ou string
case valor_1[: case valor_2: ...: case valor_m] : // acção_1; break;
case valor_n[: case valor_o: ...: case valor_v] : // acção_2; break; ... default : // acção_por_omissão; // opcional; Última escolha; Pode não ser a última
}
Linguagem Java Instruções de Decisão 1/4
Nelson Freire (ISEP–DEI-APROG 2012/13) 22/31
Exemplos
package nome;
public class NomePrograma {
public static void main(String[] args){
int x, y, z; … if (x>5) y=4; // bloco {...} não é obrigatório para uma instrução … if(x>5 && x0) { System.out.println(x + "é um nº positivo"); } else { System.out.println(x + "não é um nº positivo"); }
} }
Linguagem Java Instruções de Decisão 2/4
Nelson Freire (ISEP–DEI-APROG 2012/13) 23/31
Exemplos
package nome;
public class NomePrograma {
public static void main(String[] args){
int x, y, z; … switch(x){ case 1: case 3: z = y * 2; break; case 6: z = 12; break; case 2: case 4: case 7: y = 45; z = 23; break; default: z=50; } … } }
break termina execução do switch; senão, são executadas as instruções do caso seguinte
Linguagem Java Instruções de Decisão 3/4
Nelson Freire (ISEP–DEI-APROG 2012/13) 24/31
Exemplos
package nome;
public class NomePrograma {
public static void main(String[] args){
char opcao; … switch(opcao){ case '1': case 'a': … break; case '2': case 'a': … break; case '0': case 's': case 'S' : … break; default: … } … } }
break termina execução do switch; senão, são executadas as instruções do caso seguinte
Linguagem Java Instruções de Decisão 4/4
Nelson Freire (ISEP–DEI-APROG 2012/13) 25/31
Sintaxe
while (condição) { // = ENQUANTO
// corpo do ciclo
}
do { // = REPETIR ... ENQUANTO
// corpo do ciclo
} while (condição); // termina com ;
for(inicialização contador; condição de funcionamento; passo){ // = PARA
// corpo do ciclo
}
Linguagem Java Instruções de Repetição 1/2
Nelson Freire (ISEP–DEI-APROG 2012/13) 26/31
Exemplos
package nome; public class NomePrograma { public static void main(String[] args){ int c, y; Scanner ler = new Scanner(System.in); c = 1; while(c0); … for(c=1; c=1; c--) // for(…); não terminar com ponto-e-vírgula System.out.println(c); }
}
Linguagem Java Instruções de Repetição 2/2
Nelson Freire (ISEP–DEI-APROG 2012/13) 27/31
Valores Numéricos
Linguagem Java Conversão de Tipos Numéricos 1/4
Valor Sufixo Exemplo Considerado do Tipo
INTEIRO
Sem 123456789 int
L 123456789L long
l 123456789l
REAL
Sem 12.34 double
F 12.34F float
f 12.34f
Nelson Freire (ISEP–DEI-APROG 2012/13) 28/31
Tipos de Conversão
Implícita
Explícita (cast)
Linguagem Java Conversão de Tipos Numéricos 2/4
Nelson Freire (ISEP–DEI-APROG 2012/13) 29/31
Conversão Implícita
Declarada implicitamente
Exemplo: short x = 1389;
long y = x;
Usada
Conversão para tipos maiores ou iguais
Exceto long float
Tipos
Sem perda de precisão
Possível perda de precisão
byte short int long
char
float double
Linguagem Java Conversão de Tipos Numéricos 3/4
Nelson Freire (ISEP–DEI-APROG 2012/13) 30/31
Conversão Explícita
Declarada explicitamente
Através de um cast
Exemplo: short x = 1389;
long y = (long) x;
Sintaxe de um cast
(tipo_alvo) nome_variável
Exemplo: double x = 13.89;
int y = (int) x; // Parte decimal é truncada (y=13)
Tipos
Sem perda de precisão
Possível perda de precisão
byte short int long
char
float double
Linguagem Java Conversão de Tipos Numéricos 4/4
Nelson Freire (ISEP–DEI-APROG 2012/13) 31/31
Inserir numa String
Newline
"...\n ... "
TAB
"...\t ... "
Aspas
"...\"... "
Exemplos
package nome;
public class NomePrograma { public static void main(String[] args){ System.out.println("\n MENU "); System.out.println("\t 1 – Ler um nome"); System.out.println("\t 2 – \"Eliminar\" elementos do array"); … }
}
Linguagem Java Strings
Top Related