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

O ícone da «varinha mágica» define um layout de duas páginas para a edição do programa, expande e converte para maiúsculas os comandos Logo abreviados e em minúsculas no documento do Writer. Alterar o idioma do documento (LibreOffice - Preferências Ferramentas - Opções - Idiomas e configurações regionais - Geral - Ocidental) e clique neste ícone para traduzir o programa Logo para o idioma selecionado.

## 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

A forma de tartaruga do LibreLogo é um objeto de desenho normal de tamanho fixo. Também é possível posicioná-la e rodá-la da forma habitual, utilizando o rato e o ícone «Rodar» da barra de ferramentas «Propriedades do objeto de desenho». Altere as definições de «Espessura da linha», «Cor da linha» e «Cor da área» da forma de tartaruga para definir os atributos PENSIZE, PENCOLOR e FILLCOLOR do 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

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

     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 ; a espessura da linha é de 100 pontos
     PENSIZE ANY ; equivalente a 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

Consulte também «Grupo» na Ajuda do LibreOffice Writer.

     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

Necessitamos da sua ajuda!