Basic: Opis Funkcji Basic'a
Format funkcji: W poniższych definicjach funkcji zastosowany jest następujący format: FUNKCJA (argument) gdzie argument może być wartością numeryczną, zmienną lub łańcuchem. Każdy opis funkcji uzupełniony jest przykładem.
ABS - Oblicza wartość absolutną.
ABS(X)
Funkcja wartości absolutnej zwraca pozbawioną znaku wartość argumentu X.
PRZYKŁAD:
PRINT ABS (7*(-5))
35
ASC - Zwraca kod CBM ASCII znaku.
ASC(X$)
Funkcja ta zwraca wartość kodu ASCII (wersja na COMMODORE) pierwszego znaku zawartego w X$. Musisz dodać CHR$(0) do ciągu pustego, W przeciwnym razie pojawi się błąd ILLEGAL QUANTITY ERROR (nieprawidłowa wartość).
PRZYKŁAD:
X$="CBM":PRINT ASC(X$)
67
ATN - Oblicza w radianach arcus tangens argumentu X.
ATN (X)
Punkcja ta oblicza w radianach arcus tangens argumentu X
Otrzymywana wartość mieści się w przedziale od -pi/2 do +pi/2
PRZYKŁAD:
PRINT ATN (3)
1,24904577
CHR$(X) - Zwraca znak odpowiadający podanemu kodowi CBM ASCII.
CHR$(X)
Jest to funkcja przeciwna do ASC. Podaje ona pojedynczy znak odpowiadający kodowi X. X musi być z przedziału 0 do 255. Tabela kodów CHR$ podana jest w Dodatku D.
PRZYKŁADY:
PRINT CHR$ (65) drukuje znak A
A
PRINT CHR$(147) czyści ekran
COS - Podaje wartość cosinusa argumentu X.
COS(X)
Funkcja ta oblicza wartość cosinusa argumentu X podanego w radianach. Funkcja przyjmuje wartości z przedziału od -1 do 1.
EXP - Podnosi liczbę e (Eulera) do potęgi X.
EXP (X)
Funkcja podnosi e (2.71828183) do potęgi X.
PRZYKŁAD:
PRINT EXP(1)
2.71828183
FNxx - Oblicza wartość funkcji zdefiniowanej przez użytkownika.
FNxx(X)
Oblicza wartość zdefiniowanej przez użytkownika funkcji dla argumentu X. Funkcja nosi nazwę xx i musi być uprzednio zdefiniowana w instrukcji DEF FNxx.
PRZYKŁAD:
10 DEF FNAA(X) _ (X-32)*5/9
20 INPUT X
30 PRINT FNAA(X)
RUN
?40 (? jest zachętą do wprowadzenia danej)
4.44444445
FRE - Podaje ilość wolnej pamięci w komputerze.
FRE(X)
gdzie X jest argumentem fikcyjnym (nie ma znaczenia). C64podaje liczbę bajtów jako 16-bitową wartość ze znakiem. Aby otrzymać liczbę dziesiętną należy użyć: PRINT FRE(0) < 0*-65536 + FRE(0)
PRZYKŁAD:
PRINT FRE(0) Podaje aktualną liczbę wolnych bajtów dla programu w BASICu i zmiennych.
INT - Oblicza część całkowitą (obcięcie) liczby zmiennoprzecinkowej.
INT(X)
Funkcja ta oblicza część całkowitą wyrażenia. Jeśli wyrażenie jest dodatnie, oznacza to odrzucenie części ułamkowej i zwrócenie pozostałej części całkowitej.
PRZYKŁAD:
PRINT INT(3.14)
3
PRINT INT(-3.14)
-4
LEFT$ - Zwraca znaki znajdujące się z lewej strony ciągu.
LEFT$(łańcuch znaków, liczba znaków)
Funkcja ta zwraca ciąg złożony z żądanej liczby lewych, skrajnych znaków podanego łańcucha. Jeśli łańcuch ma mniej znaków niż podana liczba, to zwracany jest cały ciąg. Liczba znaków musi być z przedziału 0-255. W przypadku liczby 0 zwracany jest łańcuch pusty.
PRZYKŁAD:
PRINT LEFT$("COMMODORE",5)
COMMO
LEN - Podaje długość ciągu znaków.
LEN(łańcuch znaków)
Funkcja podaje ilość znaków w łańcuchu. Znaki niedrukowalne oraz spacje są także uwzględniane.
PRZYKŁAD:
PRINT LEN("COMMODORE")
9
LOG - Oblicza wartość logarytmu naturalnego z X.
LOG (X)
Funkcja ta oblicza logarytm naturalny X, gdzie X>0. Logarytm naturalny ma podstawę równą e (zob.. EXP(X)).
Aby obliczyć logarytm przy podstawie 10 podziel wynik przez LOG(10).
PRZYKŁAD:
PRINT LOG(37/5)
2.00148
MID$ - Zwraca podciąg ciągu większego.
MID$(łańcuch znaków, pozycja początkowa, długość)
Funkcja ta zwraca podciąg o żądanej długości, zaczynający się od wybranej pozycji początkowej w łańcuchu wejściowym. Pozycja początkowa określa pierwszy znak od którego podciąg się zaczyna. Długość podciągu jest określona przez trzeci argument funkcji. Pozycja początkowa może wynosić od 1 do 255, długość od 0 do 255. Jeśli wartość początkowa jest większa od długości ciągu wejściowego, lub argument długości wynosi 0, to MID$ zwróci łańcuch pusty. Jeśli argument nie zostanie podany, to zostaną zwrócone wszystkie znaki na prawo od pozycji początkowej (wraz z nią).
PRZYKŁAD:
PRINT MID$("COMMODORE 64 C",3,5)
MMODO
PEEK - Podaje zawartość wybranej komórki pamięci.
PEEK(X)
Funkcja ta podaje zawartość komórki pamięci o adresie X, gdzie X jest z zakresu 0 do 65535. Wynik funkcji jest z zakresu 0 do 255. Jest to dopełnienie instrukcji POKE.
PRZYKŁAD:
PRINT PEEK(650)
0
W przykładzie tym 0 oznacza, że klawiatura znajduje się w trybie normalnym (pod względem tego, które klawisze są samopowtarzalne).
C -Podaje wartość pi.
PRZYKŁAD:
PRINTc
3.14159265
POS - Podaje numer kolumny kursora.
POS (X)
Funkcja POS podaje, w której kolumnie ekranu znajduje się aktualnie kursor. X jest argumentem fikcyjnym, który musi być umieszczony, ale którego wartość jest ignorowana.
PRZYKŁAD:
10 PRINT "KURSOR JEST W KOLUMNIE";
20 PRINT POS(0)
Kiedy uruchomisz ten program komputer napisze: KURSOR JEST W KOLUMNIE 22. Oznacza to, że po wyświetleniu słów KURSOR JEST W KOLUMNIE kursor znajdował się w kolumnie 22.
RIGHT$ - Zwraca podciąg składający się ze skrajnie prawych znaków ciągu.
RIGHT$(łańcuch, Ilość znaków)
Funkcja ta zwraca podciąg złożony za skrajnie prawych argumentów tekstowych. Długość ciągu określona jest przez argument 'ilość znaków', który może być z zakresu 0-255. Jeśli wartość tego argumentu wynosi zero, to zwracany jest łańcuch pusty. Jeśli 'ilość znaków' jest większa niż długość ciągu, to zwracany jest cały ciąg. Zobacz także funkcje LEFT$ i MID$.
PRZYKŁAD:
PRINT RIGHT$("KOMPUTER"5)
PUTER
RND - Zwraca liczbę przypadkową.
RND(X)
Funkcja ta podaje liczbę przypadkową z zakresu 0 do 1. Jest ona użyteczna w grach, w celu stymulowania rzutu kostką lub innych elementów losowych. Jest również użyteczna w pewnych zastosowaniach statystycznych. Gdy X=0 Generuje liczbę losową w oparciu o zegar komputera. Gdy X>0 Produkuje powtarzalne liczby przypadkowe w oparciu o opisaną niżej liczbę bazową. Gdy X< 0 Produkuje liczbę przypadkową używaną jako liczba bazowa. Rozpoczyna sekwencję powtarzalną. W celu zasymulowania rzutu kostką, używaj formuły INT(RND(1)*6+ 1). Najpierw liczba przypadkowa mnożona jest przez 6, co rozszerza zakres od 0 do 6. Teraz dodaje 1 (co powoduje, że zakres zmienia się od liczb większych od 1 a mniejszych od 7). Funkcja INT dokonuje odrzucenia części ułamkowej, pozostawiając liczby w zakresie od 1 do 6.
PRZYKŁADY:
PRINT RND(0) Wyświetla liczbę przypadkową od 0 do 1.
0.507824123
PRINT INT(RND(1)*100+1) Wyświetla liczbę przypadkową z zakresu od 1 do 100.
89
SGN - Zwraca znak argumentu X.
SGN(X)
Funkcja ta podaje znak argumentu X według następującej konwencji: zwraca-1 jeśli X<0, 0 jeśli X=0 i 1 jeśli X>0.
PRZYKŁAD:
PRINT SGN(4.5);SGN(0);SGN(-2.3)
1 0 -1
SIN - Oblicz sinus argumentu.
SIN(X)
Funkcja ta zwraca sinus argumentu X podanego w radianach. Wartość funkcji jest w przedziale 0,1.
PRZYKŁAD:
PRINT SIN(c/3)
0.866025404
SPC - Powoduje przeskoczenie kursora do nowej pozycji.
SPC(X)
Funkcja ta używana jest w instrukcjach PRINT i PRINT# w celu p zeskoczenia o X miejsc od aktualnej pozycji kursora. Zwróć uwagę, że przeskoczone pozycje nie są kasowane. Zobacz także funkcję TAB, która przesuwa kursor do ustalonej pozycji.
PRZYKŁAD:
PRINT "COMMODORE' ;SPC(6);"64C"
COMMODORE 64C
SQR - Oblicza wartość pierwiastka kwadratowego z argumentu.
SQR(X)
Funkcja ta zwraca wartość równą pierwiastkowi kwadratowemu (ang.. SQare Root) argumentu X, gdzie X jest liczbą nieujemną. Jeśli argument jest ujemny, pojawi się komunikat ILLEGAL QUANTITY ERROR (niedopuszczalna wartość).
PRZYKŁAD:
PRINT SQR(25)
5
STR$ - Zwraca postać łańcuchową liczby.
STR$(X)
Funkcja ta zwraca łańcuch (ang.. STRing) reprezentujący wartość liczbową argumentu X przy pomocy znaków ASCII. Funkcja zwraca dokładnie te same znaki, które zostałyby wydrukowane przy pomocy PRINT. Oznacza to, że liczby dodatnie poprzedzone są dwiema spacjami, a ujemne spacją i znakiem minus. Odwrotna do funkcji STR$ jest funkcja VAL.
PRZYKŁAD:
PRINT STR$(123.45)
123.45
PRINT STR$(-89.03)
-89.03
PRINT STR$(1 E20)
1E+20
TAB - Przesuń kursor do pozycji tabulatora.
TAB (X)
Funkcja TAB jest używana w instrukcjach PRINT i PRINT# w celu wykonania warunkowego skoku do kolumny o określonej pozycji. TAB funkcjonuje inaczej w przypadku ekranu niż w przypadku drukarki lub dyskietki. W przypadku drukarek i dyskietek TAB spełnia identyczną funkcję jak SPC (zobacz opis SPC). 11V przypadku ekranu, jeśli kolumna X znajduje się po prawej stronie od bieżącej pozycji ekranu, to X stanie się nową pozycją kursora. Jeśli X jest w miejscu kursora, lub na lewo od niego, to funkcja TAB nie ma żadnego efektu. Znaki przeskoczone nie są kasowane.
PRZYKŁAD:
10 PRINT "COMMODORE";TAB(25);"64C"
COMMODORE 64C
TAN - Oblicza wartość tangensa argumentu.
TAN (X)
Funkcja ta oblicza wartość argumentu X podanego w radianach.
PRZYKŁAD:
PRINT TAN(.785398163)
1
USR - Wywołuje podprogram maszynowy.
USR(X)
Kiedy używana jest ta funkcja, to BASIC umieszcza wartość A w akumulatorze zmiennoprzecinkowym (FAC), w komórkach pamięci od $0061 do $0066 (od 97 do 102) i wywołuje wektor USR. Musisz umieścić adres swojego podprogramu maszynowego w komórkach $0311(785) i $0312(786) (młodszy / starszy bajt adresu). Ponieważ USR jest funkcją, zatem zwraca wartość rzeczywistą umieszczoną w akumulatorze zmiennoprzecinkowym w chwili powrotu. Wektor USR wskazuje normalnie na procedurę ILLEGAL QUANTITY ERROR (nielegalna wartość).
PRZYKŁAD:
10 POKE 785,0
20 POKE 786,192
30 A=USR(X)
40 PRINT A
Linie 10 i 20 umieszczają adres startowy procedury ($C00 = 49152; $00 = 00; $CO =192) pod adresami 785 i
786. Linia 30 zapamiętuje wartość akumulatora zmiennoprzecinkowego w A.
VAL - Zwraca wartość liczbową odpowiadającą podanemu łańcuchowi.
VAL(X$)
Funkcja ta zamienia łańcuch znaków X$ na wartość liczbową, jest zatem operacją odwrotną do STR$. Łańcuch jest analizowany od skrajnie lewej strony do prawej, w celu odszukania możliwie dużej ilości cyfr. Jeśli Commodore natrafi na niedopuszczalny znak, to tylko część łańcucha do tego miejsca zostanie zamieniona na liczbę. Dopuszczalnymi znakami numerycznymi są: 0-9, spacje, + i - ; tylko przed liczbą lub po E kropka dziesiętna (jedna) znak wykładnika E (jeden). Jeśli brak jest w ciągu znaków numerycznych zwracana jest wartość zero.
PRZYKŁAD:
10 A$="120"
20 B$="365"
30 PRINT VAL(A$) + VAL(B$)
RUN
485
"C64 - instrukcja obsługi" Akwilon sp. z o o., Poznań
|