slides (02) - introducao a linguagem de programação...

24
16/09/2013 1 Desenvolvimento Web TCC-00.226 | Turma A-1 Desenvolvimento Web TCC-00.226 | Turma A-1 Professor Leandro Augusto Frata Fernandes [email protected] Professor Leandro Augusto Frata Fernandes [email protected] Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.2/tcc-00.226 Conteúdo Introdução à Linguagem de Programação Java Partiremos de onde paramos na aula passada Partiremos de onde paramos na aula passada Um programa Java muito simples, mas que dá o pontapé inicial para o desenvolvimento TCC-00.226 Desenvolvimento Web 2 public class HelloWorld { public static void main (String[] args) { System.out.println(“Olá mundo!”); } } Classe principal da aplicação Método principal Argumentos passados por linha de comando

Upload: trinhhuong

Post on 01-Feb-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

16/09/2013

1

Desenvolvimento WebTCC-00.226 | Turma A-1

Desenvolvimento WebTCC-00.226 | Turma A-1

Professor Leandro Augusto Frata [email protected]

Professor Leandro Augusto Frata [email protected]

Material disponível emhttp://www.ic.uff.br/~laffernandes/teaching/2013.2/tcc-00.226

ConteúdoIntrodução à Linguagem de Programação Java

Partiremos de onde paramosna aula passadaPartiremos de onde paramosna aula passada

• Um programa Java muito simples, mas que dá o pontapé inicial para o desenvolvimento

TCC-00.226 Desenvolvimento Web 2

public class HelloWorld {

public static void main (String[] args) {

System.out.println(“Olá mundo!”);}

}

Classe principalda aplicação

Métodoprincipal

Argumentos passadospor linha de comando

16/09/2013

2

PacotesPacotes

TCC-00.226 Desenvolvimento Web 3

Organização em PacotesOrganização em Pacotes

• Arquivos Java são armazenados fisicamente em uma hierarquia de pastas, chamadas pacotes (packages)

• No exemplo, os arquivosestão na pastameusistema

• Cada arquivo representauma classe ou interfaceJava

• Cada pasta representaum pacote ou subpacote

TCC-00.226 Desenvolvimento Web 4

16/09/2013

3

Identificação de PacoteIdentificação de Pacote

• Para indicar que as definições de um arquivo fonte Java fazem parte de um determinado pacote, a primeira linha de código deve ser a declaração de pacote:

package nomedopacote;

• Caso tal declaração não esteja presente, as classes farão parte do “pacote default”, que está mapeado para o diretório corrente

O uso do pacote default não é uma boa prática

TCC-00.226 Desenvolvimento Web 5

Importação de Classes e InterfacesImportação de Classes e Interfaces

• É possível importar classes e interfaces de outros pacotes incluindo o comando import antes da declaração de sua classe ou interface:

import nomedopacote.NomeDaClasse

ou simplesmente

import nomedopacote.*

onde * indica que todas as classes do pacote serão importadas

• Classes do pacote java.lang não precisam ser importados

TCC-00.226 Desenvolvimento Web 6

16/09/2013

4

Variável de Ambiente CLASSPATHVariável de Ambiente CLASSPATH

• O ambiente Java normalmente utiliza avariável de ambiente CLASSPATH

• CLASSPATH define uma lista de diretórios que contém os pacotes, classes e interfaces Java

• Exemplo

Se o arquivo MeuSistemaApp.class estiver no diretório /home/java/meusistema, então o diretório /home/java deve estar incluído na lista de diretórios definida por CLASSPATH

TCC-00.226 Desenvolvimento Web 7

Tipos de DadosTipos de Dados

TCC-00.226 Desenvolvimento Web 8

16/09/2013

5

Tipos de DadosTipos de Dados

• Tipos primitivos

Tipos numéricos inteiros

Tipos numéricos para ponto flutuante

Tipo caractere

Tipo lógico

• Tipos enumerados

• Referências

TCC-00.226 Desenvolvimento Web 9

Tipos Primitivos InteirosTipos Primitivos Inteiros

• Permitem a representação de valores inteiros

TCC-00.226 Desenvolvimento Web 10

O valor padrão de inicialização de todos é 0 (zero)

Tipo(palavra reservada)

Tamanhoe Formato

Faixa de Valores

byte 1 bytecom sinal

-128 a+127

short 2 bytescom sinal

-32.768 a+32.767

int 4 bytescom sinal

-2.147.483.648 a+2.147.483.647

long 8 bytescom sinal

-9.223.372.036.854.775.808 a+9.223.372.036.854.775.807

16/09/2013

6

Tipos Primitivos para Ponto FlutuanteTipos Primitivos para Ponto Flutuante

• Permitem a representação de um subconjunto de valores reais, além de valores especiais (±∞, NaN)

TCC-00.226 Desenvolvimento Web 11

O valor padrão de inicialização de ambos é 0 (zero)

Tipo(palavra reservada)

Tamanhoe Formato

Faixa de Valores

float 4 bytesIEEE 754

±1,40129846432481707 × 10-45 a±3,40282346638528860 × 10+38

double 8 bytesIEEE 754

±4,94065645841246544 × 10-324 a±1,79769313486231570 × 10+308

Tipo Primitivo CaractereTipo Primitivo Caractere

• Permite a representação de caracteres individuais Delimitado por aspas simples. Exemplo: ‘A’

• Caracteres de controle devem ser usados precedidos por \

TCC-00.226 Desenvolvimento Web 12

Tipo(palavra reservada)

Tamanhoe Formato

Valores Assumidos

char 2 bytesUNICODE

Qualquer um dos 32.768 caracteres da tabela UNICODE

O valor padrão de inicialização é o caractere de índice 0 (zero)

16/09/2013

7

Tipo Primitivo CaractereTipo Primitivo Caractere

• Alguns caracteres especiais

TCC-00.226 Desenvolvimento Web 13

Codificação Significado

\b Retrocesso de caractere (backspace)

\t Tabulação horizontal (tab)

\n Quebra de linha (new line)

\f Quebra de página (form feed)

\r Retorno de carro de impressão (carriage return)

\” Aspas duplas

\’ Aspas simples

\\ Contrabarra

\uxxxx O caráter com código de valor hexadecimal xxxx, que pode assumir valores entre 0000 e ffff

Tipo Primitivo LógicoTipo Primitivo Lógico

• Permite a representação de valores lógicos, utilizados em operações lógicas

• Note que em Java o tipo boolean ocupa 1 bit Em C, o tipo bool ocupa 1 byte!

TCC-00.226 Desenvolvimento Web 14

Tipo(palavra reservada)

TamanhoValores Assumidos

(palavras reservadas)

boolean 1 bit false e true

O valor padrão de inicialização é false

16/09/2013

8

Tipos EnumeradosTipos Enumerados

• Permite a restrição dos valores de uma variável a um conjunto de valores constantes pré-definidos

• Enumeradores não são tipos primitivos

Estendem implicitamente a classe java.lang.Enum

• Declarados com auxílio da palavra reservada enum

• Podem ser declarados separadamente ou no escopo de uma classe, mas nunca dentro de um método

TCC-00.226 Desenvolvimento Web 15

Regra de DeclaraçãoRegra de Declaração

• Sintaxe

modificador enum NomeDoTipo {VALOR1 [, VALOR2 [..., VALORN]]};

• Exemplos

public enum Direcao {NORTE, SUL, LESTE, OESTE};

enum TamanhoDoCafe {GRANDE, GIGANTE, SUPER_GIGANTE};

• Convenções

O nome do tipo segue a convenção de nomenclatura de classes e interfaces: palavras concatenadas iniciadas por letras maiúsculas

Os valores seguem a convenção de constantes: palavras separadas por underscore e com todas as letras maiúsculas

TCC-00.226 Desenvolvimento Web 16

16/09/2013

9

ReferênciasReferências

• Uma referência é usada para identificar de forma únicaum objeto, para acessar seus atributos e acionar seus métodos

• Em Java, se não for tipo primitivo então é referência

• A palavra reservada null indica que nenhum objeto está sendo referenciado (referência nula) null é o valor padrão de inicialização de referências

• Exemplos de variáreis que armazenam referências serão vistos a seguir. Definições mais precisas serão vistas junto com conceitos de orientação a objetos

TCC-00.226 Desenvolvimento Web 17

Declaração de VariáveisDeclaração de Variáveis

TCC-00.226 Desenvolvimento Web 18

16/09/2013

10

Regra de DeclaraçãoRegra de Declaração

• Palavras reservadas da linguagem não podem ser utilizadas como nome de variável

• O nome não pode iniciar com caracteres numéricos, mas eles podem ser utilizados após o primeiro caractere

• O nome pode iniciar com letras, underscore ou por cifrão

• Símbolos especiais ou espaços não podem ser utilizados

TCC-00.226 Desenvolvimento Web 19

Regra de DeclaraçãoRegra de Declaração

• Sintaxetipo nome1 [= valor] [, nome2 [= valor] [..., nomeN [= valor]]];

• Exemplosint i;

float total, preco = 0.0;

double valorMedio = 10.0;

Pessoa alguem = new Aluno(“Pedro”);

• Note que variáveis podem ser inicializadas no momento da declaração

TCC-00.226 Desenvolvimento Web 20

Variável quearmazenareferência

Variáveis quearmazenam valores

de tipos primitivos

16/09/2013

11

Convenções de NomenclaturaConvenções de Nomenclatura

• Variáveis, atributos e argumentos

Palavras concatenadas, onde a primeira palavra inicia com letra minúscula e as demais iniciam com letra maiúscula

• Constantes

Palavras separadas por underscore e com todas as letras maiúsculas

• Classes, interfaces e enumerações

Palavras concatenadas iniciadas por letras maiúsculas

• Métodos

Palavras concatenadas, onde a primeira palavra inicia com letra minúscula e as demais iniciam com letra maiúscula

.

TCC-00.226 Desenvolvimento Web 21

Para saber mais, consulte “Code Conventions for the Java Programming Language”

Atributo, Variável e ArgumentoAtributo, Variável e Argumento

TCC-00.226 Desenvolvimento Web 22

class NomeDaClasse {int atributo1; // Declaração de atributos aconteceint atributo2; // no escopo da classe

[...]

// Argumentos fazem parte da assinatura do métodoint metodo(int argumento1, int argumento2) {

int variavel1; // Declaração de variáveis aconteceint variavel2; // em escopo interno ao método

if (argumento1 == 0) {int variavel3;[...]

}[...]

}}

16/09/2013

12

OperadoresOperadores

TCC-00.226 Desenvolvimento Web 23

OperadoresOperadores

• Operadores aritméticos

• Operadores relacionais

• Operadores lógicos

• Operadores de manipulação binária

• Operador de concatenação

• Operadores de atribuição

TCC-00.226 Desenvolvimento Web 24

16/09/2013

13

Operadores AritméticosOperadores Aritméticos

TCC-00.226 Desenvolvimento Web 25

Símbolo Operação Exemplo

+ Adição a + b

- Subtração a - b

* Multiplicação a * b

/ Divisão a / b

% Resto da divisão inteira a % b

+ Expressão numérica positiva +a

- Negação de expressão numérica -a

++ Incremento ++a ou a++

-- Decremento --a ou a--

Operam sobre e retornam valores numéricos

Operadores RelacionaisOperadores Relacionais

TCC-00.226 Desenvolvimento Web 26

Símbolo Operação Exemplo

== Igual a(atenção ao usar com referências)

a == b

!= Diferente de(atenção ao usar com referências)

a != b

> Maior que(apenas para valores numéricos)

a > b

>= Maior ou igual a(apenas para valores numéricos)

a >= b

< Menor que(apenas para valores numéricos)

a < b

<= Menor ou igual a(apenas para valores numéricos)

a <= b

Operam sobre par de valores de mesma natureza e retornam valor lógico

16/09/2013

14

Operadores LógicosOperadores Lógicos

TCC-00.226 Desenvolvimento Web 27

Símbolo Operação Exemplo

&& E lógico (and) a && b

|| OU lógico (or) a || b

! Negação (not) !a

Operam sobre e retornam valores lógicos

Operadores de Manipulação BináriaOperadores de Manipulação Binária

TCC-00.226 Desenvolvimento Web 28

Operam sobre bits de valores inteiros e retornam valores do mesmo tipo

Símbolo Operação Exemplo

& E binário (bitwise and) a & b

| OU binário (bitwise or) a | b

^ OU EXCLUSIVO binário (bitwise xor) a ^ b

~ Complemento binário ~a

<< Deslocamento aritmético de bits à esquerda (preserva sinal)

a << 1

<<< Deslocamento lógico de bits à esquerda (não preserva sinal)

a <<< 1

>> Deslocamento aritmético de bits à direita (preserva sinal)

a >> 1

>>> Deslocamento lógico de bits à esquerda (não preserva sinal)

a >>> 1

16/09/2013

15

Operador de ConcatenaçãoOperador de Concatenação

• Em Java, texto estático é representado pela classe String, presente no pacote java.lang

Note que String é uma classe e não um tipo primitivo

• Existe um operador próprio para auxiliar a concatenação de texto

TCC-00.226 Desenvolvimento Web 29

Símbolo Operação Exemplo

+ Concatenhação de String“Texto” + aa + “Texto”

Opera sobre uma instância de String e outro tipo qualquer,retornando outra instância de String

Operadores de AtribuiçãoOperadores de Atribuição

TCC-00.226 Desenvolvimento Web 30

Símbolo Operação Exemplo

= Atribuição simples a = b;

+=

Atribuição composta, um atalho para operações como

a = a + ba += b;

-=

*=

/=

>>=

<<=

etc.

Operam sobre e retornam valores numéricos

16/09/2013

16

ComentáriosComentários

TCC-00.226 Desenvolvimento Web 31

Comentários em JavaComentários em Java

• Comentar o código é uma boa prática de desenvolvimento

• Três tipos de comentários

TCC-00.226 Desenvolvimento Web 32

// Comentário de uma linha.

/* Comentário de* múltiplas linhas.*/

/** Comentário de documentação. Também pode* possuir múltiplas linhas e é utilizado* para gerar arquivos hipertexto de ajuda*/

16/09/2013

17

ExemploExemplo

TCC-00.226 Desenvolvimento Web 33

/** Classe que representa a entidade cliente do sistema.* <p> É utiliza sempre no contexto de venda de* mercadorias para pessoa física.** @author O estagiário* @see meusistema.Venda*/public class Cliente extends PessoaFisica {

/** Construtor padrão.*/public Cliente() {

super(); // Invocar construtor padrão da superclasse.}

}

Fluxo de ExecuçãoFluxo de Execução

TCC-00.226 Desenvolvimento Web 34

16/09/2013

18

Estruturas de Controle de FluxoEstruturas de Controle de Fluxo

• Desvios condicionais

if .. else ...

switch ... case ... default ...

• Repetições ou laços

while ...

do ... while

for ...

TCC-00.226 Desenvolvimento Web 35

Desvio CondicionalDesvio Condicional

• Desvio em caso de condição verdadeira

• Desvio em caso de condição verdadeira ou falsa

TCC-00.226 Desenvolvimento Web 36

if (expressão lógica) {bloco de comandos

}else {

bloco de comandos}

if (expressão lógica) {bloco de comandos

}

16/09/2013

19

ExemploExemplo

TCC-00.226 Desenvolvimento Web 37

public class ExemploIf {

public static void main(String[] args) {

if (args.length > 0) {int count = Integer.parseInt(args[0]);

for (int i = 0; i < count; i++) {System.out.println(“i = ” + i);

}System.out.println(“Fim da contagem.”);

}System.out.println(“Fim do programa.”);

}

}

Desvio CondicionalDesvio Condicional

• Desvio condicionado ao caso

TCC-00.226 Desenvolvimento Web 38

switch (expressão) {case valor 1: bloco de comandos

[break;]case valor 2: bloco de comandos

[break;]case valor N: bloco de comandos

[break;]default: bloco de comandos

}

16/09/2013

20

ExemploExemplo

TCC-00.226 Desenvolvimento Web 39

public class ExemploSwitch {

public static void main(String[] args) {

switch (args.length) {case 0: System.out.println(“Nenhum.”);

break;case 1: System.out.println(“Um.”);

break;case 2: System.out.println(“Dois.”);

break;default: System.out.println(“Mais que dois.”);

}}

}

Repetição CondicionalRepetição Condicional

• Teste de condição antes da execução do bloco de comandos

• Teste de condição após a execução do bloco de comandos

TCC-00.226 Desenvolvimento Web 40

while (expressão lógica) {bloco de comandos

}

do {bloco de comandos

} while (expressão lógica);

16/09/2013

21

ExemploExemplo

TCC-00.226 Desenvolvimento Web 41

import java.util.Scanner

public class ExemploWhile {

public static void main(String[] args) {

Scanner teclado = new Scanner(System.in);

String linha = teclado.nextLine();while (!linha.equals(“fim”)) {

System.out.println(“Linha = ” + linha);linha = teclado.nextLine();

}}

}

ExemploExemplo

TCC-00.226 Desenvolvimento Web 42

import java.util.Scanner

public class ExemploDoWhile {

public static void main(String[] args) {

Scanner teclado = new Scanner(System.in);

String linha;do {

linha = teclado.nextLine();System.out.println(“Linha = ” + linha);

} while (!linha.equals(“fim”));}

}

16/09/2013

22

Repetição ContávelRepetição Contável

• Uma maneira enxuta de fazer repetições que dependem de valores sequenciais

TCC-00.226 Desenvolvimento Web 43

for (inicialização; expressão lógica; (in/de)cremento) {bloco de comandos

}

ExemploExemplo

TCC-00.226 Desenvolvimento Web 44

public class ExemploFor {

public static void main(String[] args) {

for (int i = 0; i < args.length; i++) {System.out.println(args[i]);

}System.out.println(“Fim do programa.”);

}

}

16/09/2013

23

Palavras ReservadasPalavras Reservadas

TCC-00.226 Desenvolvimento Web 45

Relação de Palavras ReservadasRelação de Palavras Reservadas

TCC-00.226 Desenvolvimento Web 46

• Palavras usadas pela linguagem

abstract default for null switch

assert do if package synchronized

boolean double implements private this

break else import protected throw

byte enum instanceof public throws

case extends int return transient

catch false interface short true

char final long static try

class finally native strictfp void

continue float new super while

16/09/2013

24

Relação de Palavras ReservadasRelação de Palavras Reservadas

TCC-00.226 Desenvolvimento Web 47

• Palavras não usadas pela linguagem

São comuns em outras linguagens de programação

const generic inner outer var

future goto operator rest volatile