Conteúdo

# LibreLogo

O LibreLogo é um ambiente de programação simples, similar ao Logo, com gráficos de vetor turtle para ensinar a programar computação (programação e processamento de texto), DTP e conceção de gráficos. Consulte http://www.numbertext.org/logo/librelogo.pdf.

## Barra de ferramentas LibreLogo

A barra de ferramentas LibreLogo (Ver - Barras de ferramentas - Logo) contém ícones de movimento de tartaruga, início e paragem do programa, página inicial e limpar ecrã, de tradução/destaque da sintaxe bem como uma barra de inserção (linha de comandos).

## Ícones de movimento

São equivalentes aos comandos Logo “FORWARD 10”, “BACK 10”, “LEFT 15”, “RIGHT 15”. Clicar num destes ícones irá também focar a deslocação da forma para a sua posição.

## Iniciar o programa Logo

Clique no ícone “Iniciar o programa Logo” para executar ou texto (ou a seleção) de um documento do Writer com o LibreLogo. Num documento vazio será inserido e executado um programa de exemplo.

Clique no ícone “Parar” para parar a execução do programa.

## Home

Clique no ícone “Home” para redefinir a posição e tamanho da tartaruga.

## Limpar ecrã

Clique no ícone "Limpar ecrã" para remover os objetos de desenho no documento.

## Editor de programas/Destaque da sintaxe/Tradução

The “magic wand” icon sets 2-page layout for program editing, expands and converts to uppercase the abbreviated, lowercase Logo commands in the Writer document. Change the language of the document (LibreOffice - Preferences Tools - Options - Languages and Locales - General - Western) and click on this icon to translate the Logo program to the selected language.

## Linha de comandos

Prima Enter na linha de comandos para executar o seu conteúdo. Para parar o programa, utilize o ícone "Parar".

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

     FORWARD 200 LEFT 89

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

## Interface gráfica para definições básicas de tartaruga

Turtle shape of LibreLogo is a normal fixed size drawing object. You can position and rotate it on standard way, too, using the mouse and the Rotate icon of the Drawing Object Properties toolbar. Modify Line Thickness, Line Color and Area Color settings of the turtle shape to set PENSIZE, PENCOLOR and FILLCOLOR attributes of LibreLogo.

## Edição do programa

Os desenhos e programas LibreLogo usam o mesmo documento Writer. A tela LibreLogo está na primeira página do documento Writer. Pode inserir uma quebra de página antes dos programas LibreLogo, e definir a ampliação usando o ícone da "varinha mágica" na barra de ferramentas Logo, e também mudar o tamanho da letra para uma disposição confortável de duas páginas para a programação LibreLogo: a página esquerda (primeira) é a tela, e a página da direita (segunda) é para o editor de programas LibreLogo.

# Linguagem de programação LibreLogo

O LibreLogo é uma linguagem de programação do tipo Logo, traduzida em diversos idiomas pela comunidade do LibreOffice. O LibreLogo é compatível com os anteriores sistemas Logo, como por exemplo os programas que são utilizados no ensino de programação.

     TO triangle :size
     REPEAT 3 [
       FORWARD :size
       LEFT 120
     ]
     END

     triangle 10 triangle 100 triangle 200

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

- O membros da lista são separados por vírgula: POSITION [0, 0]

- Os blocos e listas do programa são diferentes

- - Os blocos do programa precisam de espaço ou nova linha nos parênteses: REPEAT 10 [ FORWARD 10 LEFT 36 ]

  - As listas precisam de parênteses fechados: POSITION [0, 0] em vez de POSITION [ 0, 0 ]

- As declarações de funções em uma só linha não são permitidas (TO e END precisam de novas linhas).

## Outras funções LibreLogo

- Os dois pontos são opcionais antes do nome das variáveis.

       TO triangle size
         REPEAT 3 [ FORWARD size LEFT 120 ]
       END

- A notação de cadeias de texto aceita a sintaxe e a ortografia Python.

       PRINT "palavra ; sintaxe original Logo
       PRINT “Texto aleatório” ; ortografia, Writer
       PRINT 'Texto aleatório' ; sintaxe Python

- Manipulação de linhas e listas Python

       PRINT “text”[2] ; imprime “x”
       PRINT “text”[1:3] ; imprime “ex”

- Ciclo FOR do tipo Python

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

       x = 15
       PRINT x

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

       PRINT FILLCOLOR
       p = POSITION
       PRINT p
       REPEAT 10 [ POSITION ANY POSITION p ]

- Parênteses na invocação de funções

       TO star size color
       FILLCOLOR color
       REPEAT 5 [ LEFT 72 FORWARD size RIGHT 144 FORWARD size ]
       FILL
       END

       star 100 “red”
       star(100, “green”)
       star(100, “blue”)

# Comandos LibreLogo

## Sintaxe básica

### Distinção de maiúsculas

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

     PRINT “Olá, Mundo!”
     print “Olá, Mundo, novamente!”

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

     a = 5
     A = 7
     PRINT a
     PRINT A

### Linhas do programa

Lines of a LibreLogo program are paragraphs in the Writer document. A program line can contain multiple commands:

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

### Comentários

O ponto e vírgula serve para identificar as linhas ou parte delas como comentários (parágrafo):

     ; comentário
     PRINT 5 * 5 ; comentário

### Quebrar linhas do programa em vários parágrafos

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

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

## Movimentação

### FORWARD (fd)

     FORWARD 10 ; move para a frente em 10pt (1pt = 1/72 polegadas)
     FORWARD 10pt ; ver acima
     FORWARD 0.5in ; move para a frente em 0.5 polegadas (1 polegada = 2.54 cm)
     FORWARD 1" ; ver acima
     FD 1mm
     FD 1cm

### BACK (bk)

     BACK 10 ; move para trás 10pt

### LEFT (lt)

     LEFT 90 ; gira 90 graus para a direita
     LEFT 90° ; ver acima
     LT 3h ; ver acima (posição do relógio)
     LT any ; gira aleatoriamente

### RIGHT (rt)

     RIGHT 90 ; gira 90 graus para a esquerda

### PENUP (pu)

     PENUP ; a tartaruga move-se sem desenhar

### PENDOWN (pd)

     PENDOWN ; a tartaruga move-se e desenha

### POSITION (pos)

     POSITION [0, 0] ; roda e move a tartaruga para o canto superior esquerdo
     POSITION PAGESIZE ; roda e move a tartaruga para o canto inferior direito
     POSITION [PAGESIZE[0], 0] ; roda e move a tartaruga para o canto superior direito
     POSITION ANY ; roda e move a tartaruga aleatoriamente

### HEADING (seth)

     HEADING 0 ; roda para o norte
     HEADING 12h ; consulte acima
     HEADING [0, 0] ; roda para o canto superior esquerdo
     HEADING ANY ; roda aleatoriamente

## Outros comandos

### HIDETURTLE (ht)

     HIDETURTLE ; oculta a tartaruga (até que utilize o comando showturtle)

### SHOWTURTLE (st)

     SHOWTURTLE ; mostra a tartaruga

### HOME

     HOME ; repõe a posição inicial da tartaruga

### CLEARSCREEN (cs)

     CLEARSCREEN ; remove os objetos de desenho do documento

### FILL e CLOSE

     FILL ; fecha e preenche a linha ou pontos da forma atual
     CLOSE ; fecha a forma de linha atual ou une os pontos da forma

Exemplo: para preencher um triângulo

     FORWARD 50 LEFT 120 FORWARD 50 FILL

Exemplo: para desenhar um triângulo

     FORWARD 50 LEFT 120 FORWARD 50 CLOSE

## Definições de linha

### PENSIZE (ps)

     PENSIZE 100 ; line thickness is 100 points
     PENSIZE ANY ; equivalent of PENSIZE RANDOM 10

### PENCOLOR/PENCOLOUR (pc)

     PENCOLOR “red” ; define a cor vermelha (por nome da cor, consulte constantes de cor)
     PENCOLOR [255, 255, 0] ; define a cor amarela (lista RGB)
     PENCOLOR 0xffff00 ; define a cor amarela (hexadecimal)
     PENCOLOR 0 ; define a cor preto (0x000000)
     PENCOLOR ANY ; define aleatoriamente a cor
     PENCOLOR [5] ; define a cor vermelha (por identificador, consulte constantes de cor)
     PENCOLOR “invisible” ; define a cor transparente para formas sem contornos
     PENCOLOR “~red” ; define um vermelho aleatório

### PENTRANSPARENCY

     PENTRANSPARENCY 80 ; definir a transparência da cor real da caneta para 80%

### PENCAP/LINECAP

     PENCAP “none” ; sem fim de linha (padrão)
     PENCAP “round” ; fim de linha redondo
     PENCAP “square” ; fim de linha quadrado

### PENJOINT/LINEJOINT

     PENJOINT “rounded” ; junção de linha redonda (padrão)
     PENJOINT “miter” ; junção de linha precisa
     PENJOINT “bevel” ; junção de linha bisel
     PENJOINT “none” ; sem junção de linha

### PENSTYLE

     PENSTYLE “solid” ; linha sólida (padrão)
     PENSTYLE “dotted” ; linha pontilhada
     PENSTYLE “dashed” ; linha tracejada

     ; padrão personalizado de acordo com estes argumentos:
     ; – número de pontos na proximidade
     ; – tamanho do ponto
     ; – número de traços na proximidade
     ; – 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 ao pensize)

     PENSTYLE [3, 1mm, 2, 4mm, 2mm, 2] ; ...––...––...––

## Definições de preenchimento

### FILLCOLOR/FILLCOLOUR (fc)

     FILLCOLOR “blue” ; preenche com a cor azul, consulte também PENCOLOR
     FILLCOLOR “invisible” CIRCLE 10 ; cria um círculo não preenchido
     FILLCOLOR [“blue”, “red”] ; cria um gradiente entre azul e vermelho
     FILLCOLOR [[255, 255, 255], [255, 128, 0]] ; cria um gradiente entre branco e cor de laranja
     FILLCOLOR [“blue”, “red”, 1, 0, 0] ; cria um gradiente axial (com as definições de rotação e contornos especificadas), valores possíveis: 0-5 = linear, axial, radial, elíptico, quadrado e retângular
     FILLCOLOR [“red”, “blue”, 0, 90, 20] ; cria um gradiente linear com 20% de contorno, e com um ângulo de 90 graus a partir da cabeça da tartaruga
     FILLCOLOR [“red”, “blue”, 0, 90, 20, 0, 0, 200, 50] ; cria um gradiente com intensidade entre 200% e 50%
     FILLCOLOR [ANY, ANY, 2, 0, 0, 50, 50] ; cria um gradiente radial com cores aleatórias e posicionado verticalmente e horizontalmente a 50-50% a partir do centro

### FILLTRANSPARENCY

     FILLTRANSPARENCY 80 ; definir a cor real de prenchimento para 80%
     FILLTRANSPARENCY [80] ; definir o gradiente linear de transparência de 80% para 0%
     FILLTRANSPARENCY [80, 20] ; definir o gradiente linear de transparência de 80% para 20%
     FILLTRANSPARENCY [80, 20, 1, 90] ; definir o gradiente axial de transparência rodado com 90 graus da cabeça efetiva da tartaruga
     FILLTRANSPARENCY [80, 20, 2, 0, 20, 50, 50] ; definir o gradiente radial de transparência de 80% no exterior para transparência de 20% interior com 20% de margem, e com 50-50% posições horizontal e vertical do centro

### FILLSTYLE

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

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

     FILLSTYLE [2, “green”, 3pt, 15°] ; tracejados cruzados verdes (15 graus)

## Objetos de desenho

### CIRCLE

     CIRCLE 100 ; desenha um círculo (diâmetro = 100pt)

### ELLIPSE

     ELLIPSE [50, 100] ; desenha um elipse (50x100pt)
     ELLIPSE [50, 100, 2h, 12h] ; desenha um setor elíptico (no sentido horário das 2h até às 12h)
     ELLIPSE [50, 100, 2h, 12h, 2]  ; desenha um segmento elíptico
     ELLIPSE [50, 100, 2h, 12h, 3]  ; desenha um arco elíptico

### SQUARE

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

### RECTANGLE

     RECTANGLE [50, 100] ; desenha um retângulo (50×100pt)
     RECTANGLE [50, 100, 10] ; desenha um retângulo com os cantos arredondados

### POINT

     POINT ; desenha um ponto com o tamanho e a cor do pincel

CLOSE pode unir os últimos pontos, FILL pode preencher a forma definida pelos pontos. Por exemplo, é possível criar uma estrela “flat” a partir do seu centro.

     PENUP
     REPEAT 5 [
       FORWARD 80
       POINT
       BACK 80
       RIGHT 36
       FORWARD 50
       POINT
       BACK 50
       RIGHT 120
     ] FILL

### LABEL

     LABEL “texto” ; imprime texto na posição da tartaruga
     LABEL 'texto' ; ver acima
     LABEL "texto ; ver acima (só para palavras únicas)

### TEXT

     CIRCLE 10 TEXT “texto” ; define o texto do objeto de desenho atual

## Definições do tipo de letra

### FONTCOLOR/FONTCOLOUR

     FONTCOLOR “green” ; define a cor do tipo de letra

### FONTFAMILY

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

### FONTSIZE

     FONTSIZE 12 ; define 12pt

### FONTWEIGHT

     FONTWEIGHT “bold” ; define o texto como negrito
     FONTWEIGHT “normal” ; define o texto como normal

### FONTSTYLE

     FONTSTYLE “italic” ; define o texto como itálico
     FONTSTYLE “normal” ; define o texto como normal

## PICTURE (pic)

PICTURE serve para

- agrupar formas;

- iniciar novas formas de linhas;

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

- mantendo a consistência das posições e formas de linhas na margem esquerda.

### Agrupamento de formas

     ; PICTURE [ Comandos LibreLogo ]
     PICTURE [ FORWARD 100 CIRCLE 100 ] ; agrupa na forma de árvore

See also “Group” in LibreOffice Writer Help.

     TO tree location
       PENUP POSITION location HEADING 0 PENDOWN
       PICTURE [ FORWARD 100 CIRCLE 100 ] ; agrupa na forma de árvore
     END

     PICTURE [ tree [230, 400] tree [300, 400] ] ; formas agrupadas em forma agrupada

### Iniciar novas formas de linhas

     PICTURE ; inicia uma nova forma de linha
     FORWARD 10 PICTURE FORWARD 10 ; duas formas de linha

### Guardar imagens SVG

     PICTURE “exemplo.svg” [ CIRCLE 5 ] ; guarda a imagem no formato SVG, na pasta do utilizador
     PICTURE “Desktop/exemplo.svg” [ FORWARD 100 CIRCLE 5 ] ; como acima, mas com caminho relativo
     PICTURE “/home/utilizador/exemplo.svg” [ CIRCLE 5 ] ; caminho absoluto para Unix/Linux
     PICTURE “C:\exemplo.svg” [ CIRCLE 5 ] ; caminho absoluto para Windows

### Guardar animações SVG/SMIL (desenho com comandos SLEEP)

     PICTURE “animação.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 ] ; guarda como animação SVG/SMIL (consulte também SLEEP)
     PICTURE “animação2.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 SLEEP 2000 ] ; como acima, mas SLEEP obriga a um ciclo: após 2 segundos a animação SVG é aberta nos navegadores compatíveis com SMIL

### Consistência na margem esquerda

Utilizar PICTURE para manter a consistência das posições e formas de linhas na margem esquerda do Writer:

     PICTURE [ CIRCLE 20 POSITION [-100, 100] CIRCLE 20 ]

## Ciclos

### REPEAT

     ; REPEAT número[ comandos ]

     REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ] ; repete 10 vezes

     ; número é opcional

     REPEAT [ POSITION ANY ] ; ciclo sem fim

### REPCOUNT

Variável de ciclo (também nos ciclos FOR e WHILE).

     REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]

### FOR IN

Ciclo para os elementos da lista:

     FOR i IN [1, 5, 7, 9, 11] [
       FORWARD i
       LEFT 90
     ]

Ciclo dos caracteres numa sequência de caracteres:

     FOR i IN “texto” [
       LABEL i
       FORWARD 10
     ]

### WHILE

     WHILE TRUE [ POSITION ANY ] ; ciclo sem fim
     WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ] ; igual a REPEAT 10 [ ... ]

### BREAK

Para o ciclo.

     REPEAT [ ; ciclo sem fim
       POSITION ANY
       IF REPCOUNT = 100 [ BREAK ]  ; equivalente a REPEAT 100 [ ... ]
     ]

### CONTINUE

Ir para a próxima iteração do ciclo.

     REPEAT 100 [
       POSITION ANY
       IF REPCOUNT % 2 = 0 [ CONTINUE ]
       CIRCLE 10 ; cria círculos a cada 2.º posição
     ]

## Condições

### IF

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

     IF a < 10 [ PRINT “Pequeno” ]
     IF a < 10 [ PRINT “Pequeno” ] [ PRINT “Grande” ]

### AND, OR, NOT

Operadores lógicos.

     IF a < 10 AND NOT a = 5 [ PRINT “0, 1, 2, 3, 4, 6, 7, 8 or 9” ]
     IF a < 10 AND a != 5 [ PRINT “0, 1, 2, 3, 4, 6, 7, 8 or 9” ] ; como acima

## Subrotinas

### TO, END

Nova palavra (ou procedimento).

     TO triangle
       REPEAT 2 [ FORWARD 100 RIGHT 120 ] FILL
     END

     REPEAT 10 [ triangle PENUP POSITION ANY PENDOWN ]

### OUTPUT

Devolve o valor da função.

     TO randomletter
       OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”
     END

     PRINT randomletter + randomletter + randomletter ; imprime aleatoriamente 3 letras da sequência

### STOP

Regressar do procedimento.

     TO example number
       IF number < 0 [ STOP ]
       PRINT SQRT number ; imprime a raiz quadrada
     ]

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

## Variáveis padrão

### ANY

Valor aleatório padrão das cores, etc.

     PENCOLOR ANY ; cor aleatória da caneta

### TRUE

Valor lógico.

     WHILE TRUE [ POSITION ANY ] ; ciclo sem fim
     PRINT TRUE ; imprimir verdadeiro

### FALSE

Valor lógico.

     WHILE NOT FALSE [ POSITION ANY ] ; ciclo sem fim
     PRINT FALSE ; imprime falso

### PAGESIZE

     PRINT PAGESIZE ; imprimir lista do tamanho de página em pontos, por ex. [595.30, 841.89]

### PI/π

     PRINT PI ; imprime 3.14159265359

## Input/Output

### PRINT

     PRINT “texto” ; imprime “texto” numa caixa de diálogo
     PRINT 5 + 10 ; imprime 15

### INPUT

     PRINT INPUT “valor?” ; pede e imprime uma cadeia de texto numa caixa de diálogo
     PRINT FLOAT (INPUT “Primeiro número?”) + FLOAT (INPUT “Segundo número?”) ; é uma calculadora básica

## SLEEP

     SLEEP 1000 ; espera 1000 ms (1 segundo)

## GLOBAL

Definir variáveis globais usadas em procedimentos.

     GLOBAL about
     about = “LibreLogo”

     TO example
       PRINT about
       GLOBAL about ; se quisermos adicionar um novo valor
       about = “novo valor da variável global”
     END

     example
     PRINT about

## Funções

### RANDOM

     PRINT RANDOM 100 ; número flutuante aleatório (0 <= x < 100)
     PRINT RANDOM “texto” ; letra aleatório do “texto”
     PRINT RANDOM [1, 2] ; elemento aleatório da lista (1 ou 2)

### INT

     PRINT INT 3.8 ; imprime 3 (parte inteira de 3,8)
     PRINT INT RANDOM 100 ; número inteiro aleatório (0 <= x < 100)
     PRINT INT “7” ; converte o parãmetro da cadeia para inteiro

### FLOAT

     ; converte o parâmetro da cadeia de texto num número flutuante
     PRINT 2 * FLOAT “5.5” ; imprime 11.0

### STR

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

### SQRT

     PRINT SQRT 100 ; imprime 10, a raiz quadrada de 100

### SIN

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

### COS

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

### LOG10

     PRINT LOG10 100 ; imprime 2.0 (logaritmo comum de 100)

### ROUND

     PRINT ROUND 3.8 ; imprime 4 (arredondamento de 3,8)
     PRINT ROUND RANDOM 100 ; número inteiro aleatório (0 <= x <= 100)

### ABS

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

### COUNT

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

### SET

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

### RANGE

     ; geração de lista ao estilo Python
     PRINT LIST RANGE 10 ; print [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     PRINT LIST RANGE 3 10 ; print [3, 4, 5, 6, 7, 8, 9]
     PRINT LIST RANGE 3 10 3 ; print [3, 6, 9]

     FOR i IN RANGE 10 50 10 [ ; loop for [10, 20, 30, 40]
       FORWARD i
       LEFT 90
     ]

### LIST

     ; remover os elementos repetidos de uma lista utilizando conjunto e lista
     PRINT LIST (SET [1, 3, 5, 5, 2, 1]) ; imprime [1, 3, 5, 2]

### TUPLE

Conversão para Python tuple (lista não modificável)

     PRINT TUPLE [4, 5]

### SORTED

Devolve uma lista ordenada.

     PRINT SORTED [5, 1, 3, 4] ; imprime [1, 3, 4, 5]

### SUB

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

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

### SEARCH

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

     IF SEARCH (“\w”, "word") [ PRINT “Letra na palavra” ]

### FINDALL

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

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

### MIN

     PRINT MIN [1, 2, 3] ; imprime 1, o menor elemento da lista

### MAX

     PRINT MAX [1, 2, 3] ; imprime 3, o maior elemento da lista

## Constantes de cor

     PENCOLOR “SILVER” ; define a cor pelo nome
     PENCOLOR [1] ; define a cor por identificador
     PENCOLOR “~SILVER” ; escolhe uma cor prateada aleatória

Identificador | Nome
--- | ---
0 | BLACK
1 | SILVER
2 | GRAY/GREY
3 | WHITE
4 | MAROON
5 | RED
6 | PURPLE
7 | FUCHSIA/MAGENTA
8 | GREEN
9 | LIME
10 | OLIVE
11 | YELLOW
12 | NAVY
13 | BLUE
14 | TEAL
15 | AQUA
16 | PINK
17 | TOMATO
18 | ORANGE
19 | GOLD
20 | VIOLET
21 | SKYBLUE
22 | CHOCOLATE
23 | BROWN
24 | INVISIBLE