Sumário

# LibreLogo

O LibreLogo é um ambiente de programação ao estilo da linguagem Logo, simples, traduzido, com desenhos vetoriais feitos com a tartaruga do Logo; foi feito para ensino de computação (programação e processamento de palavras), para editoração eletrônica e para design gráfico. Consulte em inglês http://www.numbertext.org/logo/librelogo.pdf.

## Barra de ferramentas LibreLogo

A barra de ferramentas LibreLogo (Exibir - Barras de ferramentas - Logo) contém ícones para movimentação da tartaruga, execução do programa, parar programa, ir para o centro, limpar a tela, tradução e colocação da sintaxe em maiúsculas, e uma caixa de entrada (linha de comandos).

## Ícones de movimentação da tartaruga

Eles são equivalentes aos comandos Logo “PARAFRENTE 10”, “PARATRÁS 10”, “PARAESQUERDA 15º”, “PARADIREITA 15º”. Clicar em um desses ícones também vai colocar o foco na tartaruga, rolando a página para a sua posição.

## Executar programa Logo

Clique no ícone “Executar programa Logo” para executar o texto (ou apenas o texto selecionado) no documento do Writer contendo um programa LibreLogo. Para um documento vazio, um programa de exemplo será inserido e executado.

Clique no ícone “PARAR” para interromper a execução do programa.

## PARACENTRO

Clique no ícone “PARACENTRO” para reiniciar a posição e as configurações da tartaruga.

## Limpar tela (TAT)

Clique no ícone “Limpar tela” para remover os objetos de desenho do documento.

## Editor do programa / Destaque da sintaxe / Tradução

O ícone “magic wand” define um esquema de 2 páginas para edição do programa, expande e converte para maiúsculas os comandos Logo abreviados e minúsculos existentes no documento do Writer. Altere o idioma do documento em (LibreOffice - Preferências Ferramentas - Opções - Idiomas e localidades - Geral - Ocidental) e clique neste ícone de modo a traduzir o programa Logo para o idioma selecionado.

## Linha de comandos

Pressione Enter na linha de comandos para executar o seu conteúdo. Para interromper o programa, use o ícone “PARAR”.

Mantenha a tecla Enter pressionada para repetir a linha de comandos, por exemplo, na seguinte sequência de comandos:

     PARAFRENTE 200 PARAESQUERDA 89

Para repor a linha de comandos, clique 3 vezes ou pressione Comando Ctrl+A para selecionar os comandos ou introduzir um novo comando.

## Interface gráfica do usuário para as configurações básicas da tartaruga

A tartaruga do LibreLogo é um objeto de desenho com tamanho fixo. Você pode posicioná-la e girá-la da forma convencional, também, utilizando o mouse e o ícone Girar na barra de ferramentas Propriedades do desenho. Mude as configurações Espessura de Linha, Cor da Linha e Cor da Área da tartaruga para definir os atributos dos comandos do LibreLogo MUDARESPESSURADOLÁPIS, MUDARCORDOLÁPIS e MUDARCORDAPINTURA.

## Edição do programa

Os desenhos e programas do LibreLogo usam o mesmo documento Writer. A tela do LibreLogo está sobre a primeira página do documento. Você pode inserir uma quebra de página antes dos programas LibreLogo e configurar o zoom utilizando o ícone da “varinha mágica” na barra de ferramentas Logo; também pode alterar o tamanho da letra para um leiaute de duas páginas que seja confortável para a programação com o LibreLogo: a página esquerda (a primeira) é a tela, e a página da direita (a segunda) é para o editor de programas do LibreLogo.

# Linguagem de programação LibreLogo

LibreLogo é uma linguagem ao estilo do Logo facilmente traduzível, traduzida para diversos idiomas por comunidades nativas de cada língua. Possui compatibilidade retroativa com sistemas Logo mais antigos, no caso de programas Logo simples utilizados em educação, por exemplo.

     APRENDER triangulo :tamanho
     REPETIR 3 [
       PARAFRENTE :tamanho
       PARAESQUERDA 120
     ]
     FIM

     triangulo 10 triangulo 100 triangulo 200

## Diferenças em relação à linguagem de programação Logo

- Os membros das listas são separados por vírgula: POSICIONAR [0, 0]

- Blocos de programa e listas são coisas diferentes:

- - Blocos de programa necessitam de espaço ou de nova linha ao lado dos colchetes: REPETIR 10 [ PARAFRENTE 10 PARAESQUERDA 36 ]

  - Listas necessitam de colchetes sem espaçamento: POSICIONAR [0, 0], em vez de POSICIONAR [ 0, 0 ]

- Declarações de funções em uma só linha não são suportadas (APRENDER e FIM necessitam de novas linhas ao final).

## Outras características do LibreLogo

- O sinal de dois pontos é opcional antes do nome das variáveis.

       APRENDER triangulo tamanho
         REPETIR 3 [ PARAFRENTE tamanho PARAESQUERDA 120 ]
       FIM

- A notação de cadeias de caracteres também possui suporte à sintaxe e ortografia da linguagem Python.

       ESCREVER "palavra ; sintaxe original do Logo
       ESCREVER “Texto arbitrário.” ; ortografia do Writer
       ESCREVER 'Texto arbitrário.' ; sintaxe do Python

- Manipulação de cadeias e listas do Python

       ESCREVER “texto”[2] ; escrever “x”
       ESCREVER “texto”[1:3] ; escreve “ex”

- Laço PARA ao estilo do Python

- Declaração de variáveis ao estilo do Python:

       x = 15
       ESCREVER x

- Não há funções extra de consulta:

       ESCREVER MUDARCORDAPINTURA
       p = POSICIONAR
       ESCREVER p
       REPETIR 10 [ POSICIONAR QUALQUER POSICIONAR p ]

- Sintaxe alternativa nas chamadas de funções com parâmetros

       APRENDER estrela tamanho cor
       MUDARCORDAPINTURA cor
       REPETIR 5 [ PARAESQUERDA 72 PARAFRENTE tamanho PARADIREITA 144 PARAFRENTE tamanho ]
       PINTAR
       FIM

       estrela 100 “VERMELHO”
       estrela (100, “VERDE”)
      estrela(100, “AZUL”)

# Comandos do LibreLogo

## Sintaxe básica

### Distinção entre maiúsculas e minúsculas

Os comandos e as constantes de cores não diferenciam minúsculas de maiúsculas:

     ESCREVER “Olá, Mundo!”
     escrever “Olá, Mundo, novamente!”

Já os nomes das variáveis diferenciam minúsculas de maiúsculas:

     a = 5
     A = 7
     ESCREVER a ; valor 5
     ESCREVER A ; valor 7

### Linhas do programa

As linhas de um programa LibreLogo são parágrafos no documento do Writer. Uma linha de programa pode conter vários comandos:

     ESCREVER “Olá, Mundo!” ESCREVER “LibreLogo”

### Comentários

Linhas - ou partes delas - são consideradas como comentários a partir do sinal de ponto e vírgula até o final da linha (parágrafo):

     ; algum comentário
     ESCREVER 5 * 5 ; algum comentário

### Quebra de linhas do programa em múltiplos parágrafos

É possível quebrar uma linha do programa em vários parágrafos usando o caractere til no final da linha:

     ESCREVER “Esta é uma mensagem de aviso ” + ~
           “muito extensa”

## Movimentação da tartaruga

### PARAFRENTE (pf)

     PARAFRENTE 10 ; move para a frente em 10pt (1pt = 1/72 polegadas)
     PARAFRENTE 10pt ; ver acima
     PARAFRENTE 0.5pol ; move para a frente em 0.5 polegadas (1 polegada = 2.54 cm)
     PARAFRENTE 1" ; ver acima
     PF 1mm
     PF 1cm

### PARATRÁS (pt)

     PARATRÁS 10 ; move para trás 10pt

### PARAESQUERDA (pe)

     PARAESQUERDA 90 ; gira 90 graus para a esquerda
     PARAESQUERDA 90° ; ver acima
     PE 3h ; ver acima (posição do relógio)
     PE QUALQUER ; gira aleatoriamente

### PARADIREITA (pd)

     PARADIREITA 90 ; gira 90 graus para a direita

### USARNADA (un)

     USARNADA ; a tartaruga se movimenta sem desenhar

### USARLÁPIS (ul)

     USARLÁPIS ; a tartaruga se movimenta desenhando

### POSICIONAR (pos)

     POSICIONAR [0, 0] ; gira e move a tartaruga para o canto superior esquerdo
     POSICIONAR TAMANHODAPÁGINA ; gira e move a tartaruga para o canto inferior direito
     POSICIONAR [TAMANHODAPÁGINA[0], 0] ; gira e move a tartaruga para o canto superior direito
     POSICIONAR QUALQUER ; gira e move a tartaruga aleatoriamente

### MUDARDIREÇÃO (mdir)

     MUDARDIREÇÃO 0 ; gira para o norte
     MUDARDIREÇÃO 12h ; ver acima
     MUDARDIREÇÃO [0, 0] ; gira para o canto superior esquerdo
     MUDARDIREÇÃO QUALQUER ; gira para uma direção aleatória

## Outros comandos da tartaruga

### DESAPARECERTAT (dt)

     DESAPARECERTAT ; oculta a tartaruga (até que se utilize o comando aparecertat)

### APARECERTAT (at)

     APARECERTAT ; mostra a tartaruga

### PARACENTRO (pc)

     PARACENTRO ; reinicia as configurações iniciais e a posição da tartaruga

### TARTARUGA (tat)

     TARTARUGA ; remove os objetos de desenho do documento

### PINTAR e FECHAR

     PINTAR ; fecha e pinta a forma de linha atual
     FECHAR ; fecha a forma de linha atual ou une os pontos

Exemplo: pintar um triângulo regular:

     PARAFRENTE 50 PARAESQUERDA 120 PARAFRENTE 50 PINTAR

Exemplo: desenhar um triângulo regular:

     PARAFRENTE 50 PARAESQUERDA 120 PARAFRENTE 50 FECHAR

## Configurações do lápis

### MUDARESPESSURADOLÁPIS (mespla)

     MUDARESPESSURADOLÁPIS 100 ; a espessura da linha é 100 pontos
     MUDARESPESSURADOLÁPIS QUALQUER ; equivalente a MUDARESPESSURADOLÁPIS ALEATÓRIO 10

### MUDARCORDOLÁPIS (mcorla)

     MUDARCORDOLÁPIS “vermelho” ; define a cor vermelha (pelo nome da cor; consulte constantes de cor)
     MUDARCORDOLÁPIS [255, 255, 0] ; define a cor amarela (lista RGB)
     MUDARCORDOLÁPIS 0xffff00 ; define a cor amarela (hexadecimal)
     MUDARCORDOLÁPIS 0 ; define a cor preto (0x000000)
     MUDARCORDOLÁPIS QUALQUER ; define aleatoriamente a cor
     MUDARCORDOLÁPIS [5] ; define a cor vermelha (por identificador; consulte constantes de cor)
     MUDARCORDOLÁPIS “invisível” ; define a cor transparente para formas sem contornos
     MUDARCORDOLÁPIS “~vermelho” ; define um vermelho aleatório

### MUDARTRANSPARÊNCIADOLÁPIS (mtrala)

     MUDARTRANSPARÊNCIADOLÁPIS 80 ; define a transparência da cor do lápis corrente para 80%

### MUDARPONTADOLÁPIS (mponla)

     MUDARPONTADOLÁPIS “nenhum” ; sem ponta de linha extra (padrão)
     MUDARPONTADOLÁPIS “arredondado” ; ponta de linha arredondada
     MUDARPONTADOLÁPIS “quadrado” ; ponta de linha quadrada

### MUDARCANTODALINHA (mcanli)

     MUDARCANTODALINHA “arredondado” ; canto de linha arredondado (padrão)
     MUDARCANTODALINHA “pontudo” ; canto de linha pontudo
     MUDARCANTODALINHA “cortado” ; canto de linha cortado
     MUDARCANTODALINHA “nenhum” ; sem canto de linha

### MUDARESTILODOLÁPIS (mestla)

     MUDARESTILODOLÁPIS “sólido” ; linha sólida (padrão)
     MUDARESTILODOLÁPIS “pontilhado” ; linha pontilhada
     MUDARESTILODOLÁPIS “tracejado” ; linha tracejada

     ; personalizar o padrão de acordo com seguintes argumentos:
     ; – número de pontos próximos
     ; – tamanho do ponto
     ; – número de traços próximos
     ; – tamanho do traço
     ; – distância entre pontos e traços
     ; – tipo (opcional):
     ;   0 = os pontos são retângulos (padrão)
     ;   2 = os pontos são quadrados (tamanho e distância são proporcionais à espessura do lápis)

     MUDARESTILODOLÁPIS [3, 1mm, 2, 4mm, 2mm, 2] ; ...––...––...––

## Configurações de pintura

### MUDARCORDAPINTURA (mcorpi)

     MUDARCORDAPINTURA “azul” ; pinta com a cor azul - ver também MUDARCORDOLÁPIS
     MUDARCORDAPINTURA “invisível” CÍRCULO 10 ; círculo sem pintura
     MUDARCORDAPINTURA [“azul”, “vermelho”] ; gradiente entre vermelho e azul
     MUDARCORDAPINTURA [[255, 255, 255], [255, 128, 0]] ; entre branco e laranja
     MUDARCORDAPINTURA [“azul”, “vermelho”, 1, 0, 0] ; configura gradiente axial (com as configurações de rotação e borda requeridas), valores possíveis: 0-5 = gradientes linear, axial, radial, elíptico, quadrado e retangular
     MUDARCORDAPINTURA [“vermelho”, “azul”, 0, 90, 20] ; linear com 20% de borda, rotacionado com 90 graus da direção atual da tartaruga
     MUDARCORDAPINTURA [“vermelho”, “azul”, 0, 90, 20, 0, 0, 200, 50] ; intensidade de 200% a 50%
     MUDARCORDAPINTURA [QUALQUER, QUALQUER, 2, 0, 0, 50, 50] ; gradiente radial com cores aleatórias e 50-50% de posições verticais e horizontais do centro

### MUDARTRANSPARÊNCIADAPINTURA (mtrapi)

     MUDARTRANSPARÊNCIADAPINTURA 80 ; define a transparência da cor de pintura atual para 80%
     MUDARTRANSPARÊNCIADAPINTURA [80] ; define gradiente de transparência linear de 80% a 0%
     MUDARTRANSPARÊNCIADAPINTURA [80, 20] ; define gradiente de transparência linear de 80% a 20%
     MUDARTRANSPARÊNCIADAPINTURA [80, 20, 1, 90] ; define gradiente de transparência axial rotacionado 90 graus da direção atual da tartaruga
     MUDARTRANSPARÊNCIADAPINTURA [80, 20, 2, 0, 20, 50, 50] ; define gradiente de transparência radial de transparência 80% externa para 20% interna com 20% de borda e com 50-50% de posições horizontal e vertical do centro

### MUDARESTILODAPINTURA (mestpi)

     MUDARESTILODAPINTURA 0 ; preencher sem hachurados (padrão)
     MUDARESTILODAPINTURA 1 ; hachurados simples negros (horizontais)
     MUDARESTILODAPINTURA 2 ; hachurados simples negros (45 graus)
     MUDARESTILODAPINTURA 3 ; hachurados simples negros (-45 graus)
     MUDARESTILODAPINTURA 4 ; hachurados simples negros (verticais)
     MUDARESTILODAPINTURA 5 ; hachurados cruzados vermelhos (45 graus)
     MUDARESTILODAPINTURA 6 ; hachurados cruzados vermelhos (0 graus)
     MUDARESTILODAPINTURA 7 ; hachurados cruzados azuis (45 graus)
     MUDARESTILODAPINTURA 8 ; hachurados cruzados azuis (0 graus)
     MUDARESTILODAPINTURA 9 ; cruzado triplo azul
     MUDARESTILODAPINTURA 10 ; hachurados simples negros e largos (45 graus)

     ; personalizar por uma lista com os seguintes argumentos:
     ; – estilo (1 = simples, 2 = duplo, 3 = hachurado triplo)
     ; – cor
     ; – distância
     ; – grau

     MUDARESTILODAPINTURA [2, “verde”, 3pt, 15°] ; hachurados cruzados verdes (15 graus)

## Desenho de objetos

### CÍRCULO

     CÍRCULO 100 ; desenha um círculo (diâmetro = 100pt)

### ELIPSE

     ELIPSE [50, 100] ; desenha uma elipse com diâmetro 50x100
     ELIPSE [50, 100, 2h, 12h] ; desenha um setor elíptico (no sentido horário de 2h até 12h)
     ELIPSE [50, 100, 2h, 12h, 2]  ; desenha um segmento elíptico
     ELIPSE [50, 100, 2h, 12h, 3]  ; desenha um arco elíptico

### QUADRADO

     QUADRADO 100 ; desenha um quadrado (tamanho = 100pt)

### RETÂNGULO

     RETÂNGULO [50, 100] ; desenha um retângulo (50×100pt)
     RETÂNGULO [50, 100, 10] ; desenha um retângulo com cantos arredondados

### PONTO

     PONTO ; desenha um ponto com o tamanho e a cor do lápis

FECHAR pode unir os últimos pontos, e PINTAR pode pintar a forma definida pelos pontos. Por exemplo, é fácil desenhar uma estrela simples a partir do seu centro:

     USARNADA
     REPETIR 5 [
       PARAFRENTE 80
       PONTO
       PARATRÁS 80
       PARADIREITA 36
       PARAFRENTE 50
       PONTO
       PARATRÁS 50
       PARADIREITA 120
     ] PINTAR

### ROTULAR

     ROTULAR “texto” ; insere texto na posição da tartaruga
     ROTULAR 'texto' ; ver acima
     ROTULAR "texto ; ver acima (somente para palavras únicas)

### TEXTO

     CÍRCULO 10 TEXTO “texto” ; define o texto contido no objeto de desenho atual

## Configurações do tipo de letra

### MUDARCORDALETRA (mcorle)

     MUDARCORDALETRA “verde” ; define a cor da letra

### MUDARTIPODALETRA (mtiple)

     MUDARTIPODALETRA “Linux Libertine G” ; define o tipo de letra (família)
     MUDARTIPODALETRA “Linux Libertine G:smcp=1” ; define também o tipo de capitalização (versaletes)
     MUDARTIPODALETRA “Linux Libertine G:smcp=1&onum=1” ; versaletes + figuras antigas

### MUDARTAMANHODALETRA (mtamle)

     MUDARTAMANHODALETRA 12 ; define 12pt

### MUDARESPESSURADALETRA (mesple)

     MUDARESPESSURADALETRA “negrito” ; define a letra como negrito
     MUDARESPESSURADALETRA “normal” ; define a letra como normal

### MUDARESTILODALETRA (mestle)

     MUDARESTILODALETRA “itálico” ; define o texto como itálico
     MUDARESTILODALETRA “normal” ; define o texto como normal

## AGRUPAR (FIGURA, grp)

AGRUPAR serve para:

- agrupar formas;

- iniciar a construção de novas formas de linha;

- salvar imagens SVG e animações SVG/SMIL;

- manter a consistência das posições e formas de linha na borda esquerda.

### Agrupamento de formas

     ; AGRUPAR [ Comandos_LibreLogo ]
     AGRUPAR [ PARAFRENTE 100 CÍRCULO 100 ] ; agrupa em forma de árvore

Consulte também “Grupo” na Ajuda do LibreOffice Writer.

     APRENDER arvore localizacao
       USARNADA POSICIONAR localizacao MUDARDIREÇÃO 0 USARLÁPIS
       AGRUPAR [ PARAFRENTE 100 CÍRCULO 100 ] ; agrupa na forma de árvore
     FIM

     AGRUPAR [ arvore [230, 400] arvore [300, 400] ] ; formas agrupadas em outra forma agrupada

### Iniciar novas formas de linha

     AGRUPAR ; inicia uma nova forma de linha
     PARAFRENTE 10 AGRUPAR PARAFRENTE 10 ; duas formas de linha

### Salvar imagens SVG

     AGRUPAR “exemplo.svg” [ CÍRCULO 5 ] ; salva figura como um arquivo de imagem SVG na pasta do usuário
     AGRUPAR “Desktop/exemplo.svg” [ PARAFRENTE 100 CÍRCULO 5 ] ; como acima, com caminho relativo
     AGRUPAR “/home/user/exemplo.svg” [ CÍRCULO 5 ] ; caminho absoluto para Unix/Linux
     AGRUPAR “C:/exemplo.svg” [ CÍRCULO 5 ] ; caminho absoluto para Windows

### Salvar animações SVG/SMIL (desenhos com comandos ESPERAR)

     AGRUPAR “anima.svg” [ CÍRCULO 5 ESPERAR 1000 CÍRCULO 99 ] ; salva como uma animação SVG/SMIL (ver também ESPERAR)
     AGRUPAR “anima2.svg” [ CÍRCULO 5 ESPERAR 1000 CÍRCULO 99 ESPERAR 2000 ] ; como acima, mas utilizar ESPERAR após último objeto resulta em um laço: após 2 segundos a animação SVG reinicia em navegadores compatíveis com SMIL

### Consistência na margem esquerda

Use FIGURA para manter a consistência de posições e formas de linha na margem esquerda do Writer:

     AGRUPAR [ CÍRCULO 20 POSICIONAR [-100, 100] CÍRCULO 20 ]

## Laços

### REPETIR

     ; REPETIR número [ comandos ]

     REPETIR 10 [ PARAFRENTE 10 PARAESQUERDA 45 CÍRCULO 10 ] ; repete 10 vezes

     ; número é opcional

     REPETIR [ POSICIONAR QUALQUER ] ; laço infinito

### CONTVEZES

Variável de laço (também presente nos laços PARA e ENQUANTO).

     REPETIR 100 [ PARAFRENTE CONTVEZES PARAESQUERDA 90 ]

### PARA EM

Laço para os elementos de lista:

     PARA i EM [1, 5, 7, 9, 11] [
       PARAFRENTE i
       PARAESQUERDA 90
     ]

Laço para caracteres de uma sequência de caracteres:

     PARA i EM “texto” [
       ROTULAR i
       PARAFRENTE 10
     ]

### ENQUANTO

     ENQUANTO VERDADEIRO [ POSICIONE QUALQUER ] ; laço sem fim
     ENQUANTO CONTVEZES <= 10 [ PARAFRENTE 50 PARAESQUERDA 36 ] ; igual a REPEAT 10 [ ... ]

### INTERROMPER

Interrompe o laço.

     REPETIR [ ; laço sem fim
       POSICIONAR QUALQUER
       SE CONTVEZES = 100 [ INTERROMPER ]  ; equivalente a REPETIR 100 [ ... ]
     ]

### CONTINUAR

Salta para a próxima iteração do laço.

     REPETIR 100 [
       POSICIONAR QUALQUER
       SE CONTVEZES % 2 == 0 [ CONTINUAR ]
       CÍRCULO 10 ; desenha círculos a cada 2ª posição
     ]

## Condições

### SE

     ; SE condição [ bloco verdadeiro ]
     ; SE condição [ bloco verdadeiro ] [ bloco falso ]

     SE a < 10 [ ESCREVER “Pequeno” ]
     SE a < 10 [ ESCREVER “Pequeno” ] [ ESCREVER “Grande” ]

### E, OU, NÃO

Operadores lógicos.

     SE a < 10 E NÃO a = 5 [ ESCREVER “0, 1, 2, 3, 4, 6, 7, 8 ou 9” ]
     SE a < 10 E a != 5 [ ESCREVER “0, 1, 2, 3, 4, 6, 7, 8 ou 9” ] ; como acima

## Sub-rotinas

### APRENDER, FIM

Nova palavra (ou procedimento).

     APRENDER triangulo
       REPETIR 2 [ PARAFRENTE 100 PARADIREITA 120 ] PINTAR
     FIM

     REPETIR 10 [ triangulo USARNADA POSICIONAR QUALQUER USARLÁPIS ]

### RETORNAR

Devolve/retorna o valor da função.

     APRENDER letraqualquer
       RETORNAR ALEATÓRIO “qwertzuiopasdfghjklyxcvbnm”
     FIM

     ESCREVER letraqualquer + letraqualquer + letraqualquer ; imprime aleatoriamente 3 letras da sequência

### PARAR

Sair do procedimento.

     APRENDER exemplo numero
       SE numero < 0 [ PARAR ]
       ESCREVER RAIZ numero ; imprime a raiz quadrada
     ]

     exemplo 100
     exemplo -1 ; sem resultados nem erros
     exemplo 25

## Variáveis padrão

### QUALQUER

Valor aleatório padrão para cores etc.

     MUDARCORDOLÁPIS QUALQUER ; cor aleatória do lápis

### VERDADEIRO

Valor lógico.

     ENQUANTO VERDADEIRO [ POSICIONAR QUALQUER ] ; laço infinito
     ESCREVER VERDADEIRO ; imprime verdadeiro

### FALSO

Valor lógico.

     ENQUANTO NÃO FALSO [ POSICIONAR QUALQUER ] ; laço infinito
     ESCREVER FALSO ; imprime falso

### TAMANHODAPÁGINA (tampág)

     ESCREVER TAMANHODAPÁGINA ; imprime lista com tamanho da página em pontos, por ex. [595.30, 841.89]

### PI/π

     ESCREVER PI ; imprime 3.14159265359

## Entrada/Saída

### ESCREVER (esc)

     ESCREVER “texto” ; imprime “texto” em uma caixa de diálogo
     ESCREVER 5 + 10 ; imprime 15

### LER

     ESCREVER LER “Valor de entrada?” ; solicita e imprime uma cadeia de caracteres em uma caixa de diálogo
     ESCREVER REAL (LER “Primeiro número?”) + REAL (LER “Segundo número?”) ; calculadora básica

## ESPERAR

     ESPERAR 1000 ; espera 1000 ms (1 segundo)

## GLOBAL

Definir variáveis globais usadas em procedimentos.

     GLOBAL sobre
     sobre = “LibreLogo”

     APRENDER exemplo
       ESCREVER sobre
       GLOBAL sobre ; se quisermos usar e adicionar um novo valor
       sobre = “novo valor da variável global”
     FIM

     exemplo
     ESCREVER sobre

## Funções

### ALEATÓRIO

     ESCREVER ALEATÓRIO 100 ; número real aleatório (0 <= x < 100)
     ESCREVER ALEATÓRIO “texto” ; letra aleatória de “texto”
     ESCREVER ALEATÓRIO [1, 2] ; elemento aleatório da lista (1 ou 2)

### INT

     ESCREVER INT 3.8 ; imprime 3 (parte inteira de 3.8)
     ESCREVER INT ALEATÓRIO 100 ; número inteiro aleatório (0 <= x < 100)
     ESCREVER INT “7” ; converte o parâmetro da cadeia para inteiro

### REAL

     ; converte o parâmetro da cadeia de texto num número real
     ESCREVER 2 * REAL “5.5” ; imprime 11.0

### STR

     ; converte o parâmetro numérico numa cadeia de texto
     ESCREVER “Resultado: ” + STR 5 ; imprime “Resultado: 5”
     ESCREVER 10 * STR 5 ; imprime 5555555555

### RAIZ

     ESCREVER RAIZ 100 ; imprime 10, a raiz quadrada de 100

### SEN

     ESCREVER SEN 90 * PI/180 ; imprime 1.0 (o seno de 90° em radianos)

### COS

     ESCREVER COS 0 * PI/180 ; imprime 1.0 (o cosseno de 0° em radianos)

### LOG10

     ESCREVER LOG10 100 ; imprime 2.0 (logaritmo de 100 na base 10)

### ARRED

     ESCREVER ARRED 3.8 ; imprime 4 (arredondamento de 3.8)
     ESCREVER ARRED ALEATÓRIO 100 ; número inteiro aleatório (0 <= x <= 100)

### ABS

     ESCREVER ABS -10 ; imprime 10, o valor absoluto de -10

### CONTAGEM

     ESCREVER CONTAGEM “texto” ; imprime 5, o número de caracteres em “texto”
     ESCREVER CONTAGEM [1, 2, 3] ; imprime 3, o tamanho da lista

### CONJUNTO

     ; Converte a lista para um conjunto Python
     ESCREVER CONJUNTO [4, 5, 6, 6] ; imprime {4, 5, 6}
     ESCREVER CONJUNTO [4, 5, 6, 6] | CONJUNTO [4, 1, 9] ; imprime {1, 4, 5, 6, 9}, união
     ESCREVER CONJUNTO [4, 5, 6, 6] & CONJUNTO [4, 1, 9] ; imprime {4}, interseção
     ESCREVER CONJUNTO ([4, 5, 6, 6]) - CONJUNTO [4, 1, 9] ; imprime {5, 6}, diferença
     ESCREVER CONJUNTO [4, 5, 6, 6] ^ CONJUNTO [4, 1, 9] ; imprime {1, 5, 6, 9}, diferença simétrica

### INTERVALO

     ; geração de listas ao estilo do Python
     ESCREVER LISTA INTERVALO 10 ; imprime [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     ESCREVER LISTA INTERVALO 3 10 ; imprime [3, 4, 5, 6, 7, 8, 9]
     ESCREVER LISTA INTERVALO 3 10 3 ; imprime [3, 6, 9]

     PARA i EM INTERVALO 10 50 10 [ ; laço para [10, 20, 30, 40]
       PARAFRENTE i
       PARAESQUERDA 90
     ]

### LISTA

     ; remover os elementos repetidos de uma lista utilizando conversão de conjunto e de lista
     ESCREVER LISTA (CONJUNTO [1, 3, 5, 5, 2, 1]) ; imprime [1, 3, 5, 2]

### TUPLA

Conversão para tupla do Python (lista não-modificável)

     ESCREVER TUPLA [4, 5]

### ORDENADO

Retorna uma lista ordenada.

     ESCREVER ORDENADO [5, 1, 3, 4] ; imprime [1, 3, 4, 5]

### SUBST

Substituir sequências de caracteres usando padrões regex (expressões regulares).

     ESCREVER SUBST (“t”, “T”, “texto”) ; imprime “Texto”, substituindo “t” por “T”
     ESCREVER SUBST (“(.)”, “\\1\\1”, “texto”) ; imprime “tteexxttoo”, duplicando todos os caracteres

### PESQUISA

Procurar padrões de sequências de caracteres usando padrões regex.

     SE PESQUISA (“\w”, word) [ ESCREVER “Letra na palavra.” ]

### LOCALIZATUDO

Localizar todas as sequências de caracteres no texto de entrada, coincidentes com o padrão regex dado.

     ESCREVER LOCALIZATUDO(“\w+”, “Cães, gatos.”) ; imprime [“Cães”, “gatos”], a lista das palavras.

### MÍNIMO

     ESCREVER MÍNIMO [1, 2, 3] ; imprime 1, o menor elemento da lista

### MÁXIMO

     ESCREVER MÁXIMO [1, 2, 3] ; imprime 3, o maior elemento da lista

## Constantes de cor

     MUDARCORDOLÁPIS “PRATA” ; define a cor pelo nome
     MUDARCORDOLÁPIS [1] ; define a cor por identificador
     MUDARCORDOLÁPIS “~PRATA” ; escolhe uma cor prateada aleatória

Identificador | Nome
--- | ---
0 | PRETO
1 | PRATA
2 | CINZA
3 | BRANCO
4 | CASTANHO
5 | VERMELHO
6 | ROXO
7 | MAGENTA
8 | VERDE
9 | LIMA
10 | OLIVA
11 | AMARELO
12 | MARINHO
13 | AZUL
14 | TURQUESA
15 | CIANO
16 | ROSA
17 | TOMATE
18 | LARANJA
19 | OURO
20 | VIOLETA
21 | CELESTE
22 | CHOCOLATE
23 | MARROM
24 | INVISÍVEL