Este documento apresenta os principais conceitos da linguagem de programação Java, incluindo variáveis, instruções de seleção e iteração, funções, métodos de classe e instância, escrita no ecrã e o método principal main. O documento explica como Java lida com comentários e fornece exemplos de código para ilustrar estes conceitos.
2. 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
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 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
6. 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
7. 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
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ã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
10. 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!
11. 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
12. Nomes de variá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 palavra em minúsculas
Restantes palavras com maiúscula inicial
Exemplo: numberOfStudents
2013/2014 Fundamentos de Programação 14
15. 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.
16. 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
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.
20. 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.
21. 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…
22. 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…
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 para documentaçã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