Dokumentacja QCode
Spis podstawowych komend oraz dostępnych makr preprocesora.
1. Tworzenie Funkcji
Funkcje w QCode pozwalają na grupowanie komend. Ważna zasada dotycząca zmiennych:
func pokaz_x
println Aktualny x: v(x)
end
int x 10
run pokaz_x
] Wypisze: Aktualny x: 10
set x 20
run pokaz_x
] Wypisze: Aktualny x: 20Uwaga: Aby funkcja zawsze korzystała z aktualnej wartości zmiennej, zmienna musi być zadeklarowana PO definicji funkcji. Jeśli zadeklarujesz zmienną przed funkcją, jej wartość wewnątrz funkcji zostanie "zamrożona" na stanie z momentu tworzenia funkcji.
2. Podstawowe Komendy
| Komenda | Argumenty | Przykład | Opis |
|---|---|---|---|
int |
[x] [y] | int i 10 |
Tworzy nową zmienną [x] typu INT o wartości [y]. |
float |
[x] [y] | float f 3.1415 |
Tworzy nową zmienną [x] typu FLOAT o wartości [y]. |
string |
[x] [y] | string s Hello, world! |
Tworzy nową zmienną [x] typu STRING o treści [y]. |
rem |
[x] | rem x |
Usuwa zmienną [x] z pamięci. |
set |
[x] [y] | set x 10 |
Ustawia wartość zmiennej [x] na [y]. |
add |
[x] [y] | add s Siema! |
Dodaje [y] do [x]. Dla liczb to suma, dla STRING to dopisanie tekstu. |
sub |
[x] [y] | sub x 5 |
Usuwa [y] od zmiennej [x]. (INT , FLOAT) |
mul |
[x] [y] | mul x 2 |
Mnoży wartość zmiennej [x] przez [y]. (INT , FLOAT) |
div |
[x] [y] | div x 3 |
Dzieli wartość zmiennej [x] przez [y]. (INT , FLOAT) |
mod |
[x] [y] [z] | mod 10 3 x |
Oblicza resztę z dzielenia [x] przez [y] i zapisuje wynik w zmiennej [z]. |
list |
[x] [y] | list int l |
Tworzy listę [y] o typie [x]. (przechowuje tylko wartości typu [x]) |
addl |
[x] [y] | addl l 10 |
Dodaje [y] do listy [x]. |
setl |
[x] [y] [z] | setl l 2 50 |
Ustawia wartość [z] na liście [x] pod indeksem [y]. |
reml |
[x] | reml l |
Usuwa całą listę [x] z pamięci. |
remli |
[x] [y] | remli l 0 |
Czyści na liście [x] element o indeksie [y]. |
run |
[x] | run fn |
Wykonuje funkcję o nazwie [x]. |
if |
[x] [y] [z] [a] | if a == b fn |
Wykonuje funkcję o nazwie [a] jeżeli warunek podany w [x][y][z] jest spełniony. |
ifel |
[x] [y] [z] [a] [b] | ifel a == b fn1 fn2 |
Wykonuje funkcję o nazwie [a] jeżeli warunek podany w [x][y][z] jest spełniony, w przeciwnym razie wykona funkcję [b]. |
for |
[x] [y] | for 10 fn |
Wykonuje funkcję o nazwie [y] przez [x] razy. |
print |
[x] | print Hello, world! |
Wypisuje [x] bez nowej linii. |
println |
[x] | println Hello, world! |
Wypisuje tekst [x] i przechodzi do nowej linii. |
clear |
brak | clear |
Czyści okno konsoli/terminala (używa sekwencji ANSI). |
input |
[x] | input s |
Ustawia wartość zmiennej [x] na podany tekst przez użytkownika. |
split |
[x] [y] [z] [a] | split s __ a b |
Dzieli tekst [x] przez pierwszy napotkany znak [y]. Wynik przypisuje do zmiennych [z] i [a]. Użyj __, aby dzielić przez spację. |
3. Komentarze
Komentarze w QCode muszą znajdować się w osobnej linii. Każda linia zaczynająca się od znaku ] jest ignorowana przez interpreter.
] To jest poprawny komentarz
add x 10
add x 1 ] To wygeneruje BŁĄD
4. Preprocesory
Preprocesory działają przed wykonaniem komendy, zamieniając wzorce na wartości z pamięci.
v(x)– Zwraca wartość zmiennejx.t(x)– Zwraca typ zmiennejx. ( int , float , string )l(x)– Zwraca liczbę elementów w liściex.g(x i)– Zwraca element z listyxpod indeksemi. (musi to być liczba, np. 0,v(i)nie zadziała)gv(x y)– Zwraca element z listyxużywając wartości zmiennejyjako indeksu.