Contenido

# LibreLogo

LibreLogo es un ambiente de programación al estilo del lenguaje Logo, simple y traducido, con gráficos vectoriales «de tortuga». Está diseñado para la enseñanza de computación (programación y procesamiento de textos), publicación electrónica y diseño gráfico. Consulte http://www.numbertext.org/logo/librelogo.pdf.

## Barra de herramientas de LibreLogo

La barra de herramientas de LibreLogo (Ver ▸ Barras de herramientas ▸ Logo) contiene iconos para mover la tortuga, iniciar y detener el programa, ir al inicio, vaciar la pantalla, editar el código, colorear la sintaxis y traducirla, así como una barra de entrada de datos (línea de órdenes).

## Iconos para mover la tortuga

Son equivalentes a las órdenes de Logo «ADELANTE 10», «ATRÁS 10», «IZQUIERDA 15», «DERECHA 15». Al pulsar en uno de los iconos se enfocará también la forma de la tortuga, desplazando la página a su posición.

## Iniciar programa de Logo

Pulse en el icono «Iniciar programa de Logo» para ejecutar todo el texto —o la selección— en el documento de Writer como un programa de LibreLogo. Si utiliza este botón en un documento vacío, se insertará y ejecutará un programa de ejemplo.

Pulse en el icono «Detener» para parar la ejecución del programa.

## Inicio

Pulse en el icono «Inicio» para restablecer la posición y la configuración de la tortuga.

## Limpiar la pantalla

Pulse en el icono «Limpiar la pantalla» para quitar los objetos de dibujo del documento.

## Editor de programas/coloración sintáctica/traducción

El icono «varita mágica» define una disposición de dos páginas para la edición de programas y expande y convierte en mayúsculas las órdenes abreviadas y en minúsculas que escriba en el documento de Writer. Modifique el idioma del documento ()LibreOffice ▸ Preferencias Herramientas ▸ Opciones ▸ Idiomas y regiones ▸ Generales ▸ Occidental) y pulse en este icono para que el programa de Logo se traduzca a la lengua seleccionada.

## Línea de órdenes

Oprima Intro en la línea de órdenes para ejecutar su contenido. Para detener el programa, pulse en el icono «Detener».

Mantenga oprimida la tecla Intro para repetir la línea de órdenes, por ejemplo, en la siguiente secuencia de órdenes:

     ADELANTE 200 IZQUIERDA 89

Para restablecer el cuadro de órdenes, púlselo tres veces con el ratón o presione ⌘A Ctrl + E para seleccionar las órdenes anteriores, tras lo cual podrá escribir nuevas.

## Interfaz gráfica de usuario de la configuración básica de la tortuga

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.

## Edición de programas

Los dibujos y los programas de LibreLogo usan el mismo documento de Writer. El lienzo de LibreLogo se ubica en la primera página del documento de Writer. Puede insertar un salto de página antes de los programas de LibreLogo y configurar el zum de visualización para ver dos páginas a la vez con el icono «Varita mágica», y así ver el lienzo en la primera página y el código en la segunda.

# Lenguaje de programación LibreLogo

LibreLogo es un lenguaje de programación similar a Logo y traducido a varios idiomas por la comunidad de LibreOffice. Es retrocompatible con sistemas Logo más antiguos, como los que se suelen utilizar en programas educativos, por ejemplo.

     HACIA triángulo :size
     REPETIR 3 [
       ADELANTE :size
       IZQUIERDA 120
     ]
     FIN

    triángulo 10 triángulo 100 triángulo 200

## Diferencias con el lenguaje de programación Logo

- Los miembros de la expresión van separados por comas: POSICIÓN [0, 0]

- Los bloques de programa y las listas son diferentes

- - Los bloques de programa necesitan un espacio o un salto de renglón junto a los corchetes: REPETIR 10 [ ADELANTE 10 IZQUIERDA 36 ]

  - Las listas necesitan paréntesis sin espacios: POSICIÓN [0, 0] en vez de POSICIÓN [ 0, 0 ]

- No se admiten las declaraciones de funciones en un solo renglón (A y FIN necesitan estar en renglones aparte).

## Otras funcionalidades de LibreLogo

- Los dos puntos son opcionales antes de los nombres de variables.

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

- La notación de las cadenas también admite la sintaxis ortográfica y la de Python.

       PRINT "palabra ; sintaxis original de  Logo
       PRINT “Texto arbitrario.” ; ortografía, Writer
       PRINT 'Texto arbitrario.' ; sintaxis de Python

- Manipulación de listas y cadenas de Python

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

- Bucle FOR similar al de Python

- Declaración de variables similar a la de Python:

       x = 15
       ESCRIBIR x

- No hay funciones de consulta adicionales:

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

- Disposición de paréntesis alternativa en llamadas a funciones

       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”)

# Órdenes de LibreLogo

## Sintaxis básica

### Distinción entre mayúsculas y minúsculas

Las órdenes y las constantes de color no distinguen entre mayúsculas y minúsculas:

     PRINT “Hola, Mundo!”
     print “Hola, Mundo, de nuevo!”

Los nombres de las variables distinguen entre mayúsculas y minúsculas:

     a = 5
     A = 7
     PRINT a
     PRINT A

### Renglones del programa

Los renglones de un programa de LibreLogo son párrafos en el documento de Writer. Un renglón del programa puede contener varias órdenes:

     PRINT “Hola, Mundo!” PRINT “LibreLogo”

### Comentarios

El punto y coma sirve para identificar las líneas (o parte de ellas) como comentarios:

     ; algunos comentarios
     PRINT 5 * 5 ; algunos comentarios

### Dividir los renglones del programa en varios párrafos

Es posible interrumpir un renglón del programa para continuar en otro, usando una virgulilla al final de la línea:

     PRINT “Este es un mensaje de advertencia ” + ~
           “muy largo”

## Mover la tortuga

### FORWARD (fd)

     ADELANTE 10 ; avanza 10 pt (1 pt = 1⁄72 pulgadas)
     ADELANTE 10pt ; ver más arriba
     ADELANTE 0.5in ; avanza 0,5 pulgadas (1 pulgada = 2,54 cm)
     ADELANTE 1" ; ver más arriba
     AD 1mm
     AD 1cm

### BACK (bk)

     BACK 10 ; retrocede 10pt

### LEFT (lt)

     LEFT 90 ; gira 90 grados en sentido antihorario
     LEFT 90° ; ver más arriba
     LT 3h ; ver más arriba (posición del reloj)
     LT any ; gira de forma aleatoria

### RIGHT (rt)

     RIGHT 90 ; gira 90 grados en sentido horario

### PENUP (pu)

     PENUP ; la tortuga se moverá sin dibujar

### PENDOWN (pd)

     PENDOWN ; la tortuga se moverá dibujando

### POSICIÓN (pos)

     POSITION [0, 0] ; gira y se desplaza a la esquina superior izquierda
     POSITION PAGESIZE ; gira y se desplaza a la esquina inferior derecha
     POSITION [PAGESIZE[0], 0] ; gira y se desplaza a la esquina superior derecha
     POSITION ANY ; gira y se desplaza a una posición aleatoria

### HEADING (seth)

     HEADING 0 ; gira hacia el norte
     HEADING 12h ; ver más arriba
     HEADING [0, 0] ; gira hacia la esquina superior izquierda
     HEADING ANY ; gira en una dirección aleatoria

## Otras órdenes de la tortuga

### OCULTARTORTUGA/OCULTARME (ot)

     OCULTARTORTUGA ; oculta la tortuga (hasta que se utilice la orden MOSTRARTORTUGA)

### MOSTRARTORTUGA/MOSTRARME (mt)

     MOSTRARTORTUGA ; muestra la tortuga

### HOME

     INICIO ; restablece la posición inicial de la tortuga

### CLEARSCREEN (cs)

     CLEARSCREEN ; elimina los objetos de dibujo del documento

### FILL y CLOSE

     RELLENAR ; cierra y rellena la línea o los puntos de la forma actual
     CERRAR ; cierra la forma de la línea actual o une los puntos de la forma

Ejemplo. Para rellenar un triángulo:

     ADELANTE 50 IZQUIERDA 120 ADELANTE 50 RELLENAR

Ejemplo. Para dibujar un triángulo:

     ADELANTE 50 IZQUIERDA 120 ADELANTE 50 CERRAR

## Opciones de la pluma

### PENSIZE (ps)

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

### COLOR.LÁPIZ (cl)

     PENCOLOR “red” ; establece el color de la pluma en rojo (por nombre de color, ver constantes de colores)
     PENCOLOR [255, 255, 0] ; establece el color amarillo (lista RGB)
     PENCOLOR 0xffff00 ; establece el color amarillo (código hexadecimal)
     PENCOLOR 0 ; establece el color negro (0x000000)
     PENCOLOR ANY ; color aleatorio
     PENCOLOR [5] ; establece el color rojo (color por identificador, ver constantes de colores)
     PENCOLOR “invisible” ; establece el color invisible para formas sin contornos
     PENCOLOR “~red” ; establece un color rojo aleatorio

### PENTRANSPARENCY

     PENTRANSPARENCY 80 ; establece la transparencia del color de pluma actual en el 80%

### PENCAP/LINECAP

     PENCAP “none” ; sin final de línea (predeterminado)
     PENCAP “round” ; final de línea redondeado
     PENCAP “square” ; final de línea rectangular

### PENJOINT/LINEJOINT

     PENJOINT “rounded” ; unión de línea redondeada (predeterminado)
     PENJOINT “miter” ; unión de línea afilada
     PENJOINT “bevel” ; unión de línea biselada
     PENJOINT “none” ; sin unión de línea

### PENSTYLE

     PENSTYLE “solid” ; línea solida (predeterminado)
     PENSTYLE “dotted” ; línea punteada
     PENSTYLE “dashed” ; línea a rayas

     ; patrón punto-raya personalizado especificado por una lista con los siguientes argumentos:
     ; – número de puntos consecutivos
     ; – tamaño del punto
     ; – número de rayas consecutivas
     ; – tamaño de las rayas
     ; – distancia entre los puntos/rayas
     ; – tipo (opcional):
     ;   0 = los puntos son rectángulos (predeterminado)
     ;   2 = los puntos son cuadrados (los tamaños y las distancias son relativos al tamaño de pluma)

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

## Configuración de relleno

### FILLCOLOR/FILLCOLOUR (fc)

     COLOR.RELLENO “azul” ; rellenar con azul. Véase también COLOR.LÁPIZ
     COLOR.RELLENO “invisible” CÍRCULO 10 ; círculo sin relleno
     COLOR.RELLENO [“azul”, “rojo”] ; degradado entre rojo y azul
     COLOR.RELLENO [[255, 255, 255], [255, 128, 0]] ; entre blanco y naranja
     COLOR.RELLENO [“azul”, “rojo”, 1, 0, 0] ; definir degradado axial (con el giro y el borde configurados). Valores admitidos: 0-5 = degradado lineal, axial, radial, elíptico, cuadrado o rectangular
     COLOR.RELLENO [“rojo”, “azul”, 0, 90, 20] ; lineal con borde al 20 %, girado 90° a partir de la cabeza de la tortuga
     COLOR.RELLENO [“rojo”, “azul”, 0, 90, 20, 0, 0, 200, 50] ; de 200 % a 50 % de intensidad
     COLOR.RELLENO [ANY, ANY, 2, 0, 0, 50, 50] ; degradado radial con colores al azar y posiciones horizontal y vertical 50-50 % desde el centro

### FILLTRANSPARENCY

     FILLTRANSPARENCY 80 ; establece la transparencia del color de relleno actual en el 80%
     FILLTRANSPARENCY [80] ; establece la transparencia del degradado lineal desde el 80% hasta el 0%
     FILLTRANSPARENCY [80, 20] ; establece la transparencia del degradado lineal desde el 80% hasta el 20%
     FILLTRANSPARENCY [80, 20, 1, 90] ; establece la transparencia del degradado axial rotado un ángulo de 90 grados desde la cabeza de la tortuga
     FILLTRANSPARENCY [80, 20, 2, 0, 20, 50, 50] ; establece la transparencia del degradado axial desde el 80% de transparencia exterior al 20% de transparencia interior con un borde del 20% y posicionado horizontal y verticalmente 50-50% desde el centro

### FILLSTYLE

     FILLSTYLE 0 ; rellena sin trazado (predeterminado)
     FILLSTYLE 1 ; trazado simple negro (horizontal)
     FILLSTYLE 2 ; trazado simple negro (45 grados)
     FILLSTYLE 3 ; trazado simple negro (-45 grados)
     FILLSTYLE 4 ; trazado simple negro (vertical)
     FILLSTYLE 5 ; trazado cruzado rojo (45 grados)
     FILLSTYLE 6 ; trazado cruzado rojo (0 grados)
     FILLSTYLE 7 ; trazado cruzado azul (45 grados)
     FILLSTYLE 8 ; trazado cruzado azul (0 grados)
     FILLSTYLE 9 ; triple cruzado azul
     FILLSTYLE 10 ; trazado grueso negro (45 grados)

     ; trazado personalizado especificado por una lista con los siguientes argumentos:
     ; – estilo (1 = simple, 2 = doble, 3 = triple)
     ; – color
     ; – distancia
     ; – ángulo (grados)

     FILLSTYLE [2, “green”, 3pt, 15°] ; trazado cruzado verde (15 grados)

## Dibujar objetos

### CÍRCULO

     CÍRCULO 100 ; dibujar un círculo (con un diámetro de 100 puntos)

### ELIPSE

     ELLIPSE [50, 100] ; dibuja una elipse con diámetros 50 y 100
     ELLIPSE [50, 100, 2h, 12h] ; dibuja un sector elíptico (en sentido horario desde las 2 hasta las 12 horas)
     ELLIPSE [50, 100, 2h, 12h, 2]  ; dibuja un segmento elíptico
     ELLIPSE [50, 100, 2h, 12h, 3]  ; dibuja un arco elíptico

### CUADRADO

     CUADRADO 100 ; dibuja un cuadrado (tamaño = 100 pt)

### RECTÁNGULO

     RECTÁNGULO [50, 100] ; trazar un rectángulo (de 50 × 100 pt)
     RECTÁNGULO [50, 100, 10] ; trazar un rectángulo con las esquinas redondeadas

### PUNTO

     PUNTO ; dibuja un punto con el tamaño y el color de la pluma

Con CERRAR se pueden unir los últimos puntos, y con RELLENAR es posible colorear la forma definida por los puntos. Por ejemplo, puede trazar una estrella a partir de su centro.

     SUBIRLAPIZ
     REPETIR 5 [
       ADELANTE 80
       PUNTO
       ATRAS 80
       DERECHA 36
       ADELANTE 50
       PUNTO
       ATRAS 50
       DERECHA 120
     ] RELLENAR

### ETIQUETA

     LABEL “texto” ; imprime el texto en la posición de la tortuga
     LABEL 'texto' ; ver más arriba
     LABEL "texto ; ver más arriba (solo para una palabra)

### TEXTO

     CÍRCULO 10 TEXTO “texto” ; definir el texto del objeto de dibujo activo

## Configuración de tipos de letra

### COLOR.TEXTO/COLOR.LETRA

     COLOR.TEXTO “verde” ; establecer el color de la letra

### TIPO.LETRA/LETRA/FUENTE

     TIPO.LETRA “Linux Libertine G” ; establece la familia tipográfica
     TIPO.LETRA “Linux Libertine G:smcp=1” ; establece también la función tipográfica (versalitas)
     TIPO.LETRA “Linux Libertine G:smcp=1&onum=1” ; versalitas + cifras elzevirianas

### FONTSIZE

     FONTSIZE 12 ; establece 12pt

### FONTWEIGHT

     FONTWEIGHT “bold” ; establece el tipo de letra en negrita
     FONTWEIGHT “normal” ; establece el ancho de letra en normal

### FONTSTYLE

     ESTILO.LETRA “cursiva” ; establece la variante itálica
     ESTILO.LETRA “normal” ; establece la variante normal

## PICTURE (pic)

PICTURE es para

- agrupación de formas;

- inicio de formas de línea nuevas;

- guardar las imágenes SVG y las animaciones SVG/SMIL;

- manteniendo la coherencia de las posiciones y formas de línea en el margen izquierdo.

### Agrupación de formas

     ; IMAGEN [ órdenes_LibreLogo ]
     IMAGEN [ ADELANTE 100 CÍRCULO 100 ] ; forma semejante a un árbol agrupada

Consulte también «Grupo» en la ayuda de LibreOffice Writer.

     A tree location
       SINPLUMA POSICION location SENTIDO 0 CONPLUMA
       IMAGEN [ ADELANTE 100 CÍRCULO 100 ] ; forma semejante a un árbol agrupada
     FIN

     IMAGEN [ tree [230, 400] tree [300, 400] ] ; formas agrupadas dentro de una forma agrupada

### Iniciar nuevas formas de línea

     PICTURE ; empieza una nueva forma de línea
     FORWARD 10 PICTURE FORWARD 10 ; dos formas de línea

### Guardar imágenes SVG

     IMAGEN “ejemplo.svg” [ CÍRCULO 5 ] ; guarda el dibujo como una imagen SVG en la carpeta del usuario
     IMAGEN “Escritorio/ejemplo.svg” [ ADELANTE 100 CÍRCULO 5 ] ; como arriba, pero con una ruta relativa
     IMAGEN “/home/usuario/ejemplo.svg” [ CÍRCULO 5 ] ; ruta absoluta en Unix/Linux
     IMAGEN “C:\ejemplo.svg” [ CÍRCULO 5 ] ; ruta absoluta en Windows

### Guardar animaciones SVG/SMIL (dibujos con la orden ESPERA)

     IMAGEN “animación.svg” [ CÍRCULO 5 ESPERA 1000 CÍRCULO 99 ] ; guarda como una animación SVG/SMIL (vea también ESPERA)
     IMAGEN “animación2.svg” [ CÍRCULO 5 ESPERA 1000 CÍRCULO 99 ESPERA 2000 ] ; como arriba, pero utilizar ESPERA después del último objeto resultará en un bucle: después de 2 segundos la animación SVG vuelve a empezar en los navegadores compatibles con SMIL

### Coherencia en el borde izquierdo

Utilice IMAGEN para mantener la coherencia de las posiciones y las formas de líneas en el borde izquierdo del documento de Writer:

     IMAGEN [ CÍRCULO 20 POSICIÓN [-100, 100] CÍRCULO 20 ]

## Bucles

### REPETIR

     ; REPEAT número [ comandos ]

     REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ] ; repite 10 veces

     ; el número es opcional

     REPEAT [ POSITION ANY ] ; bucle infinito

### REPCOUNT

variable del bucle (también en los bucles FOR y WHILE).

     REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]

### FOR IN

Bucle para los elementos de la lista:

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

Bucle para los caracteres de una secuencia de caracteres:

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

### MIENTRAS

     WHILE TRUE [ POSITION ANY ] ; bucle infinito
     WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ] ; lo mismo que REPEAT 10 [ ... ]

### BREAK

Detiene el bucle.

     REPEAT [ ; bucle infinito
       POSITION ANY
       IF REPCOUNT = 100 [ BREAK ]  ; equivalente a REPEAT 100 [ ... ]
     ]

### CONTINUAR

Salta a la siguiente iteración del bucle.

     REPEAT 100 [
       POSITION ANY
       IF REPCOUNT % 2 = 0 [ CONTINUE ]
       CIRCLE 10 ; dibuja círculos en todas las segundas posiciones
     ]

## Condiciones

### SI

     ; IF condition [ true block ]
     ; SI condición [ bloque verdadero ] [ bloque falso ]

     IF a < 10 [ PRINT “Small” ]
     IF a < 10 [ PRINT “Small” ] [ PRINT “Big” ]

### Y, O, NO

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 anteriormente

## Subrutinas

### TO, END

Palabra nueva (o procedimiento).

     A triangle
       REPETIR 2 [ ADELANTE 100 DERECHA 120 ] RELLENAR
     FIN

     REPETIR 10 [ triangle SINPLUMA POSICIÓN CUALQUIERA CONPLUMA ]

### SALIDA

Devolver el valor de la función.

     TO randomletter
       OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”
     END

     PRINT randomletter + randomletter + randomletter ; imprime una secuencia de 3 caracteres aleatorios

### DETENER

Salida del procedimiento.

     TO example number
       IF number < 0 [ STOP ]
       PRINT SQRT number ; imprime la raíz cuadrada
     ]

     example 100
     example -1 ; sin salida ni error
     example 25

## Variables predeterminadas

### ANY

Valor aleatorio predeterminado de los colores, etc.

     PENCOLOR ANY ; color de pluma aleatorio

### TRUE

Valor lógico.

     WHILE TRUE [ POSITION ANY ] ; bucle infinito
     PRINT TRUE ; imprime verdadero

### FALSO

Valor lógico.

     WHILE NOT FALSE [ POSITION ANY ] ; bucle infinito
     PRINT FALSE ; imprime falso

### PAGESIZE

     PRINT PAGESIZE ; imprime la lista de tamaños de página en puntos, p.e.  [595.30, 841.89]

### PI/π

     ESCRIBIR PI ; muestra 3,14159265359

## Entrada/salida

### ESCRIBIR

     ESCRIBIR “texto” ; muestra “texto” en un diálogo
     ESCRIBIR 5 + 10 ; muestra 15

### ENTRADA

     ESCRIBIR ENTRADA “¿Valor de entrada?” ; pregunta y muestra una cadena de texto requerida por un diálogo
     ESCRIBIR FLOAT (ENTRADA “¿Primer número?”) + FLOAT (ENTRADA “¿Segundo número?”) ; calculadora sencilla

## ESPERA

     ESPERA 1000 ; espera durante 1000 ms (1 segundo)

## GLOBAL

Establecer las variables usadas en los procedimientos.

     GLOBAL about
     about = “LibreLogo”

     TO example
       PRINT about
       GLOBAL about ; cuando queremos añadir un nuevo valor
       about = “nuevo valor para la variable global”
     END

     example
     PRINT about

## Funciones

### ALEATORIO

     PRINT RANDOM 100 ; número decimal aleatorio (0 <= x < 100)
     PRINT RANDOM “texto” ; letra aleatoria de la palabra “texto”
     PRINT RANDOM [1, 2] ; elemento aleatorio de la lista (1 o 2)

### ENTERO

     PRINT INT 3.8 ; imprime 3 (la parte entera de 3,8)
     PRINT INT RANDOM 100 ; número aleatorio entero (0 <= x < 100)
     PRINT INT “7” ; convierte la cadena de texto en un número entero

### FLOAT

     ; convierte la cadena de texto en un número decimal
     PRINT 2 * FLOAT “5.5” ; imprime 11,0

### STR

     ; convierte el número en una cadena de texto
     PRINT “Resultado: ” + STR 5 ; imprime “Resultado: 5”
     PRINT 10 * STR 5 ; imprime 5555555555

### SQRT

     PRINT SQRT 100 ; imprime 10, la raíz cuadrada de 100

### SIN

     PRINT SIN 90 * PI/180 ; imprime 1.0 (el seno de 90° en radianes)

### COS

     PRINT COS 0 * PI/180 ; imprime 1.0 (el coseno de 0° en radianes)

### LOG10

     PRINT LOG10 100 ; imprime 2.0 (el logaritmo en base 10 de 100)

### ROUND

     PRINT ROUND 3.8 ; imprime 4 (3.8 redondeado)
     PRINT ROUND RANDOM 100 ; imprime un número entero aleatorio (0 <= x <= 100)

### ABS

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

### RECUENTO/CONTEO

     PRINT COUNT “texto” ; imprime 5, el número de caracteres de “texto”
     PRINT COUNT [1, 2, 3] ; imprime 3, el tamaño de la lista

### SET

     ; Convierte la lista en un conjunto de 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ón
     PRINT SET [4, 5, 6, 6] & SET [4, 1, 9] ; imprime {4}, intersección
     PRINT SET ([4, 5, 6, 6]) - SET [4, 1, 9] ; imprime {5, 6}, diferencia
     PRINT SET [4, 5, 6, 6] ^ SET [4, 1, 9] ; imprime {1, 5, 6, 9}, diferencia simétrica

### INTERVALO

     ; generación de listas como en Python
     ESCRIBIR LISTA INTERVALO 10 ; escribir [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     ESCRIBIR LISTA INTERVALO 3 10 ; escribir [3, 4, 5, 6, 7, 8, 9]
     ESCRIBIR LISTA INTERVALO 3 10 3 ; escribir [3, 6, 9]

     PARA i EN INTERVALO 10 50 10 [ ; bucle para [10, 20, 30, 40]
       AVANZA i
       IZQUIERDA 90
     ]

### LISTA

     ; elimina los elementos repetidos en una lista utilizando SET y LIST
     PRINT LIST (SET [1, 3, 5, 5, 2, 1]) ; imprime [1, 3, 5, 2]

### TUPLA

Conversión a tupla (lista no modificable) de Python

     ESCRIBIR TUPLA [4, 5]

### ORDENADO

Devuelve una lista ordenada.

     ESCRIBIR ORDENADO [5, 1, 3, 4] ; escribe [1, 3, 4, 5]

### SUB

Sustituir secuencias de carácteres a través de expresiones regulares.

     PRINT SUB (“t”, “T”, “texto”) ; imprime “Texto”, reemplazando la “t” con “T”
     PRINT SUB (“(.)”, “\\1\\1”, “texto”) ; imprime “tteexxttoo”, duplicando cada carácter

### BUSCAR

Buscar secuencias de carácteres a través de expresiones regulares.

     SI BUSCAR (“\p”, "palabra") [ ESCRIBIR “Letra de la palabra.” ]

### BUSCAR.TODO

Encontrar todas las secuencias de caracteres en la cadena de entrada que coincidan con la expresión regular dada.

     PRINT FINDALL(“\w+”, “Perros, gatos.”) ; imprime [“Perros”, “gatos”], la lista de palabras.

### MIN

     PRINT MIN [1, 2, 3] ; imprime 1, el elemento menor de la lista

### MAX

     PRINT MAX [1, 2, 3] ; imprime 3, el elemento mayor de la lista

## Constantes de colores

     COLOR.LÁPIZ “PLATA” ; definido por nombre
     COLOR.LÁPIZ [1] ; definido por identificador
     COLOR.LÁPIZ “~PLATA” ; color plateado aleatorio

Identificador | Nombre
--- | ---
0 | NEGRO
1 | PLATA/PLATEADO
2 | GRIS
3 | BLANCO
4 | GUINDA/GRANATE
5 | ROJO
6 | PÚRPURA/MORADO
7 | FUCSIA/MAGENTA
8 | VERDE
9 | LIMA
10 | OLIVA
11 | AMARILLO
12 | AZUL.MARINO/MARINO
13 | AZUL
14 | CERCETA/VERDE.AZULADO
15 | AGUA/CIAN
16 | ROSA
17 | TOMATE/JITOMATE
18 | NARANJA
19 | ORO
20 | VIOLETA
21 | AZUL.CIELO/CELESTE
22 | CHOCOLATE
23 | MARRÓN/CAFÉ
24 | INVISIBLE

¡Necesitamos su ayuda!