Aula Teste INFNET terça-feira, 11 de janeiro de 2011 Prof. Alex Avellar contato@aavellar.com...

Preview:

Citation preview

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

Prof. Alex Avellarcontato@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

Pré-requisitos

Conhecimentos em Programação

Conhecimentos em comandos básicos da linguagem Java

3

Apresentações

Experiência

Expectativa

Motivação

Material de Apoio: www.aavellar.com

4

Sumário

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

5

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

1. Torre de Hanoi

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

Limitações

2. Algoritmo

12

Algoritmo

3. Implementação

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

} }

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

} }

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

} }

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]);

}

}

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]);

}

}

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]);

}

}

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]);

}

}

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

} }

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

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

} }

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

} }

• 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

5. Conclusões e Perguntas

Recommended