26
Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar [email protected] IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar [email protected] IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Embed Size (px)

Citation preview

Page 1: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Aula TesteINFNETterça-feira, 11 de janeiro de 2011

Prof. Alex [email protected]

IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Page 2: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Objetivo

Apresentar os conceitos fundamentais da Torre de Hanoi

Apresentar o algoritmo para resolução do problema

Realizar uma implementação em Linguagem Java do Algoritmo proposto

2

Page 3: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Pré-requisitos

Conhecimentos em Programação

Conhecimentos em comandos básicos da linguagem Java

3

Page 4: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Apresentações

Experiência

Expectativa

Motivação

Material de Apoio: www.aavellar.com

4

Page 5: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Sumário

Objetivo Fundamentos da Torre de Hanoi Descrição do Algoritmo Conceitos da Linguagem Java Implementação da solução Conclusão

5

Page 6: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Bibliografia

1) PREISS, Bruno R. , Estruturas de Dados e Algoritmos: padrões de projetos orientados a objetos com java, 2000.

2) FURGERI, S., Java 6 – Desenvolvendo e Implementando Aplicações, Érica , 2009.

3) SEDGEWICK, R., Algorithms in Java, Addison – Wesley, 2003.

4) TOWER OF HANOI: Fascinating Facts (LHS):

http://www.lhs.berkeley.edu/Java/Tower/towerhistory.html

6

Page 7: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

1. Torre de Hanoi

Page 8: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Fundamentos da Torre de Hanoi

8

Edouard Lucas Lenda Hindu Torre de Bramanismo Jovens Monges Discos de Ouro 64 Níveis

De Parville Templo de Bernares Centro do Mundo Hastes de Diamante e Discos finos como o corpo de uma abelha

Fonte: TOWER OF HANOI

Page 9: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

Limitações

Page 10: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

2. Algoritmo

Page 11: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA
Page 12: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

12

Algoritmo

Page 13: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

3. Implementação

Page 14: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

14

import java.util.*;

public class Hanoi

{

public void movimentar (int ndiscos, Stack t1, Stack t2, Stack t3){

if( ndiscos == 1 )

{ t3.push(t1.peek());t1.pop();System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");}

Implementação da Torre de Hanoi na linguagem Java

else

{

System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");

movimentar (ndiscos -1, t1, t3, t2);t3.push(t1.peek());t1.pop();

movimentar (ndiscos -1, t2, t1, t3);

} }

Page 15: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

15

import java.util.*;

public class Hanoi

{ public void movimentar (int ndiscos, Stack t1, Stack t2, Stack t3){

if( ndiscos == 1 )

{ t3.push(t1.peek());t1.pop();System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");}

Implementação da Torre de Hanoi na linguagem Java

else

{

System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");

movimentar (ndiscos -1, t1, t3, t2);t3.push(t1.peek());t1.pop();

movimentar (ndiscos -1, t2, t1, t3);

} }

Page 16: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

16

import java.util.*;

public class Hanoi

{ public void movimentar (int ndiscos, Stack t1, Stack t2, Stack t3){

if( ndiscos == 1 )

{ t3.push(t1.peek());t1.pop();System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");}

Implementação da Torre de Hanoi na linguagem Java

else

{

System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");

movimentar (ndiscos -1, t1, t3, t2);t3.push(t1.peek());t1.pop();

movimentar (ndiscos -1, t2, t1, t3);

} }

Page 17: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

17

public static void main(String args[]) {

Hanoi obj = new Hanoi ();

// Numero total de discosint ndiscos = 3; // Instancia Vetor pinosStack Pino[] = new Stack [3];// Instancia Pinos for (int i = 0; i < 3; i++) {Pino[i] = new Stack();}

Implementação da Torre de Hanoi na linguagem Java

// Entra com valores for (int i = ndiscos; i > 0; i--) { Pino[0].push(new Integer(i)); }

obj.movimentar(ndiscos, Pino[0], Pino[1], Pino[2]);

}

}

Page 18: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

18

public static void main(String args[]) {

Hanoi obj = new Hanoi ();

// Numero total de discosint ndiscos = 3; // Instancia Vetor pinosStack Pino[] = new Stack [3];// Instancia Pinos for (int i = 0; i < 3; i++) {Pino[i] = new Stack();}

Implementação da Torre de Hanoi na linguagem Java

// Entra com valores for (int i = ndiscos; i > 0; i--) { Pino[0].push(new Integer(i)); }

obj.movimentar(ndiscos, Pino[0], Pino[1], Pino[2]);

}

}

Page 19: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

19

public static void main(String args[]) {

Hanoi obj = new Hanoi ();

// Numero total de discos

int ndiscos = 3; // Instancia Vetor pinos

Stack Pino[] = new Stack [3];// Instancia Pinos for (int i = 0; i < 3; i++) {

Pino[i] = new Stack();}

Implementação da Torre de Hanoi na linguagem Java

// Entra com valores for (int i = ndiscos; i > 0; i--) {

Pino[0].push(new Integer(i)); }

obj.movimentar(ndiscos, Pino[0], Pino[1], Pino[2]);

}

}

Page 20: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

20

public static void main(String args[]) {

Hanoi obj = new Hanoi ();

// Numero total de discosint ndiscos = 3; // Instancia Vetor pinosStack Pino[] = new Stack [3];// Instancia Pinos for (int i = 0; i < 3; i++) {Pino[i] = new Stack();}

Implementação da Torre de Hanoi na linguagem Java

// Entra com valores for (int i = ndiscos; i > 0; i--) { Pino[0].push(new Integer(i)); }

obj.movimentar(ndiscos, Pino[0], Pino[1], Pino[2]);

}

}

Page 21: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

21

public void movimentar (int ndiscos, Stack t1, Stack t2, Stack t3){

if( ndiscos == 1 )

{ t3.push(t1.peek());t1.pop();System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");}

Implementação da Torre de Hanoi na linguagem Java

else

{

System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");

movimentar (ndiscos -1, t1, t3, t2);t3.push(t1.peek());t1.pop();

movimentar (ndiscos -1, t2, t1, t3);

} }

Page 22: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

22

public void movimentar (int ndiscos, Stack t1, Stack t2, Stack t3){

if( ndiscos == 1 )

{

t3.push(t1.peek());t1.pop();System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");}

Implementação da Torre de Hanoi na linguagem Java

else

{

System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");

movimentar (ndiscos -1, t1, t3, t2);t3.push(t1.peek());t1.pop();

movimentar (ndiscos -1, t2, t1, t3);} }

Page 23: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

23

public void movimentar (int ndiscos, Stack t1, Stack t2, Stack t3){

if( ndiscos == 1 )

{ t3.push(t1.peek());t1.pop();System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");}

Implementação da Torre de Hanoi na linguagem Java

else

{

System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");

movimentar (ndiscos -1, t1, t3, t2);t3.push(t1.peek());t1.pop();

movimentar (ndiscos -1, t2, t1, t3);

} }

Page 24: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

24

Implementação da Torre de Hanoi na linguagem Java

else

{

System.out.println("Pino 1: "+ t1 );System.out.println("Pino 2: "+ t2 );System.out.println("Pino 3: "+ t3 ); System.out.println("");

movimentar (ndiscos -1, t1, t3, t2);t3.push(t1.peek());t1.pop();

movimentar (ndiscos -1, t2, t1, t3);

} }

Page 25: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

• Exercício

– Reescreva o algoritmo da Torre de Hanoi apresentado a solução de forma iterativa, ou seja usando estrutura de repetições (laços)

– Codifique em Linguagem Java

– Entre no link abaixo e envie o algoritmo criado e o programa final– www.aavelar.com

Page 26: Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com IMPLEMENTAÇÃO DA TORRE DE HANOI NA LINGUAGEM JAVA

5. Conclusões e Perguntas