programação de computadores iianselmo/cursos/progii/apresentacoes/aula (02... · 18/08/11...

21
Programação de Computadores II TCC‐00174 Profs.: Anselmo Montenegro (1) & Marcos Lage (2) (1) www.ic.uff.br/~anselmo (2) www.ic.uff.br/~mlage Conteúdo : Introdução ao Java, Exs.

Upload: others

Post on 07-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

ProgramaçãodeComputadoresII

TCC‐00174Profs.:AnselmoMontenegro(1)&MarcosLage(2)

(1)www.ic.uff.br/~anselmo(2)www.ic.uff.br/~mlage

Conteúdo:IntroduçãoaoJava,Exs.

Page 2: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

Diferentessistemassãou?lizadospararepresentarcores.

Porexemplo,osistemamaiscomumpararepresentaçãodecoresemdisplayLCD,câmerasdigitaisepáginaswebconhecidocomosistemaRGB,especificaosníveisdevermelho(R), verde(G)eazul(B)emumaescalade0a255.

Osistemau?lizadonapublicaçãodelivroserevistas,conhecidocomoCMYK,especificaosníveisdeciano,magenta,amareloepretoemumescalade0.0a1.0.

18/08/11 ProgramaçãodeComputadoresII 2

Conversãodecores

Page 3: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

Escreva um programa Java que receba três inteiros r, g e brepresentando um cor no sistema RGB e imprima os valores dascomponentesc,m,y,kcorrespondentesnosistemaCMYK.Se r=g=b=0 então c=m=y=0 e k = 1, caso contrário u?lize a fórmulaabaixo:

18/08/11 ProgramaçãodeComputadoresII 3

Conversãodecores

w =max(r / 255,g / 255,b / 255);

c = (w! (r / 255)) /w

m = (w! (g / 255)) /w

y = (w! (b / 255)) /w

k =1!w

Page 4: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

Escrevaumprograma Javaque recebaum inteiroNe imprimaum tabela NxN com um asterisco na linha i e coluna j se ou idividejoujdividei.

18/08/11 ProgramaçãodeComputadoresII 4

Padrãodedivisores

Page 5: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

Escrevaumprograma Javaque recebaum inteiroNe imprimasuafatoração.(sequenciadeinteirosprimosquemulLplicadosigualaaN).

Escrevaumaversãomaiseficientedoseualgoritmo.

18/08/11 ProgramaçãodeComputadoresII 5

FatoraçãodeInteiros

Page 6: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

Escreva umprograma Java que receba umnúmero inteiroN egeretodososfatoresprimosdeN.

18/08/11 ProgramaçãodeComputadoresII 6

FatoraçãodeInteiros

Page 7: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

Escreva umprograma Java que ache a raiz quadrada de umnúmero real cu?lizandométododeNewton‐Raphson.Sobcertascondições,dadaumafunçãof(x),ométododeNewton‐Raphsonécapazdeencontrarasraízesdeumaequaçãof(x)=0.Algoritmo:1.  Ométodoiniciacomumaes?ma?vadaraízt02.  Apar?rdeumaes?ma?vati,computeumanovaes?ma?vati+1ondetié

ainterseçãodalinhatangenteaográficodef(x)noponto(ti,f(ti))comoeixodasabcissas.

18/08/11 ProgramaçãodeComputadoresII 7

CálculodeRaizQuadrada

Page 8: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 8

CálculodeRaizQuadrada

!f (ti ) =f (ti )" 0

ti " ti+1

!f (ti )(ti " ti+1) = f (ti )

ti+1 = ti +f (ti )

!f (ti )ti ti+1

f(ti)

f(ti+1)

ti

Page 9: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

Computararaizdeumnúmeroéequivalenteaachara raízdafunçãof(x)=x2‐c.Considereumaes?ma?vainicialt0=c.Seti*ti‐c<eps;entãotometicomoraizdec.

18/08/11 ProgramaçãodeComputadoresII 9

CálculodeRaizQuadrada

Page 10: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 10

Jogodesenhas

EscrevaumprogramaemJavaquesimuleumjogodesenhas.

Obje-vo:descobrirasenhageradaaleatoriamentepelocomputador.Acadarodada:ojogadortentadescobrirasenhaeocomputadorretorna“*”paraosdígitosqueaindanãoforamdescobertoseovalordodigitonasposiçõescorretas.Fimdojogo:Jogocon?nuaatéqueasenhasejadescobertaouonumeromáximodejogadassejaa?ngido.

Obs:Assenhassãocompostaspornúmerosinteirosde0aonumerodedígitosdasenha.Onúmerodetenta?vaséigualaonúmerodedígitosdasenha.

Page 11: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 11

Jogodedados

EscrevaumprogramaemJavaquesimuleumjogodedados.Lançamentoinicial:Seolançador?rarum7ou11noprimeirolançamento,venceojogo.Seosdadossomarem2,3ou12,ojogadorperdeasojogo.Qualqueroutronúmeroquesaianolançamentoinicial(4,5,6,8,9,ou10)setornaoseu“Ponto”.Oslançamentoscon?nuamatéque:•  OPontosairantesdeum7,eassimojogadorvence.•  O7sairantesdoPonto,eassimojogadorperde.

Page 12: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 12

Picosdeumterreno

EscrevaumprogramaemJavaquecalculeospicosdeumterreno.Modelagemdoterreno:PodemosrepresentarumterrenocomputacionalmenteatravésdeumamatrizquearmazenaaalturadosNxNpontosdeumre?culado.

Page 13: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 13

MatrizdeHadamard

AMatrizdeHadamardéumamatrizquadradacujasentradassão1ou‐1easlinhassãoortogonaisentresi.PodemosconstruirumamatrizdeHadamardNxN,comNsendopotênciade2,daseguinteforma:ParaN=1ParaN=2kM1=1M2k=ParaN=2M2=

1 1

1 !1

"

#$

%

&'

M2k!1 M

2k!1

M2k!1 !M

2k!1

"

#

$$

%

&

''

Page 14: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

EscrevaumprogramaemJavaquerecebaumasequenciadeletrasdalinha de comando formada por um conjunto de símbolos e gere asseguintesmensagens:Paraumaletraa“Soco”.Paraumaletrab“Chutelateral”.Paraduasletrasa’sconsecu?vas“Chutecircular”.Paraumaletraaseguidadeumaletrabimprime“dragonpunch”.

18/08/11 ProgramaçãodeComputadoresII 14

SequenciadeSímbolos

Page 15: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

O problema pode ser resolvido através de um autômato finitodeterminís?co, que é um modelo para definição de linguagensregularescompostodecincoelementos:〈Σ,S,so,δ,F〉,onde:Σéoalfabetosobreoqualalinguagemédefinida;Séumconjuntofinitodeestadosnãovazio;soéoestadoinicial,so∈S;δ:S×Σ→Séafunçãodetransiçãodeestados;FéoconjuntodeestadosfinaisF⊆S.

18/08/11 ProgramaçãodeComputadoresII 15

SequênciadeSímbolos

Page 16: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

Um AFD é uma máquina reconhecedora de cadeias que pertencem alinguagem.Elerecebeumacadeiaedizseelapertenceounãoalinguagemmodelada.ElepossuiumcontroledeestadosS.O Controle Finito de Estados sempre coloca a máquina em um estadopertencenteaS.

18/08/11 ProgramaçãodeComputadoresII 16

SequênciadeSímbolos

Page 17: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 17

SequênciadeSímbolos

A função F diz como a máquina deve mudar de estado, à medida em que ossímbolosdacadeiasãoanalisados.Após processar todos os símbolos e realizar asmudanças determinadas o AFDaceitaounãoacadeia.Umacadeiaérejeitadaquandooautômatoparaemumestadoquenãoéfinal.Referência:ComoconstruirumcompiladoruLlizandoferramentasJava.(MárcioDelamaro–novatec).

Page 18: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 18

SequênciadeSímbolos

Controlefinitodeestados

Aceita

Rejeita

a bba

Controlefinitodeestados

Aceita

Rejeita

Page 19: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 19

SequênciadeSímbolos

Autômatofinitodeterminís?coparaoproblemadasequênciadesímbolos

I

CH

SO

s0

a a

CC

DP

b

b

SxΣ a b EstadoI CH SO Inicial

CH CC DP Chute

SO Soco

CC Chutecircular

DP DragonPunch

Page 20: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 20

CaminhosAleatóriossemAuto‐Interseção

Suponhaquevocêabandoneseucãonomeiodeumagrandecidadecujasruasformamumaestruturadere?culado.ConsiderequeexistamNruasnadireçãonorte‐suleMnadireçãoleste‐oeste.Como obje?vode escapar da cidade, o cão faz uma escolha aleatória de qualdireção ir em cada iteração, mas sabe através do faro como evitar visitar umlugarpreviamentevisitado.Apesardetudoépossívelqueocãofiqueperdidoemumbecosemsaídaondeapróximaescolhaobrigatoriamentelevaaumlugarjápercorrido.

Page 21: Programação de Computadores IIanselmo/cursos/ProgII/apresentacoes/aula (02... · 18/08/11 Programação de Computadores II 11 Jogo de dados Escreva um programa em Java que simule

Exercícios

18/08/11 ProgramaçãodeComputadoresII 21

CaminhosAleatóriossemAuto‐Interseção

Escreva um programa Java que receba como parâmetros alarguraealturadore?culadoesimuleocaminhopercorridoporumcãoTvezes.Oprogramadevedeterminaronúmerodevezesemqueocãoficasemsaída.