Karel The Robot
Beepers loaded:
|Current command: None
|Current Level:
|Level Objective:
|Beepers:
|Beepers to Drop:
|Barriers:
|Moves:
|Collected:
|Dropped:
Manual do Karel
Karel é uma linguagem de programação educacional para iniciantes, criada por Richard E. Pattis em seu livro Karel The Robot: A Gentle Introduction to the Art of Programming. Pattis usou a linguagem em seus cursos na Universidade de Stanford, Califórnia. A linguagem recebeu o nome de Karel Čapek, um escritor tcheco que introduziu a palavra robô em sua peça R.U.R.
Comandos Básicos
Karel é um robô que pode executar comandos para se mover, virar, pegar ou colocar objetos (chamados beepers) e outras ações. A seguir estão os comandos básicos que Karel pode executar:
- move(): Move Karel uma unidade para frente.
- turn_left(): Faz Karel virar 90 graus à esquerda.
- put_beeper(): Karel coloca um beeper na célula atual.
- pick_beeper(): Karel pega um beeper da célula atual.
- paint_corner(cor): Karel pinta o canto onde está com a cor especificada, ex:
paint_corner(pink)
. - print("mensagem"): Exibe uma mensagem no console ou na tela.
- solve(22/7): Soluciona uma expressão aritmética ou lógica.
Condições
Karel pode tomar decisões com base em certas condições do mundo ao seu redor. As condições podem ser usadas dentro de estruturas if
ou while
para controlar o fluxo do programa.
- front_is_clear(): Retorna true se não houver obstáculos diretamente à frente de Karel.
- beepers_present(): Retorna true se houver beepers na célula atual.
- beepers_in_bag(): Retorna true se Karel ainda tiver beepers em sua bolsa.
- left_is_clear(): Retorna true se não houver obstáculos à esquerda de Karel.
- right_is_clear(): Retorna true se não houver obstáculos à direita de Karel.
- facing_north(): Retorna true se Karel estiver virado para o norte.
- facing_south(): Retorna true se Karel estiver virado para o sul.
- facing_east(): Retorna true se Karel estiver virado para o leste.
- facing_west(): Retorna true se Karel estiver virado para o oeste.
- front_is_blocked(): Retorna true se houver um obstáculo diretamente à frente de Karel.
- no_beepers_present(): Retorna true se não houver beepers na célula atual de Karel.
- no_beepers_in_bag(): Retorna true se Karel não tiver mais beepers em sua bolsa.
- left_is_blocked(): Retorna true se houver um obstáculo à esquerda de Karel.
- right_is_blocked(): Retorna true se houver um obstáculo à direita de Karel.
- not_facing_north(): Retorna true se Karel não estiver virado para o norte.
- not_facing_south(): Retorna true se Karel não estiver virado para o sul.
- not_facing_east(): Retorna true se Karel não estiver virado para o leste.
- not_facing_west(): Retorna true se Karel não estiver virado para o oeste.
Positivas
Negativas
Palavras-chave de Controle
if/else
A estrutura if
permite que Karel execute um bloco de código se uma condição for verdadeira. Se a condição for falsa, você pode usar else
para executar um bloco alternativo. Exemplo:
if front_is_clear()
move()
else
turn_left()
Este exemplo faz Karel se mover se a frente estiver livre, ou virar à esquerda se houver um obstáculo.
while
A estrutura while
repete um bloco de código enquanto a condição for verdadeira. Exemplo:
while front_is_clear()
move()
Este exemplo faz Karel continuar se movendo enquanto a frente estiver livre.
repeat
O comando repeat
permite repetir um bloco de código um número fixo de vezes. Exemplo:
repeat 5
move()
Este exemplo faz Karel se mover 5 vezes.
repeat com intervalo
O repeat
também pode ser usado com uma variável de intervalo. Exemplo:
repeat i:0-5
print(Índice: i);
solve(i/i**i)
Este exemplo imprime os valores de i
de 0 a 5.
Como Funciona
O código do Karel é interpretado em blocos. Cada bloco de comandos é executado de acordo com as condições e repetições definidas. Karel pode tomar decisões, repetir ações e resolver problemas no mundo 2D usando as estruturas de controle descritas acima.
Exemplo Completo
Um exemplo mais completo de um programa Karel pode ser:
if front_is_clear()
move()
else
turn_left()
repeat 3
move()
put_beeper()
paint_corner(purple)
while beepers_present()
pick_beeper()
Este código move Karel para frente se possível, coloca 3 beepers e depois tenta coletar todos os beepers na célula.