28
Nelson Freire (ISEP–DEI-APROG 2011/12) 1/28 Linguagem JAVA Básico APROG Algoritmia e Programação

Aula - Linguagem Java - Básico

Embed Size (px)

DESCRIPTION

Java Básico - Aula em Slides

Citation preview

Page 1: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 1/28

Linguagem JAVA Básico

APROG Algoritmia e Programação

Page 2: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 2/28

Estrutura de um Programa

Geral

Básica

Estruturas de Dados

Variáveis

Constantes

Tipos de Dados

Primitivos

Referências

Interfaces do 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ões entre Tipos Numéricos

Page 3: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 3/28

Programa Java

• Constituído por uma ou mais classes

Linguagem Java Estrutura Geral de um Programa

Método

• Código que executa uma tarefa

• Exemplos

• raízquadrada • factorial

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

Page 4: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 4/28

É a classe que contém o método main (principal)

Método main

• 1º método a ser executado

• Controla a execução do programa

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

Page 5: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 5/28

package nome;

import nomeCompletoClasse;

public class NomePrograma { // Classe principal

public static void main(String[] args){ // cabeçalho do método main ; é imutável

// corpo do método }

}

Java distingue as letras maiúsculas das minúsculas

Declaração package

• Especifica o nome da package a que pertencerá a 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 é a package da classe Scanner

public é um modificador de acesso Especifica se a 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 )

Page 6: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 6/28

Classificadas como:

• Variáveis // valor pode variar durante a execução do programa

• Constantes // valor é constante durante a execução do programa

Linguagem Java Estruturas de Dados : classificação 1/3

Page 7: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 7/28

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; = é o operador de atribuição

int x=5, y, z=1; // múltiplas variáveis, do mesmo tipo, declaradas na mesma linha

• Localização

• Em qualquer parte do corpo do método // mais perto da sua 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;

...

}

}

Page 8: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 8/28

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, FACTOR=20; // múltiplas constantes, do mesmo tipo, declaradas na mesma linha

• Localização

• Em qualquer parte do corpo do método // mais perto da sua 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 FACTOR = 20;

...

}

}

[...] = opcional

Page 9: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 9/28

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 objectos

// referência = endereço

// definidos por classes

// Ex: classe String - guarda texto

Linguagem Java Tipos de Dados : classificação 1/3

Page 10: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 10/28

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'; // caracteres são delimitados por pelicas

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 uma variável de tipo primitivo

RAM

...

5

...

x

Linguagem Java Tipos de Dados : primitivos 2/3

Nomes em minúsculas

Page 11: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 11/28

Definidos por Classes

• Exemplos

String // guardar 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 objecto da classe declarada

• Referência = endereço de memória

• Considerada objecto

• Exemplos:

• nome e ave

Conteúdo de uma variável de tipo referência

RAM

...

referência de objecto

...

ave

...

águia

Objecto da Classe String

Linguagem Java Tipos de Dados : referências 3/3

Nomes de classes iniciadas com letra maiúscula

Page 12: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 12/28

Tipos

Consola

• Interface Textual

Interface Gráfica

• Caixas de Diálogo

• Entrada

• Saída

Linguagem Java Interfaces do Utilizador

Page 13: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 13/28

Suportada por um objecto da classe Scanner // classe da package java.util

Mais pormenores no 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 objecto 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

Page 14: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 14/28

Classe Scanner

• Serve para ler ficheiros de texto

• Consola é tratada como um ficheiro de texto

Declaração de um objecto Scanner

• Scanner ler = new Scanner(System.in);

• Cria um objecto (instância) da classe Scanner (objecto ler)

• O objecto System.in representa o dispositivo de entrada standard (teclado)

• System é a classe que representa o sistema de computação

• in é o objecto da classe System que representa o dispositivo de entrada standard

• Por omissão é o teclado

Leitura

• É preciso invocar um método do objecto Scanner adequado ao tipo de dado a ler

• Sintaxe: nomeObjectoScanner.nomeMétodo()

• Exemplo: ler.nextInt()

• 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

Page 15: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 15/28

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

Page 16: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 16/28

Suportada pelos métodos print, println e printf do objecto System.out

• System é a classe que representa o sistema de computação

• out é objecto da classe System que representa o dispositivo standard de saída

• Por omissão é o ecrã

• Métodos de escrita

• System.out.print("mensagem");

• System.out.println("mensagem");

• System.out.printf(string_formatação, lista_variáveis) ;

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

Page 17: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 17/28

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

Page 18: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 18/28

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 <= // Menor ou igual != // Diferente == // Igual

Lógicos && // AND || // OR ! // NOT ; Ex: !(x<0 && y>10)

Outros ++ // Incrementa valor de 1 unidade; Ex: contador++ -- // decrementa valor de 1 unidade; Ex: contador--

! ++ -- (cast) new

&&

||

?:

= += -= *= /= %= a -= b += c (a -= b) += c

Linguagem Java Operadores 1/2

Page 19: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 19/28

[ ] . () 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

Page 20: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 20/28

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

Page 21: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 21/28

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 ou caracter

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

Page 22: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 22/28

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 … if(x>5 && x<10){ // bloco é obrigatório por haver mais de uma instrução y=10; z=100; }

… if (x>0) { System.out.println(x + "é um número positivo"); } else { System.out.println(x + "não é um número positivo"); }

} }

Linguagem Java Instruções de Decisão 2/4

Page 23: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 23/28

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

Page 24: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 24/28

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

Page 25: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 25/28

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

Page 26: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 26/28

Exemplos

package nome; public class NomePrograma { public static void main(String[] args){ int c, y; Scanner ler = new Scanner(System.in); c = 1; while(c<=25){ System.out.println(c); c++; } … do { y = ler.nextInt(); } while(y>0); … for(c=1; c<=25; c++){ // é um PARA(c1 ATÉ 25 PASSO 1) System.out.println(c); } … for(c=25; 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

Page 27: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 27/28

Tipos de Conversão

Implícita

Explícita (cast)

Conversão Implícita

Declarada implicitamente

o Exemplo: short x = 1389;

long y = x;

Conversão para tipos maiores ou iguais o Excepto long float

Tipos

Sem perda de precisão

Possível perda de precisão

Conversão Explícita

Declarada explicitamente ... através de cast

Sintaxe dum cast

o (tipo_alvo) nome_variável

o Exemplo: double x = 13.89;

int y = (int) x; // Parte decimal é truncada (y=13)

byte short int long

char

float double

Linguagem Java Conversões entre Tipos Numéricos 1/2

Page 28: Aula - Linguagem Java - Básico

Nelson Freire (ISEP–DEI-APROG 2011/12) 28/28

Valores

Linguagem Java Conversões entre Tipos Numéricos 2/2

Valor Sufixo Exemplo Tipo Considerado

INTEIRO

Sem 123456789 int

L 123456789L long

l 123456789l

REAL

Sem 12.34 double

F 12.34F float

f 12.34f