LibreOffice 24.8 Hjälp
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 () innehåller förflyttning av sköldpadda, start/stop av programkörning, hem, rensa skärmen, syntaxmarkering/-översättning och en inmatningsrad (kommandorad).
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.
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.
Klicka på "Hem"-ikonen för att återställa sköldpaddans position och inställningar.
Klicka på ikonen “Rensa skärm” för att ta bort teckningsobjekt från dokumentet.
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 () and click on this icon to translate the Logo program to the selected language.
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.
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.
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å.
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
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).
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”)
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
Lines of a LibreLogo program are paragraphs in the Writer document. A program line can contain multiple commands:
PRINT “Hello, World!” PRINT “LibreLogo”
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
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”
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 10 ; flytta bakåt 10pt
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 90 ; sväng 90 grader medsols
PENUP ; flytta sköldpaddan utan att rita något
PENDOWN ; rita medan du flyttar sköldpaddan
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 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
HIDETURTLE ; döljer sköldpaddan (tills kommandot showturtle används)
SHOWTURTLE ; visa sköldpadda
HOME ; nollställ sköldpaddans ursprungliga position
CLEARSCREEN ; tar bort ritade objekt från dokumentet
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
PENSIZE 100 ; line thickness is 100 points
PENSIZE ANY ; equivalent of PENSIZE RANDOM 10
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 80 ; ange transparensen för pennans färg till 80%
PENCAP “none” ; utan extra linjeslut (standard)
PENCAP “round” ; avrundat linjeslut
PENCAP “square” ; fyrkantigt linjeslut
PENJOINT “rounded” ; avrundade linjeskarvar (standard)
PENJOINT “miter” ; skarpa linjeskarvar
PENJOINT “bevel” ; kapade linjeskarvar
PENJOINT “none” ; ingen linjeskarv
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] ; ...––...––...––
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 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 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)
CIRCLE 100 ; rita en cirkel (diameter = 100pt)
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 100 ; rita en kvadrat (storlek = 100pt)
REKTANGEL [50, 100] ; rita en rektangelform (50×100pt)
REKTANGEL [50, 100, 10] ; rita en rektangel med avrundade hörn
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 “text” ; skriver ut text vid sköldpaddans position
LABEL 'text' ; se ovan
LABEL "text ; se ovan (endast för enstaka ord)
CIRCLE 10 TEXT “text” ; ange texten för det aktuella objektet
FONTCOLOR “green” ; anger teckensnittsfärgen till grön
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 12 ; anger 12pt
FONTWEIGHT “bold” ; anger fet stil
FONTWEIGHT “normal” ; anger normal teckentjocklek
FONTSTYLE “italic” ; anger kursiv stil
FONTSTYLE “normal” ; återställer kursiv stil till normal
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.
; 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
PICTURE ; påbörja en ny streckfigur
FORWARD 10 PICTURE FORWARD 10 ; två streckfigurer
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
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.
Använd BILD för att behålla linjefigurers placering konsekvent vid vänsterkanten av Writer:
PICTURE [ CIRCLE 20 POSITION [-100, 100] CIRCLE 20 ]
; REPEAT antal [ kommandon]
REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ] ; upprepa 10 gånger
; antal är valfritt
REPEAT [ POSITION ANY ] ; oändlig loop
Loopvariabel (även i FOR- och WHILE-loopar).
REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]
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 TRUE [ POSITION ANY ] ; oändlig loop
WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ] ; as REPEAT 10 [ ... ]
Avbryt loopen.
REPEAT [ ; oändlig loop
POSITION ANY
IF REPCOUNT = 100 [ BREAK ] ; motsvarigheten för REPEAT 100 [ ... ]
]
Hoppa till nästa steg i loopen.
REPEAT 100 [
POSITION ANY
IF REPCOUNT % 2 = 0 [ CONTINUE ]
CIRCLE 10 ; rita cirklar på varannan position
]
; IF villkor [ sant block ]
; IF villkor[ sant block ] [ falskt block ]
IF a < 10 [ PRINT “Small” ]
IF a < 10 [ PRINT “Small” ] [ PRINT “Big” ]
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
Nytt ord (eller procedur).
TO triangle
REPEAT 2 [ FORWARD 100 RIGHT 120 ] FILL
END
REPEAT 10 [ triangle PENUP POSITION ANY PENDOWN ]
Returvärde från funktionen.
TO randomletter
OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”
END
PRINT randomletter + randomletter + randomletter ; skriver ut 3 slumpmässigt valda tecken
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
Standard slumpmässiga färgvärden etc.
PENCOLOR ANY ; slumpmässig pennfärg
Logiskt värde.
WHILE TRUE [ POSITION ANY ] ; ändlös loop
PRINT TRUE ; skriver ut true
Logiskt värde.
WHILE NOT FALSE [ POSITION ANY ] ; ändlös loop
PRINT FALSE ; skriver ut false
PRINT PAGESIZE ; skriver ut pappersstorlekar i punkter, t.ex. [595.30, 841.89]
PRINT PI ; skriver ut 3.14159265359
PRINT “text” ; skriver ut “text” i en dialogruta
PRINT 5 + 10 ; skriver ut 15
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 1000 ; vänta i 1000 ms (1 sekund)
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
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)
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)
; konverterar strängparametern till ett flyttal
PRINT 2 * FLOAT "5.5" ; skriver ut 11.0
; konverterar den numeriska parametern till en sträng
PRINT “Resultat: ” + STR 5 ; skriver ut “Resultat: 5”
PRINT 10 * STR 5 ; skriver ut 5555555555
PRINT SQRT 100 ; skriver ut 10, kvadratroten av 100
PRINT SIN 90 * PI/180 ; skriver ut 1.0 (sinus av 90° i radianer)
PRINT COS 0 * PI/180 ; skriver ut 1.0 (cosinus av 0° i radianer)
PRINT LOG10 100 ; skriv ut 2.0 (logaritmen av 100)
PRINT ROUND 3.8 ; skriver ut 4 (avrundar 3.8)
PRINT ROUND RANDOM 100 ; slumpmässigt heltal (0 <= x <= 100)
PRINT ABS -10 ; skriver ut 10, det absoluta värdet av -10
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
; 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
; 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
]
; 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]
Konverterar till en Python tuple (lista som inte går att ändra)
PRINT TUPLE [4, 5]
Returnerar en sorterad lista.
PRINT SORTED [5, 1, 3, 4]; skriver ut [1, 3, 4, 5]
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öker efter teckensekvenser med hjälp av reguljära uttryck.
IF SEARCH (“\w”, "word") [ PRINT “Letter in the word.” ]
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.
PRINT MIN [1, 2, 3]; skriver ut 1, listans minsta element
PRINT MAX [1, 2, 3]; skriver ut 3, det största elementet i listan
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 |