Verktygsraden LibreLogo

Innehåll
Index 🔎︎

# LibreLogo

LibreLogo är en enkel Logo-liknande programmeringsmiljö med sköldpaddegrafik som skapats för att utbilda informationskunskap (programmering och ordbehandling), DTP och grafikdesign. Se http://www.numbertext.org/logo/librelogo.pdf.

## Verktygsraden LibreLogo

Verktygsraden LibreLogo (Visa - Verktygsrader - Logo) innehåller förflyttning av sköldpadda, start/stop av programkörning, hem, rensa skärmen, syntaxmarkering/-översättning och en inmatningsrad (kommandorad).

## Ikoner för sköldpaddsförflyttningar

De motsvarar Logo-kommandona "FORWARD 10", "BACK 10", "LEFT 15", "RIGHT 15". Genom att klicka på en av ikonerna så kommer markören att fokusera på sköldpaddan och sidan kommer rullas till dess position.

## Starta Logo-program

Klicka på ikonen "Starta Logoprogram" för att köra texten i dokumentet (eller i markeringen) som ett LibreLogoprogram. I ett tomt dokument infogas ett exempelprogram och körs.

Klicka på “Stopp”-ikonen för att stoppa programmet.

## Home

Klicka på "Hem"-ikonen för att återställa sköldpaddans position och inställningar.

## Rensa skärmen.

Klicka på ikonen “Rensa skärm” för att ta bort teckningsobjekt från dokumentet.

## Program redigerare/Syntax märkning/Översättning

Trollstavs-ikonen ger 2-sidig layout för programredigering, expanderar och konverterar de förkortade, gemena Logo-kommandona i Writer-dokumentet till versaler. Ändra språket för dokumentet (LibreOffice - preferenserVerktyg - Inställningar - Språkinställningar - språk - västerländska och klicka på ikonen för att översätta Logo-programmet till det valda språket.

## Kommandorad

Tyck Enter i kommandoraden för att köra dess innehåll. För att stoppa programmet använder du ikonen "Stop".

Håll nere Enter för att upprepa kommandot, till exempel på följande kommandosekvens:

     FORWARD 200 LEFT 89

To reset the command line triple-click it or press CommandCtrl+A to select the previous commands, and type the new commands.

## Användargränssnitt för grundläggande sköldpaddeinställningar

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 Width, Line Color and Area Color settings of the turtle shape to set PENSIZE, PENCOLOR and FILLCOLOR attributes of LibreLogo.

## Programredigering

LibreLogo-teckningar och program använder samma dokument. Ritytan för LibreLogo är på första sidan i Writer-dokumentet. Du kan infoga en sidbrytning före LibreLogo-programmet och ange sidans zoomningsgrad med hjälp av "trollstavs"-ikonen i verktygsraden Logo. Förslagsvis kan du även förstora teckenstorleken så att texten blir mer lättläst i den tvåsidiga layouten. Med detta tillvägagångssätt får du ritytan på sida ett och programredigeraren på sidan två.

# Programmeringsspråket LibreLogo

LibreLogo är ett Logo-liknande programmeringsspråk som lätt kan översättas. Det har redan översatts till flera språk av LibreOffice lokala gemenskaper. Det är bakåtkompatibelt med äldre Logo-system om det handlar om enkla Logoprogram som t.ex. används inom utbildningar.

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

     triangle 10 triangle 100 triangle 200

## Skillnader från Logo programmeringsspråk

- Listinnehåll är kommaseparerat: POSITION [0, 0]

- Programblock och listor är annorlunda

- - Programblock behöver blanksteg eller ny rad vid parenteser: REPEAT 10 [ FORWARD 10 LEFT 36 ]

  - Listor kräver angränsande parenteser (utan blanksteg): POSITION [0, 0], och inte POSITION [ 0, 0 ]

- 1-rads funktionsdeklarationer stöds ej (TO och END behöver radbrytningar).

## Andra funktioner i LibreLogo

- Kolon är valfritt före variabelnamn.

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

- Strängnotation stöder också ortografi och python-syntax.

       PRINT "ord ; original Logo-syntax
       PRINT “Godtyklig text.” ; ortografi, Writer
       PRINT 'Godtycklig text.' ; Python-syntax

- Python list- och stränghantering

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

- Python-liknande FOR-loop

- Python-liknande variabeldeklaration:

       x = 15
       PRINT x

- Det finns inga extra sökfunktioner:

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

- Alternativ användning av parenteser i funktionsanrop

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

# LibreLogo-kommandon

## Grundläggande syntax

### Skiftlägeskänslighet

Kommando och färgkonstanter är inte skiftlägeskänsliga:

     PRINT “Hello, World!”
     print “Hello, World, igen!”

Variabelnamn är skiftlägeskänsliga:

     a = 5
     A = 7
     PRINT a
     PRINT A

### Programrader

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

     PRINT “Hello, World!” PRINT “LibreLogo”

### Kommentarer

Rader eller delar av rader kan göras till kommentarer genom att lägga till ett semikolon, allt som följer semikolon (i samma stycke) räknas som en kommentar.

     ; en kommentar
     PRINT 5 * 5 ; ytterligare en kommentar

### Dela upp programrader i flera stycken

Det är möjligt att dela upp en programrad i flera stycken med hjälp av tecknet ~ (tilde) vid radens slut:

     PRINT “Detta är ett väldigt långt ” + ~
           “varningsmeddelande”

## Sköldpaddsförflyttningar

### FORWARD (fd)

     FORWARD 10 ; flyttar framåt 10pt (1pt = 1/72 inch = 0,35 mm)
     FORWARD 10pt ; se ovan
     FORWARD 0.5in ; flytta framåt 0.5 inch (1 inch = 2,54 cm)
     FORWARD 1" ; se ovan
     FD 1mm
     FD 1cm

### BACK (bk)

     BACK 10 ; flytta bakåt 10pt

### LEFT (lt)

     LEFT 90 ; sväng 90 grader motsols
     LEFT 90° ; se ovan
     LT 3h ; sväng 3 timmar mot klockans riktning, dvs 90 grader motsols
     LT any ; sväng åt ett slumpmässigt håll

### RIGHT (rt)

     RIGHT 90 ; sväng 90 grader medsols

### PENUP (pu)

     PENUP ; flytta sköldpaddan utan att rita något

### PENDOWN (pd)

     PENDOWN ; rita medan du flyttar sköldpaddan

### POSITION (pos)

     POSITION [0, 0] ; sväng och flytta till översta, vänstra hörnet
     POSITION PAGESIZE ; sväng och flytta till nedersta högra hörnet
     POSITION [PAGESIZE[0], 0] ; sväng och flytta till översta, högra hörnet
     POSITION ANY ; sväng och flytta till en slumpmässig position

### HEADING (seth)

     HEADING 0 ; sväng norrut
     HEADING 12h ; se ovan
     HEADING [0, 0] ; sväng mot vänstra övre hörnet
     HEADING ANY ; sväng i en slumpmässig riktning

## Andra skölpaddekommandon

### HIDETURTLE (ht)

     HIDETURTLE ; döljer sköldpaddan (tills kommandot showturtle används)

### SHOWTURTLE (st)

     SHOWTURTLE ; visa sköldpadda

### HOME

     HOME ; nollställ sköldpaddans ursprungliga position

### CLEARSCREEN (cs)

     CLEARSCREEN ; tar bort ritade objekt från dokumentet

### FILL och CLOSE

     FILL ; stäng och fyll den aktuella streckfiguren eller punkter
     CLOSE ; stänger den aktuella streckfiguren eller förbinder de aktuella punkterna

Exempel: fyllning av en vanlig triangel:

     FRAM 50 VÄNSTER 120 FRAM 50 FYLL

Exempel: ritning av en vanlig triangel:

     FRAM 50 VÄNSTER 120 FRAM 50 STÄNG

## Penninställningar

### PENSIZE (ps)

     PENSIZE 100 ; ange linjebredden till 100 punkter
     PENSIZE ANY ; motsvarar PENSIZE RANDOM 10

### PENCOLOR/PENCOLOUR (pc)

     PENCOLOR “red” ; ange pennfärgen till röd (via färgnamn, se färgkonstanter)
     PENCOLOR [255, 255, 0] ; anger en gul färg (RGB lista)
     PENCOLOR 0xffff00 ; anger gul färg (hexadecimal kod)
     PENCOLOR 0 ; anger svart färg (0x000000)
     PENCOLOR ANY ; slumpmässig färg
     PENCOLOR [5] ; anger röd färg (via färgidentifierare, se färgkonstanter)
     PENCOLOR “invisible” ; genomskinlig "färg" för former utan synligt område
     PENCOLOR “~red” ; ange en slumpmässig röd färg

### PENTRANSPARENCY

     PENTRANSPARENCY 80 ; ange transparensen för pennans färg till 80%

### PENCAP/LINECAP

     PENCAP “none” ; utan extra linjeslut (standard)
     PENCAP “round” ; avrundat linjeslut
     PENCAP “square” ; fyrkantigt linjeslut

### PENJOINT/LINEJOINT

     PENJOINT “rounded” ; avrundade linjeskarvar (standard)
     PENJOINT “miter” ; skarpa linjeskarvar
     PENJOINT “bevel” ; kapade linjeskarvar
     PENJOINT “none” ; ingen linjeskarv

### PENSTYLE

     PENSTYLE “solid” ; solid linje (default)
     PENSTYLE “dotted” ; prickad linje
     PENSTYLE “dashed” ; streckad linje

     ; anpassat mönster av prickar och streck angivet av en lista med följande argument:
     ; – antal intilliggande punkter
     ; – prickarnas längd
     ; – antal intilliggande streck
     ; – streckens längd
     ; – avstånd mellan strickar/streck
     ; – typ (valfri):
     ;   0 = prickar är rektangulära (default)
     ;   2 = prickar är kvadratiska (avstånd och längd anges i förhållande till pennstorleken)

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

## Fyllningsinställningar

### 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 ; anger att aktuella fyllnadsfärgen ska vara 80% transparent (genomskinlig)
     FILLTRANSPARENCY [80] ; anger linjär transparent toning från 80% till 0%
     FILLTRANSPARENCY [80, 20] ; anger linjär transparent toning från 80% till 20%
     FILLTRANSPARENCY [80, 20, 1, 90] ; anger axiell transparent toning roterat med 90 grader från sköldpaddans aktuella position
     FILLTRANSPARENCY [80, 20, 2, 0, 20, 50, 50] ; anger radiell transparent toning från yttre 80% till inre 20% transparens med 20% inramning och 50-50% horisontell och vertikal position från mitten

### FILLSTYLE

     FILLSTYLE 0 ; fyll utan skraffering (default)
     FILLSTYLE 1 ; enkel svart skraffering (horisontell)
     FILLSTYLE 2 ; enkel svart skraffering (45 grader)
     FILLSTYLE 3 ; enkel svart skraffering (-45 grader)
     FILLSTYLE 4 ; enkel svart skraffering (vertikal)
     FILLSTYLE 5 ; röd skraffering i kors (45 degrees)
     FILLSTYLE 6 ; röd skraffering i kors (0 grader)
     FILLSTYLE 7 ; blå skraffering i kors (45 degrees)
     FILLSTYLE 8 ; blå skraffering i kors (0 grader)
     FILLSTYLE 9 ; blå skraffering trippelkryssad
     FILLSTYLE 10 ; enkel svart skraffering (bred) (45 grader)

     ; anpassad skraffering anger en lista med följande argument:
     ; – style (1 = enkel, 2 = dubbel, 3 = trippel skraffering)
     ; – färg
     ; – avstånd
     ; – grader

     FILLSTYLE [2, “green”, 3pt, 15°] ; grön korsad skraffering (15 grader)

## Ritobjekt

### CIRCLE

     CIRCLE 100 ; rita en cirkel (diameter = 100pt)

### ELLIPSE

     ELLIPSE [50, 100] ; rita en ellips med 50pt samt 100pt i diameter
     ELLIPSE [50, 100, 2h, 12h] ; rita en elliptisk sektor (från positionen kl 2 till kl 12)
     ELLIPSE [50, 100, 2h, 12h, 2]  ; rita ett elliptiskt segment
     ELLIPSE [50, 100, 2h, 12h, 3]  ; rita en elliptisk båge

### SQUARE

     SQUARE 100 ; rita en kvadrat (storlek = 100pt)

### RECTANGLE

     REKTANGEL [50, 100] ; rita en rektangelform (50×100pt)
     REKTANGEL [50, 100, 10] ; rita en rektangel med avrundade hörn

### POINT

     POINT ; rita en punkt med pennans storlek och färg

STÄNG kan förbinda de sista punkterna, FYLL kan fylla formen definierad av punkter. Till exempel, det är enkelt att rita en "platt" stjärna som börjar från centrum:

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

### LABEL

     LABEL “text” ; skriver ut text vid sköldpaddans position
     LABEL 'text' ; se ovan
     LABEL "text ; se ovan (endast för enstaka ord)

### TEXT

     CIRCLE 10 TEXT “text” ; ange texten för det aktuella objektet

## Teckensnittsinställningar

### FONTCOLOR/FONTCOLOUR

     FONTCOLOR “green” ; anger teckensnittsfärgen till grön

### FONTFAMILY

     FONTFAMILY “Linux Libertine G” ; anger teckensnitt (-sfamilj)
     FONTFAMILY “Linux Libertine G:smcp=1” ; anger även teckensnittseffekt (små bokstäver)
     FONTFAMILY “Linux Libertine G:smcp=1&onum=1” ; små bokstäver + gammeldags stil

### FONTSIZE

     FONTSIZE 12 ; anger 12pt

### FONTWEIGHT

     FONTWEIGHT “bold” ; anger fet stil
     FONTWEIGHT “normal” ; anger normal teckentjocklek

### FONTSTYLE

     FONTSTYLE “italic” ; anger kursiv stil
     FONTSTYLE “normal” ; återställer kursiv stil till normal

## PICTURE (pic)

PICTURE är till

- gruppering av figurer;

- börja på nya linjeformer;

- sparar svg-bilder och svg-/smil-animationer;

- behåll konsekvens mellan linjefigurers position och den vänstra kanten.

### Gruppering av figurer

     ; PICTURE [ LibreLogo_kommandon]
     PICTURE [ FORWARD 100 CIRCLE 100 ] ; trädliknande grupperad figur

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

### Att påbörja nya streckfigurer

     PICTURE ; påbörja en ny streckfigur
     FORWARD 10 PICTURE FORWARD 10 ; två streckfigurer

### Sparar svg-bilder

     PICTURE “example.svg” [ CIRCLE 5 ] ; spara bilden som en SVG-bildfil i användarmappen
     PICTURE “Desktop/example.svg” [ FORWARD 100 CIRCLE 5 ] ; som ovan, med en relativ sökväg
     PICTURE “/home/user/example.svg” [ CIRCLE 5 ]; absolut sökväg för Unix/Linux
     PICTURE “C:\example.svg” [ CIRCLE 5 ] ; absolut sökväg för Windows

### Sparar svg-/smil-animationer (teckningar med SLEEP-kommandon)

     PICTURE “animation.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 ] ; spara som en svg-/smil-animation (se även SLEEP)
     PICTURE “animation2.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 SLEEP 2000 ] ; som ovan, men med SLEEP efter sista objektet vilket resulterar i en loop: efter 2 sekunder så startas svg-animationen om i webbläsare som stöder smil.

### Konsekvent vid vänster kant

Använd BILD för att behålla linjefigurers placering konsekvent vid vänsterkanten av Writer:

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

## Iterativa satser

### REPEAT

     ; REPEAT antal [ kommandon]

     REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ] ; upprepa 10 gånger

     ; antal är valfritt

     REPEAT [ POSITION ANY ] ; oändlig loop

### REPCOUNT

Loopvariabel (även i FOR- och WHILE-loopar).

     REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]

### FOR IN

Loop för listposterna:

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

En slinga (loop) för alla tecken i en teckensekvens:

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

### WHILE

     WHILE TRUE [ POSITION ANY ] ; oändlig loop
     WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ] ; as REPEAT 10 [ ... ]

### BREAK

Avbryt loopen.

     REPEAT [ ; oändlig loop
       POSITION ANY
       IF REPCOUNT = 100 [ BREAK ]  ; motsvarigheten för REPEAT 100 [ ... ]
     ]

### CONTINUE

Hoppa till nästa steg i loopen.

     REPEAT 100 [
      POSITION ANY
      IF REPCOUNT % 2 = 0 [ CONTINUE ]
      CIRCLE 10 ; rita cirklar på varannan position
     ]

## Villkor

### OM

     ; IF villkor [ sant block ]
     ; IF villkor[ sant block ] [ falskt block ]

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

### AND, OR, NOT

Logiska operatorer

     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" ] ; som ovan

## Subrutiner

### TO, END

Nytt ord (eller procedur).

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

     REPEAT 10 [ triangle PENUP POSITION ANY PENDOWN ]

### OUTPUT

Returvärde från funktionen.

     TO randomletter
       OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”
     END

     PRINT randomletter + randomletter + randomletter ; skriver ut 3 slumpmässigt valda tecken

### STOP

Avslutar process.

     TO example number
       IF number < 0 [ STOP ]
       PRINT SQRT number ; skriver ut kvadratroten
     ]

     example 100
     example -1 ; utan utdata och fel
     example 25

## Standardvariabler

### ANY

Standard slumpmässiga färgvärden etc.

     PENCOLOR ANY ; slumpmässig pennfärg

### TRUE

Logiskt värde.

     WHILE TRUE [ POSITION ANY ] ; ändlös loop
     PRINT TRUE ; skriver ut true

### FALSE

Logiskt värde.

     WHILE NOT FALSE [ POSITION ANY ] ; ändlös loop
     PRINT FALSE ; skriver ut false

### PAGESIZE

     PRINT PAGESIZE ; skriver ut pappersstorlekar i punkter, t.ex. [595.30, 841.89]

### PI/π

     PRINT PI ; skriver ut 3.14159265359

## Input/Output

### PRINT

     PRINT “text” ; skriver ut “text” i en dialogruta
     PRINT 5 + 10 ; skriver ut 15

### INPUT

     PRINT INPUT “Inmatningsvärde?” ; frågar efter och skriver ut en sträng via en frågedialog
     PRINT FLOAT (INPUT “Första numret?”) + FLOAT (INPUT “Andra numret?”) ; enkel kalkylator som adderar två värden

## SLEEP

     SLEEP 1000 ; vänta i 1000 ms (1 sekund)

## GLOBAL

Anger globala variabler som används i procedurer.

     GLOBAL about
     about = “LibreLogo”

     TO example
       PRINT about
       GLOBAL about ; när vi vill lägga till ett nytt värde
       about = “nytt värde för den globala variabeln”
     END

     example
     PRINT about

## Funktioner

### RANDOM

     PRINT RANDOM 100 ; slumpmässigt flyttal (0 <= x < 100)
     PRINT RANDOM “text” ; slumpmässigt tecken från "text"
     PRINT RANDOM [1, 2] ; slumpmässig post från listan (1 eller 2)

### INT

     PRINT INT 3.8 ; skriver ut 3 (heltalsdelen (integer-delen) av 3.8)
     PRINT INT RANDOM 100 ; slumpmässigt heltal (0 <= x < 100)
     PRINT INT “7” ; konverterar en strängparameter till ett heltal (en integer)

### FLOAT

     ; konverterar strängparametern till ett flyttal
     PRINT 2 * FLOAT "5.5" ; skriver ut 11.0

### STR

     ; konverterar den numeriska parametern till en sträng
     PRINT “Resultat: ” + STR 5 ; skriver ut “Resultat: 5”
     PRINT 10 * STR 5 ; skriver ut 5555555555

### SQRT

     PRINT SQRT 100 ; skriver ut 10, kvadratroten av 100

### SIN

     PRINT SIN 90 * PI/180 ; skriver ut 1.0 (sinus av 90° i radianer)

### COS

     PRINT COS 0 * PI/180 ; skriver ut 1.0 (cosinus av 0° i radianer)

### LOG10

     PRINT LOG10 100 ; skriv ut 2.0 (logaritmen av 100)

### ROUND

     PRINT ROUND 3.8 ; skriver ut 4 (avrundar 3.8)
     PRINT ROUND RANDOM 100 ; slumpmässigt heltal (0 <= x <= 100)

### ABS

     PRINT ABS -10 ; skriver ut 10, det absoluta värdet av -10

### COUNT

     PRINT COUNT “text” ; skriver ut 4, det antal tecken som strängen “text” innehåller
     PRINT COUNT [1, 2, 3] ; skriver ut 3, listans storlek

### SET

     ; konverterar listan till ett Python-set
     PRINT SET [4, 5, 6, 6] ; skriver ut {4, 5, 6}
     PRINT SET [4, 5, 6, 6] | SET [4, 1, 9] ; skriver ut {1, 4, 5, 6, 9}, union
     PRINT SET [4, 5, 6, 6] & SET [4, 1, 9] ; skriver ut {4}, skärningspunkten
     PRINT SET ([4, 5, 6, 6]) - SET [4, 1, 9] ; skriver ut {5, 6}, differensen
     PRINT SET [4, 5, 6, 6] ^ SET [4, 1, 9] ; skriver ut {1, 5, 6, 9}, symmetriska differensen

### RANGE

     ; Python-like list generation
     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

     ; tar bort upprepade poster från en lista med set och listkonvertering
     PRINT LIST (SET [1, 3, 5, 5, 2, 1]) ; skriver ut [1, 3, 5, 2]

### TUPLE

Konverterar till en Python tuple (lista som inte går att ändra)

     PRINT TUPLE [4, 5]

### SORTED

Returnerar en sorterad lista.

     PRINT SORTED [5, 1, 3, 4]; skriver ut [1, 3, 4, 5]

### SUB

Ersätter teckensekvenser med hjälp av regex-mönster (reguljära uttryck).

     PRINT SUB("t", "T", "text"); skriver ut "Text", ersätter "t" med "T"
    PRINT SUB("(.)", "\\1\\1", "text"; skriver ut "tteexxtt", dubblerar alla tecken

### SÖK

Söker efter teckensekvenser med hjälp av reguljära uttryck.

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

### FINDALL

Hittar alla teckensekvenser i en sträng som matchar ett givet reguljärt uttryck.

     PRINT FINDALL("\w+","Hundar,  katter."); skriver ut "Hundar", "katter"], listan med ord.

### MIN

     PRINT MIN [1, 2, 3]; skriver ut 1, listans minsta element

### MAX

     PRINT MAX [1, 2, 3]; skriver ut 3, det största elementet i listan

## Färgkonstanter

     PENCOLOR "SILVER"; välj färg via namn
    PENCOLOR[1], väljer färg via identifierare
    PENCOLOR "~SILVER"; slumpmässig silverfärg

ID | Namn
--- | ---
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