Upload
manuel-menezes-de-sequeira
View
1.033
Download
3
Embed Size (px)
DESCRIPTION
Fundamentos da Programação 4: • Introdução à linguagem de programação Java Apresentação 4 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Citation preview
Fundamentos de Programação 2
Das apresentações anteriores…
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 3
Fases da resolução de problemas 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 3
Fundamentos de Programação 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
Java
2013/2014
Java
2013/2014 Fundamentos de Programação 5
Fonte: http://trendyskills.com/
Fundamentos de Programação 6
JVM
Compiladorde Java
(javac.exe)
Código em bytecode Java (linguagem máquina para
JVM) (Greeter.class)
Código fonte em Java
(e.g., Greeter.java)
Java: construção
2013/2014
Java Virtual Machine (Máquina Virtual Java)
Significa “texto escrito na linguagem Java”…
Interpretador de linguagem
máquina para a JVM (java.exe)
Processador
Fundamentos de Programação 7
Variáveis
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ável2013/2014
Fundamentos de Programação 8
Variáveis
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
Não existe em Snap!, pelo que usa declaração e atribuição.
Fundamentos de Programação 9
Variáveis: boas práticas
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 10
Variáveis: tipos
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
Há mais!
Fundamentos de Programação 11
Variáveis: mais tipos
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 12
Variáveis e identificadores
Nomes de variáveis são identificadores
Identificadores não podem ser repetidos no mesmo contexto
2013/2014
Fundamentos de Programação 13
Identificadores: formato
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 14
Identificadores: convenções para variáveis
Primeira palavra em minúsculas
Restantes palavras com maiúscula inicial
Exemplo: numberOfStudents
2013/2014
Fundamentos de Programação 15
Identificadores: boas práticas 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
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.
Fundamentos de Programação 16
Operadores
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 17
Instrução de selecção
Snap! Java
if (m < n) { gcd = m;} else { gcd = n;}
if (grade < 10) { …} else if (grade < 12) { …} else { …}
2013/2014
Pode-se omitir as chavetas quando contêm apenas uma instrução.
Fundamentos de Programação 18
Instruções de iteração
Snap! Java
initializationwhile (guard) { action progress}
initializationdo { action progress} while (guard);
2013/2014
Pode-se omitir as chavetas quando contêm apenas uma instrução.
Fundamentos de Programação 19
Instruções de escrita no ecrãSnap! Java
System.out.print(something);
System.out.println(something);
2013/2014
Passa para a linha seguinte depois de escrever.
Fundamentos de Programação 20
Funções
Snap! Java
public staticint minimumOf(final int m, final int n) { if (m < n) return m; else return n;}
int number = minimumOf(5, 7);
2013/2014
A ver mais tarde…
A ver mais tarde…Constante,
inalterável.
Fundamentos de Programação 21
Rotinas
Podem ser funções ou procedimentos
Funções – calculam e devolvem algum valor
Procedimentos – realizam uma dada acção
2013/2014
A ver mais tarde…
Fundamentos de Programação 22
Métodos
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
Mais tarde distinguir-se-á operações e métodos.
A ver mais tarde…
Fundamentos de Programação 23
Hello world!
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 24
Versão Java do MDC
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 25
Comentários Java
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 26
Comentários Java: boas práticas
Usar para documentação
Evitar usar para comentar código menos claro
2013/2014
Fundamentos de Programação 27
A reter
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