• Nenhum resultado encontrado

Programação de Computadores II TCC Turma A-1

N/A
N/A
Protected

Academic year: 2021

Share "Programação de Computadores II TCC Turma A-1"

Copied!
28
0
0

Texto

(1)

Programação de Computadores II

TCC-00.309 | Turma A-1

Programação de Computadores II

TCC-00.309 | Turma A-1

Professor Leandro Augusto Frata Fernandes

laffernandes@ic.uff.br

Professor Leandro Augusto Frata Fernandes

laffernandes@ic.uff.br

Material disponível em

http://www.ic.uff.br/~laffernandes/teaching/2015.1/tcc-00.309

Conteúdo

Introdução ao 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

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

(2)

Pacotes

Pacotes

Introdução ao Java TCC-00.309 Programação de Computadores II 3

Organização em Pacotes

Organização em Pacotes

Arquivos Java são armazenados fisicamente em uma

hierarquia de pastas, chamadas pacotes (

packages

)

No exemplo, os arquivos

estão na pasta

meusistema

Cada arquivo representa

uma classe ou interface

Java

Cada pasta representa

um pacote ou subpacote

(3)

Identificação de Pacote

Identificaçã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.309 Programação de Computadores II 5

Importação de Classes e Interfaces

Importaçã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

(4)

Variável de Ambiente CLASSPATH

Variável de Ambiente CLASSPATH

O ambiente Java normalmente utiliza a

variá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.309 Programação de Computadores II 7

Tipos de Dados

Tipos de Dados

Introdução ao Java

(5)

Tipos de Dados

Tipos de Dados

Organização da memória

Tipos primitivos

Tipos numéricos inteiros

Tipos numéricos para ponto flutuante

Tipo caractere

Tipo lógico

Tipos enumerados

Referências

TCC-00.309 Programação de Computadores II 9

Organização da Memória

Fundamentos de Arquitetura de Computadores

Organização da Memória

Fundamentos de Arquitetura de Computadores

Bit

Menor unidade de memória

Armazena 0 ou 1

Byte

Sequência de 8 bits

Word

Sequência de bits usada

como unidade natural por

cada tipo de computador

0 1 2 3 4 5 6 7 0 0 1 1 1 0 0 1 0 1 1 1 0 0 1 1 1 0 2 0 1 1 1 0 0 1 0 3 0 0 0 0 0 0 0 0 4 1 1 1 0 1 0 1 0 5 0 0 0 0 0 0 0 0 6 1 1 1 1 1 1 1 1 7 0 0 0 0 0 0 0 0 ** Revisão **

(6)

Tipos Primitivos Inteiros

Tipos Primitivos Inteiros

Permitem a representação de

valores inteiros

TCC-00.309 Programação de Computadores II 11 O valor padrão de inicialização de todos é 0 (zero) Tipo

(palavra reservada)

Tamanho

e Formato Faixa de Valores

byte 1 byte com sinal -128 a+127 short 2 bytes com sinal -32.768 a+32.767 int 4 bytes com sinal -2.147.483.648 a+2.147.483.647 long 8 bytes com sinal -9.223.372.036.854.775.808 a +9.223.372.036.854.775.807

Organização da Memória

Fundamentos de Arquitetura de Computadores

Organização da Memória

Fundamentos de Arquitetura de Computadores

Tipos inteiros com e sem sinal

Byte Valor 00000000 00000001 00000010 00000011 … … 11111100 11111101 11111110 11111111

Todos os tipos inteiros do Java são ___________.

** Revisão ** Byte Valor 00000000 00000001 00000010 00000011 … … 11111100 11111101 11111110 11111111 S em s in al C om s in al

(7)

Tipos Primitivos para Ponto Flutuante

Tipos Primitivos para Ponto Flutuante

Permitem a representação de um

subconjunto de

valores reais

, além de valores especiais (±∞, NaN)

TCC-00.309 Programação de Computadores II 13 O valor padrão de inicialização de ambos é 0 (zero) Tipo

(palavra reservada)

Tamanho

e Formato Faixa de Valores float 4 bytes IEEE 754 ±1,40129846432481707 × 10 -45a ±3,40282346638528860 × 10+38 double 8 bytes IEEE 754 ±4,94065645841246544 × 10 -324a ±1,79769313486231570 × 10+308

Organização da Memória

Fundamentos de Arquitetura de Computadores

Organização da Memória

Fundamentos de Arquitetura de Computadores

IEEE Standart 754 Floating Point

** Revisão **

s

eeee…eeee mmmmmmmmm…mmmmmm

0 51 52 62 63

Precisão Dupla (double)

s

eeeeeeee

mmmmmmmm…mmmmmm

0 22 23 30 31

Precisão Simples (float)

(8)

Tipo Primitivo Caractere

Tipo 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.309 Programação de Computadores II 15 Tipo

(palavra reservada)

Tamanho

e Formato Valores Assumidos

char 2 bytes

UNICODE Qualquer um dos 32.768 caracteres da tabela UNICODE O valor padrão de inicialização é o caractere de índice 0 (zero)

Tipo Primitivo Caractere

Tipo Primitivo Caractere

Alguns caracteres especiais

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

(9)

Tipo Primitivo Lógico

Tipo 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.309 Programação de Computadores II 17 Tipo

(palavra reservada) Tamanho

Valores Assumidos (palavras reservadas) boolean 1 bit falsee true

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

Tipos Enumerados

Tipos 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

(10)

Regra de Declaração

Regra 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.309 Programação de Computadores II 19

Referências

Referências

Uma referência é usada para identificar de forma única

um 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

(11)

Declaração de Variáveis

Declaração de Variáveis

Introdução ao Java TCC-00.309 Programação de Computadores II 21

Regra de Declaração

Regra 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

(12)

Regra de Declaração

Regra de Declaração

Sintaxe

tipo nome1 [= valor] [, nome2 [= valor] [..., nomeN [= valor]]];

Exemplos

int i;

float total, preco = 0.0; double valorMedio = 10.0;

Aluno alguem = new Aluno(“Pedro”);

Note que variáveis podem ser inicializadas no

momento da declaração

TCC-00.309 Programação de Computadores II 23 Variável que armazena referência Variáveis que armazenam valores de tipos primitivos

Convenções de Nomenclatura

Convençõ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

.

(13)

Atributo, Variável e Argumento

Atributo, Variável e Argumento

TCC-00.309 Programação de Computadores II 25 class NomeDaClasse {

int atributo1; // Declaração de atributos acontece

int atributo2; // no escopo da classe [...]

// Argumentos fazem parte da assinatura do método

int metodo(int argumento1, int argumento2) {

int variavel1; // Declaração de variáveis acontece

int variavel2; // em escopo interno ao método if (argumento1 == 0) { int variavel3; [...] } [...] } }

Operadores

Operadores

Introdução ao Java

(14)

Operadores

Operadores

Operadores aritméticos

Operadores relacionais

Operadores lógicos

Operadores de manipulação binária

Operador de concatenação

Operadores de atribuição

TCC-00.309 Programação de Computadores II 27

Operadores Aritméticos

Operadores Aritméticos

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 ++aou a++

-- Decremento --aou

(15)

Operadores Relacionais

Operadores Relacionais

TCC-00.309 Programação de Computadores II 29

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

Operadores Lógicos

Operadores Lógicos

Símbolo Operação Exemplo

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

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

! Negação (not) !a

(16)

Operadores de Manipulação Binária

Operadores de Manipulação Binária

TCC-00.309 Programação de Computadores II 31 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

Operador de Concatenação

Operador 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

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

(17)

Operadores de Atribuição

Operadores de Atribuição

TCC-00.309 Programação de Computadores II 33

Símbolo Operação Exemplo

= Atribuição simples a = b;

+=

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

a = a + b a += b; -= *= /= >>= <<= etc.

Operam sobre e retornam valores numéricos

Fluxo de Execução

Fluxo de Execução

Introdução ao Java

(18)

Estruturas de Controle de Fluxo

Estruturas de Controle de Fluxo

Desvios condicionais

if .. else ...

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

Repetições ou laços

while ...

do ... while

for ...

TCC-00.309 Programação de Computadores II 35

Desvio Condicional

Desvio Condicional

Desvio em caso de condição verdadeira

Desvio em caso de condição verdadeira ou falsa

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

(19)

Exemplo

Exemplo

TCC-00.309 Programação de Computadores II 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 Condicional

Desvio Condicional

A

notação ternária do if

é utilizada para deixar o

código compacto

Exemplo

(expressão lógica) ? ação caso verdadeiro : ação caso falso

equivale a

String txt = (x == 0.0) ? “Zero” : “Não zero”;

String txt; if (x == 0.0) {

txt = “Zero”; }

(20)

Desvio Condicional

Desvio Condicional

Desvio condicionado ao caso

TCC-00.309 Programação de Computadores II 39 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

}

Exemplo

Exemplo

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.”); }

} }

(21)

Repetição Condicional

Repetiçã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.309 Programação de Computadores II 41 while (expressão lógica) {

bloco de comandos

}

do {

bloco de comandos

} while (expressão lógica);

Exemplo

Exemplo

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(); } } }

(22)

Exemplo

Exemplo

TCC-00.309 Programação de Computadores II 43 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”)); } }

Repetição Contável

Repetição Contável

Uma maneira enxuta de fazer repetições que

dependem de valores sequenciais

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

bloco de comandos

}

(23)

Exemplo

Exemplo

TCC-00.309 Programação de Computadores II 45 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.”); }

}

Arrays de Tipos Primitivos

Arrays de Tipos Primitivos

Introdução ao Java

(24)

Arrays

Arrays

Permitem armazenamento e manipulação de uma

mesma quantidade de

dados de mesmo tipo

Exemplos: notas de alunos, coleção de nomes

Mapeia um conjunto finito de índices inteiros

(de tamanho constante) em um conjunto qualquer

de elementos de mesmo tipo

TCC-00.309 Programação de Computadores II 47

Arrays Unidimensionais de

Tipos Primitivos

Arrays Unidimensionais de

Tipos Primitivos

Declaração e inicialização de variáveis

tipo[] nome1

[

= {

[

valor1

[

, valor2,

[

...

]]]

}

]

;

tipo[] nome2

[

= new tipo[quantidade]

]

;

Consulta de tamanho

Atributo length

Exemplo

double[] notas = {8.0, 7.0, 9.0};

int qtd = notas.length;

(25)

Arrays Unidimensionais de

Tipos Primitivos

Arrays Unidimensionais de

Tipos Primitivos

Leitura do elemento com determinado índice

tipo valor = nome1[indice];

Escrita na posição com determinado índice

nome1[indice] = valor;

TCC-00.309 Programação de Computadores II 49

Cópia Eficiente entre Arrays

Cópia Eficiente entre Arrays

Utilize o comando System.arraycopy para fazer

cópia eficiente entre arrays

System.arraycopy(Object src, int srcPos,

Object dest, int destPos, int length);

Outras rotinas interessantes são encontradas em

java.util.Arrays

(26)

Comentários

Comentários

Introdução ao Java TCC-00.309 Programação de Computadores II 51

Comentários em Java

Comentários em Java

Comentar o código é uma

boa prática

de

desenvolvimento

Três tipos de comentários

// 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 */

(27)

Exemplo

Exemplo

TCC-00.309 Programação de Computadores II 53

/** 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.

} }

Palavras Reservadas

Palavras Reservadas

Introdução ao Java

(28)

Relação de Palavras Reservadas

Relação de Palavras Reservadas

TCC-00.309 Programação de Computadores II 55

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

Relação de Palavras Reservadas

Relação de Palavras Reservadas

Palavras

não usadas

pela linguagem

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

const generic inner outer var

Referências

Documentos relacionados

Computação e Matemática Aplicada Obrigatória Engenharia de Materiais 3 Linguagem de Programação e Expressão Gráfica Obrigatória... Plano

Os parâmetros devem respeitar as regras de conversão para data (mês entre 1 e 12, etc.), sendo year, month e day obrigatórios.... Classe datetime

Profª Drª Francineide Pereira da Silva Pena 07/02/ 2018 15:00 Identificação de sintomas psicopatológicos em escolares de 06 a 12 anos Profª Drª Marina Nolli

A empresa foi uma das primeiras fora dos Estados Unidos empresa foi uma das primeiras fora dos Estados Unidos a usar esse

Para que o ruby conheça a classe Ponto e Triangulo Informar no arquivo meu_programa.rb que o arquivo ponto.rb e triangulo.rb são requeridos ( require ) O .rb é

O objetivo deste estudo foi de estabelecer o perfil epidemiológico e tratamento instituído nos pacientes acometidos por infecções odontogênicas atendidos no Hospital

Variáveis também podem ser inicializadas para conter valores quando são definidas.. • um nome:

Espaços colocados no início da linha para identificar dependência com linhas anteriores. Facilita visualização do código