BasicC/Operatory
Deklaracja zmiennych
edytujUżywamy składni C: typ zmienna;
, dla tablic: typ zmienna[rozmiar];
i t.d.
Dodatkowe typy SDL: Uint8 Uint16 Uint32 Sint8 Sint16 Sint32
Dodatkowo, jeśli program ma działać w przeglądarce WWW, wprowadzono uniwersalny sposób deklaracji tablic JEDNOWYMIAROWYCH:
typ zmienna Dim(rozmiar);
co w JS spowoduje deklarację nieokreślonego typu.
Dla tablic określonego typu, również w JS, najpierw deklarujemy bufor o wielkości ROZMIAR bajtów przypisany zmiennej NAZWAB:
ByteBuffer(NAZWAB,ROZMIAR)
Następnie tablicę operującą na tym buforze przypisaną zmiennej NAZWAT, np. dla typu Uint32:
U32Array(NAZWAT,NAZWAB)
Ponieważ Uint32 zajmuje 4 bajty - będzie ona miała rozmiar ROZMIAR/4.
Do jednego bufora możne odnosić się kilka tablic, np. po zadeklarowaniu U16Array(NAZWAT16,NAZWAB)
tablica NAZWAT16 będzie operowała na tych samych danych, ale traktowanych jako liczby całkowite 2-bajtowe. Deklaracji tych nie kończymy średnikiem. Dla C wymagany jest BasicSDL.h.
Wstępne przypisanie wartości np. tablicy można wykonac przy pomocy komend:
Data ... EndData
, np:
STRING Name Dim(2)= Data "A.Rapid","J.Fast" EndData
Przypisanie i porównanie
edytujStosuje się składnię C, czyli "=" dla przypisania, "==" dla równości, "!=" dla nierówności ("<>" jest niepoprawne).
Po przypisaniu należy pamiętać o zakończeniu średnikiem.
Let(X,Y)
Do wersji 1.22 komenda przypisuje zmiennej X wartość wyrażenia Y, po której nie stosuje się średnika. Dodatkowo dokonuje rzutowania do typu double, co powinno dać prawidłowy wynik, w przeciwieństwie do podstawiania przez "=", jeśli w wyrażeniu występują liczby całkowite. Dokładnie wykonywana jest następująca operacja języka C:X=(double)Y;
Od wersji 1.23 wykonuje kopiowanie łańcucha tekstowego.
Swap(X,Y)
Zamienia wartości zmiennych liczbowych X i Y z sobą. Wykonuje {VALUE=Y;Y=X;X=VALUE;}
Operatory logiczne
edytujZdefiniowano następujące operatory logiczne (obok ich odpowiedniki w C):
AND &&
MOD %
NOT !
OR ||
XOR ^
Należy pamiętać, że przed i za komendami BasicC musi występować spacja (jeśli nie pełnią roli funkcji), więc nie można np. użyć NOT=
zamiast !=
, NOT =
też jest błędne.
XOR jest tak naprawdę operatorem bitowym, dla pozostałych operacji bitowych stosujemy składnię C.
Zdefiniowana jest funkcja Mod
działająca również na liczbach rzeczywistych oraz Xor
opisane poniżej.
Dodatkowe operacje na bitach
edytuj Bchg(x,b)
Neguje bit b w x, bity liczymy od prawej strony poczynając od 0
Bclr(x,b)
Zeruje bit w x
Bset(x,b)
Ustawia bit w x
Btst(x,b)
Zwraca 1, jeśli bit w x wynosi 1
BSchg(x,b)
Zmienia bity w x, b jest liczbą, zmieniane są bity na pozycjach ustawionych w b na 1
BSclr(x,b)
Zeruje bity w x
BSset(x,b)
Ustawia bity w x
BStst(x,b)
Zwraca 1, jeśli bity w x są ustawione
Warto przejrzeć def. tych funkcji w pliku Basic.h
Funkcje matematyczne
edytuj Abs(x)
wartość bezwzględna z x
Deg(a)
wartość w stopniach kąta a podanego w radianach
Frac(a)
część ułamkowa liczby a
Int(X)
część całkowita liczby X (typu long int
)
Max(X,Y)
większa z liczb X i Y
Min(X,Y)
Mniejsza z liczb X i Y
Mod(a,b)
reszta z dzielenia a/b, działa też na typach ułamkowych
Rad(a)
zamienia stopnie na radiany
Sqp(x)
x*x
Sgn(a)
zwraca 1, gdy a>0; 0, gdy a=0; -1, gdy a<0
Round(X)
zaokrągla do liczby całkowitej, uwaga: .5 zaokrągla w dół
Ceil(X)
zaokrągla w górę
Floor(X)
zaokrągla w dół
ROUNDFC(double X, float a, float b)
funkcja używana przez 3 powyższe
Xor(a,b)
zwraca 0, gdy a AND b; w przeciwnym razie zwraca a OR b
Xor nie jest tym samym co XOR, nie występuje w czystym C i wiekszości odmian Basic.
Komendy te nie wymagają dodatkowej biblioteki. Round, Ceil, Floor są wolniejsze od odpowiedników z math.h, Max, Min, Mod są znacznie szybsze.