Missionários e os Canibais: Como Atravessar, Lógica Sequencial e Lógica de Programação

Missionários e os Canibais: Como Atravessar, Lógica Sequencial e Lógica de Programação

A lógica sequencial usada para resolver o jogo dos missionários e canibais é uma excelente metáfora para entender a lógica de programação. Ambas seguem um fluxo estruturado para alcançar um objetivo final, dividindo tarefas complexas em etapas menores e mais gerenciáveis. Vamos explorar as semelhanças e diferenças:

Tente resolver usando a lógica sequencial.



Resolução usando lógica Sequencial Completa

  1. Coloque o canibal 01 no barco.
  2. Coloque o canibal 02 no barco.
  3. Com os dois canibais no barco, atravesse para a margem esquerda.
  4. Deixe o canibal 01 na margem esquerda.
  5. Volte com o canibal 02 para a margem direita.
  6. Coloque o canibal 03 no barco.
  7. Com os dois canibais no barco, atravesse para a margem esquerda.
  8. Deixe o canibal 02 na margem esquerda.
  9. Volte com o canibal 03 para a margem direita.
  10. Deixe o canibal 03 na margem direita.
  11. Coloque o jesuíta 01 no barco.
  12. Coloque o jesuíta 02 no barco.
  13. Com os dois jesuítas no barco, atravesse para a margem esquerda.
  14. Deixe o jesuíta 01 na margem esquerda.
  15. Coloque o canibal 02 no barco.
  16. Volte com o jesuíta 02 e o canibal 02 para a margem direita.
  17. Deixe o canibal 02 na margem direita.
  18. Coloque o jesuíta 03 no barco.
  19. Com os dois jesuítas no barco, atravesse para a margem esquerda.
  20. Deixe o jesuíta 02 na margem esquerda.
  21. Deixe o jesuíta 03 na margem esquerda.
  22. Coloque o canibal 01 no barco.
  23. Com o canibal 01 no barco, atravesse para a margem direita.
  24. Coloque o canibal 02 no barco.
  25. Com os dois canibais no barco, atravesse para a margem esquerda.
  26. Deixe o canibal 01 na margem esquerda.
  27. Volte com o canibal 02 para a margem direita.
  28. Coloque o canibal 03 no barco.
  29. Com os dois canibais no barco, atravesse para a margem esquerda.
  30. Deixe o canibal 02 na margem esquerda.
  31. Deixe o canibal 03 na margem esquerda.
VEJA TAMBÉM  Regras de Inferência

Resultado Final: Todos os missionários e canibais estão na margem esquerda do rio, em segurança.

1. Divisão em Passos Simples

No Jogo: A solução é dividida em etapas, onde cada movimento do barco é cuidadosamente planejado para evitar conflitos (como deixar canibais em maior número).
Na Programação: Um programa é dividido em instruções simples, como funções ou métodos, que resolvem partes menores de um problema. Cada linha de código contribui para o resultado final.

Exemplo de Semelhança:

# Jogo: "Coloque o canibal 01 no barco e atravesse."
colocarNoBarco(canibal01)
atravessarBarco()

2. Sequência e Fluxo Lógico

No Jogo: Cada ação deve seguir a anterior em uma ordem lógica para garantir que o objetivo seja alcançado (por exemplo: o barco só pode atravessar com pelo menos uma pessoa).
Na Programação: O fluxo do programa é controlado por estruturas como loops, condições e chamadas de função, que garantem a execução correta das etapas.

Exemplo de Controle na Programação:

if barco.temDuasPessoas():
    barco.atravessar()

3. Regras e Restrições

No Jogo: Há restrições claras, como o limite de duas pessoas no barco ou a proibição de deixar os canibais em maior número.
Na Programação: As regras são representadas por condições (if/else) ou validações no código, garantindo que o sistema funcione conforme esperado.

VEJA TAMBÉM  Teste de QI Chinês, o Jogo do Rio - Teste de lógica

Exemplo:

if canibais > missionarios:
    raise Exception("Missão falhou: canibais superaram missionários!")

4. Iterações e Repetições

No Jogo: Algumas ações precisam ser repetidas, como o retorno do barco para buscar mais pessoas.
Na Programação: Isso é representado por loops (for, while) que repetem instruções até que uma condição seja satisfeita.

Exemplo:

while margemDireita.temPessoas():
    barco.levarPessoas()

5. Resultado Final

No Jogo: O objetivo é alcançar a margem esquerda com todos os missionários e canibais em segurança, respeitando as regras.
Na Programação: O programa termina quando todas as condições são satisfeitas, entregando o resultado esperado.

Exemplo de Saída:

if margemEsquerda.temTodos():
    print("Todos chegaram em segurança!")

Conclusão

Conhecer esse jogo durante minha faculdade foi um marco na minha compreensão de lógica. Ele exemplifica como problemas aparentemente simples podem ser desafiadores e ensinar lições valiosas sobre organização e planejamento.

Tanto a lógica sequencial do jogo quanto a lógica de programação nos mostram a importância de:

  • Planejar antes de executar.
  • Resolver problemas complexos dividindo-os em partes menores.
  • Respeitar regras e validar condições para evitar falhas.

Essa conexão prática entre lógica de jogo e programação é uma forma divertida e eficiente de aprender conceitos fundamentais. Já tentou resolver este desafio ou implementá-lo em um código? Deixe seu comentário e compartilhe sua experiência!

VEJA TAMBÉM  MOD AMONG US – Todos os Hats, Pets e Skins gratuitas sem bug atualizado 2021

 

Loading


Publicação Criada em: fevereiro 25, 2011
Atualizado em: janeiro 20, 2025 7:08 pm
Atualizado em: janeiro 27, 2025 2:00 pm

3 comentários em “Missionários e os Canibais: Como Atravessar, Lógica Sequencial e Lógica de Programação”

  1. mateus martinez rosa

    Você pode simplificar essas movimentações. Que por sinal não foram poucas rs…

    1- Você coloca no barco 1 jesuíta e 1 canibal e atravessa.
    2- Volta para a margem de inicio e coloca mais 1 jesuíta e 1 canibal e atravessa.
    3- Volta para a margem inicial, coloca novamente mais 1 jesuíta e 1 canibal e atravessa novamente.
    Simples assim!

Deixe um comentário

Índice