Funkcje 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 X0.

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *