SlideShare uma empresa Scribd logo
1 de 71
Baixar para ler offline
Instituto de Computação - UFF
1
Programação deProgramação de
computadores IIcomputadores II
Professor:
Anselmo Montenegro
www.ic.uff.br/~anselmo
Conteúdo:
- Introdução à Linguagem de
programação Java
Instituto de Computação - UFF
2
HistóricoHistórico (1/3)(1/3)
• Início em 1991, com um pequeno grupo de projeto da Sun
MicroSystems, denominado Green.
• O projeto visava o desenvolvimento de software para uma ampla
variedade de dispositivos de rede e sistemas embutidos.
• James Gosling, decide pela criação de uma nova linguagem de
programação que fosse simples, portátil e fácil de ser programada.
• Surge a linguagem interpretada Oak (carvalho em inglês), que será
renomeada para Java devido a problemas de direitos autorais.
Instituto de Computação - UFF
3
HistóricoHistórico (2/3)(2/3)
• Mudança de foco para aplicação na Internet (visão: um meio
popular de transmissão de texto, som, vídeo).
• Projetada para transferência de conteúdo de mídia em redes com
dispositivos heterogêneos.
• Também possui capacidade de transferir “comportamentos”,
através de applets, junto com o conteúdo (HTML por si só não faz
isso).
• Em 1994 Jonathan Payne e Patrick Naughton desenvolveram o
programa navegador WebRunner.
Instituto de Computação - UFF
4
HistóricoHistórico (3/3)(3/3)
• No SunWorld’95 a Sun apresenta formalmente o navegador HotJava e a
linguagem Java.
• Poucos meses depois a Netscape Corp. lança o seu navegador capaz de
fazer download e executar pequenos códigos Java chamados de Applets.
• Imediatamente a Sun decide disponibilizar o Java gratuitamente para a
comunidade de desenvolvimento de softwares e assim surge o Java
Developer´s Kit 1.0 (JDK 1.0).
• Para Sun Solaris e Microsoft Windows 95/NT.
• Progressivamente surgiram kits para outras plataformas como Linux e
Applet Macintosh.
Instituto de Computação - UFF
5
Características da linguagem JavaCaracterísticas da linguagem Java
simples,
orientada a objeto,
distribuída,
alta performance,
robusta,
segura,
interpretada,
neutra,
portável,
dinâmica e
multithread.
Instituto de Computação - UFF
6
Simples e orientada a objetosSimples e orientada a objetos
• É uma linguagem simples de fácil aprendizado.
• É uma linguagem puramente orientada a
objetos.
• A abordagem de OO permite o desenvolvimento
de sistemas de uma forma mais natural.
Instituto de Computação - UFF
7
DistribuídaDistribuída
• Java foi projetada para trabalhar em um
ambiente de redes
• Na realidade, Java não é uma linguagem para
programação distribuída; apenas oferece
bibliotecas para facilitar o processo de
comunicação.
Instituto de Computação - UFF
8
Alta performanceAlta performance
• Java é uma linguagem interpretada, logo ela nunca será
tão rápida quanto as linguagens compiladas.
• Java chega a ser 20 vezes mais lento que C.
• Compiladores just in time (JIT), que interpretam os
bytecodes para um código nativo durante a execução.
Instituto de Computação - UFF
9
Robusta e seguraRobusta e segura
• Java possui as seguintes características que contribuem
para torná-la mais robusta e segura:
– É fortemente tipada;
– Não possui aritmética de ponteiros;
– Possui mecanismo de coleta de lixo;
– Possui verificação rigorosa em tempo de compilação;
– Possui mecanismos para verificação em tempo de
execução;
– Possui gerenciador de segurança.
• Segurança: Java possui mecanismos de segurança que
podem no caso de applets, evitar qualquer operação no
sistema de arquivos da máquina alvo, minimizando
problemas.
Instituto de Computação - UFF
10
Interpretada, Neutra, PortávelInterpretada, Neutra, Portável (1/3)(1/3)
• Bytecodes executam em qualquer máquina que possua
uma JVM, permitindo que o código em Java possa ser
escrito independente da plataforma.
• A característica de ser neutra em relação à arquitetura
permite uma grande portabilidade.
Instituto de Computação - UFF
11
Interpretada, Neutra, PortávelInterpretada, Neutra, Portável (2/3)(2/3)
Instituto de Computação - UFF
12
Interpretada, Neutra, PortávelInterpretada, Neutra, Portável (3/3)(3/3)
Instituto de Computação - UFF
13
Dinâmica e MultithreadDinâmica e Multithread
• Java possui mecanismos para a resolução de
referências em tempo de execução, permitindo
flexibilidade nas aplicações, sobre o custo da
performance.
• Java provê suporte para múltiplas threads de
execução (processos leves), que podem tratar
diferentes tarefas concorrentemente.
Instituto de Computação - UFF
14
O Ambiente JavaO Ambiente Java (1/2)(1/2)
Instituto de Computação - UFF
15
O Ambiente JavaO Ambiente Java (2/2)(2/2)
Instituto de Computação - UFF
16
Ambiente de DesenvolvimentoAmbiente de Desenvolvimento (1/2)(1/2)
• Java possui um ambiente de desenvolvimento de
software denominado Java SDK ( Software Development
Kit – antigamente denominado JDK ).
• Não é um ambiente integrado de desenvolvimento, não
oferecendo editores ou ambiente de programação.
• O Java SDK contém um amplo conjunto de APIs
(Application Programing Interface).
Instituto de Computação - UFF
17
Ambiente de DesenvolvimentoAmbiente de Desenvolvimento (2/2)(2/2)
• Algumas ferramentas do Java SDK:
– o compilador Java (javac)
– o interpretador de aplicações Java (java)
– o interpretador de applets Java (appletsviewer )
– e ainda:
– javadoc (um gerador de documentação para programas Java)
– jar (o manipulador de arquivos comprimidos no formato Java
Archive)
– jdb (um depurador de programas Java), entre outras
ferramentas.
Instituto de Computação - UFF
18
PackagesPackages (1/3)(1/3)
 Os arquivos Java serão armazenados
fisicamente em uma pasta.
 No nosso exemplo ao lado estes arquivos
estão no diretório Geometria.
 Com o uso de packages podemos
organizar de forma física algo lógico
(um grupo de classes em comum);
Instituto de Computação - UFF
19
PackagesPackages (2/3)(2/3)
• 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 nome_do_pacote;
• Caso tal declaração não esteja presente, as
classes farão parte do “pacote default”, que está
mapeado para o diretório corrente.
Instituto de Computação - UFF
20
PackagesPackages (3/3)(3/3)
• Referenciando uma classe de um pacote no código
fonte:
import nome_do_pacote.Xyz ou simplesmente
import nome_do_pacote.*
• Com isso a classe Xyz pode ser referenciada sem o
prefixo nome_do_pacote no restante do código.
• A única exceção refere-se às classes do pacote
java.lang.
Instituto de Computação - UFF
21
ClasspathClasspath
• O ambiente Java normalmente utiliza a especificação de
uma variável de ambiente CLASSPATH.
• CLASSPATH define uma lista de diretórios que contém
os arquivos de classes Java.
• No exemplo anterior se o arquivo Xyz.class estiver no
diretório /home/java/nome_do_pacote, então o
diretório /home/java deve estar incluído no caminho de
busca de classes definido por CLASSPATH.
Instituto de Computação - UFF
22
Tipos PrimitivosTipos Primitivos (1/6)(1/6)
• Podem ser agrupados em quatro categorias:
– Tipos Inteiros: Byte, Inteiro Curto, Inteiro e Inteiro
Longo.
– Tipos Ponto Flutuante: Ponto Flutuante Simples,
Ponto Flutuante Duplo.
– Tipo Caractere: Caractere.
– Tipo Lógico: Booleano.
Instituto de Computação - UFF
23
Tipos Primitivos - InteirosTipos Primitivos - Inteiros (2/6)(2/6)
-2.147.483.648 a +2.147.483.647Int
-9.223.372.036.854.775.808 a
+9.223.372.036.854.775.807Long
-32.768 a +32.767Short
-128 a +127Byte
FaixasTipos de Dados Inteiros
Instituto de Computação - UFF
24
Tipos Primitivos – Ponto FlutuanteTipos Primitivos – Ponto Flutuante (3/6)(3/6)
• Exemplos:
– 1.44E6 é equivalente a 1.44 x 106
= 1.440.000.
– 3.4254e-2 representa 3.4254 x 10-2
=0.034254.
FaixasTipos de Dados em
Ponto Flutuante
± 4.94065645841246544 x 10-324
a ±
1.79769313486231570 x 10+308
Double
± 1.40282347 x 10-45
a ± 3.40282347 x
10+38
Float
Instituto de Computação - UFF
25
Tipos Primitivos - CaractereTipos Primitivos - Caractere (4/6)(4/6)
• O tipo char permite a representação de caracteres
individuais.
• Ocupa 16 bits interno permitindo até 32.768 caracteres
diferentes.
• Caracteres de controle e outros caracteres cujo uso é
reservado pela linguagem devem ser usados precedidos
por <  >.
Instituto de Computação - UFF
26
Tipos Primitivos - CaractereTipos Primitivos - Caractere (5/6)(5/6)
Instituto de Computação - UFF
27
Tipos Primitivos - BooleanoTipos Primitivos - Booleano (6/6)(6/6)
• É representado pelo tipo lógico boolean.
• Assume os valores false (falso) ou true (verdadeiro).
• O valor default é false.
• Ocupa 1 bit.
• Diferente da linguagem C.
Instituto de Computação - UFF
28
Palavras reservadasPalavras reservadas
• Além dessas existem outras que embora reservadas
não são usadas pela linguagem
Instituto de Computação - UFF
29
Declaração de VariáveisDeclaração de Variáveis (1/2)(1/2)
• Uma variável não pode utilizar como nome uma palavra
reservada da linguagem.
• Sintaxe:
– Tipo nome1 [, nome2 [, nome3 [..., nomeN]]];
• Exemplos:
– int i;
– float total, preco;
– byte mascara;
– double valormedio;
Instituto de Computação - UFF
30
Declaração de VariáveisDeclaração de Variáveis (2/2)(2/2)
• Embora não seja de uso obrigatório, existe a convenção
padrão para atribuir nomes em Java, como:
– Nomes de classes são iniciados por letras maiúsculas;
– Nomes de métodos, atributos e variáveis são iniciados por letras
minúsculas;
– Em nomes compostos, cada palavra do nome é iniciada por
letra maiúscula, as palavras não são separadas por nenhum
símbolo.
• Documento: Code Conventions for the JavaTM
ProgrammingLanguage.
Instituto de Computação - UFF
31
ComentáriosComentários (1/2)(1/2)
• Exemplos:
// comentário de uma linha
/* comentário de
múltiplas linhas */
/** comentário de documentação
* que também pode
* possuir múltiplas linhas
*/
Instituto de Computação - UFF
32
ComentáriosComentários (2/2)(2/2)
• /** Classe destinada ao armazenamento
* de dados relacionados a arquivos ou
* diretórios.
* <p> Pode ser usada para armazenar árvores
de diretórios.
* @author Joao Jr.
* @see java.io.File
*/
Instituto de Computação - UFF
33
Operadores AritméticosOperadores Aritméticos
Instituto de Computação - UFF
34
Operadores RelacionaisOperadores Relacionais
Instituto de Computação - UFF
35
Operadores LógicosOperadores Lógicos
Instituto de Computação - UFF
36
Programa JavaPrograma Java
• Todos os programas em Java possuem quatro
elementos básicos:
public class HelloJavaClass {
}
public final static void main(String args[]) {
System.out.println(“Hello, Java”);
Date d = new Date();
System.out.printiln(“Date: “+d.toString());
}
import java.util
Classes
Pacotes
Métodos
Variáveis
Instituto de Computação - UFF
37
Controle do fluxo de execuçãoControle do fluxo de execução (1/2)(1/2)
• Normalmente seqüencial.
• Comandos de fluxo de controle permitem
modificar essa ordem natural de execução:
if (condição)
{
bloco_comandos
}
Instituto de Computação - UFF
38
Controle do fluxo de execuçãoControle do fluxo de execução (2/2)(2/2)
switch (variável)
{
case valor1:
bloco_comandos
break;
case valor2:
bloco_comandos
break;
...
case valorn:
bloco_comandos
break;
default:
bloco_comandos
}
while (condição)
{
bloco_comandos
}
do
{
bloco_comandos
} while (condição);
for (inicialização; condição; incremento)
{
bloco_comandos
}
Instituto de Computação - UFF
39
Instrução de Desvio de FluxoInstrução de Desvio de Fluxo (1/2)(1/2)
• São as duas, o If e o Switch
• Exemplo do If:
Instituto de Computação - UFF
40
Instrução de Desvio de FluxoInstrução de Desvio de Fluxo (2/2)(2/2)
Instituto de Computação - UFF
41
Estrutura deEstrutura de Repetição SimplesRepetição Simples
Instituto de Computação - UFF
42
Estrutura deEstrutura de Repetição CondicionalRepetição Condicional
Instituto de Computação - UFF
43
Estruturas de Controle de ErroEstruturas de Controle de Erro (1/5)(1/5)
• Diretivas Try e Catch:
try
{
Fluxo normal do sistema
}
catch(Exceção1)
{
Diretiva do tratamento do erro 1
}
catch(Exceção2)
{
Diretiva do tratamento do erro 2
}
Instituto de Computação - UFF
44
Estruturas de Controle de ErroEstruturas de Controle de Erro (2/5)(2/5)
• Com o tratamento de Erros (1 Exceção)
Instituto de Computação - UFF
45
Estruturas de Controle de ErroEstruturas de Controle de Erro (3/5)(3/5)
• Com o tratamento de Erros (2 Exceções)
Instituto de Computação - UFF
46
Estruturas de Controle de ErroEstruturas de Controle de Erro (4/5)(4/5)
• Diretivas Try e Catch:
try
{
Fluxo normal do sistema
}
catch(Exceção1)
{
Diretiva do tratamento do erro 1
}
catch(Exceção2)
{
Diretiva do tratamento do erro 2
}
Instituto de Computação - UFF
47
Estruturas de Controle de ErroEstruturas de Controle de Erro (5/5)(5/5)
• A diretiva try catch finally
try
{
Fluxo normal do sistema
}
catch(Exceção1)
{
Diretiva do tratamento do erro 1
}
finally
{
Fluxo que será sempre executado, independente da ocorrência
da exceção ou não.
}
Instituto de Computação - UFF
48
ArraysArrays (1/2)(1/2)
• O propósito de um array é permitir o armazenamento e
manipulação de uma grande quantidade de dados de
mesmo tipo
• Exemplos de dados armazenados através de arrays:
• Notas de alunos
• Nucleotídeos em uma cadeia de DNA
• Frequencia de um sinal de audio
Instituto de Computação - UFF
49
ArraysArrays (2/2)(2/2)
• Arrays são especialmente importantes quando é
necessário o acesso direto aos elementos de uma
representação de uma coleção de dados
• Arrays são relacionados ao conceito matemático de
função discreta, que mapeia valores em um conjunto
finito de índices consecutivos (por exemplo, um
subconjunto de inteiros não negativos) em um conjunto
qualquer de objetos de mesmo tipo.
• F(x)→S,x∈ U tal que U é um conjunto finito de valores
Instituto de Computação - UFF
50
Arrays unidimensionaisArrays unidimensionais (1/2)(1/2)
• Os elementos de um array são identificados através de
índices
• Arrays cujos elementos são indicados por um único
índice são denominados arrays unidimensionais
Instituto de Computação - UFF
51
Arrays unidimensionaisArrays unidimensionais (2/2)(2/2)
• Um elemento em uma posição indicada por um índice i,
em um array A, é acessado através do indentificador do
array seguido do índice i (entre chaves ou parênteses,
dependendo da linguagem)
a(0)
a(1)
a(2)
a(4)
a(n-2)
a(n-1)
Um array com n elementos
Instituto de Computação - UFF
52
Arrays unidimensionais em JavaArrays unidimensionais em Java (1/3)(1/3)
• A criação de um array em Java requer 3 passos:
• Declaração do nome do array e seu tipo
• Criação do array
• Inicialização de seus valores
• Exemplo: array de 10 elementos de tipo double
double[ ] a;
a = new double[10];
for (int i = 0; i<10;i++)
a[i] = 0.0;
Instituto de Computação - UFF
53
Arrays unidimensionais em JavaArrays unidimensionais em Java (2/3)(2/3)
• O número de elementos de um array em Java pode ser
determinado através do nome do array seguido de
.length( )
• Exemplo: a.length()
• Arrays em Java são objetos (mais detalhes serão vistos
posteriormente)
• Arrays em Java tem índice base igual a zero
Instituto de Computação - UFF
54
Arrays unidimensionais em JavaArrays unidimensionais em Java (3/3)(3/3)
• Arrays em Java podem ser inicializados em tempo de
compilação
• Exemplos:
• String[ ] naipe = {“copas”,”ouros”, “paus”,”espadas”};
• double[ ] temperaturas = {45.0,32.0,21.7,28.2,27.4};
Instituto de Computação - UFF
55
Arrays multidimensionais em JavaArrays multidimensionais em Java
• Arrays multidimensionais representam agregados
homogêneos cujos elementos são especificados por
mais de um índice
• Em Java é muito simples especificar um array
multidimensional
• Exemplo: array contendo as notas de 3 provas de 30
alunos
• int[ ][ ] notas = new int[30][3];
Instituto de Computação - UFF
56
Exercícios: Conversão de coresExercícios: Conversão de cores (1/2)(1/2)
• Diferentes sistemas são utilizados para representar cores
• Por exemplo, o sistema mais comum para representação
de cores em display LCD, câmeras digitais e páginas web
conhecido como sistema RGB, especifica os níveis de
vermelho(R), verde(G) e azul(B) em uma escala de 0 a
255
• O sistema utilizado na publicação de livros e revistas,
conhecido como CMYK, especifica os níveis de
ciano,magenta, amarelo e preto em um escala de
0.0 a 1.0
Instituto de Computação - UFF
57
Exercícios: Conversão de coresExercícios: Conversão de cores (1/2)(1/2)
• Escreva, um programa Java que receba três inteiros r,g e
b representando um cor no sistema RGB e imprima os
valores das componentes c,m,y,k correspondentes no
sistema CMYK
• Se r=g=b=0 então c=m=y=0 e k = 1, caso contrário utilize
a fórmula abaixo:
wk
wbwy
wgwm
wrwc
bgrw
−=
−=
−=
−=
=
1
/))255/((
/))255/((
/))255/((
);255/,255/,255/max(
Instituto de Computação - UFF
58
Exercícios: Padrão de divisoresExercícios: Padrão de divisores
• Escreva um programa Java que receba um inteiro N e imprima um
tabela NxN com um asterístico na linha i e coluna j se ou i divide j
ou j divide i.
Instituto de Computação - UFF
59
Exercícios: Padrão de divisoresExercícios: Padrão de divisores
• Escreva um programa Java que receba um inteiro N e imprima um
tabela NxN com um asterístico na linha i e coluna j se ou i divide j
ou j divide i.
Instituto de Computação - UFF
60
Exercícios: Fatoração de inteirosExercícios: Fatoração de inteiros
• Escreva um programa Java que receba um inteiro N e imprima sua
fatorização ( sequencia de inteiros primos que multiplicados iguala
a N)
Instituto de Computação - UFF
61
Exercícios: Cálculo de raíz quadradaExercícios: Cálculo de raíz quadrada
• Escreva um programa que ache a raiz quadrada de um número real
c utilizando método de Newton-Raphson.
• Sob certas condições, dada uma função f(x), o método de Newton-
Raphson é capaz de encontrar as raízes de uma equação f(x) {x|
f(x)=0}.
• O método inicia com uma estimativa da raíz t0
• A partir de uma estimativa ti, compute uma nova estimativa ti+1 onde
ti é a interseção da linha tangente a curva y no ponto (ti,f(ti)) com o
eixo das abcissas.
Instituto de Computação - UFF
62
Exercícios: Cálculo de raíz quadradaExercícios: Cálculo de raíz quadrada
• O método inicia com uma estimativa da raíz t0
• A partir de uma estimativa ti, compute uma nova estimativa ti+1 onde
ti é a interseção da linha tangente a curva y no ponto (ti,f(ti)) com o
eixo das abcissas.
titi+1
)(
)(
)())((
0)(
)(
1
1
1
i
i
ii
iiii
ii
i
i
tf
tf
tt
tftttf
tt
tf
tf
′
+=
=−′
−
−
=′
+
+
+
f(ti)
f(ti+1)
Instituto de Computação - UFF
63
Exercícios: Cálculo de raíz quadradaExercícios: Cálculo de raíz quadrada
• Computar a raiz de um número equivale a achar a raíz da função
f(x)=x2
-c
• Considere uma estimativa inicial t0 = c
• Se ti*ti-c=epsilon então tome ti como raiz de c
Instituto de Computação - UFF
64
Exercícios: FatorizaçãoExercícios: Fatorização
• Escreva um programa que receba um número inteiro N
e gere todos os fatores primos de N
• Escreva uma versão mais eficiente do seu algoritmo
Instituto de Computação - UFF
65
Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos
• Escreva um programa em Java que receba uma
sequencia de letras da linha de comando formada por
um conjunto de símbolos e gere as seguintes
mensagens:
• Para uma letra a “Soco”
• Para uma letra b “Chute lateral”
• Para duas letras a’s consecutivas “Chute circular”
• Para uma letra a seguida de uma letra b imprime a mensagem
(“dragon punch”)
Instituto de Computação - UFF
66
Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos
• O problema pode ser resolvido através de uma
automato finito determinístico, que é um modelo para
definição de linguagens regulares composto de cinco
elementos: 〈Σ,S,so,δ,F〉, onde:
• Σ é o alfabeto sobre o qual a linguagem é definida;
• S é um conjunto finito de estados não vazio;
• So é o estado inicial, so∈S;
• δ:S × Σ → S é a função de transição de estados;
• F é o conjunto de estados finais F ⊆ S
Instituto de Computação - UFF
67
Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos
• Um AFD é uma máquina reconhecedora de cadeias que
pertencem a linguagem
• Ele recebe uma cadeia e diz se ela pertence ou não a
linguagem modelada
• Ele possui um controle de estados S
• O CFE sempre coloca a máquina em um estado pertencente a
S
Controle
finito de
estados
Aceita
Rejeita
a
b
b
a
Instituto de Computação - UFF
68
Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos
• A função F diz como a máquina deve mudar de estado, à
medida em que os símbolos da cadeia são analisados
• Após processar todos os símbolos e realizar as mudanças
determinadas o AFD aceita ou não a cadeia
• Uma cadeia é rejeitada quando o autômato para em um estado
que não é final
• Referência: Como construir um compilador utilizando
ferramentas Java – Márcio Delamaro – novatec)
Controle
finito de
estados
Aceita
Rejeita
Instituto de Computação - UFF
69
Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos
• Autômato finito determinístico para o problema da sequência de
símbolos
I
CH
SO
s0
a a
CC
DP
b
b
S a b mensagem
I C B
CH CC DP Chute
SO Soco
CC Chute circular
DP Dragon Punch
Instituto de Computação - UFF
70
Exercícios: Caminhos aleatórios semExercícios: Caminhos aleatórios sem
auto-interseçãoauto-interseção
• Suponha que você abandone seu cão no meio de uma
grande cidade cujas eruas formam uma estrutura de
reticulado
• Considera-se que existam N ruas na direção norte-sul e
M na direção leste-oeste
• Com o objetivo de escapar da cidade, o cão faz uma
escolha aleatória de qual direção ir em cada interseção,
mas sabe através do faro como evitar visitar um lugar
previamente visitado
• Apesar de tudo é possível que o cão fique perdido em
um beco sem saída onde a próxima escolha
obrigatóriamente leva a um lugar já percorrido
Instituto de Computação - UFF
71
Exercícios: Caminhos aleatórios semExercícios: Caminhos aleatórios sem
auto-interseçãoauto-interseção
• Escreva um programa Java que receba como
parâmetros a largura e altura do reticulado e simule o
caminho percorrido por um cão T vezes
• O programa deve determinar o número de vezes em que
o cão fica sem saída

Mais conteúdo relacionado

Mais procurados

Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6Fabio Spanhol
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformMilfont Consulting
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonOsvaldo Santana Neto
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4Fabio Spanhol
 
Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Fabio Spanhol
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6 Fabio Spanhol
 
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4 MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4 Rogério Moraes de Carvalho
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01Daniel Alves
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre Denis Vieira
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolsoJean Lopes
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5Fabio Spanhol
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 

Mais procurados (18)

Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4
 
Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Python Training #0.5 ed. 7
Python Training #0.5 ed. 7
 
Python tutorial-ed3
Python tutorial-ed3Python tutorial-ed3
Python tutorial-ed3
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6
 
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4 MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 

Destaque

Pnc 2016 17 _ lista_de_filmes_ de referência
Pnc  2016 17 _ lista_de_filmes_ de referênciaPnc  2016 17 _ lista_de_filmes_ de referência
Pnc 2016 17 _ lista_de_filmes_ de referênciatecnologiase
 
Amor
AmorAmor
Amorkjoen
 
Présentation Mtldufutur
Présentation MtldufuturPrésentation Mtldufutur
Présentation MtldufuturAnik Pouliot
 
Things to do in mumbai
Things to do in mumbaiThings to do in mumbai
Things to do in mumbaibella jones
 
Ict assignment.ppt2 master
Ict assignment.ppt2 masterIct assignment.ppt2 master
Ict assignment.ppt2 masternic1968
 
Cisco Powered Presentation - For Customers
Cisco Powered Presentation - For CustomersCisco Powered Presentation - For Customers
Cisco Powered Presentation - For CustomersCisco Powered
 
תמיר ישינסקי קורות חיים
תמיר ישינסקי קורות חייםתמיר ישינסקי קורות חיים
תמיר ישינסקי קורות חייםTamir Yashinsky
 
Life codes slide e book-landscape
Life codes slide e book-landscapeLife codes slide e book-landscape
Life codes slide e book-landscapeHeidi Sawyer
 

Destaque (11)

Pnc 2016 17 _ lista_de_filmes_ de referência
Pnc  2016 17 _ lista_de_filmes_ de referênciaPnc  2016 17 _ lista_de_filmes_ de referência
Pnc 2016 17 _ lista_de_filmes_ de referência
 
Amor
AmorAmor
Amor
 
Jinank
JinankJinank
Jinank
 
Présentation Mtldufutur
Présentation MtldufuturPrésentation Mtldufutur
Présentation Mtldufutur
 
Cálculo Integral
Cálculo IntegralCálculo Integral
Cálculo Integral
 
Things to do in mumbai
Things to do in mumbaiThings to do in mumbai
Things to do in mumbai
 
Ict assignment.ppt2 master
Ict assignment.ppt2 masterIct assignment.ppt2 master
Ict assignment.ppt2 master
 
Smart goals
Smart goalsSmart goals
Smart goals
 
Cisco Powered Presentation - For Customers
Cisco Powered Presentation - For CustomersCisco Powered Presentation - For Customers
Cisco Powered Presentation - For Customers
 
תמיר ישינסקי קורות חיים
תמיר ישינסקי קורות חייםתמיר ישינסקי קורות חיים
תמיר ישינסקי קורות חיים
 
Life codes slide e book-landscape
Life codes slide e book-landscapeLife codes slide e book-landscape
Life codes slide e book-landscape
 

Semelhante a Introducao java

Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Thyago Maia
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaRosicleia Frasson
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01rollbackpt
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptxbrayankedroksi
 
Linguagem de programação darwin
Linguagem de programação darwinLinguagem de programação darwin
Linguagem de programação darwindiokavalan
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma javaJunior Souza
 

Semelhante a Introducao java (20)

Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptx
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Curso openmp
Curso openmpCurso openmp
Curso openmp
 
Linguagem de programação darwin
Linguagem de programação darwinLinguagem de programação darwin
Linguagem de programação darwin
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
 
Introdução ao Java
Introdução ao JavaIntrodução ao Java
Introdução ao Java
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 

Introducao java

  • 1. Instituto de Computação - UFF 1 Programação deProgramação de computadores IIcomputadores II Professor: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo: - Introdução à Linguagem de programação Java
  • 2. Instituto de Computação - UFF 2 HistóricoHistórico (1/3)(1/3) • Início em 1991, com um pequeno grupo de projeto da Sun MicroSystems, denominado Green. • O projeto visava o desenvolvimento de software para uma ampla variedade de dispositivos de rede e sistemas embutidos. • James Gosling, decide pela criação de uma nova linguagem de programação que fosse simples, portátil e fácil de ser programada. • Surge a linguagem interpretada Oak (carvalho em inglês), que será renomeada para Java devido a problemas de direitos autorais.
  • 3. Instituto de Computação - UFF 3 HistóricoHistórico (2/3)(2/3) • Mudança de foco para aplicação na Internet (visão: um meio popular de transmissão de texto, som, vídeo). • Projetada para transferência de conteúdo de mídia em redes com dispositivos heterogêneos. • Também possui capacidade de transferir “comportamentos”, através de applets, junto com o conteúdo (HTML por si só não faz isso). • Em 1994 Jonathan Payne e Patrick Naughton desenvolveram o programa navegador WebRunner.
  • 4. Instituto de Computação - UFF 4 HistóricoHistórico (3/3)(3/3) • No SunWorld’95 a Sun apresenta formalmente o navegador HotJava e a linguagem Java. • Poucos meses depois a Netscape Corp. lança o seu navegador capaz de fazer download e executar pequenos códigos Java chamados de Applets. • Imediatamente a Sun decide disponibilizar o Java gratuitamente para a comunidade de desenvolvimento de softwares e assim surge o Java Developer´s Kit 1.0 (JDK 1.0). • Para Sun Solaris e Microsoft Windows 95/NT. • Progressivamente surgiram kits para outras plataformas como Linux e Applet Macintosh.
  • 5. Instituto de Computação - UFF 5 Características da linguagem JavaCaracterísticas da linguagem Java simples, orientada a objeto, distribuída, alta performance, robusta, segura, interpretada, neutra, portável, dinâmica e multithread.
  • 6. Instituto de Computação - UFF 6 Simples e orientada a objetosSimples e orientada a objetos • É uma linguagem simples de fácil aprendizado. • É uma linguagem puramente orientada a objetos. • A abordagem de OO permite o desenvolvimento de sistemas de uma forma mais natural.
  • 7. Instituto de Computação - UFF 7 DistribuídaDistribuída • Java foi projetada para trabalhar em um ambiente de redes • Na realidade, Java não é uma linguagem para programação distribuída; apenas oferece bibliotecas para facilitar o processo de comunicação.
  • 8. Instituto de Computação - UFF 8 Alta performanceAlta performance • Java é uma linguagem interpretada, logo ela nunca será tão rápida quanto as linguagens compiladas. • Java chega a ser 20 vezes mais lento que C. • Compiladores just in time (JIT), que interpretam os bytecodes para um código nativo durante a execução.
  • 9. Instituto de Computação - UFF 9 Robusta e seguraRobusta e segura • Java possui as seguintes características que contribuem para torná-la mais robusta e segura: – É fortemente tipada; – Não possui aritmética de ponteiros; – Possui mecanismo de coleta de lixo; – Possui verificação rigorosa em tempo de compilação; – Possui mecanismos para verificação em tempo de execução; – Possui gerenciador de segurança. • Segurança: Java possui mecanismos de segurança que podem no caso de applets, evitar qualquer operação no sistema de arquivos da máquina alvo, minimizando problemas.
  • 10. Instituto de Computação - UFF 10 Interpretada, Neutra, PortávelInterpretada, Neutra, Portável (1/3)(1/3) • Bytecodes executam em qualquer máquina que possua uma JVM, permitindo que o código em Java possa ser escrito independente da plataforma. • A característica de ser neutra em relação à arquitetura permite uma grande portabilidade.
  • 11. Instituto de Computação - UFF 11 Interpretada, Neutra, PortávelInterpretada, Neutra, Portável (2/3)(2/3)
  • 12. Instituto de Computação - UFF 12 Interpretada, Neutra, PortávelInterpretada, Neutra, Portável (3/3)(3/3)
  • 13. Instituto de Computação - UFF 13 Dinâmica e MultithreadDinâmica e Multithread • Java possui mecanismos para a resolução de referências em tempo de execução, permitindo flexibilidade nas aplicações, sobre o custo da performance. • Java provê suporte para múltiplas threads de execução (processos leves), que podem tratar diferentes tarefas concorrentemente.
  • 14. Instituto de Computação - UFF 14 O Ambiente JavaO Ambiente Java (1/2)(1/2)
  • 15. Instituto de Computação - UFF 15 O Ambiente JavaO Ambiente Java (2/2)(2/2)
  • 16. Instituto de Computação - UFF 16 Ambiente de DesenvolvimentoAmbiente de Desenvolvimento (1/2)(1/2) • Java possui um ambiente de desenvolvimento de software denominado Java SDK ( Software Development Kit – antigamente denominado JDK ). • Não é um ambiente integrado de desenvolvimento, não oferecendo editores ou ambiente de programação. • O Java SDK contém um amplo conjunto de APIs (Application Programing Interface).
  • 17. Instituto de Computação - UFF 17 Ambiente de DesenvolvimentoAmbiente de Desenvolvimento (2/2)(2/2) • Algumas ferramentas do Java SDK: – o compilador Java (javac) – o interpretador de aplicações Java (java) – o interpretador de applets Java (appletsviewer ) – e ainda: – javadoc (um gerador de documentação para programas Java) – jar (o manipulador de arquivos comprimidos no formato Java Archive) – jdb (um depurador de programas Java), entre outras ferramentas.
  • 18. Instituto de Computação - UFF 18 PackagesPackages (1/3)(1/3)  Os arquivos Java serão armazenados fisicamente em uma pasta.  No nosso exemplo ao lado estes arquivos estão no diretório Geometria.  Com o uso de packages podemos organizar de forma física algo lógico (um grupo de classes em comum);
  • 19. Instituto de Computação - UFF 19 PackagesPackages (2/3)(2/3) • 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 nome_do_pacote; • Caso tal declaração não esteja presente, as classes farão parte do “pacote default”, que está mapeado para o diretório corrente.
  • 20. Instituto de Computação - UFF 20 PackagesPackages (3/3)(3/3) • Referenciando uma classe de um pacote no código fonte: import nome_do_pacote.Xyz ou simplesmente import nome_do_pacote.* • Com isso a classe Xyz pode ser referenciada sem o prefixo nome_do_pacote no restante do código. • A única exceção refere-se às classes do pacote java.lang.
  • 21. Instituto de Computação - UFF 21 ClasspathClasspath • O ambiente Java normalmente utiliza a especificação de uma variável de ambiente CLASSPATH. • CLASSPATH define uma lista de diretórios que contém os arquivos de classes Java. • No exemplo anterior se o arquivo Xyz.class estiver no diretório /home/java/nome_do_pacote, então o diretório /home/java deve estar incluído no caminho de busca de classes definido por CLASSPATH.
  • 22. Instituto de Computação - UFF 22 Tipos PrimitivosTipos Primitivos (1/6)(1/6) • Podem ser agrupados em quatro categorias: – Tipos Inteiros: Byte, Inteiro Curto, Inteiro e Inteiro Longo. – Tipos Ponto Flutuante: Ponto Flutuante Simples, Ponto Flutuante Duplo. – Tipo Caractere: Caractere. – Tipo Lógico: Booleano.
  • 23. Instituto de Computação - UFF 23 Tipos Primitivos - InteirosTipos Primitivos - Inteiros (2/6)(2/6) -2.147.483.648 a +2.147.483.647Int -9.223.372.036.854.775.808 a +9.223.372.036.854.775.807Long -32.768 a +32.767Short -128 a +127Byte FaixasTipos de Dados Inteiros
  • 24. Instituto de Computação - UFF 24 Tipos Primitivos – Ponto FlutuanteTipos Primitivos – Ponto Flutuante (3/6)(3/6) • Exemplos: – 1.44E6 é equivalente a 1.44 x 106 = 1.440.000. – 3.4254e-2 representa 3.4254 x 10-2 =0.034254. FaixasTipos de Dados em Ponto Flutuante ± 4.94065645841246544 x 10-324 a ± 1.79769313486231570 x 10+308 Double ± 1.40282347 x 10-45 a ± 3.40282347 x 10+38 Float
  • 25. Instituto de Computação - UFF 25 Tipos Primitivos - CaractereTipos Primitivos - Caractere (4/6)(4/6) • O tipo char permite a representação de caracteres individuais. • Ocupa 16 bits interno permitindo até 32.768 caracteres diferentes. • Caracteres de controle e outros caracteres cujo uso é reservado pela linguagem devem ser usados precedidos por < >.
  • 26. Instituto de Computação - UFF 26 Tipos Primitivos - CaractereTipos Primitivos - Caractere (5/6)(5/6)
  • 27. Instituto de Computação - UFF 27 Tipos Primitivos - BooleanoTipos Primitivos - Booleano (6/6)(6/6) • É representado pelo tipo lógico boolean. • Assume os valores false (falso) ou true (verdadeiro). • O valor default é false. • Ocupa 1 bit. • Diferente da linguagem C.
  • 28. Instituto de Computação - UFF 28 Palavras reservadasPalavras reservadas • Além dessas existem outras que embora reservadas não são usadas pela linguagem
  • 29. Instituto de Computação - UFF 29 Declaração de VariáveisDeclaração de Variáveis (1/2)(1/2) • Uma variável não pode utilizar como nome uma palavra reservada da linguagem. • Sintaxe: – Tipo nome1 [, nome2 [, nome3 [..., nomeN]]]; • Exemplos: – int i; – float total, preco; – byte mascara; – double valormedio;
  • 30. Instituto de Computação - UFF 30 Declaração de VariáveisDeclaração de Variáveis (2/2)(2/2) • Embora não seja de uso obrigatório, existe a convenção padrão para atribuir nomes em Java, como: – Nomes de classes são iniciados por letras maiúsculas; – Nomes de métodos, atributos e variáveis são iniciados por letras minúsculas; – Em nomes compostos, cada palavra do nome é iniciada por letra maiúscula, as palavras não são separadas por nenhum símbolo. • Documento: Code Conventions for the JavaTM ProgrammingLanguage.
  • 31. Instituto de Computação - UFF 31 ComentáriosComentários (1/2)(1/2) • Exemplos: // comentário de uma linha /* comentário de múltiplas linhas */ /** comentário de documentação * que também pode * possuir múltiplas linhas */
  • 32. Instituto de Computação - UFF 32 ComentáriosComentários (2/2)(2/2) • /** Classe destinada ao armazenamento * de dados relacionados a arquivos ou * diretórios. * <p> Pode ser usada para armazenar árvores de diretórios. * @author Joao Jr. * @see java.io.File */
  • 33. Instituto de Computação - UFF 33 Operadores AritméticosOperadores Aritméticos
  • 34. Instituto de Computação - UFF 34 Operadores RelacionaisOperadores Relacionais
  • 35. Instituto de Computação - UFF 35 Operadores LógicosOperadores Lógicos
  • 36. Instituto de Computação - UFF 36 Programa JavaPrograma Java • Todos os programas em Java possuem quatro elementos básicos: public class HelloJavaClass { } public final static void main(String args[]) { System.out.println(“Hello, Java”); Date d = new Date(); System.out.printiln(“Date: “+d.toString()); } import java.util Classes Pacotes Métodos Variáveis
  • 37. Instituto de Computação - UFF 37 Controle do fluxo de execuçãoControle do fluxo de execução (1/2)(1/2) • Normalmente seqüencial. • Comandos de fluxo de controle permitem modificar essa ordem natural de execução: if (condição) { bloco_comandos }
  • 38. Instituto de Computação - UFF 38 Controle do fluxo de execuçãoControle do fluxo de execução (2/2)(2/2) switch (variável) { case valor1: bloco_comandos break; case valor2: bloco_comandos break; ... case valorn: bloco_comandos break; default: bloco_comandos } while (condição) { bloco_comandos } do { bloco_comandos } while (condição); for (inicialização; condição; incremento) { bloco_comandos }
  • 39. Instituto de Computação - UFF 39 Instrução de Desvio de FluxoInstrução de Desvio de Fluxo (1/2)(1/2) • São as duas, o If e o Switch • Exemplo do If:
  • 40. Instituto de Computação - UFF 40 Instrução de Desvio de FluxoInstrução de Desvio de Fluxo (2/2)(2/2)
  • 41. Instituto de Computação - UFF 41 Estrutura deEstrutura de Repetição SimplesRepetição Simples
  • 42. Instituto de Computação - UFF 42 Estrutura deEstrutura de Repetição CondicionalRepetição Condicional
  • 43. Instituto de Computação - UFF 43 Estruturas de Controle de ErroEstruturas de Controle de Erro (1/5)(1/5) • Diretivas Try e Catch: try { Fluxo normal do sistema } catch(Exceção1) { Diretiva do tratamento do erro 1 } catch(Exceção2) { Diretiva do tratamento do erro 2 }
  • 44. Instituto de Computação - UFF 44 Estruturas de Controle de ErroEstruturas de Controle de Erro (2/5)(2/5) • Com o tratamento de Erros (1 Exceção)
  • 45. Instituto de Computação - UFF 45 Estruturas de Controle de ErroEstruturas de Controle de Erro (3/5)(3/5) • Com o tratamento de Erros (2 Exceções)
  • 46. Instituto de Computação - UFF 46 Estruturas de Controle de ErroEstruturas de Controle de Erro (4/5)(4/5) • Diretivas Try e Catch: try { Fluxo normal do sistema } catch(Exceção1) { Diretiva do tratamento do erro 1 } catch(Exceção2) { Diretiva do tratamento do erro 2 }
  • 47. Instituto de Computação - UFF 47 Estruturas de Controle de ErroEstruturas de Controle de Erro (5/5)(5/5) • A diretiva try catch finally try { Fluxo normal do sistema } catch(Exceção1) { Diretiva do tratamento do erro 1 } finally { Fluxo que será sempre executado, independente da ocorrência da exceção ou não. }
  • 48. Instituto de Computação - UFF 48 ArraysArrays (1/2)(1/2) • O propósito de um array é permitir o armazenamento e manipulação de uma grande quantidade de dados de mesmo tipo • Exemplos de dados armazenados através de arrays: • Notas de alunos • Nucleotídeos em uma cadeia de DNA • Frequencia de um sinal de audio
  • 49. Instituto de Computação - UFF 49 ArraysArrays (2/2)(2/2) • Arrays são especialmente importantes quando é necessário o acesso direto aos elementos de uma representação de uma coleção de dados • Arrays são relacionados ao conceito matemático de função discreta, que mapeia valores em um conjunto finito de índices consecutivos (por exemplo, um subconjunto de inteiros não negativos) em um conjunto qualquer de objetos de mesmo tipo. • F(x)→S,x∈ U tal que U é um conjunto finito de valores
  • 50. Instituto de Computação - UFF 50 Arrays unidimensionaisArrays unidimensionais (1/2)(1/2) • Os elementos de um array são identificados através de índices • Arrays cujos elementos são indicados por um único índice são denominados arrays unidimensionais
  • 51. Instituto de Computação - UFF 51 Arrays unidimensionaisArrays unidimensionais (2/2)(2/2) • Um elemento em uma posição indicada por um índice i, em um array A, é acessado através do indentificador do array seguido do índice i (entre chaves ou parênteses, dependendo da linguagem) a(0) a(1) a(2) a(4) a(n-2) a(n-1) Um array com n elementos
  • 52. Instituto de Computação - UFF 52 Arrays unidimensionais em JavaArrays unidimensionais em Java (1/3)(1/3) • A criação de um array em Java requer 3 passos: • Declaração do nome do array e seu tipo • Criação do array • Inicialização de seus valores • Exemplo: array de 10 elementos de tipo double double[ ] a; a = new double[10]; for (int i = 0; i<10;i++) a[i] = 0.0;
  • 53. Instituto de Computação - UFF 53 Arrays unidimensionais em JavaArrays unidimensionais em Java (2/3)(2/3) • O número de elementos de um array em Java pode ser determinado através do nome do array seguido de .length( ) • Exemplo: a.length() • Arrays em Java são objetos (mais detalhes serão vistos posteriormente) • Arrays em Java tem índice base igual a zero
  • 54. Instituto de Computação - UFF 54 Arrays unidimensionais em JavaArrays unidimensionais em Java (3/3)(3/3) • Arrays em Java podem ser inicializados em tempo de compilação • Exemplos: • String[ ] naipe = {“copas”,”ouros”, “paus”,”espadas”}; • double[ ] temperaturas = {45.0,32.0,21.7,28.2,27.4};
  • 55. Instituto de Computação - UFF 55 Arrays multidimensionais em JavaArrays multidimensionais em Java • Arrays multidimensionais representam agregados homogêneos cujos elementos são especificados por mais de um índice • Em Java é muito simples especificar um array multidimensional • Exemplo: array contendo as notas de 3 provas de 30 alunos • int[ ][ ] notas = new int[30][3];
  • 56. Instituto de Computação - UFF 56 Exercícios: Conversão de coresExercícios: Conversão de cores (1/2)(1/2) • Diferentes sistemas são utilizados para representar cores • Por exemplo, o sistema mais comum para representação de cores em display LCD, câmeras digitais e páginas web conhecido como sistema RGB, especifica os níveis de vermelho(R), verde(G) e azul(B) em uma escala de 0 a 255 • O sistema utilizado na publicação de livros e revistas, conhecido como CMYK, especifica os níveis de ciano,magenta, amarelo e preto em um escala de 0.0 a 1.0
  • 57. Instituto de Computação - UFF 57 Exercícios: Conversão de coresExercícios: Conversão de cores (1/2)(1/2) • Escreva, um programa Java que receba três inteiros r,g e b representando um cor no sistema RGB e imprima os valores das componentes c,m,y,k correspondentes no sistema CMYK • Se r=g=b=0 então c=m=y=0 e k = 1, caso contrário utilize a fórmula abaixo: wk wbwy wgwm wrwc bgrw −= −= −= −= = 1 /))255/(( /))255/(( /))255/(( );255/,255/,255/max(
  • 58. Instituto de Computação - UFF 58 Exercícios: Padrão de divisoresExercícios: Padrão de divisores • Escreva um programa Java que receba um inteiro N e imprima um tabela NxN com um asterístico na linha i e coluna j se ou i divide j ou j divide i.
  • 59. Instituto de Computação - UFF 59 Exercícios: Padrão de divisoresExercícios: Padrão de divisores • Escreva um programa Java que receba um inteiro N e imprima um tabela NxN com um asterístico na linha i e coluna j se ou i divide j ou j divide i.
  • 60. Instituto de Computação - UFF 60 Exercícios: Fatoração de inteirosExercícios: Fatoração de inteiros • Escreva um programa Java que receba um inteiro N e imprima sua fatorização ( sequencia de inteiros primos que multiplicados iguala a N)
  • 61. Instituto de Computação - UFF 61 Exercícios: Cálculo de raíz quadradaExercícios: Cálculo de raíz quadrada • Escreva um programa que ache a raiz quadrada de um número real c utilizando método de Newton-Raphson. • Sob certas condições, dada uma função f(x), o método de Newton- Raphson é capaz de encontrar as raízes de uma equação f(x) {x| f(x)=0}. • O método inicia com uma estimativa da raíz t0 • A partir de uma estimativa ti, compute uma nova estimativa ti+1 onde ti é a interseção da linha tangente a curva y no ponto (ti,f(ti)) com o eixo das abcissas.
  • 62. Instituto de Computação - UFF 62 Exercícios: Cálculo de raíz quadradaExercícios: Cálculo de raíz quadrada • O método inicia com uma estimativa da raíz t0 • A partir de uma estimativa ti, compute uma nova estimativa ti+1 onde ti é a interseção da linha tangente a curva y no ponto (ti,f(ti)) com o eixo das abcissas. titi+1 )( )( )())(( 0)( )( 1 1 1 i i ii iiii ii i i tf tf tt tftttf tt tf tf ′ += =−′ − − =′ + + + f(ti) f(ti+1)
  • 63. Instituto de Computação - UFF 63 Exercícios: Cálculo de raíz quadradaExercícios: Cálculo de raíz quadrada • Computar a raiz de um número equivale a achar a raíz da função f(x)=x2 -c • Considere uma estimativa inicial t0 = c • Se ti*ti-c=epsilon então tome ti como raiz de c
  • 64. Instituto de Computação - UFF 64 Exercícios: FatorizaçãoExercícios: Fatorização • Escreva um programa que receba um número inteiro N e gere todos os fatores primos de N • Escreva uma versão mais eficiente do seu algoritmo
  • 65. Instituto de Computação - UFF 65 Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos • Escreva um programa em Java que receba uma sequencia de letras da linha de comando formada por um conjunto de símbolos e gere as seguintes mensagens: • Para uma letra a “Soco” • Para uma letra b “Chute lateral” • Para duas letras a’s consecutivas “Chute circular” • Para uma letra a seguida de uma letra b imprime a mensagem (“dragon punch”)
  • 66. Instituto de Computação - UFF 66 Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos • O problema pode ser resolvido através de uma automato finito determinístico, que é um modelo para definição de linguagens regulares composto de cinco elementos: 〈Σ,S,so,δ,F〉, onde: • Σ é o alfabeto sobre o qual a linguagem é definida; • S é um conjunto finito de estados não vazio; • So é o estado inicial, so∈S; • δ:S × Σ → S é a função de transição de estados; • F é o conjunto de estados finais F ⊆ S
  • 67. Instituto de Computação - UFF 67 Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos • Um AFD é uma máquina reconhecedora de cadeias que pertencem a linguagem • Ele recebe uma cadeia e diz se ela pertence ou não a linguagem modelada • Ele possui um controle de estados S • O CFE sempre coloca a máquina em um estado pertencente a S Controle finito de estados Aceita Rejeita a b b a
  • 68. Instituto de Computação - UFF 68 Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos • A função F diz como a máquina deve mudar de estado, à medida em que os símbolos da cadeia são analisados • Após processar todos os símbolos e realizar as mudanças determinadas o AFD aceita ou não a cadeia • Uma cadeia é rejeitada quando o autômato para em um estado que não é final • Referência: Como construir um compilador utilizando ferramentas Java – Márcio Delamaro – novatec) Controle finito de estados Aceita Rejeita
  • 69. Instituto de Computação - UFF 69 Exercícios: Sequencia de símbolosExercícios: Sequencia de símbolos • Autômato finito determinístico para o problema da sequência de símbolos I CH SO s0 a a CC DP b b S a b mensagem I C B CH CC DP Chute SO Soco CC Chute circular DP Dragon Punch
  • 70. Instituto de Computação - UFF 70 Exercícios: Caminhos aleatórios semExercícios: Caminhos aleatórios sem auto-interseçãoauto-interseção • Suponha que você abandone seu cão no meio de uma grande cidade cujas eruas formam uma estrutura de reticulado • Considera-se que existam N ruas na direção norte-sul e M na direção leste-oeste • Com o objetivo de escapar da cidade, o cão faz uma escolha aleatória de qual direção ir em cada interseção, mas sabe através do faro como evitar visitar um lugar previamente visitado • Apesar de tudo é possível que o cão fique perdido em um beco sem saída onde a próxima escolha obrigatóriamente leva a um lugar já percorrido
  • 71. Instituto de Computação - UFF 71 Exercícios: Caminhos aleatórios semExercícios: Caminhos aleatórios sem auto-interseçãoauto-interseção • Escreva um programa Java que receba como parâmetros a largura e altura do reticulado e simule o caminho percorrido por um cão T vezes • O programa deve determinar o número de vezes em que o cão fica sem saída