Olá,
Um exemplo de programa foi carregado para você começar.
Boa diversão.
*vídeo com legenda disponível em português
Guia rápido para a Linguagem LOGO (tradução em andamento):
Guia de referência rápida ao LOGO:
As coisas devem funcionar tanto em caixa alta como em caixa baixa.
Tipos:
PALAVRAS: FW BW ....
NÚMEROS: 0, 0.1, 20
LISTAS: [1 2 3 5]
SÍMBOLOS: "foo "bar
VARIÁVEIS: :foo :bar
FUNÇÕES: COMMAND arg arg arg ...
(COMMAND arg arg arg ...)
Comandos disponíveis:
RESET Limpa a tela, move o personagem pra posição inicial.
Movimentos:
FORWARD n Move o personagem para frente n pixels
FW n
BACKWARD n Move o personagem para trás n pixels
RIGHT n Move o personagem para esquerda ou direita em n graus
RT n
LEFT n
LT n
SETX x Ajustas as coordenadas do personagem nas posições X, Y ou X Y
SETY y
SETXY x y
HOME Move o personagem para a posição inicial.
Desenho:
CLEARSCREEN Limpa a tela
CLEAR
CS
CIRCLE r Desenha um círculo de raio r ao redor do personagem
ARC r d Desenha um arco de raio r por d graus
PENUP Levanta a caneta (para de desenhar)
PU
PENDOWN Desce a caneta (volta a desenhar)
PD
COLOR [r g b] Mudar a cor da caneta (código rgb = red green blue / 0 a 255)
PENWIDTH w Muda a grossura da caneta
Texto:
PRINT "foo Imprime na tela "foo"
PR "foo
PRINT ["foo "bar] Imprime na tela "foo bar"
PR ["foo "bar]
CLEARTEXT Limpa o texto impresso anteriormente
CT
Operações Matemáticas:
:: SOMA :: :: MULTIPLICAÇÃO ::
1 + 2 1 * 2
SUM 1 2 PRODUCT 1 2
(SUM 1 2 3 ...) (PRODUCT 1 2 3 ...)
:: DIFERENÇA :: :: DIVISÃO ::
1 - 2 1 / 2
DIFFERENCE 1 2 DIVIDE 1 2
:: MÓDULO ::
1 % 2
MOD 1 2
RANDOM n Retorna um inteiro em [0,n)
RAND n
RERANDOM s Modifica o valor do incremento aleatório
SRAND s
:: ALGUNS EXEMPLOS ::
() INT n
() ROUND n
() POWER e m
() EXP n
() LN n
() LOG10 n
:: TRIGONOMETRIA ::
SIN, COS
RADSIN,RADCOS
ARCTAN
RADARCTAN
:: LISTAS ::
* Estas funcionalidades podem apresentar instabilidade a qualquer momento.
FIRST, HEAD Retorna o primeiro item em uma lista
BUTFIRST, TAIL Retorna todos menos o primeiro item em uma lista
LAST Retorna o último item em uma lista
BUTLAST Retorna todos os itens menos o último em uma lista
FPUT item list Retorna uma nova lista com o item na frente
LPUT item list Retorna uma nova lista com o item por trás
ITEM index list Busca o item indexado (get)
SETITEM index list value Grava o item indexado (set)
EMPTY? list Returna true se a lista estiver vazia
EMPTYP list
:: OPERADORES LÓGICOS E DE COMPARAÇÃO ::
:: IGUALDADE
1 = 1
EQUAL? 1 1
EQUALP 1 1
:: MENOR
1 < 2 1 <= 2
LESS? 1 2 LESSEQUAL? 1 2
LESSP 1 2 LESSEQUALP 1 2
:: MAIOR
2 > 1 2 > 1
GREATER? 2 1 GREATEREQUAL? 2 1
GREATERP 2 1 GREATEREQUALP 2 1
:: LÓGICOS
AND TRUE FALSE OR FALSE TRUE
:: OPERAÇÕES CONDICIONAIS (E SE...) ::
:: SE CONDIÇÃO EXISTIR FAÇA...
IF COND [IF_TRUE]
IF 2 > 1 [FW 100]
:: SE CONDIÇÃO FAÇA ISSO SE NÃO AQUILO
IFELSE COND [IF_TRUE] [IF_FALSE]
IFELSE 2 > 1 [FW 100 RT 90] [BW 100 LT 90]
:: BUSCAR E MODIFICAR ::
:: X = 1
Set x to 1: make "x 1
:: SOMAR N E X
Adding :n to :x :n + :x
:: ATRIBUIR A X A SOMA DE N + X
Setting :x to :n + :x make "x :x + :n
:: REPETIÇÕES ::
REPEAT n [COMMANDOS ...]
STOP - Parar a repetição atual ou função.
OUTPUT f - Retornar f.
OP f
:: DEFININDO E CHAMANDO
:: CRIA A FUNÇÃO FOO QUE RECEBE OS ARGUMENTOS ARG1, ARG2
:: TODA FUNÇÃO TEM UM CORPO BODY (COMANDOS) E UM FIM (END)
TO FOO :ARG1 :ARG2 BODY END
:: PARA CRIAR UMA FUNÇÃO QUE DESENHA UM QUADRADO E RECEBE O TAMANHO DESSE QUADRADO COMO ARGUMENTO
TO QUADRADO :tamanho
REPEAT 4 [FW :tamanho RT 90]
END
:: DESENHA UM QUADRADO DE TAMANHO 10
QUADRADO :10
:: PARA CRIAR UMA FUNÇÃO QUE DESENHA UM POLÍGONO QUE RECEBE O TAMANHO E O NÚMERO DE LADOS COMO ARGUMENTOS
TO POLYGONO :tamanho :lados
REPEAT :sides [FW :tamanho RT 360/:lados]
END
POLYGONO 5 10
Nota: Funções recursivas são suportadas.