Spis treści

# LibreLogo

LibreLogo to zlokalizowane i nieskomplikowane środowisko programistyczne podobne do Logo, z żółwią grafiką wektorową do nauki informatyki (programowania i obróbki tekstu), DTP i projektowania graficznego. http://www.numbertext.org/logo/librelogo.pdf.

## Pasek narzędzi LibreLogo

Pasek narzędzi LibreLogo (Widok - Paski narzędzi - Logo) zawiera: poruszanie żółwiem, rozpoczynanie, stop, początek, czyszczenie ekranu, ikony edytora programu/podświetlania składni/tłumaczenia oraz pasek wprowadzania (linia poleceń).

## Ikony poruszania żółwiem

To odpowiedniki poleceń języka Logo “FORWARD 10”, “BACK 10”, “LEFT 15”, “RIGHT 15”. Kliknięcie na ikonie spowoduje przeniesienie widoku na żółwiu, przewijając stronę do miejsca, w którym się znajduje.

## Uruchomienie programu Logo

Kliknij ikonę "Uruchomienie programu Logo", aby uruchomić program zapisany w języku LibreLogo zawarty w tekście dokumentu lub zaznaczonym obszarze. W pustym dokumencie zostanie wklejony i uruchomiony przykładowy program.

Kliknij ikonę “Zatrzymaj”, aby zatrzymać wykonywanie programu.

## Początek

Kliknij ikonę “Początek”, aby zresetować pozycję i ustawienia żółwia.

## Wyczyść ekran

Kliknij ikonę “Wyczyść ekran”, aby usunąć obiekty rysunkowe z dokumentu.

## Edytor programu/Wyróżnianie składni/Tłumaczenie

Ikona „magicznej różdżki” ustawia dwustronicowy układ do edycji programu, rozwija i konwertuje na wielkie litery skrócone, pisane małymi literami polecenia Logo w dokumencie programu Writer. Zmień język dokumentu (LibreOffice - Preferencje Narzędzia - Opcje - Języki i ustawienia regionalne - Ogólne - Zachodnie) i kliknij tę ikonę, aby przetłumaczyć program Logo na wybrany język.

## Wiersz poleceń

Naciśnij Enter w wierszu poleceń, aby wykonać program. Aby zatrzymać program, użyj ikony “Zatrzymaj”.

Przytrzymaj Enter, aby powtarzać zawartość wiersza poleceń, na przykład taką sekwencję poleceń:

     FORWARD 200 LEFT 89

Aby zresetować wiersz poleceń, kliknij go trzykrotnie lub naciśnij Command Ctrl +A, aby wybrać poprzednie polecenia i wpisać nowe.

## Graficzny interfejs użytkownika podstawowych ustawień żółwia

Kształt żółwia w LibreLogo to normalny obiekt rysunkowy o stałym rozmiarze. Można go również umieszczać i obracać w standardowy sposób, używając myszy i ikony Obróć na pasku narzędzi Właściwości obiektu rysunkowego. Zmodyfikuj ustawienia grubości linii, koloru linii i koloru obszaru kształtu żółwia, aby ustawić atrybuty PENSIZE, PENCOLOR i FILLCOLOR LibreLogo.

## Edycja programu

Rysunki i programy LibreLogo używają tego samego dokumentu Writera. Płótno LibreLogo znajduje się na pierwszej stronie dokumentu Writera. Można wstawić podział strony przed programem LibreLogo i ustawić powiększenie używając ikony "magicznej różdżki" widocznej na pasku narzędzi Logo oraz zmienić rozmiar czcionki dla wygodnego widoku dwóch stron w trakcie programowania w LibreLogo: lewa (pierwsza) strona będzie płótnem, a prawa (druga) przeznaczona będzie na programy LibreLogo.

# Język programowania LibreLogo

LibreLogo jest łatwo lokalizowalny, język programowania jak Logo, zlokalizowany jest w kilku językach LibreOffice rodzimych społeczności językowych. Jest kompatybilny wstecz ze starszymi systemami Logo w przypadku prostych programów Logo wykorzystywanych w edukacji, na przykład.

     TO trójkąt :rozmiar
     REPEAT 3 [
       FORWARD:rozmiar
       LEFT 120
     ]
     END

     trójkąt 10 trójkąt 100 trójkąt 200

## Różnice w stosunku do języka programowania Logo

- Elementy listy są oddzielane przecinkami: POSITION [0, 0]

- Bloki i listy programu różnią się

- - Bloki programu należy oddzielać spacją lub nowym wierszem w nawiasach: REPEAT 10 [FORWARD 10 LEFT 36 ]

  - W listach należy stosować bliskie nawiasy: POSITION [0, 0], a nie POSITION [ 0, 0 ]

- Deklaracje funkcji jednoliniowej nie są obsługiwane (TO i END wymagają nowych wierszy).

## Pozostałe funkcje LibreLogo

- Dwukropek jest opcjonalny przed nazwami zmiennych.

       TO rozmiar trójkąta
         REPEAT 3 [ FORWARD rozmiar LEFT 120 ]
       END

- Notacja ciągów wspiera ortografię i składnię Pythona.

       PRINT "słowo ; oryginalna składnia Logo
       PRINT “Dowolny tekst.” ; ortografia, Writer
       PRINT 'Dowolny tekst.' ; składnia Pythona

- Obsługa list i ciągów Pythona

       PRINT “tekst”[2] ; drukuj “x”
       PRINT “tekst”[1:3] ; wyświetl “ex”

- Pętla FOR jak w Pythonie

- Deklaracja zmiennych jak w Pythonie:

       x = 15
       PRINT x

- Nie istnieją żadne dodatkowe funkcje kwerend:

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

- Alternatywne formy nawiasowania w wywołaniach funkcji

       TO rozmiar gwiazdki kolor
       FILLCOLOR kolor
       REPEAT 5 [ LEFT 72 FORWARD rozmiar RIGHT 144 FORWARD rozmiar ]
       FILL
       END

       gwiazdka 100 "czerwony"
       gwiazdka(100, “zielony")
       gwiazda(100, "niebieski")

# Polecenia LibreLogo

## Podstawowa składnia

### Uwzględnia wielkość litrer

W poleceniach i stałych kolorów rozróżniana jest wielkość liter:

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

W nazwach zmiennych rozróżniana jest wielkość liter:

     a = 5
     A = 7
     PRINT a
     PRINT A

### Wiersze programu

Wiersze programu LibreLogo to akapity w dokumencie Writera. Wiersz programu może zawierać wiele poleceń:

     PRINT “Hello, World!” PRINT “LibreLogo”

### Komentarze

Wierze lub ich fragmenty staję się komentarzami od miejsca wstawienia średnika do końca wiersza (akapitu):

     ; jakieś komentarze
     PRINT 5 * 5 ; jakieś komentarze

### Łamanie wierszy programu na kilka akapitów

Możliwe jest złamanie wiersza programu na kilka akapitów stawiając tyldę na końcu wiersza:

     PRINT “To jest bardzo długa ” + ~
           “wiadomość ostrzegawcza”

## Poruszanie żółwiem

### FORWARD (fd)

     FORWARD 10 ; przesuń do przodu o 10 pkt. (1 pkt. = 1/72 cala)
     FORWARD 10pt ; patrz wyżej
     FORWARD 0.5in ; przesuń do przodu o 0,5 cala (1 cal = 2,54 cm)
     FORWARD 1" ; patrz wyżej
     FD 1mm
     FD 1cm

### BACK (bk)

     BACK 10 ; przesuń do tyłu o 10 pkt.

### LEFT (lt)

     LEFT 90 ; obróć w kierunku przeciwnym do wskazówek zegara o 90 stopni
     LEFT 90° ; patrz wyżej
     LT 3h ; patrz wyżej (pozycja na zegarze)
     LT any ; obróć losowo

### RIGHT (rt)

     RIGHT 90 ; obróć w kierunku wskazówek zegara o 90 stopni

### PENUP (pu)

     PENUP ; żółw poruszy się bez rysowania

### PENDOWN (pd)

     PENDOWN ; żółw poruszy się rysując

### POSITION (pos)

     POSITION [0, 0] ; obróć i przesuń do lewego górnego rogu
     POSITION PAGESIZE ; obróć i przesuń do dolnego prawego rogu
     POSITION [PAGESIZE[0], 0] ; obróć i przesuń do górnego prawego rogu
     POSITION ANY ; obróć i przesuń do losowego położenia

### HEADING (seth)

     HEADING 0 ; obróć na północ
     HEADING 12h ; patrz wyżej
     HEADING [0, 0] ; obróć do górnego lewego rogu
     HEADING ANY ; obróć w losową stronę

## Pozostałe polecenia żółwia

### HIDETURTLE (ht)

     HIDETURTLE ; ukryj żółwia (do momentu wywołania polecenia showturtle)

### SHOWTURTLE (st)

     SHOWTURTLE ; wyświetl żółwia

### HOME

     HOME ; zresetuj początkową pozycję żółwia

### CLEARSCREEN (cs)

     CLEARSCREEN ; usuwa elementy rysunkowe z dokumentu

### FILL i CLOSE

     FILL ; zamknij i wypełnij obecny kształt linii lub punktów
     CLOSE ; zamknij obecny kształt linii lub połącz obecne punkty

Przykład: wypełnienie trójkąta równobocznego:

     FORWARD 50 LEFT 120 FORWARD 50 FILL

Przykład: rysowanie trójkąta równobocznego:

     FORWARD 50 LEFT 120 FORWARD 50 CLOSE

## Ustawienia pióra

### PENSIZE (ps)

     PENSIZE 100 ; grubość linii wynosi 100 punktów
     PENSIZE ANY ; odpowiednik PENSIZE RANDOM 10

### PENCOLOR/PENCOLOUR (pc)

     PENCOLOR “red” ; ustaw kolor pióra na czerwony (wg nazwy koloru ze stałych kolorów)
     PENCOLOR [255, 255, 0] ; ustaw kolor żółty (lista RGB)
     PENCOLOR 0xffff00 ; ustaw kolor żółty (kod szesnastkowy)
     PENCOLOR 0 ; ustaw kolor czarny (0x000000)
     PENCOLOR ANY ; losowy kolor
     PENCOLOR [5] ; ustaw kolor czerwony (wg identyfikatora koloru, zobacz stałe kolorów)
     PENCOLOR “invisible” ; niewidoczny kolor pióra, dla kształtów bez widocznego obramowania
     PENCOLOR “~red” ; ustaw losowy kolor czerwony

### PENTRANSPARENCY

     PENTRANSPARENCY 80 ; ustawia przezroczystość śladu pióra na 80%

### PENCAP/LINECAP

     PENCAP “none” ; bez zakończenia linii (domyślnie)
     PENCAP “round” ; zaokrąglone zakończenie linii
     PENCAP “square” ; kwadratowe zakończenie linii

### PENJOINT/LINEJOINT

     PENJOINT “rounded” ; zaokrąglone łączenie linii (domyślne)
     PENJOINT “miter” ; kątowe łączenie linii
     PENJOINT “bevel” ; ukośne łączenie linii
     PENJOINT “none” ; bez łączenia

### PENSTYLE

     PENSTYLE “solid” ; linia ciągła (domyślna)
     PENSTYLE “dotted” ; linia kropkowana
     PENSTYLE “dashed” ; linia kreskowana

     ; niestandardowy wzór z kropek i kresek określony listą zawierającą następujące argumenty:
     ; – liczba sąsiadujących kropek
     ; – długość kropki
     ; – liczba sąsiadujących kresek
     ; – długość kreski
     ; – odstępy między kropkami/kreskami
     ; – typ (opcjonalnie):
     ;   0 = prostokątne kropki (domyślne)
     ;   2 = kwadratowe kropki (długości i odległości są względne do pensize)

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

## Ustawienia wypełniania

### FILLCOLOR/FILLCOLOUR (fc)

     FILLCOLOR “blue” ; wypełnienie niebieskim kolorem, zobacz również PENCOLOR
     FILLCOLOR “invisible” CIRCLE 10 ; niewypełnione koło
     FILLCOLOR [“blue”, “red”] ; gradient między niebieskim i czerwonym
     FILLCOLOR [[255, 255, 255], [255, 128, 0]] ; między białym i pomarańczowym
     FILLCOLOR [“blue”, “red”, 1, 0, 0] ; ustawia gradient osiowy (z wymaganymi ustawieniami obrotu i obramowania), dostępne wartości to: 0-5 = liniowy, osiowy, promieniowy, eliptyczny, kwadratowy i prostokątny gradient
     FILLCOLOR [“red”, “blue”, 0, 90, 20] ; liniowy z 20% obramowaniem, obrócony o 90 stopni w stosunku do kierunku, w który skierowana jest głowa żółwia
     FILLCOLOR [“red”, “blue”, 0, 90, 20, 0, 0, 200, 50] ; od natężenia 200% do 50%
     FILLCOLOR [ANY, ANY, 2, 0, 0, 50, 50] ; gradient promieniowy między losowymi kolorami i 50%-50% poziomym i pionowym rozmieszczeniem w stosunku do środka

### FILLTRANSPARENCY

     FILLTRANSPARENCY 80 ; ustawia przezroczystość aktualnego koloru wypełnienia na 80%
     FILLTRANSPARENCY [80] ; ustawia liniowy gradient przezroczystości od 80% do 0%
     FILLTRANSPARENCY [80, 20] ; ustawia liniowy gradient przezroczystości od 80% do 20%
     FILLTRANSPARENCY [80, 20, 1, 90] ; ustawia osiowy gradient przezroczystości obrócony o 90 stopni w stosunku do kierunku, w którym skierowana jest głowa żółwia
     FILLTRANSPARENCY [80, 20, 2, 0, 20, 50, 50] ; ustawia promieniowy gradient przezroczystości z zewnętrznego 80% do wewnętrznego 20% z 20% obramowaniem i 50%-50% poziomą i pionową pozycją w stosunku do środka

### FILLSTYLE

     FILLSTYLE 0 ; wypełnij bez kreskowania (domyślne)
     FILLSTYLE 1 ; czarne pojedyncze kreski (poziomo)
     FILLSTYLE 2 ; czarne pojedyncze kreski (45 stopni)
     FILLSTYLE 3 ; czarne pojedyncze kreski (-45 stopni)
     FILLSTYLE 4 ; czarne pojedyncze kreski (pionowo)
     FILLSTYLE 5 ; czerwone kreskowanie krzyżowe (45 stopni)
     FILLSTYLE 6 ; czerwone kreskowanie krzyżowe (0 stopnii)
     FILLSTYLE 7 ; niebieskie kreskowanie krzyżowe (45 stopni)
     FILLSTYLE 8 ; niebieskie kreskowanie krzyżowe (0 stopni)
     FILLSTYLE 9 ; niebieskie potrójnie krzyżowane
     FILLSTYLE 10 ; czarne, szerokie, pojedyncze kreskowanie (45 stopnii)

     ; niestandardowe kreskowanie określone listą następujących argumentów:
     ; – styl (1 = pojedyncze, 2 = podwójne, 3 = potrójne kreskowanie)
     ; – kolor
     ; – odległość
     ; – stopień

     FILLSTYLE [2, “green”, 3pt, 15°] ; zielone kreskowanie krzyżowe (15 stopnii)

## Obiekty rysunkowe

### CIRCLE

     CIRCLE 100 ; rysuje kształt koła (średnica = 100 pkt.)

### ELLIPSE

     ELLIPSE [50, 100] ; narysuj elipsę o średnicach 50 i 100
     ELLIPSE [50, 100, 2h, 12h] ; narysuj eliptyczny wycinek (od 2 do 12 godziny)
     ELLIPSE [50, 100, 2h, 12h, 2]  ; narysuj eliptyczny wycinek
     ELLIPSE [50, 100, 2h, 12h, 3]  ; narysuj łuk eliptyczny

### SQUARE

     SQUARE 100 ; narysuj kwadrat (rozmiar = 100 pkt.)

### RECTANGLE

     RECTANGLE [50, 100] ; narysuj prostokąt (50×100 pkt.)
     RECTANGLE [50, 100, 10] ; narysuj prostokąt z zaokrąglonymi narożnikami

### POINT

     POINT ; narysuj punkt o rozmiarze i kolorze pióra

CLOSE potrafi połączyć ostatnie punkty, FILL potrafi wypełnić zdefiniowany kształt przez punkty. Dla przykładu, prosta do narysowania płaska gwiazda mająca początek od środka:

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

### LABEL

     LABEL “tekst” ; wydrukuj tekst w obecnym położeniu żółwia
     LABEL 'tekst' ; patrz wyżej
     LABEL "tekst; patrz wyżej (tylko dla pojedynczych słów)

### Tekst

     CIRCLE 10 TEXT “tekst” ; ustaw tekst jako obiekt rysunkowy

## Ustawienia czcionki

### FONTCOLOR/FONTCOLOUR

     FONTCOLOR “green” ; ustawia kolor czcionki na zielony

### FONTFAMILY

     FONTFAMILY “Linux Libertine G” ; ustaw czcionkę (rodzinę czcionek)
     FONTFAMILY “Linux Libertine G:smcp=1” ; ustaw również cechę czcionki (kapitaliki)
     FONTFAMILY “Linux Libertine G:smcp=1&onum=1” ; kapitaliki + stare figury

### FONTSIZE

     FONTSIZE 12 ; ustaw 12 pkt.

### FONTWEIGHT

     FONTWEIGHT “bold” ; ustaw grubą czcionkę
     FONTWEIGHT “normal” ; ustaw normalną wagę

### FONTSTYLE

     FONTSTYLE “italic” ; ustaw kursywę
     FONTSTYLE “normal” ; ustaw normalną

## PICTURE (pic)

PICTURE służy do

- grupowania kształtów;

- tworzenia kształtów nowych linii;

- zapisywanie obrazów SVG i animacji SVG/SMIL;

- utrzymanie spójności położenia i kształtów linii w stosunku do lewego boku.

### Grupowanie kształtów

     ; PICTURE [ Polecenia_LibreLogo]
     PICTURE [ FORWARD 100 CIRCLE 100 ] ; pogrupowany kształt podobny do drzewa

Zobacz także „Grupa” w pomocy programu LibreOffice Writer.

     TO lokalizacja drzewa
     PENUP POSITION lokalizacja HEADING 0 PENDOWN
       PICTURE [ FORWARD 100 CIRCLE 100 ] ; zgrupowany kształt przypominający drzewo
     END

     PICTURE [ drzewo [230, 400] drzewo [300, 400] ] ; zgrupowane kształty w zgrupowanym kształcie

### Tworzenie nowych kształtów linii

     PICTURE ; utwórz nowy kształt linii
     FORWARD 10 PICTURE FORWARD 10 ; kształty dwuliniowe

### Zapisywanie obrazów SVG

     PICTURE “example.svg” [ CIRCLE 5 ] ; zapisze zdjęcie jako plik obrazu SVG w folderze użytkownika
     PICTURE “Desktop/example.svg” [ FORWARD 100 CIRCLE 5 ] ; jak wyżej, ze ścieżką względną
     PICTURE “/home/user/example.svg” [ CIRCLE 5 ] ; ścieżka bezwzględna dla systemów Unix/Linux
     PICTURE “C:\example.svg” [ CIRCLE 5 ] ; ścieżka bezwzględna dla systemów Windows

### Zapisywanie animacji SVG/SMIL (rysowanie z komendą SLEEP)

     PICTURE “animation.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 ] ; zapisze jako animację SVG/SMIL (zobacz również SLEEP)
     PICTURE “animation2.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 SLEEP 2000 ] ; jak wyżej, ale użycie SLEEP po ostatnim obiekcie zapętli rezultat: po 2 sekundach animacja SVG się powtórzy w kompatybilnych przeglądarkach ze SMIL

### Spójność na lewej krawędzi

Użyj PICTURE, aby zachować spójność pozycji i kształtów linii przy lewej krawędzi programu Writer:

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

## Pętle

### REPEAT

     ; REPEAT liczba [ polecenia ]

     REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ] ; powtórz 10 razy

     ; liczba jest opcjonalna

     REPEAT [ POSITION ANY ] ; nieskończona pętla

### REPCOUNT

Zmienna pętli (również w pętlach FOR i WHILE).

     REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]

### FOR IN

Pętla dla elementów z listy:

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

Pętla znaków w sekwencji znaków:

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

### WHILE

     WHILE TRUE [ POSITION ANY ] ; pętla nieskończona
     WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ] ; jako REPEAT 10 [ ... ]

### BREAK

Zatrzymaj pętlę.

     REPEAT [ ; nieskończona pętla
       POSITION ANY
       IF REPCOUNT = 100 [ BREAK ]  ; odpowiednik polecenia REPEAT 100 [ ... ]
     ]

### CONTINUE

Przejdź do następnego powtórzenia pętli.

     REPEAT 100 [
       POSITION ANY
       IF REPCOUNT % 2 = 0 [ CONTINUE ]
       CIRCLE 10 ; rysuj okręgi co dwie pozycje
     ]

## Warunki

### IF

     ; IF warunek [ prawdziwy blok ]
     ; IF warunek [ prawdziwy blok ] [ fałszywy blok ]

     IF a < 10 [ PRINT “Małe” ]
     IF a < 10 [ PRINT “Małe” ] [ PRINT “Duże” ]

### AND, OR, NOT

Operatory logiczne.

     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” ] ; jak wyżej

## Podprogramy

### TO, END

Nowe słowo (lub procedura).

     TO trójkąt
       REPEAT 2 [ FORWARD 100 RIGHT 120 ] FILL
     END

     REPEAT 10 [ trójkąt PENUP POSITION ANY PENDOWN ]

### OUTPUT

Zwróć wartość funkcji.

     TO losowalitera
       OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”
     END

     PRINT losowalitera + losowalitera + losowalitera; wydrukuj sekwencję trzech losowych liter

### STOP

Powrót z procedury.

     TO przykładowa liczba
       IF liczba< 0 [ STOP ]
       PRINT SQRT liczba ; wydrukuj pierwiastek kwadratowy
     ]

     przykład 100
     przykład -1 ; bez wyjścia i błędu
     przykład 25

## Domyślne zmienne

### ANY

Domyślna losowa wartość koloru, itd.

     PENCOLOR ANY ; losowy kolor pióra

### TRUE

Wartość logiczna.

     WHILE TRUE [ POSITION ANY ] ; nieskończona pętla
     PRINT TRUE ; drukuj prawdę

### FALSE

Wartość logiczna.

     WHILE NOT FALSE [ POSITION ANY ] ; nieskończona pętla
     PRINT FALSE ; wydrukuj fałsz

### PAGESIZE

     PRINT PAGESIZE ; wydrukuj listę rozmiarów stron w punktach [595.30, 841.89]

### PI/π

     PRINT PI ; wydrukuj 3.14159265359

## Input/Output

### PRINT

     PRINT “tekst” ; drukuje “tekst” w oknie dialogowym
     PRINT 5 + 10 ; wydrukuj 15

### INPUT

     PRINT INPUT “Wartość wejściowa?” ; zapytaj i wydrukuj ciąg w oknie kwerendy
     PRINT FLOAT (INPUT “Pierwsza liczba?”) + FLOAT (INPUT “Druga liczba?”) ; prosty kalkulator

## SLEEP

     SLEEP 1000 ; odczekaj 1000 ms (1 sek.)

## GLOBAL

Ustaw globalne zmienne używane w procedurach.

     GLOBAL informacje
     informacje = “LibreLogo”

     TO przyklad
       PRINT informacje
       GLOBAL informacje ; gdy chcemy dodać nową wartość
       informacje = “nowa wartość zmiennej globalnej”
     END

     przyklad
     PRINT informacje

## Funkcje

### RANDOM

     PRINT RANDOM 100 ; losowa liczba zmiennoprzecinkowa (0 <= x < 100)
     PRINT RANDOM “tekst” ; losowa litera z tekstu “tekst”
     PRINT RANDOM [1, 2] ; losowy element z listy (1 lub 2)

### INT

     PRINT INT 3.8 ; drukuje 3 (całkowita część liczby 3,8)
     PRINT INT RANDOM 100 ; losowa liczba całkowita (0 <= x < 100)
     PRINT INT “7” ; skonwertuj parametr ciągu na liczbę całkowitą

### FLOAT

     ; konwertuj parametr ciągu na liczbę zmiennoprzecinkową
     PRINT 2 * FLOAT “5.5” ; wydrukuj 11.0

### STR

     ; konwertuj parametr liczby na ciąg
     PRINT “Wynik: ” + STR 5 ; drukuj “Wynik: 5”
     PRINT 10 * STR 5 ; drukuj 5555555555

### SQRT

     PRINT SQRT 100 ; drukuj 10, pierwiastek kwadratowy z 100

### SIN

     PRINT SIN 90 * PI/180 ; wydrukuj 1,0 (sinus z 90° w radianach)

### COS

     PRINT COS 0 * PI/180 ; wydrukuj 1,0 (cosinus z 0° w radianach)

### LOG10

     PRINT LOG10 100 ; drukuje 2.0 (logarytm dziesiętny ze 100)

### ROUND

     PRINT ROUND 3.8 ; drukuj 4 (zaokrąglenie 3,8)
     PRINT ROUND RANDOM 100 ; losowa liczba całkowita (0 <= x <= 100)

### ABS

     PRINT ABS -10 ; drukuj 10, wartość absolutna z -10

### COUNT

     PRINT COUNT “tekst” ; drukuj 5, liczba znaków w “tekst”
     PRINT COUNT [1, 2, 3] ; drukuj 3, rozmiar listy

### SET

     ; konwertuj listę na zestaw Pythona
     PRINT SET [4, 5, 6, 6] ; drukuj {4, 5, 6}
     PRINT SET [4, 5, 6, 6] | SET [4, 1, 9] ; drukuj sumę zbiorów {1, 4, 5, 6, 9}
     PRINT SET [4, 5, 6, 6] & SET [4, 1, 9] ; drukuj iloczyn zbiorów {4}
     PRINT SET ([4, 5, 6, 6]) - SET [4, 1, 9] ; drukuj różnicę zbiorów {5, 6}
     PRINT SET [4, 5, 6, 6] ^ SET [4, 1, 9] ; print {1, 5, 6, 9}, różnica symetryczna

### RANGE

     ; Generowanie list w stylu Pythona
     PRINT LIST RANGE 10 ; wyświetl [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     PRINT LIST RANGE 3 10 ; wyświetl [3, 4, 5, 6, 7, 8, 9]
     PRINT LIST RANGE 3 10 3 ; wyświetl [3, 6, 9]

     FOR i IN RANGE 10 50 10 [ ; zapętlenie do [10, 20, 30, 40]
       FORWARD i
       LEFT 90
     ]

### LIST

     ; usuń powtarzające się elementy w liście używając konwersji zestawu i listy
     PRINT LIST (SET [1, 3, 5, 5, 2, 1]) ; drukuj [1, 3, 5, 2]

### TUPLE

Konwersja do spójnej kolekcji Pythona (lista niemodyfikowalna)

     PRINT TUPLE [4, 5]

### SORTED

Zwraca posortowaną listę.

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

### SUB

Zastępuj sekwencje znaków za pomocą wyrażeń wzorów wyrażeń regex (wyrażenie regularne).

     PRINT SUB (“t”, “T”, “tekst”) ; wydrukuj “tekst”, zamiast “t” z “T”
     PRINT SUB (“(.)”, “\\1\\1”, “tekst”) ; print “tteekksstt”, podwajanie każdego znaku

### SEARCH

Znajdź sekwencje wzorców używając wzorców regex.

     IF SEARCH (“\w”, "litera") [ PRINT “Litera w słowie.” ]

### FINDALL

Znajdź wszystkie sekwencje znaków w ciągu wejściowym pasujące do wzorca regex.

     PRINT FINDALL(“\w+”, “Psy, koty.”) ; drukuj [“Psy”, “koty”], listę słów.

### MIN

     PRINT MIN [1, 2, 3] ; drukuj 1, najmniejszy element z listy

### MAX

     PRINT MIN [1, 2, 3] ; drukuj 3, największy element z listy

## Stałe kolorów

     PENCOLOR “SILVER” ; ustaw wg nazwy
     PENCOLOR [1] ; ustaw wg identyfikatora
     PENCOLOR “~SILVER” ; losowy kolor srebrny

Identyfikator | Nazwa
--- | ---
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

Prosimy o wsparcie!