Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor: Steven Vickers
Tłumaczył: mgr Jerzy Wałaszek

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

ROZDZIAŁ 5 – Funkcje

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

SPIS TREŚCI
ROZDZIAŁ 1 Przygotowanie ZX81
ROZDZIAŁ 2 Wydawanie komputerowi poleceń
ROZDZIAŁ 3 Lekcja historii
ROZDZIAŁ 4 Sinclair ZX81 jako kalkulator kieszonkowy
ROZDZIAŁ 5 Funkcje
ROZDZIAŁ 6 Zmienne
ROZDZIAŁ 7 Łańcuchy tekstowe
ROZDZIAŁ 8 Programowanie komputera
ROZDZIAŁ 9 Dalsze programowanie komputera
ROZDZIAŁ 10 Jeśli ...
ROZDZIAŁ 11 Zestaw znaków
ROZDZIAŁ 12 Pętle
ROZDZIAŁ 13 Wolno i Szybko
ROZDZIAŁ 14 Podprogramy
ROZDZIAŁ 15 Uruchamianie programów
ROZDZIAŁ 16 Pamięć taśmowa
ROZDZIAŁ 17 Wyświetlanie z bajerami
ROZDZIAŁ 18 Grafika
ROZDZIAŁ 19 Czas i ruch
ROZDZIAŁ 20 Drukarka dla ZX81
ROZDZIAŁ 21 Podłańcuchy
ROZDZIAŁ 22 Tablice
ROZDZIAŁ 23 Gdy zaczyna brakować pamięci
ROZDZIAŁ 24 Liczenie na palcach
ROZDZIAŁ 25 Jak pracuje komputer
ROZDZIAŁ 26 Stosowanie kodu maszynowego
ROZDZIAŁ 27 Organizacja pamięci
ROZDZIAŁ 28 Zmienne systemowe
DODATKI
A Zestaw znaków
B Numery komunikatów
C ZX81 dla znających język BASIC

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 wprowadzić funkcję SQR, najpierw naciskasz na klawisz FUNCTIONNEWLINE z SHIFT. Kursor zmienia się 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ą bezargumentowymi operacjami, ponieważ nie posiadają żadnych argumentó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ę π.
Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

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

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.