Introdução à linguagem de programação Java
 Algoritmos implementados em Snap!
 Variáveis
 Instruções de selecção
 Instruções de iteração
 Funções
 Listas
2013/2014 Fundamentos de Programação 2
 Especificar problema [humano]
 Desenvolver algoritmo que o resolva [humano]
 Concretizar algoritmo na linguagem de
programação [humano]
 Traduzir programa para linguagem máquina
[compilador, numa máquina]
 Executar programa para caso particular [máquina
física ou virtual]
2013/2014 Fundamentos de Programação 33
 Linguagem de programação
 Orientada por objectos
 (e também imperativa, procedimental e estruturada)
 Independente da plataforma: programas executáveis
em diferentes sistemas operativos
 Muito utilizada na indústria
2013/2014 Fundamentos de Programação 4
2013/2014 Fundamentos de Programação 5
Fonte: http://trendyskills.com/
JVM
Compilador
de Java (javac.exe)
Código em bytecode Java
(linguagem máquina para JVM)
(Greeter.class)
Código fonte
em Java
(e.g., Greeter.java)
2013/2014 Fundamentos de Programação 6
JavaVirtual Machine
(MáquinaVirtual Java)
Significa “texto escrito na
linguagem Java”…
Interpretador de linguagem
máquina para a JVM (java.exe)
Processador
 Declaração e inicialização obrigatórias!
 Declaração indica nome e tipo (conjunto dos
valores)
 Inicialização indica valor inicial
 Utilizadas para guardar valores
 Atribuição altera valor de variável
2013/2014 Fundamentos de Programação 7
Snap! Java Observações
- int i = 1; Declaração com inicialização.
int gcd;
if (m < n)
gcd = m;
else
gcd = n;
Declaração sem inicialização seguida
de duas inicializações alternativas.
prime = 2; Atribuição (se prime estiver já
inicializada).
i = i + 1; Incrementação (há melhores
formas…).
n = temporary;
2013/2014 Fundamentos de Programação 8
Não existe em Snap!,
pelo que usa declaração
e atribuição.
 Declarar tão próximo quanto possível da
primeira utilização
 Declarar de modo a minimizar âmbito da
variável
 Inicializar logo que possível
 Não inicializar apenas “para calar o
compilador”
2013/2014 Fundamentos de Programação 9
Tipo Descrição Bits Exemplos
int Subconjunto dos inteiros. 32 int numberOfStudents;
double Vírgula flutuante. Subconjunto dos
racionais.
64 double averageGrade;
boolean Booleanos ou lógicos. 8 boolean isPrime;
char Caracteres. 16 char response;
String Texto, cadeias de caracteres. - String studentName;
2013/2014 Fundamentos de Programação 10
Há mais!
Tipo Descrição Bits
byte Pequeno subconjunto dos inteiros. 8
short Subconjunto dos inteiros, entre byte e int. 16
long Subconjunto dos inteiros, maior que int. 64
float Vírgula flutuante. Subconjunto dos racionais , menor gama e
menor precisão que double.
32
2013/2014 Fundamentos de Programação 11
 Nomes de variáveis são identificadores
 Identificadores não podem ser repetidos no
mesmo contexto
2013/2014 Fundamentos de Programação 12
 Constituídos por
 letras (a, À, ε, …)
 dígitos (0 a 9)
 _
 $
 Primeiro caractere não pode ser dígito
 Maiúsculas e minúsculas são distinguidas
 Não podem ser palavras-chave do Java (e.g., for,
while, int, if ou for)
2013/2014 Fundamentos de Programação 13
 Primeira palavra em minúsculas
 Restantes palavras com maiúscula inicial
 Exemplo: numberOfStudents
2013/2014 Fundamentos de Programação 14
 Em língua natural
 Sem abreviaturas
 Gramática correcta
 Adequados à entidade que identificam
 Claros
 Significativos
 Expressivos
 Para variáveis, são continuação de «This
variable stores the …»
2013/2014 Fundamentos de Programação 15
Há excepções,
nomeadamente as que nos
chegam do domínio da
matemática e que ganharam
estatuto de expressões
idiomáticas nas linguagens
de programação: i, j, m, n, x,
y e algumas outras, sempre
em casos muito particulares.
Snap! Java Significado Tipo
&& e Booleano
|| ou Booleano
! não Booleano
< menor Relacional
<= menor ou igual Relacional
> maior Relacional
>= maior ou igual Relacional
== igual Comparação
!= diferente Comparação
2013/2014 Fundamentos de Programação 16
Snap! Java
if (m < n) {
gcd = m;
} else {
gcd = n;
}
if (grade < 10) {
…
} else if (grade < 12) {
…
} else {
…
}
2013/2014 Fundamentos de Programação 17
Pode-se omitir as
chavetas quando contêm
apenas uma instrução.
Snap! Java
initialization
while (guard) {
action
progress
}
initialization
do {
action
progress
} while (guard);
2013/2014 Fundamentos de Programação 18
Pode-se omitir as
chavetas quando contêm
apenas uma instrução.
Snap! Java
System.out.print(something);
System.out.println(something);
2013/2014 Fundamentos de Programação 19
Passa para a linha
seguinte depois
de escrever.
Snap! Java
public static
int minimumOf(final int m,
final int n) {
if (m < n)
return m;
else
return n;
}
int number = minimumOf(5, 7);
2013/2014 Fundamentos de Programação 20
A ver mais tarde…A ver mais tarde…
Constante, inalterável.
 Podem ser funções ou procedimentos
 Funções – calculam e devolvem algum valor
 Procedimentos – realizam uma dada acção
2013/2014 Fundamentos de Programação 21
A ver mais tarde…
 Em programação orientada para objectos as
rotinas são conhecidas por métodos
 Podem ser de classe ou de instância
 Métodos de classe – com static
 Métodos de instância – sem static, a ver
mais tarde
2013/2014 Fundamentos de Programação 22
Mais tarde
distinguir-se-á
operações e
métodos.
A ver mais tarde…
public class Greeter {
public static void main(final String[] arguments) {
System.out.println("Hello world!");
}
}
 Ficheiro com o código fonte de classe tem de ter mesmo
nome que classe e extensão .java
 Método principal main(...) é um procedimento e é o
primeiro método a ser invocado ao se executar um programa
2013/2014 Fundamentos de Programação 23
public class GcdTester {
// Precondition: m ≥ 0 and n ≥ 0 and either m ≠ 0 or n ≠ 0.
public static int gcd(int m, int n) {
while (m != 0) {
final int temporary = m;
m = n % m;
n = temporary;
}
return n;
}
public static void main(final String[] arguments) {
final int firstValue = 25;
final int secondValue = 30;
final int gcd = gcd(firstValue, secondValue);
System.out.println("The GCD is " + gcd + ".");
// or simply:
// System.out.println("The GCD is " + gcd(25, 30) + ".");
}
}
2013/2014 Fundamentos de Programação 24
 Java ignora
 texto entre // e o fim da linha e
 texto entre /* e */
 Usados para
 Comentar – clarificar código menos claro
 Documentar – gerar documentação
 Comentários Java iniciados com /** são
documentação, que veremos mais tarde
2013/2014 Fundamentos de Programação 25
 Usar para documentação
 Evitar usar para comentar código menos
claro
2013/2014 Fundamentos de Programação 26
 Java
 Variáveis
 Instrução de selecção if-else
 Instruções de iteração while e do-while
 Rotinas: funções e procedimentos
 Rotinas e métodos
 Métodos de classe (static) vs. métodos de instância
 Escrita no ecrã com System.out.println(…)
 Método principal main(…)
 Comentários e documentação
2013/2014 Fundamentos de Programação 27
 Introdução à linguagem de programação Java
2013/2014 Fundamentos de Programação 28

4. Introdução à linguagem de programação Java – Fundamentos de Programação

  • 1.
    Introdução à linguagemde programação Java
  • 2.
     Algoritmos implementadosem Snap!  Variáveis  Instruções de selecção  Instruções de iteração  Funções  Listas 2013/2014 Fundamentos de Programação 2
  • 3.
     Especificar problema[humano]  Desenvolver algoritmo que o resolva [humano]  Concretizar algoritmo na linguagem de programação [humano]  Traduzir programa para linguagem máquina [compilador, numa máquina]  Executar programa para caso particular [máquina física ou virtual] 2013/2014 Fundamentos de Programação 33
  • 4.
     Linguagem deprogramação  Orientada por objectos  (e também imperativa, procedimental e estruturada)  Independente da plataforma: programas executáveis em diferentes sistemas operativos  Muito utilizada na indústria 2013/2014 Fundamentos de Programação 4
  • 5.
    2013/2014 Fundamentos deProgramação 5 Fonte: http://trendyskills.com/
  • 6.
    JVM Compilador de Java (javac.exe) Códigoem bytecode Java (linguagem máquina para JVM) (Greeter.class) Código fonte em Java (e.g., Greeter.java) 2013/2014 Fundamentos de Programação 6 JavaVirtual Machine (MáquinaVirtual Java) Significa “texto escrito na linguagem Java”… Interpretador de linguagem máquina para a JVM (java.exe) Processador
  • 7.
     Declaração einicialização obrigatórias!  Declaração indica nome e tipo (conjunto dos valores)  Inicialização indica valor inicial  Utilizadas para guardar valores  Atribuição altera valor de variável 2013/2014 Fundamentos de Programação 7
  • 8.
    Snap! Java Observações -int i = 1; Declaração com inicialização. int gcd; if (m < n) gcd = m; else gcd = n; Declaração sem inicialização seguida de duas inicializações alternativas. prime = 2; Atribuição (se prime estiver já inicializada). i = i + 1; Incrementação (há melhores formas…). n = temporary; 2013/2014 Fundamentos de Programação 8 Não existe em Snap!, pelo que usa declaração e atribuição.
  • 9.
     Declarar tãopróximo quanto possível da primeira utilização  Declarar de modo a minimizar âmbito da variável  Inicializar logo que possível  Não inicializar apenas “para calar o compilador” 2013/2014 Fundamentos de Programação 9
  • 10.
    Tipo Descrição BitsExemplos int Subconjunto dos inteiros. 32 int numberOfStudents; double Vírgula flutuante. Subconjunto dos racionais. 64 double averageGrade; boolean Booleanos ou lógicos. 8 boolean isPrime; char Caracteres. 16 char response; String Texto, cadeias de caracteres. - String studentName; 2013/2014 Fundamentos de Programação 10 Há mais!
  • 11.
    Tipo Descrição Bits bytePequeno subconjunto dos inteiros. 8 short Subconjunto dos inteiros, entre byte e int. 16 long Subconjunto dos inteiros, maior que int. 64 float Vírgula flutuante. Subconjunto dos racionais , menor gama e menor precisão que double. 32 2013/2014 Fundamentos de Programação 11
  • 12.
     Nomes devariáveis são identificadores  Identificadores não podem ser repetidos no mesmo contexto 2013/2014 Fundamentos de Programação 12
  • 13.
     Constituídos por letras (a, À, ε, …)  dígitos (0 a 9)  _  $  Primeiro caractere não pode ser dígito  Maiúsculas e minúsculas são distinguidas  Não podem ser palavras-chave do Java (e.g., for, while, int, if ou for) 2013/2014 Fundamentos de Programação 13
  • 14.
     Primeira palavraem minúsculas  Restantes palavras com maiúscula inicial  Exemplo: numberOfStudents 2013/2014 Fundamentos de Programação 14
  • 15.
     Em línguanatural  Sem abreviaturas  Gramática correcta  Adequados à entidade que identificam  Claros  Significativos  Expressivos  Para variáveis, são continuação de «This variable stores the …» 2013/2014 Fundamentos de Programação 15 Há excepções, nomeadamente as que nos chegam do domínio da matemática e que ganharam estatuto de expressões idiomáticas nas linguagens de programação: i, j, m, n, x, y e algumas outras, sempre em casos muito particulares.
  • 16.
    Snap! Java SignificadoTipo && e Booleano || ou Booleano ! não Booleano < menor Relacional <= menor ou igual Relacional > maior Relacional >= maior ou igual Relacional == igual Comparação != diferente Comparação 2013/2014 Fundamentos de Programação 16
  • 17.
    Snap! Java if (m< n) { gcd = m; } else { gcd = n; } if (grade < 10) { … } else if (grade < 12) { … } else { … } 2013/2014 Fundamentos de Programação 17 Pode-se omitir as chavetas quando contêm apenas uma instrução.
  • 18.
    Snap! Java initialization while (guard){ action progress } initialization do { action progress } while (guard); 2013/2014 Fundamentos de Programação 18 Pode-se omitir as chavetas quando contêm apenas uma instrução.
  • 19.
    Snap! Java System.out.print(something); System.out.println(something); 2013/2014 Fundamentosde Programação 19 Passa para a linha seguinte depois de escrever.
  • 20.
    Snap! Java public static intminimumOf(final int m, final int n) { if (m < n) return m; else return n; } int number = minimumOf(5, 7); 2013/2014 Fundamentos de Programação 20 A ver mais tarde…A ver mais tarde… Constante, inalterável.
  • 21.
     Podem serfunções ou procedimentos  Funções – calculam e devolvem algum valor  Procedimentos – realizam uma dada acção 2013/2014 Fundamentos de Programação 21 A ver mais tarde…
  • 22.
     Em programaçãoorientada para objectos as rotinas são conhecidas por métodos  Podem ser de classe ou de instância  Métodos de classe – com static  Métodos de instância – sem static, a ver mais tarde 2013/2014 Fundamentos de Programação 22 Mais tarde distinguir-se-á operações e métodos. A ver mais tarde…
  • 23.
    public class Greeter{ public static void main(final String[] arguments) { System.out.println("Hello world!"); } }  Ficheiro com o código fonte de classe tem de ter mesmo nome que classe e extensão .java  Método principal main(...) é um procedimento e é o primeiro método a ser invocado ao se executar um programa 2013/2014 Fundamentos de Programação 23
  • 24.
    public class GcdTester{ // Precondition: m ≥ 0 and n ≥ 0 and either m ≠ 0 or n ≠ 0. public static int gcd(int m, int n) { while (m != 0) { final int temporary = m; m = n % m; n = temporary; } return n; } public static void main(final String[] arguments) { final int firstValue = 25; final int secondValue = 30; final int gcd = gcd(firstValue, secondValue); System.out.println("The GCD is " + gcd + "."); // or simply: // System.out.println("The GCD is " + gcd(25, 30) + "."); } } 2013/2014 Fundamentos de Programação 24
  • 25.
     Java ignora texto entre // e o fim da linha e  texto entre /* e */  Usados para  Comentar – clarificar código menos claro  Documentar – gerar documentação  Comentários Java iniciados com /** são documentação, que veremos mais tarde 2013/2014 Fundamentos de Programação 25
  • 26.
     Usar paradocumentação  Evitar usar para comentar código menos claro 2013/2014 Fundamentos de Programação 26
  • 27.
     Java  Variáveis Instrução de selecção if-else  Instruções de iteração while e do-while  Rotinas: funções e procedimentos  Rotinas e métodos  Métodos de classe (static) vs. métodos de instância  Escrita no ecrã com System.out.println(…)  Método principal main(…)  Comentários e documentação 2013/2014 Fundamentos de Programação 27
  • 28.
     Introdução àlinguagem de programação Java 2013/2014 Fundamentos de Programação 28