Quando trabalhamos com Gobstones, fazemos as coisas com uma certa ordem. Por exemplo, se temos este programa:
program {
Mover(Norte)
Mover(Leste)
}
Uma possível maneira de ler este programa (conhecida como operacional) é como uma máquina faria, em ordem, de cima para baixo:
Mover(Norte)
Mover(Leste)
E de fato se executa dessa maneira. Isso é como é feito.
No entanto, nós humanos somos melhores referindo-se especialmente ao resultado final: o objetivo do programa, isto é, o que ele faz. E se pensamos assim (denotacionalmente) o que faz é: move a garra para o nordeste.
Por isso, existem várias maneiras de resolver um mesmo problema: podemos escrever vários programas que façam o mesmo (o que), mas que façam isso de maneiras diferentes (o como).
Vamos ver se você entendeu isso: escreva outro programa que faça o mesmo que o de cima ( mover em direção ao nordeste), mas de maneira diferente. Fique de olho: deve funcionar em um tabuleiro de 2x2.
Experimente inverter a ordem dos comandos.
Sabemos que a máquina executará em uma ordem diferente, mas o resultado final será o mesmo.
Você deve fazer o login antes de começar a enviar suas soluções