Você pode treinar robôs para cumprir
suas ordens

Dentro do Porta-Treco você encontrará uma grande pilha de robôs. Se você retirar um verá que ele tem uma mente vazia. Você pode começar a treinar um robô novo colocando uma caixa nele. Você entrará nos pensamentos do robô e o controlará. Você pode fazê-lo apanhar coisas, usar ferramentas e colocar coisas. Ele se lembrará de tudo. Você pode treiná-lo para retirar coisas, ou colocar coisas, em uma caixa, da qual ele se lembrará qual era a abertura correta contando a partir do lado esquerdo dela. Uma vez que você tenha acabado de treiná-lo, pressione o botão escape (normalmente chamado Esc).

Você pode então fazer o robô repetir o que o treinou para fazer, dando-lhe novamente a caixa. Quando ele tiver terminado, ele tentará fazê-lo de novo se a caixa ainda se ajustar à caixa em sua mente.

Dica.Os robôs são realmente exigentes. Eles apenas trabalharão em uma caixa como aquela na sua mente. Felizmente, você pode utilizar Asper para aspirar as coisas de uma caixa em uma mente. Uma boa idéia é aspirar apenas o suficiente para fazer o robô trabalhar quando você desejar que o faça. Algumas vezes é mais fácil aspirar a caixa da mente, expeli-la, alterá-la e então colocá-la de volta na mente.

Equipes de robôs. Você pode fazer uma equipe de robôs colocando-os uns sobre os outros. Quando você dá uma caixa à equipe, o robô na frente vê se ela se ajusta à sua mente. Se isso ocorre, ele começará a trabalhar nela e os outros membros da equipe sairão do caminho. Se ela não se ajustar, ele a passará para o próximo robô da fila. Se houver algo faltando na caixa ou houver um ninho onde o robô esperava por algo mais, então ele esperará. Quando a caixa for preenchida ou o ninho coberto, ele começará novamente.

Dica. Se você deseja que o robô faça alguma coisa apenas se algo não estiver lá, então você pode fazer que o robô na frente dele verifique algo como o número 42 e que o robô atrás dele não receba a caixa para trabalhar a menos que o número seja diferente de 42.

Em qualquer lugar que você precise de um robô para trabalhar você pode utilizar uma equipe de robôs. Portanto, você pode colocar uma equipe em um caminhãoou colocar uma equipe atrás de uma imagem. A melhor maneira de desmanchar uma equipe é utilizar Asper para separá-los.

Dica. Se você treinou um robô para fazer quase a coisa certa, mas se atrapalhou um pouco, você pode então re-treinar o robô. Apenas esvazie a caixa da mente do robô, coloque-a para fora e então coloque a caixa no robô (tome cuidado para não colocá-la de volta na mente do robô). Você re-entrará na mente do robô, mas desta vez o robô irá refazer aquilo que foi treinado até que você clique o mouse ou um botão do teclado. Então, você pode continuar o treinamento como de hábito.

Dica Avançada. Você não pode treinar um robô para dar alguma coisa para outros robôs, mas você pode treinar um robô para carregar um caminhão com outros robôs. Os cientistas da computação descreveriam isso dizendo que embora você não possa fazer uma chamada de procedimento, você pode fazer uma geração de processo mais geral. Se você quer obter de volta alguma coisa dos robôs, então combine-os para dar uma resposta para um pombo.

Dica Avançada. Quando você treina um robô para dar alguma coisa para um pombo, o pombo voa e retorna de mãos vazias (de unhas vazias?). Mas durante o treinamento o pombo não leva coisas para seu ninho uma vez que quando o robô está operando ele pode ser um pombo diferente. Se você precisar computar alguma coisa utilizando algo colocado em um ninho por um pombo, então você precisará, pelo menos, de dois robôs. Um para dar ao pombo o item e outro para trabalhar no item resultante no ninho. Um bom truque é dar a caixa ao primeiro robô depois de treiná-lo para produzir a caixa que você deseja para treinar o segundo robô.

Dica Avançada. Os cientistas da computação falam sobre programas recursivos– programas que se utilizam a si mesmos. Aqui está como você pode fazer programas recursivos no ToonTalk. Coloque um robô novo em uma página em branco de sua agendaprincipal. Então treine outro robô para, entre outras coisas, encontrar a página com o robô salvo. Treine o robô para colocar uma cópia do robô na agenda em um caminhão junto com uma caixa para que ele trabalhe. Depois de terminar o treinamento de seu robô, encontre a página na qual salvou o robô. Utilize Asper para remover o robô e coloque em seu lugar o robô que você acabou de treinar.

O fatorial de um número (1 vezes 2 vezes 3 e assim por diante, até o seu número) pode ser calculado recursivamente ou iterativamente (repetidamente, sem utilizar recursão). Clique aquipara encontrar robôs que calculam o fatorial utilizando uma vez a recursão. Clique aqui para encontrar robôs que calculam o fatorial utilizando duplamente a recursão. Os robôs que calculam o fatorial sem utilizar recursão podem ser encontrados na página 12 da agenda de exemplos que está na página 6 de sua agenda principal.

Dica Avançada. Você pode colocar robôs em caixas e ainda treinar outros robôs para manipular aqueles. Os cientistas da computação chamam a isso metaprogramação.Os robôs não podem treinar outros robôs, mas podem re-arranjar equipes, remover, editar e mudar de lugar as caixas em suas mentes, e assim por diante. Colocar uma equipe de robôs em uma caixa vazia separa a equipe – um robô por abertura da caixa. Um robô em uma caixa em uma mente apenas se ajustará a outro robô com o mesmo nome. Você pode utilizar Asper para "apagar" um robô de forma que ele apenas se ajustará a qualquer robô.

Você pode também treinar um robô para apanhar uma equipe de robôs de uma caixa e colocá-la em conjunto em um caminhão com uma caixa para que eles trabalhem nela. Os cientistas da computação chamam isso de programação de ordem elevada. Há uma forma de combinar programação de ordem elevada e programação recursiva – veja se você pode descobrir como.