Slide 1

Slide 1 text

Linguagem Java Aula 1 1

Slide 2

Slide 2 text

Objectivos • Resumo da história • Características da Linguagem • Preparação de ferramentas • Iniciação em Java • Regras (Sintaxe e palavras reservadas • Tipos primitivos e referência • Operadores • Controlo de fluxo 2

Slide 3

Slide 3 text

Ferramentas • Netbeans (Java IDE)
 https://netbeans.org/downloads • Java SE Development Kit
 http://www.oracle.com/technetwork/java/javase/downloads/ index.html 3

Slide 4

Slide 4 text

Bibliografia sugerida • Java, an introduction to Problem Solving and Programming, Walter Savitch 4

Slide 5

Slide 5 text

História 5

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

História • Criada e desenhada por James Gosling e mais 2 colegas em 1991, quando pertenciam à Sun Microsystems (comprada pela Oracle em 2010). • Diz-se que o logo simboliza o gosto por café que toda a equipa tinha. • Não existe aparente ligação à ilha da Indonésia. 7

Slide 8

Slide 8 text

8

Slide 9

Slide 9 text

Diferentes edições Linguagem • Java SE (Standard Edition) • Java EE (Enterprise Edition) - com mais funcionalidades que o Java SE, direccionado para o ramo empresarial. • Java ME (Micro Edition) - Representa um subset do Java SE para dispositivos Móveis 9

Slide 10

Slide 10 text

Aplicações e Applets • Aplicações - Programas regulares, executados no próprio computador. • Applets - Pequenas aplicações enviadas para outro local através da internet e executadas lá. 10

Slide 11

Slide 11 text

11

Slide 12

Slide 12 text

Características Principais • Orientada a Objectos; • Baseada em classes; • Concorrente e multithreading; • Portabilidade (“Write Once, Run Everywhere”). 12

Slide 13

Slide 13 text

Terminologia • JRE? • JDK? • JVM? 13

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

Esclarecidos?

Slide 16

Slide 16 text

16

Slide 17

Slide 17 text

Vamos por partes

Slide 18

Slide 18 text

Terminologia • O compilador Java não traduz o programa Java para linguagem máquina para um computador em particular. • Como alternativa, um programa Java e traduzido em byte-code. Byte-code é uma linguagem máquina para um hipotético computador (ou interpretador) denominado Máquina Virtual Java (JVM) 18

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

O Netbeans (IDE) simplifica-nos o processo

Slide 21

Slide 21 text

Setup Ferramentas • Instalar Netbeans; • Instalar SDK; • Executar o Netbeans; • Atribuir o JDK ao Netbeans; • Criar um novo projecto. 21

Slide 22

Slide 22 text

Demonstração

Slide 23

Slide 23 text

Sintaxe • Todas as classes e métodos são delimitados por duas chavetas que indicam o seu âmbito (scope). 
 
 public class Main {
 
 public static void main(String[] args) {
 // write your code here 
 }
 } • Todas as instruções terminam com ponto e virgula, independentemente dos espaços ou parágrafos entre elas. int valor = 33; 23

Slide 24

Slide 24 text

Sintaxe • Variáveis armazenam dados.
 
 – Têm que ser declaradas antes de serem usadas. 
 – Quando se declara uma variável, tem que se dar um nome e o tipo de dados que a variável vai armazenar. • O valor contido pode ser alterado através da operação de afectação. 24

Slide 25

Slide 25 text

Identificadores • Um identificador é um nome, de uma variável, de um tipo, ou de um método. • Identificadores só podem conter
 - letras;
 - dígitos (0 a 9)
 - caracter underscore (_) • O java é case sensitive, nome, Nome, e NOME são identificadores diferentes. • Palavras chave (keywords) são palavras reservadas, que não podem ser usadas como identificadores.
 - ex: new, static, public 25

Slide 26

Slide 26 text

Demonstração

Slide 27

Slide 27 text

Demo public class Main {
 
 public static void main(String[] args) {
 
 String nome = "Jorge Santos" ;
 int idade = 33;
 double peso = 75.5;
 
 System.out.print(nome);
 System.out.print(peso);
 }
 
 }
 27

Slide 28

Slide 28 text

Demo public class Main {
 
 public static void main(String[] args) {
 
 String nome = "Jorge Santos" ;
 int idade = 33;
 double peso = 75.5;
 
 System.out.print(nome);
 System.out.print(peso);
 }
 
 }
 28

Slide 29

Slide 29 text

Demo public class Main {
 
 public static void main(String[] args) {
 
 String nome = "Jorge Santos" ;
 int idade = 33;
 double peso = 75.5; 
 System.out.print(nome);
 System.out.print(peso);
 }
 
 }
 29

Slide 30

Slide 30 text

Demo public class Main {
 
 public static void main(String[] args) {
 
 String nome = "Jorge Santos" ;
 int idade = 33;
 double peso = 75.5;
 
 System.out.print(nome);
 System.out.print(peso);
 }
 
 }
 30

Slide 31

Slide 31 text

Demo public class Main {
 
 public static void main(String[] args) {
 
 String nome = "Jorge Santos" ;
 int idade = 33;
 double peso = 75.5;
 
 System.out.print(nome);
 System.out.print(peso);
 }
 
 }
 31

Slide 32

Slide 32 text

Demo public class Main {
 
 public static void main(String[] args) {
 
 String nome = "Jorge Santos" ;
 int idade = 33;
 double peso = 75.5;
 
 System.out.print(nome);
 System.out.print(peso);
 }
 
 }
 32

Slide 33

Slide 33 text

Tipos de erros • Erro de sintaxe - O programa não obedece às regras gramaticais da linguagem 
 - são detectados em tempo de compilação. 
 public void printValue(int valor){
 
 // System.out.print(valor); OK!
 Systemoutprint(valor);
 
 } 33

Slide 34

Slide 34 text

Tipos de erros • Erro de execução - detectados em tempo de execução, provocam o término da execução do programa. public static void main(String[] args) {
 
 printValue("texto");
 }
 
 public static void printValue(String texto){
 
 int valor = Integer.valueOf(texto);
 System.out.print(valor);
 
 } 
 Output da consola: Exception in thread "main" java.lang.NumberFormatException: For input string: "texto" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) 34

Slide 35

Slide 35 text

Tipos de erros • Erro lógico - não produz o resultado desejado. public static void main(String[] args) {
 
 printValue(5);
 }
 
 public static void printValue(int valor){
 
 System.out.print(valor+1);
 
 } Output da consola: 6 35

Slide 36

Slide 36 text

Demonstração

Slide 37

Slide 37 text

Tipos Primitivos e Referência • Tipo primitivo é usado em valores simples que não permitem decomposição, tais como um número ou um caracter.
 - 1, 1.0 e ‘a’ são valores de tipo primitivo, int, double e char respectivamente. • Tipo referência (tipo classe) é usado em objectos que contêm dados e sobre os quais se pode executar acções (métodos).
 - “O Benfica vai ganhar hoje!” - é um valor do tipo classe String 37

Slide 38

Slide 38 text

Tipos Primitivos • Quatro tipos inteiro (byte, short, int, e long) 
 - int é o mais comum. • Dois tipos em vírgula flutuante (float e double)
 - double é o mais comum. • O tipo caracter (char). • O tipo boolean (boolean). 38

Slide 39

Slide 39 text

Tipos Primitivos 39

Slide 40

Slide 40 text

Demonstração

Slide 41

Slide 41 text

Expressões • Uma expressão pode ser uma variável, um literal, ou uma combinação de variáveis e literais usando operadores. • Numa expressão, o tipo dos operandos determina como deve ser interpretada e executada a operação. 41

Slide 42

Slide 42 text

Conversões Implícitas Valores de um tipo podem ser convertidos quando necessário em valores doutro tipo na seguinte direcção: byte -> short -> int -> long -> float -> double
 
 ou
 
 char -> int 42

Slide 43

Slide 43 text

Conversões Explícitas Uma conversão explícita (type casting) converte um valor de um tipo para outro de forma explícita. São mais usadas em tipos referências. 43

Slide 44

Slide 44 text

Button bu = (Button) findViewById(R.id.button);

Slide 45

Slide 45 text

Vamos a uma pausa? 45

Slide 46

Slide 46 text

Operadores • Operadores aritméticos (binários: +, - , *, / e %) • Associatividade e regras de precedência; • Operadores incremento e decremento 46

Slide 47

Slide 47 text

Parêntesis e Precedências • Os parênteses comunicam a ordem pela qual as operações aritméticas devem ser executadas • Sem parênteses, as expressões são avaliadas de acordo com as regras de precedência. • Exemplos:
 (custo + taxa) * desconto
 custo + (taxa * desconto) 47

Slide 48

Slide 48 text

Parêntesis e Precedências Precedência mais alta 1. Operadores unários: +, -, ++, --, e ! 2. Operadores aritméticos binários: *, /, e % 3. Operadores aritméticos binários: + e - Precedência mais baixa 48

Slide 49

Slide 49 text

Demonstração

Slide 50

Slide 50 text

Controlo de fluxo • As instruções de controlo de execução determinam a ordem que cada programa executa as acções. • A instrução if-else escolhe entre duas acções possíveis. 50

Slide 51

Slide 51 text

Métodos • São úteis para representar e realizar uma funcionalidade em particular. • A invocação de um método seguido do ponto e virgula, é uma instrução que produz a acção/acções especificada(s) no corpo do método. • Um método pode (ou não) retornar um valor para o código que o invocou. 51

Slide 52

Slide 52 text

Demonstração

Slide 53

Slide 53 text

Demonstração public class Main {
 
 public static void main(String[] args) {
 
 boolean verify = isEqual5(5);
 
 System.out.print(verify);
 }
 
 public static boolean isEqual5(int valor){
 
 if(valor == 5){
 return true;
 }else{
 return false;
 }
 }
 
 } 53

Slide 54

Slide 54 text

Demonstração public class Main {
 
 public static void main(String[] args) {
 
 boolean verify = isEqual5(5);
 
 System.out.print(verify);
 }
 
 public static boolean isEqual5(int valor){
 
 if(valor == 5){
 return true;
 }else{
 return false;
 }
 }
 
 } 54

Slide 55

Slide 55 text

Demonstração public class Main {
 
 public static void main(String[] args) {
 
 boolean verify = isEqual5(5);
 
 System.out.print(verify);
 }
 
 public static boolean isEqual5(int valor){
 
 if(valor == 5){
 return true;
 }else{
 return false;
 }
 }
 
 } 55

Slide 56

Slide 56 text

Demonstração public class Main {
 
 public static void main(String[] args) {
 
 boolean verify = isEqual5(5);
 
 System.out.print(verify);
 }
 
 public static boolean isEqual5(int valor){
 
 if(valor == 5){
 return true;
 }else{
 return false;
 }
 }
 
 } 56

Slide 57

Slide 57 text

Demonstração public class Main {
 
 public static void main(String[] args) {
 
 boolean verify = isEqual5(5);
 
 System.out.print(verify);
 }
 
 public static boolean isEqual5(int valor){
 
 if(valor == 5){
 return true;
 }else{
 return false;
 }
 }
 
 } 57

Slide 58

Slide 58 text

Demonstração public class Main {
 
 public static void main(String[] args) {
 
 boolean verify = isEqual5(5);
 
 System.out.print(verify);
 }
 
 public static boolean isEqual5(int valor){
 
 if(valor == 5){
 return true;
 }else{
 return false;
 }
 }
 
 } 58

Slide 59

Slide 59 text

Métodos • Toda a definição de um método pertence a alguma classe. • Há métodos que:
 - retornam um valor (e.g nextInt() )
 - executam uma acção mas não retornam valores (e.g. println), denominados métodos void • Sintaxe:
 public ( ) {
 
 } 59

Slide 60

Slide 60 text

Métodos • Um método tem de ser definido no âmbito (scope) da classe e não de outro método, isto é, não pode ser criado dentro de outro método. • A ordem com que os métodos estão definidos na classe é irrelevante. 60

Slide 61

Slide 61 text

Método main Para uma aplicação java funcionar, é necessária a inclusão de um método com a assinatura seguinte: static void main(String[] args) Que serve como ponto de entrada da aplicação, isto é, a execução de um programa java traduz-se únicamente na invocação de todas as instruções presentes neste método. Contudo, este método pode (e deve) tirar partido de métodos auxiliares. 61

Slide 62

Slide 62 text

Demonstração public class Main {
 
 public static void main(String[] args) {
 
 boolean verify = isEqual5(5);
 
 System.out.print(verify);
 }
 
 public static boolean isEqual5(int valor){
 
 if(valor == 5){
 return true;
 }else{
 return false;
 }
 }
 
 } 62

Slide 63

Slide 63 text

Bibliografia • Slides de Programação de Rui Joaquim, ISEL 2008 • Java - An Introduction to Problem Solving & Programming, 4a Edição, Walter Savitch 63