Sintaxis Logo 

Sintaxis básica del lenguaje 


Case sensitivity

Commands, color constants are case insensitive:

 PRINT “Hello, World!”


 print “Hello, World, again!”

Variable names are case sensitive:

 a = 5

 A = 7


 PRINT a

 PRINT A


Program lines

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

 PRINT “Hello, World!” PRINT “LibreLogo”


Comments

Lines or line parts are comments from a semicolon to the end of the line (paragraph):

 ; some comments


 PRINT 5 * 5 ; some comments

Break program lines to multiple paragraphs

It’s possible to break a program line for more paragraphs using the character tilde at the end of the line:

 

   Ejemplo:


PRINT ‘Un ejemplo de un largo mensa’~

je que no entra en una sola lí’~

nea.’


   Salida:  Un ejemplo de un largo mensaje que no entra en una sola línea,


________________

Turtle moving

FORWARD (fd)

 FORWARD 10 ; move forward 10pt (1pt = 1/72 inch)


 FORWARD 10pt ; see above


 FORWARD 0.5in ; move forward 0.5 inch (1 inch = 2.54 cm)


 FORWARD 1" ; see above


 FD 1mm


 FD 1cm

BACK (bk)

 BACK 10 ; move back 10pt

LEFT (lt)

 LEFT 90 ; turn counterclockwise 90 degrees


 LEFT 90° ; see above


 LT 3h ; see above (clock position)


 LT any ; turn to a random position

RIGHT (rt)

 RIGHT 90 ; turn clockwise 90 degrees

PENUP (pu)

 PENUP ; turtle will move without drawing

PENDOWN (pd)

 PENDOWN ; turtle will move with drawing

POSITION (pos)

 POSITION [0, 0] ; turn and move to the top-left corner


 POSITION PAGESIZE ; turn and move to the bottom-right corner


 POSITION [PAGESIZE[0], 0] ; turn and move to the top-right corner


 POSITION ANY ; turn and move to a random position

HEADING (seth)

 HEADING 0 ; turn north


 HEADING 12h ; see above


 HEADING [0, 0] ; turn to the top-left corner


 HEADING ANY ; turn to a random direction

 



 

 ________________

Other turtle commands

HIDETURTLE (ht)

 HIDETURTLE ; hide turtle (until the showturtle command)

SHOWTURTLE (st)

 SHOWTURTLE ; show turtle

HOME

 HOME ; reset initial turtle position

CLEARSCREEN (cs)

 CLEARSCREEN ; remove drawing objects of the document

FILL and CLOSE

 FILL ; close and fill the actual line shape or points


 CLOSE ; close the actual line shape or join the actual points

Example: filling a regular triangle:

 FORWARD 50 LEFT 120 FORWARD 50 FILL

Example: drawing a regular triangle:

 FORWARD 50 LEFT 120 FORWARD 50 CLOSE



 

 ________________

Pen settings

PENSIZE (ps)

 PENSIZE 100 ; line width is 100 points


 PENSIZE ANY ; equivalent of PENSIZE RANDOM 10

PENCOLOR/PENCOLOUR (pc)

 PENCOLOR “red” ; set red pen color (by color name, see color constants)


 PENCOLOR [255, 255, 0] ; set yellow color (RGB list)


 PENCOLOR 0xffff00 ; set yellow color (hexa code)


 PENCOLOR 0 ; set black color (0x000000)


 PENCOLOR ANY ; random color


 PENCOLOR [5] ; set red color (by color identifier, see color constants)


 PENCOLOR “invisible” ; invisible pen color for shapes without visible outline


 PENCOLOR “~red” ; set random red color

PENTRANSPARENCY

 PENTRANSPARENCY 80 ; set the transparency of the actual pen color to 80%

PENCAP/LINECAP

 PENCAP “none” ; without extra line end (default)


 PENCAP “round” ; rounded line end


 PENCAP “square” ; square line end

PENJOINT/LINEJOINT

 PENJOINT “rounded” ; rounded line joint (default)


 PENJOINT “miter” ; sharp line joint


 PENJOINT “bevel” ; bevel line joint


 PENJOINT “none” ; without line joint

PENSTYLE

 PENSTYLE “solid” ; solid line (default)


 PENSTYLE “dotted” ; dotted line


 PENSTYLE “dashed” ; dashed line


 


 ; custom dot–dash pattern specified by a list with the following arguments:


 ; – number of the neighbouring dots


 ; – length of a dot


 ; – number of the neighbouring dashes


 ; – length of a dash


 ; – distance of the dots/dashes


 ; – type (optional):


 ;   0 = dots are rectangles (default)


 ;   2 = dots are squares (lengths and distances are relative to the pensize)


 


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

 



 

 ________________

Fill settings


FILLCOLOR/FILLCOLOUR (fc)

 FILLCOLOR “blue” ; fill with blue color, see also PENCOLOR


 FILLCOLOR “invisible” CIRCLE 10 ; unfilled circle


 FILLCOLOR [“blue”, “red”] ; gradient between red and blue


 FILLCOLOR [[255, 255, 255], [255, 128, 0]] ; between white and orange


 FILLCOLOR [“blue”, “red”, 1, 0, 0] ; set axial gradient (with the required rotation and border settings), possible values: 0-5 = linear, axial, radial, elliptical, square and rectangle gradients


 FILLCOLOR [“red”, “blue”, 0, 90, 20] ; linear with 20% border, rotated with 90 degrees from the actual heading of the turtle


 FILLCOLOR [“red”, “blue”, 0, 90, 20, 0, 0, 200, 50] ; from 200% to 50% intensity


 FILLCOLOR [ANY, ANY, 2, 0, 0, 50, 50] ; radial gradient with random colors and 50-50% horizontal and vertical positions of the center

FILLTRANSPARENCY

 FILLTRANSPARENCY 80 ; set the transparency of the actual fill color to 80%


 FILLTRANSPARENCY [80] ; set linear transparency gradient from 80% to 0%


 FILLTRANSPARENCY [80, 20] ; set linear transparency gradient from 80% to 20%


 FILLTRANSPARENCY [80, 20, 1, 90] ; set axial transparency gradient rotated with 90 degrees from the actual heading of the turtle


 FILLTRANSPARENCY [80, 20, 2, 0, 20, 50, 50] ; set radial transparency gradient from outer 80% to inner 20% transparency with 20% border and with 50-50% horizontal and vertical positions of the center

FILLSTYLE

 FILLSTYLE 0 ; fill without hatches (default)


 FILLSTYLE 1 ; black single hatches (horizontal)


 FILLSTYLE 2 ; black single hatches (45 degrees)


 FILLSTYLE 3 ; black single hatches (-45 degrees)


 FILLSTYLE 4 ; black single hatches (vertical)


 FILLSTYLE 5 ; red crossed hatches (45 degrees)


 FILLSTYLE 6 ; red crossed hatches (0 degrees)


 FILLSTYLE 7 ; blue crossed hatches (45 degrees)


 FILLSTYLE 8 ; blue crossed hatches (0 degrees)


 FILLSTYLE 9 ; blue triple crossed


 FILLSTYLE 10 ; black wide single hatches (45 degrees)


 


 ; custom hatches specified by a list with the following arguments:


 ; – style (1 = single, 2 = double, 3 = triple hatching)


 ; – color


 ; – distance


 ; – degree


 


 FILLSTYLE [2, “green”, 3pt, 15°] ; green crossed hatches (15 degrees)

 

 


 

 ________________

Drawing objects


CIRCLE

 CIRCLE 100 ; draw a circle shape (diameter = 100pt)

ELLIPSE

 ELLIPSE [50, 100] ; draw an ellipse with 50 and 100 diameters


 ELLIPSE [50, 100, 2h, 12h] ; draw an elliptical sector (from 2h clock position to 12h)


 ELLIPSE [50, 100, 2h, 12h, 2]  ; draw an elliptical segment


 ELLIPSE [50, 100, 2h, 12h, 3]  ; draw an elliptical arc

SQUARE

 SQUARE 100 ; draw a square shape (size = 100pt)

RECTANGLE

 RECTANGLE [50, 100] ; draw a rectangle shape (50×100pt)


 RECTANGLE [50, 100, 10] ; draw a rectangle with rounded corners

POINT

 POINT ; draw a point with size and color of the pen

CLOSE can join the last points, FILL can fill the shape defined by points. For example, it’s easy to draw a “flat” star starting from its center:

 PENUP


 REPEAT 5 [


   FORWARD 80


   POINT


   BACK 80


   RIGHT 36


   FORWARD 50


   POINT


   BACK 50


   RIGHT 120


 ] FILL

LABEL

 LABEL “text” ; print text in the turtle position


 LABEL 'text' ; see above


 LABEL "text ; see above (only for single words)

TEXT

 CIRCLE 10 TEXT “text” ; set text of the actual drawing object



 

 ________________

Font settings


FONTCOLOR/FONTCOLOUR

 FONTCOLOR “green” ; set font color

FONTFAMILY

 FONTFAMILY “Linux Libertine G” ; set font (family)


 FONTFAMILY “Linux Libertine G:smcp=1” ; set also font feature (small caps)


 FONTFAMILY “Linux Libertine G:smcp=1&onum=1” ; small caps + old figures

FONTSIZE

 FONTSIZE 12 ; set 12pt

FONTWEIGHT

 FONTWEIGHT “bold” ; set bold font


 FONTWEIGHT “normal” ; set normal weight

FONTSTYLE

 FONTSTYLE “italic” ; set italic variant


 FONTSTYLE “normal” ; set normal variant

 

 

 


 

 ________________

Imagen/ PICTURE 


PICTURE is for

·         shape grouping;

·         starting new line shapes;

·         saving SVG images and SVG/SMIL animations;

·         keeping the consistency of positions and line shapes at the left border.

Shape grouping

 ; PICTURE [ LibreLogo_commands ]


 PICTURE [ FORWARD 100 CIRCLE 100 ] ; tree-like grouped shape

See also “Group” in LibreOffice Writer Help.

 TO tree location


   PENUP POSITION location HEADING 0 PENDOWN


   PICTURE [ FORWARD 100 CIRCLE 100 ] ; tree-like grouped shape


 END


 


 PICTURE [ tree [230, 400] tree [300, 400] ] ; grouped shapes in a grouped shape

Starting new line shapes

 PICTURE ; start a new line shape


 FORWARD 10 PICTURE FORWARD 10 ; two line shapes

Saving SVG images

 PICTURE “example.svg” [ CIRCLE 5 ] ; save the picture as an SVG image file in the user folder


 PICTURE “Desktop/example.svg” [ FORWARD 100 CIRCLE 5 ] ; as above, with a relative path


 PICTURE “/home/user/example.svg” [ CIRCLE 5 ] ; absolute path for Unix/Linux


 PICTURE “C:\example.svg” [ CIRCLE 5 ] ; absolute path for Windows

 

Consistency at the left border

Use PICTURE to keep the consistency of positions and line shapes at the left border of Writer:

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

 

 

 

 ________________

Loops (ciclos)

 

REPEAT

 ; REPEAT number [ commands ]


 


 REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ] ; repeat 10 times

; number is optional


 


 REPEAT [ POSITION ANY ] ; endless loop

REPCOUNT

Loop variable (also in the FOR and WHILE loops).

 REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]

FOR IN

Loop for the list elements:

 FOR i IN [1, 5, 7, 9, 11] [


   FORWARD i


   LEFT 90


 ]

Loop for the characters of a character sequence:

 FOR i IN “text” [


   LABEL i


   FORWARD 10


 ]

WHILE

 WHILE TRUE [ POSITION ANY ] ; endless loop


 WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ] ; as REPEAT 10 [ ... ]

BREAK

Stop the loop.

 REPEAT [ ; endless loop


   POSITION ANY


   IF REPCOUNT = 100 [ BREAK ]  ; equivalent of the REPEAT 100 [ ... ]


 ]

CONTINUE

Jump into the next iteration of the loop.

 REPEAT 100 [


   POSITION ANY


   IF REPCOUNT % 2 = 0 [ CONTINUE ]


   CIRCLE 10 ; draw circles on every 2nd positions


 ]



 

 ________________

Condicionales


IF

 ; IF condition [ true block ]


 ; IF condition [ true block ] [ false block ]


 


 IF a < 10 [ PRINT “Small” ]


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

AND, OR, NOT

Logical operators.

 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” ] ; as above



 

 ________________

Subrutinas (Personalizadas)


TO, END

New word (or procedure).

 TO triangle


   REPEAT 2 [ FORWARD 100 RIGHT 120 ] FILL


 END


 


 REPEAT 10 [ triangle PENUP POSITION ANY PENDOWN ]

OUTPUT

Return value of the function.

 TO randomletter


   OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”


 END


 


 PRINT randomletter + randomletter + randomletter ; print 3-letter random character sequence

STOP

Return from the procedure.

 TO example number


   IF number < 0 [ STOP ]


   PRINT SQRT number ; print square root


 ]


 


 example 100


 example -1 ; without output and error


 example 25

 

 

 

 

 

 

 ________________

Variables preseteadas (por defecto)

 

ANY

Default random value of colors, etc.

 PENCOLOR ANY ; random pen color

TRUE

Logical value.

 WHILE TRUE [ POSITION ANY ] ; endless loop


 PRINT TRUE ; print true

FALSE

Logical value.

 WHILE NOT FALSE [ POSITION ANY ] ; endless loop


 PRINT FALSE ; print false

PAGESIZE

 PRINT PAGESIZE ; print list of the page sizes in points, eg. [595.30, 841.89]

PI/π

 PRINT PI ; print 3.14159265359

 

 


                                 ________ 

Input/Output

PRINT

 PRINT “text” ; print “text” in a dialog box


 PRINT 5 + 10 ; print 15

INPUT

 PRINT INPUT “Input value?” ; ask and print a string by a query dialog box


 PRINT FLOAT (INPUT “First number?”) + FLOAT (INPUT “Second number?”) ; simple calculator


SLEEP

 SLEEP 1000 ; wait for 1000 ms (1 sec)

GLOBAL

Set global variables used in procedures.

 GLOBAL about


 about = “LibreLogo”


 


 TO example


   PRINT about


   GLOBAL about ; when we want to add a new value


   about = “new value for the global variable”


 END


 


 example


 PRINT about

 

 

 

 ________________

Funciones Preseteadas (por defecto)

 

RANDOM (Aleatorio)

 PRINT RANDOM 100            ;da un número decimal  aleatorio (0 <= x < 100)


 PRINT RANDOM “Mi texto”  ;da un caractér aleatorio de un texto  “Mi texto”


 PRINT RANDOM [1, 2]          ;da un elemento aleatorio de una lista (por ejemplo 1 or 2)

 

SQRT (Raíz cuadrada)

 PRINT SQRT 100         ;muestra 10, raíz cuadrada de 100

 

SIN (seno)

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

 

COS (COSENO)

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

 

LOG10 (LOGARITMO)

 PRINT LOG10 100          ;muestra 2.0 ( logaritmo de 100)

 

ROUND (REDONDEO)

 PRINT ROUND 3.8                     ;muestra el numero redondeado: 4


 PRINT ROUND RANDOM 100 ;muestra número entero (redondeado entre 0  100)

 

 

 

LIST

 ; remove the repeating elements of a list using set and list conversion


 PRINT LIST (SET [1, 3, 5, 5, 2, 1]) ; print [1, 3, 5, 2]

 

SORTED

It returns with a sorted list.

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

 

SUB

Substitute character sequences using regex (regular expression) patterns.

 PRINT SUB (“t”, “T”, “text”) ; print “Text”, replacing “t” with “T”


 PRINT SUB (“(.)”, “\\1\\1”, “text”) ; print “tteexxtt”, doubling every characters

 

SEARCH

Search character sequences patterns using regex patterns.

 IF SEARCH (“\w”, "word") [ PRINT “Letter in the word.” ]

 

FINDALL

Find all character sequences in the input string matching the given regex pattern.

 PRINT FINDALL(“\w+”, “Dogs, cats.”) ; print [“Dogs”, “cats”], the list of the words.

 

MIN

 PRINT MIN [1, 2, 3] ; print 1, the lowest element of the list

 

MAX

 PRINT MAX [1, 2, 3] ; print 3, the greatest element of the list