Rozdział 5 - Funkcje

Matematycznie funkcja jest regułą dającą w wyniku liczbę (wynik) w zamian za inną liczbę (argument lub operand) i tak jest w rzeczywistości operacją jednoargumentową. ZX81 posiada wbudowane niektóre z funkcji matematycznych, a ich nazwy znajdują się pod klawiszami. Na przykład SQR jest znaną funkcją pierwiastka kwadratowego, a:

PRINT SQR 9

daje wynik 3, czyli pierwiastek kwadratowy z 9 (aby otrzymać SQR, najpierw naciskasz na klawisz FUNCTION - NEWLINE z SHIFT. Zmienia to kursor na  F . Teraz naciśnij klawisz SQR (H); na ekranie pojawi się SQR, a kursor zmieni się z powrotem na  L . Ta sama procedura działa dla wszystkich słów o nazwach umieszczonych pod klawiszami, z których prawie wszystkie są nazwami funkcji).

Wpisz:

PRINT SQR 2

Dokładność wyniku możesz przetestować następująco:

PRINT SQR 2*SQR 2

co powinno dać 2. Zwróć uwagę, iż obie funkcje SQR zostały wyliczone przed *, a w rzeczywistości wszystkie funkcje (z wyjątkiem jednej - NOT) są obliczane przed pięcioma operacjami +, -, *, / oraz **. Regułę tę możesz ponownie obejść stosując nawiasy:

PRINT SQR (2*2)

daje 2.

Oto niektóre funkcje (w dodatku C umieszczona jest kompletna lista). Jeśli twoja znajomość matematyki nie pozwala ci ich zrozumieć, nie ma to znaczenia - wciąż będziesz mógł używać tego komputera.

 

SGN Funkcja znaku (zwana czasami signum w celu odróżnienia od SIN). Wynikiem jest -1, 0 lub +1 w zależności od tego, czy argument jest ujemny, zerowy lub dodatni.
ABS Wartość bezwzględna, inaczej moduł. Wynikiem jest argument przekształcony na liczbę dodatnią, zatem

       ABS -3.2 = ABS 3.2 = 3.2 

SIN sinus*
COS cosinus*
TAN tangens*
ASN arcus sinus*
ACS arcus cosinus*
ATN arcus tangens*
LN logarytm naturalny (o podstawie 2.718281828459045..., zwanej inaczej e)
EXP funkcja wykładnicza
SQR pierwiastek kwadratowy
INT część całkowita. Zawsze jest zaokrąglana w dół, więc INT 3.9 = 3 a INT -3.9 = -4.
PI π = 3.1415265358979..., obwód w łokciach okręgu o średnicy jednego łokcia. PI nie posiada argumentu (komputer pamięta tylko 10 cyfr tej liczby, a wyświetla jedynie 8).
RND Również RND nie ma argumentu. Zwraca przypadkową liczbę w zakresie od 0 (może tyle wynieść) do 1 (tyle nigdy nie wynosi).

* Funkcje trygonometryczne, które pracują w radianach, a nie w stopniach.
 

Używając żargonu z ostatniego rozdziału, wszystkie funkcje z wyjątkiem PI i RND są jednoargumentowymi operacjami o priorytecie 11 (PI i RND są zeroargumentowymi operacjami, ponieważ nie posiadają żadnych operandów).

Funkcje trygonometryczne, EXP, LN i SQR są zwykle wyliczane z dokładnością do 8 cyfr znaczących.

RND i RAND: znajdują się na tym samym klawiszu, jednakże RND jest funkcją, a RAND jest słowem kluczowym, podobnie jak PRINT. RAND wykorzystuje się do sterowania przypadkowością funkcji RND.

Funkcja RND nie jest naprawdę przypadkowa, lecz kolejno przechodzi przez ciąg 65536 liczb tak pomieszanych, iż wyglądają jak przypadkowe (RND jest funkcją pseudoprzypadkową). Możesz wykorzystać RAND do ustawienia RND na określonej pozycji tego ciągu wpisują RAND, a następnie liczbę w zakresie od 1 do 65535 i NEWLINE. Znajomość położenia w ciągu, od którego rozpoczyna RND, nie jest tak ważna, jak to, iż ta sama liczba za RAND spowoduje, iż RND będzie startować zawsze z tego samego miejsca. Na przykład wpisz:

RAND 1          (i NEWLINE)

a następnie

PRINT RND

i powtórz te dwa polecenia kilka razy (pamiętaj o użyciu FUNCTION, aby otrzymać RND).  Wynik RND zawsze wyniesie 0.0022735596, co nie jest specjalnie przypadkowe.

RAND 0

(0 możesz pominąć) działa nieco inaczej: określa startowe położenie dla RND na podstawie czasu pracy telewizora, a to powinno już być rzeczywiście przypadkowe.

Uwaga: w niektórych dialektach języka BASIC argumenty funkcji należy umieszczać wewnątrz nawiasów. W języku ZX81 BASIC zasada ta nie obowiązuje.

 

Podsumowanie

Polecenie: RAND

Funkcje: SGN. ABS, SIN, COS, TAN, ASN, ACS, ATN, LN, EXP, SQR, INT, PI, RND

FUNCTION

 

Ćwiczenia

  1. Aby otrzymać logarytm dziesiętny (o podstawie 10), który możesz znaleźć w tablicach logarytmicznych, podziel logarytm naturalny przez LN 10. Na przykład aby znaleźć log 2, wpisz:

PRINT LN 2/LN 10

co da ci wynik 0.30103.

Spróbuj wykonać mnożenie i dzielenie za pomocą logarytmów wykorzystując ZX81 jako zestaw tablic logarytmicznych. Sprawdź wynik używając * oraz /, które są łatwiejsze, szybsze i bardziej dokładne, a z tego powodu preferowane.

 

 

  1. EXP i LN są funkcjami wzajemnie odwrotnymi w takim sensie, iż jeśli zastosujesz jedną z nich, a następnie drugą, to powrócisz do pierwotnej liczby. Na przykład:

LN EXP 2 = EXP LN 2 = 2

Ta sama zasada dotyczy SIN i ASN, COS i ACS, oraz TAN i ATN. Możesz wykorzystać to do przetestowania dokładności wyznaczania wartości tych funkcji przez komputer.

 

 

  1. π radianów odpowiada 180°, więc zamiana ze stopni na radiany polega na podzieleniu przez 180 i pomnożeniu przez π: zatem

PRINT TAN (45/180*PI)

daje tangens 45° (1).

Aby z radianów przejść na stopnie, dzielisz przez π i mnożysz przez 180.

 

 

  1. Wpisz kilka razy

PRINT RND

aby zobaczyć, jak zmieniają się wyniki. Czy możesz wyczuć jakąś regularność? (Mało prawdopodobne)

Jak użyć RND oraz INT do otrzymania przypadkowej liczby całkowitej pomiędzy1 a 6, która przedstawiałaby wynik rzutu kostką? (odpowiedź: INT (RND *6) +1).

 

 

  1. Sprawdź tę regułę:

Załóżmy, iż wybierasz dowolną liczbę pomiędzy 1 a 872 i wpisujesz:

RAND  twoja liczba (i NEWLINE)

Wtedy następną wartością RND będzie

(75 * (twoja liczba + 1) - 1)/65536

 

 

  1. (Tylko dla matematyków)

Niech p będzie (dużą) liczbą pierwszą i niech a będzie pierwiastkiem pierwotnym modulo p.

Wtedy, jeśli bi jest resztą z ai modulo p (1 ≤  bi < p-1), to ciąg

bi-1 / p - 1

jest cyklicznym ciągiem p-1 różnych liczb w zakresie od 0 do 1 (wyłączając 1). Wybierając odpowiednio liczbę a ciąg ten może wyglądać zadowalająco przypadkowo.

65537 jest liczbą pierwszą Mersenne'a, 216-1.  Użyj jej oraz prawa wzajemności reszt kwadratowych Gaussa do udowodnienia, iż 75 jest pierwotnym pierwiastkiem modulo 65537.

ZX81 używa p=65537 oraz a=75  i przechowuje w swojej pamięci wartość bi-1. Funkcja RND zastępuje w pamięci bi-1 wartością bi+1-1 i oblicza (bi+1-1)/(p-1). RAND n (przy 1 ≤ n ≤ 65535) ustawia bi równe n+1.

 

 

  1. INT zawsze zaokrągla w dół. Aby zaokrąglić do najbliższej wartości całkowitej, dodaj najpierw 0.5. Na przykład:
    INT (2.9+0.5) = 3 INT (2.4+0.5) = 2
    INT (-2.9+0.5) = -3 INT (-2.4+0.5) = -2

Porównaj wyniki z wynikami bez dodania 0.5.

 

  1. Wpisz

PRINT PI, PI -3, PI -3.1, PI -3.14, PI -3.141

Przykład demonstruje, jak dokładnie komputer przechowuje liczbę π.

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe