LibreOffice 25.8 Hjælp
LibreLogo er et simpel Logo-lignende programmeringsmiljø med skildpadde-vektorgrafik til undervisning og programmering (programmer og tekstbehandling), DTP og grafisk design. Se http://www.numbertext.org/logo/librelogo.pdf.
Værktøjslinjen LibreLogo () indeholder ikoner for skildpaddebevægelser, programstart, programstop, hjem, nulstil skærm, programredigering/syntaksfremhævning/oversættelse og et indtastningsfelt (kommandolinje).
Ikonerne svarer til Logo-kommandoerne “FORWARD 10”, “BACK 10”, “LEFT 15”, “RIGHT 15”. Når du klikker på et af disse ikoner, vil markøren fokusere på skildpadden og siden vil rulle til dens placering.
Klik på ikonet "Start Logo-program" for at udføre teksten (eller kun den markerede tekst) i Writer-dokumentet som et LibreLogo-program. I et tomt dokument vil et eksempel på et program blive indsat og udført.
Klik på ikonet "stop" for at stoppe programmet.
Vælg ikonet "hjem" for at nulstille skildpaddens position og indstillinger.
Vælg ikonet "Ryd skærm" for at fjerne den tegnede genstand fra dokumentet.
Ikonet "tryllestav" opstiller et 2-siders layout til programredigering, udvider og konverterer forkortede Logo-kommandoer med små bogstaver til store bogstaver i Writer-dokumentet. Du ændrer dokumentets sprog () og klikker på dette ikon for at oversætte Logo-programmet til det valgte sprog.
Tryk Enter i kommandolinjen for at afvikle indholdet. For at stoppe programmet kan du klikke på “Stop”-
Hold Enter nede for at gentage kommandolinjen, for eksempel med følgende kommandosekvens:
FORWARD 200 LEFT 89
For at nulstille kommandolinjen tripleklikker du på den. Du kan også trykke på KommandoCtrl+A for at markere de foregående kommandoer, og derefter indtaste de nye kommandoer.
Skildpadde-figuren i LibreLogo er et normalt tegneobjekt med fast størrelse. Du kan også placere og dreje det på almindelig måde, ved at bruge musen og ikonet Drej på værktøjslinjen Tegneobjektegenskaber. Du kan ændre indstillingerne for linjetykkelse, linjefarve og områdefarve for skildpaddefiguren for at sætte LibreLogo-attributterne for PENSIZE, PENCOLOR og FILLCOLOR.
LibreLogo-tegninger og programmer bruger samme Writerdokument. LibreLogo-lærredet er på første side af dokumentet. Du kan med fordel indsætte et sideskift før LibreLogo-programmet, og indstille zoomfaktor og skriftstørrelse så du får vist de to sider ved siden af hinanden: Venstre (første) side er lærredet og anden (højre) side er programmet.
LibreLogo er et let oversætteligt logo-lignede programmeringssprog, som er oversat til adskillige sprog. Det er bagudkompatibelt med ældre Logo-systemer i tilfælde af simple Logo-programmer i undervisningssammenhænge.
TO triangle :size
REPEAT 3 [
FORWARD :size
LEFT 120
]
END
triangle 10 triangle 100 triangle 200
Indhold af lister er kommasepareret: POSITION [0, 0]
Programblokke og lister er forskellige
Programblokke skal adskilles af et mellemrum eller linjeskift ved parenteserne: REPEAT 10 [ FORWARD 10 LEFT 36 ]
Lister skal have lukkede parenteser (uden afstand): POSITION [0, 0], og ikke POSITION [ 0, 0 ]
Funktionserklæringer på en enkelt linje understøttes ikke (TO og END skal have ny linje).
Kolon er valgfri foran variabelnavne.
TO triangle size
REPEAT 3 [ FORWARD size LEFT 120 ]
END
Strengnotation understøtter også ortografisk og Python-syntaks.
PRINT "ord ; original Logo-syntaks
PRINT “Vilkårlig tekst.” ; retskrivning, Writer
PRINT 'Vilkårlig tekst.' ; Python-syntaks
Python liste- og strenghåndtering
PRINT “text”[2] ; skriv “x”
PRINT “text”[1:3] ; skriv “ex”
Python-lignende FOR løkke
Python-lignende erklæring af variable:
x = 15
PRINT x
Der er ingen ekstra forespørgselsfunktioner:
PRINT FILLCOLOR
p = POSITION
PRINT p
REPEAT 10 [ POSITION ANY POSITION p ]
Alternativ brug af parenteser i funktionskald
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”)
Kommandoer og farvekonstanter skelner ikke mellem små og store bogstaver:
PRINT “Hej, verden!”
print “Hej igen, verden!”
Variabelnavne skelner mellem små og store bogstaver:
a = 5
A = 7
PRINT a
PRINT A
Linjer i et LibreLogo-program er afsnit i Writer-dokumentet. En programlinje kan indeholde flere kommandoer:
PRINT “Hello, World!” PRINT “LibreLogo”
Linjer eller linjedele er kommentarer fra et semikolon til slutningen af en linje (et afsnit):
; nogle kommentarer
PRINT 5 * 5 ; nogle kommentarer
Det er muligt at ombryde en programlinje til flere afsnit ved at bruge tegnet tilde (~) sidst på linjen:
PRINT “Dette er en meget lang ” + ~
“advarselsbesked”
FORWARD 10 ; flyt 10pt (1pt = 1/72 inch = 0.35 mm)
FORWARD 10pt ; se ovenfor
FORWARD 0.5in ; flyt forward 0.5 inch (1 inch = 2.54 cm) fremad
FORWARD 1" ; se ovenfor
FD 1mm
FD 1cm
BACK 10 ; flyt 10pt tilbage
LEFT 90 ; drej 90 grader mod uret
LEFT 90° ; se ovenfor
LT 3h ; se ovenfor (på uret)
LT any ; drej til en tilfældig position
RIGHT 90 ; drej 90 grader med uret
PENUP ; skildpadden vil bevæge sig uden af tegne
PENDOWN ; skildpadden bevæger sig og tegner
POSITION [0, 0] ; drej og flyt til øverste, venstre hjørne
POSITION PAGESIZE ; drej og flyt til nederste højre hjørne
POSITION [PAGESIZE[0], 0] ; drej og flyt til øverste højre hjørne
POSITION ANY ; drej og flyt til en tilfældig position
HEADING 0 ; drej mod nord
HEADING 12h ; Se ovenfor
HEADING [0, 0] ; drej mod øverste venstre hjørne
HEADING ANY ; drej til en vilkårlig retning
HIDETURTLE ; skjul skildpadden (indtil kommandoen showturtle)
SHOWTURTLE ; vis skildpadden
HOME ; nulstil oprindelig skildpaddeposition
CLEARSCREEN ; slet dokumentets tegnede objekter
FILL ; luk og fyld den aktuelle streg-figur eller punkter
CLOSE ; luk den aktuelle streg-figur eller forbind de aktuelle punkter
Eksempel: udfyldning af en regulær trekant:
FORWARD 50 LEFT 120 FORWARD 50 FILL
Eksempel: tegne en regulær trekant:
FORWARD 50 LEFT 120 FORWARD 50 CLOSE
PENSIZE 100 ; linjetykkelsen er 100 points
PENSIZE ANY ; det samme som PENSIZE RANDOM 10
PENCOLOR “red” ; sætter pennefarven til rød (med farvens navn, se farvekonstanter)
PENCOLOR [255, 255, 0] ; sætter farven til gul (RGB liste)
PENCOLOR 0xffff00 ; set farven til gul (hexa decimal kode)
PENCOLOR 0 ; sætter farven til sort (0x000000)
PENCOLOR ANY ; tilfældig farve
PENCOLOR [5] ; sæt farven til rød med farveidentifikator, se farvekonstanter)
PENCOLOR “invisible” ; usynlig pennefarve til figurer uden synligt omrids
PENCOLOR “~red” ; sæt farven til en tilfældig rød
PENTRANSPARENCY 80 ; sæt gennemsigtigheden for den aktuelle penfarve til 80%
PENCAP “none” ; uden ekstra linjeafslutning (default)
PENCAP “round” ; afrundet linjeafslutning
PENCAP “square” ; kantet linjeafslutning
PENJOINT “rounded” ; afrundet linjesammenføjning (standard)
PENJOINT “miter” ; spids linjesammenføjning
PENJOINT “bevel” ; affaset linjesammenføjning
PENJOINT “none” ; ingen linjesammenføjning
PENSTYLE “solid” ; ubrudt linje (standard)
PENSTYLE “dotted” ; prikket linje
PENSTYLE “dashed” ; stiplet linje
; tilpasset prik-stregmønster specificeret af en liste med disse argumenter:
; – antal prikker i træk
; – prikkers længde
; – antal streger i træk
; – stregens længde
; – afstand mellem prikker/steger
; – type (valgfri):
; 0 = prikker er rektangulære (standard)
; 2 = prikker er kvadratiske (længder og afstande er i forhold til stregtykkelsen)
PENSTYLE [3, 1mm, 2, 4mm, 2mm, 2] ; ...––...––...––
FILLCOLOR “blue” ; udfyld med blå farve, se også PENCOLOR
FILLCOLOR “invisible” CIRCLE 10 ; uudfyldt cirkel
FILLCOLOR [“blue”, “red”] ; gradient mellem rød og blå
FILLCOLOR [[255, 255, 255], [255, 128, 0]] ; mellem hvid og orange
FILLCOLOR [“blue”, “red”, 1, 0, 0] ; definér aksial gradient (med den ønskede drejningsretning og kant), mulige værdier: 0-5 = lineær, aksial, radial, elliptisk, kvadrat og rektangel – gradienter
FILLCOLOR [“red”, “blue”, 0, 90, 20] ; lineær med 20% kant, drejet 90 grader fra den retning, skildpadden peger
FILLCOLOR [“red”, "blue”, 0, 90, 20, 0, 0, 200, 50] ; fra 200% til 50% intensitet
FILLCOLOR [ANY, ANY, 2, 0, 0, 50, 50] ; radial gradient med tilfældige farver og 50-50% vandrette og lodrette positioner af centret
FILLTRANSPARENCY 80 ; sæt gennemsigtigheden af den aktuelle udfyldningsfarve til 80%
FILLTRANSPARENCY [80] ; sæt lineær gennemsigtig gradient fra 80% til 0%
FILLTRANSPARENCY [80, 20] ; sæt lineær gennemsigtig gradient fra 80% til 20%
FILLTRANSPARENCY [80, 20, 1, 90] ; sæt aksial gennemsigtig gradient drejet 90 grader fra den retning, skildpadden peger
FILLTRANSPARENCY [80, 20, 2, 0, 20, 50, 50] ; sæt radial gennemsigtig gradient fra ydre 80% til indre 20% gennemsigtighed med 20% kant og med 50-50% vandrette og lodrette positioner af centret
FILLSTYLE 0 ; fyld uden skravering (standard)
FILLSTYLE 1 ; sort enkeltskravering (vandret)
FILLSTYLE 2 ; sort enkeltskravering (45°)
FILLSTYLE 3 ; sort enkeltskravering (-45°)
FILLSTYLE 4 ; sort enkeltskravering (lodret)
FILLSTYLE 5 ; rød krydsskravering (45°)
FILLSTYLE 6 ; rød krydsskravering (0°)
FILLSTYLE 7 ; blå krydsskravering (45°)
FILLSTYLE 8 ; blå krydsskravering (0°)
FILLSTYLE 9 ; blå trippelskravering
FILLSTYLE 10 ; sort bred enkeltskravering (45°)
; tilpasset skravering efter en liste med disse argumenter:
; – stil (1 = single, 2 = double, 3 = triple hatching)
; – farve
; – afstand
; – gradtal
FILLSTYLE [2, “green”, 3pt, 15°] ; grøn krydsskravering (15°)
CIRCLE 100 ; tegn en cirkel (diameter = 100pt)
ELLIPSE [50, 100] ; tegn en ellipse med akserne 50 and 100
ELLIPSE [50, 100, 2h, 12h] ; tegn en ellipsesektor (fra position kl. 2 til kl. 12)
ELLIPSE [50, 100, 2h, 12h, 2] ; tegn et ellipsesegment
ELLIPSE [50, 100, 2h, 12h, 3] ; tegn en ellipsebue
SQUARE 100 ; tegner et kvadrat (størrelse = 100pt)
RECTANGLE [50, 100] ; tegner et rektangel (50×100pt)
RECTANGLE [50, 100, 50] ; tegner et rektangel med runde hjørner
POINT ; tegner et punkt med pennens størrelse og farve
CLOSE kan forbinde de sidste punkter, FILL kan fylde figuren defineret af punkterne. For eksempel er det nemt at tegne en “flad” stjerne, ved at starte fra dens centrum:
PENUP
REPEAT 5 [
FORWARD 80
POINT
BACK 80
RIGHT 36
FORWARD 50
POINT
BACK 50
RIGHT 120
] FILL
LABEL “tekst” ; udskriver tekst på skildpaddens position
LABEL 'tekst' ; se herover
LABEL "tekst ; se herover (kun for enkelte ord)
CIRCLE 10 TEXT “text” ; vælg teksten til det aktuelle tegneobjekt
FONTCOLOR “green” ; vælg skriftfarve
FONTFAMILY “Linux Libertine G” ; angiv skrifttype (familie)
FONTFAMILY “Linux Libertine G:smcp=1” ; angiv også skrifteffekter (små bogstaver)
FONTFAMILY “Linux Libertine G:smcp=1&onum=1” ; små bogstaver + gammeldags stil
FONTSIZE 12 ; vælg 12pt
FONTWEIGHT “bold” ; vælg fed skrifttype
FONTWEIGHT “normal” ; vælg normal vægt
FONTSTYLE “italic” ; vælg kursiv
FONTSTYLE “normal” ; vælg normal
PICTURE bruges til
gruppering af figurer;
at begynde nye stregfigurer;
at gemme SVG-billeder og SVG/SMIL-animationer;
at fastholde sammenhængen mellem positioner og stregfigurer i forhold til venstre kant.
; PICTURE [ LibreLogo_commands ]
PICTURE [ FORWARD 100 CIRCLE 100 ] ; træ-lignende grupperet figur
Se også "Gruppe" i LibreOffice Writer Hjælp.
TO tree location
PENUP POSITION location HEADING 0 PENDOWN
PICTURE [ FORWARD 100 CIRCLE 100 ] ; træ-lignende grupperet figur
END
PICTURE [ tree [230, 400] tree [300, 400] ] ; grupperede figurer i en grupperet figur
PICTURE ; start en ny stregfigur
FORWARD 10 PICTURE FORWARD 10 ; to stregfigurer
PICTURE “eksempel.svg” [ CIRCLE 5 ] ; gem billeder som et SVG-billede i brugerens hjemmemappe
PICTURE “Skrivebord/eksempel.svg” [ FORWARD 100 CIRCLE 5 ] ; som ovenfor med en relativ sti
PICTURE “/home/user/eksempel.svg” [ CIRCLE 5 ] ; absolut sti for Unix/Linux
PICTURE “C:\eksempel.svg” [ CIRCLE 5 ] ; absolut sti på Windows
PICTURE “animation.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 ] ; gem en SVG/SMIL animation (se også SLEEP)
PICTURE “animation2.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 SLEEP 2000 ] ; som ovenfor, men ved brug af SLEEP efter sidste objekt vil resultatet køre i ring: efter 2 sekunder starter animationen forfra, hvis den vises i en browser, som understøtter SMIL.
Brug PICTURE til af holde sammenhængen mellem positioner og stregfigurer i forhold til Writers venstre kant:
PICTURE [ CIRCLE 20 POSITION [-100, 100] CIRCLE 20 ]
; REPEAT antal [ kommandoer ]
REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ] ; gentag 10 gange
; antal er valgfrit
REPEAT [ POSITION ANY ] ; endeløs løkke
Løkkevariabel (også i FOR og WHILE løkker).
REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]
Løkke for listeelementerne:
FOR i IN [1, 5, 7, 9, 11] [
FORWARD i
LEFT 90
]
Løkke til tegn i en tegnsekvens:
FOR i IN “text” [
LABEL i
FORWARD 10
]
WHILE TRUE [ POSITION ANY ] ; endeløs løkke
WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ] ; as REPEAT 10 [ ... ]
Stop løkken.
REPEAT [ ; endeløs løkke
POSITION ANY
IF REPCOUNT = 100 [ BREAK ] ; svarende til REPEAT 100 [ ... ]
]
Hop til næste gennemløb af løkken.
REPEAT 100 [
POSITION ANY
IF REPCOUNT % 2 = 0 [ CONTINUE ]
CIRCLE 10 ; tegner cirkler på hver anden position
]
; IF betingelse [ sand blok ]
; IF betingelse [ sand blok ] [ falsk blok ]
IF a < 10 [ PRINT “Lille” ]
IF a < 10 [ PRINT “Lille” ] [ PRINT “Stor” ]
Logiske 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 ovenfor
Nyt ord (eller ny procedure).
TO trekant
REPEAT 2 [ FORWARD 100 RIGHT 120 ] FILL
END
REPEAT 10 [ trekant PENUP POSITION ANY PENDOWN ]
Returværdi fra funktion.
TO randomletter
OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”
END
PRINT randomletter + randomletter + randomletter ; udskriv tilfældig tegnsekvens på 3 bogstaver
Retur fra proceduren.
TO example number
IF number < 0 [ STOP ]
PRINT SQRT number ; udskriv kvadratrod
]
example 100
example -1 ; uden uddata og fejl
example 25
Standard tilfældig farveværdi osv.
PENCOLOR ANY ; tilfældig penfarve
Logisk værdi.
WHILE TRUE [ POSITION ANY ] ; endeløs løkke
PRINT TRUE ; udskriv sand
Logisk værdi.
WHILE NOT FALSE [ POSITION ANY ] ; endeløs løkke
PRINT FALSE ; udskriv falsk
PRINT PAGESIZE ; udskriv liste med sidens størrelse i punkter, fx. [595.30, 841.89]
PRINT PI ; udskriv 3.14159265359
PRINT “tekst” ; udskriv “tekst” i en dialogboks
PRINT 5 + 10 ; udskriv 15
PRINT INPUT “Inddata værdi?” ; spørg og udskriv en streng ved hjælp af en forespørgselsboks
PRINT FLOAT (INPUT “Første tal?”) + FLOAT (INPUT “Andet tal?”) ; simpel lommeregner
SLEEP 1000 ; vent i 1000 ms (1 sek)
Sæt globale variable til brug i procedurer.
GLOBAL about
about = “LibreLogo”
TO example
PRINT about
GLOBAL about ; når vi vil tilføje en ny værdi
about = “den globale variabels nye værdi”
END
example
PRINT about
PRINT RANDOM 100 ; tilfældigt kommatal (0 <= x < 100)
PRINT RANDOM “teksten” ; tilfældigt tegn fra “teksten”
PRINT RANDOM [1, 2] ; tilfældigt element fra listen (1 eller 2)
PRINT INT 3.8 ; udskriv 3 (heltalsdelen af 3.8)
PRINT INT RANDOM 100 ; tilfældigt heltal (0 <= x < 100)
PRINT INT “7” ; omdan strengparameteren til heltal
; konverter strengparameteren til kommatal
PRINT 2 * FLOAT “5.5” ; skriv 11.0
; omdan talparameter til en streng
PRINT “Resultat: ” + STR 5 ; udskriv “Resultat: 5”
PRINT 10 * STR 5 ; udskriv 5555555555
PRINT SQRT 100 ; udskriv 10, kvadratroden af 100
PRINT SIN 90 * PI/180 ; udskriv 1.0 (sinus af 90° in radianer)
PRINT COS 0 * PI/180 ; skriv 1.0 (sinus af 0° i radianer)
PRINT LOG10 100 ; Skriv 2.0 (titalslogaritmen af 100)
PRINT ROUND 3.8 ; skriv 4 (afrund 3.8)
PRINT ROUND RANDOM 100 ; tilfældigt heltal (0 <= x <= 100)
PRINT ABS -10 ; skriv 10, den numeriske værdi af -10
PRINT COUNT “tekst” ; skriv 5, tegntælling af “tekst”
PRINT COUNT [1, 2, 3] ; skriv 3, listens størrelse
; Konverter listen til et Python sæt
PRINT SET [4, 5, 6, 6] ; skriv {4, 5, 6}
PRINT SET [4, 5, 6, 6] | SET [4, 1, 9] ; skriv {1, 4, 5, 6, 9}, foreningsmængden
PRINT SET [4, 5, 6, 6] & SET [4, 1, 9] ; skriv {4}, fællesmængden
PRINT SET ([4, 5, 6, 6]) - SET [4, 1, 9] ; skriv {5, 6}, forskellen
PRINT SET [4, 5, 6, 6] ^ SET [4, 1, 9] ; skriv {1, 5, 6, 9}, symmetrisk forskel
; Python-lignende liste-generering
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
]
; fjern gentagne elementer i en list med set and listekonvertering
PRINT LIST (SET [1, 3, 5, 5, 2, 1]) ; skriv [1, 3, 5, 2]
Konvertér til Python-tuple (fast liste)
PRINT TUPLE [4, 5]
Den returnerer en sorteret liste.
PRINT SORTED [5, 1, 3, 4] ; skriv [1, 3, 4, 5]
Udskift tegnsekvenser med regex- (regulært udtryk) mønstre.
PRINT SUB (“t”, “T”, “tekst”) ; print “Tekst”, ved at udskifte “t” med “T”
PRINT SUB (“(.)”, “\\1\\1”, “tekst”) ; print “tteekksstt”, ved at fordoble alle tegn
Søg tegnsekvensmønstre med regulære udtryk (regex-mønstre).
IF SEARCH (“\w”, "word") [ PRINT “Bogstav i ordet.” ]
Find alle tegnsekvenser i inputstrengen, der matcher det givne regulære udtryk (regex-mønster).
PRINT FINDALL(“\w+”, “Hunde, katte.”) ; skriv [“Hunde”, “katte”], listen af ord.
PRINT MIN [1, 2, 3] ; skriv 1, listens mindste element
PRINT MAX [1, 2, 3] ; skriv 3, det største element i listen
PENCOLOR “SILVER” ; vælg med navn
PENCOLOR [1] ; vælg med identifikatorer
PENCOLOR “~SILVER” ; tilfældig sølvfarve
| Identifikator | Navn | 
|---|---|
| 0 | BLACK (sort) | 
| 1 | SILVER (sølvfarvet) | 
| 2 | GRAY/GREY (grå) | 
| 3 | WHITE (hvid) | 
| 4 | MAROON (rødbrun) | 
| 5 | RED (rød) | 
| 6 | PURPLE (lilla) | 
| 7 | FUCHSIA/MAGENTA Fuchsia-/magentarød | 
| 8 | GREEN (grøn) | 
| 9 | LIME (limegrøn) | 
| 10 | OLIVE (olivengrøn) | 
| 11 | YELLOW (gul) | 
| 12 | NAVY (marineblå) | 
| 13 | BLUE (blå) | 
| 14 | TEAL (blågrøn) | 
| 15 | AQUA (turkis) | 
| 16 | PINK (pink) | 
| 17 | TOMATO (tomatrød) | 
| 18 | ORANGE (orange) | 
| 19 | GOLD (guld) | 
| 20 | VIOLET (violet) | 
| 21 | SKYBLUE (himmelblå) | 
| 22 | CHOCOLATE (chokoladebrun) | 
| 23 | BROWN (brun) | 
| 24 | INVISIBLE (usynlig) |