aula teste infnet terça-feira, 11 de janeiro de 2011 prof. alex avellar contato@aavellar.com...
Post on 17-Apr-2015
104 Views
Preview:
TRANSCRIPT
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
top related