31
Nelson Freire (ISEP–DEI-APROG 2012/13) 1/31 Linguagem JAVA Básico APROG Algoritmia e Programação

Linguagem JAVAnfreire/JAVA - Linguagem...Linguagem Java Entrada de Dados – Interface Gráfica Nelson Freire (ISEP–DEI-APROG 2012/13) 16/31 Suportada pelos métodos print, println

  • Upload
    others

  • View
    49

  • Download
    0

Embed Size (px)

Citation preview

  • 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