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Ł 4 – Sinclair ZX81 jako kalkulator kieszonkowy

Rozkaz: PRINT z przecinkami i średnikami
Operacje: +, -, *, /, **
Wyrażenia i notacja naukowa

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Ł 4 – Sinclair ZX81 jako kalkulator kieszonkowy

Włącz komputer. Zgodnie z opisem w rozdziale 2 możesz używać go jako kalkulatora: wpisz PRINT, a następnie to, co chcesz wyliczyć i naciśnij NEWLINE (nie będziemy ci ciągle przypominać o naciskaniu klawisza NEWLINE)

Zgodnie z twoimi przypuszczeniami ZX81 potrafi nie tylko dodawać, lecz również odejmować, mnożyć używając gwiazdki * zamiast zwykłego znaku mnożenia (dosyć powszechne na komputerach) i dzielić (używając znaku / zamiast obrazek). Wypróbuj to.

Znaki +, -, * i / są operacjami, a liczby, na których wykonują operacje arytmetyczne, są operandami.

Komputer umie również podnieść jedną liczbę do potęgi innej przy pomocy operacji ** (H z SHIFT - nie wpisuj dwa razy B z SHIFT); wpisz

PRINT 2**3 (pamiętaj o NEWLINE)

a dostaniesz odpowiedź 8 (2 podniesione do potęgi 3, lub 23 lub 2 do sześcianu).

ZX81 potrafi również obliczać złożone operacje arytmetyczne. Na przykład:

PRINT 20-2*3**2+4/2*3

daje odpowiedź 8. Aby otrzymać ten wynik, komputer wielokrotnie przegląda całe wyrażenie, ponieważ najpierw wylicza wszystkie potęgi (**) w kolejności z lewa na prawo, następnie mnożenia i dzielenia (* i /) znów od lewa na prawo, a na koniec dodawania i odejmowania (+ i -) ponownie z lewa na prawo. Stąd nasz przykład jest obliczany w następujących etapach:

obrazek

Formalizujemy to nadając każdej operacji priorytet, czyli liczbę pomiędzy 1 a 16. Operacje o wyższych priorytetach są wykonywane najpierw, a operacje o równych priorytetach wylicza się w kolejności z lewa na prawo.

** ma priorytet 10
* oraz / mają priorytet 8
+ oraz - mają priorytet 6

Gdy - jest używany do negacji liczby, np przy -1, to ma priorytet 9 (jest to minus jednoargumentowy, w przeciwieństwie do minusa dwuargumentowego w 3-1: operacja jednoargumentowa posiada tylko jeden operand, podczas gdy operacja dwuargumentowa ma ich dwa. Zauważ, iż ZX81 nie może używać + w charakterze operacji jednoargumentowej).

Porządek ten jest całkowicie sztywny, lecz możesz go obejść stosując nawiasy: operacja w nawiasie jest obliczana najpierw a następnie traktuje się ją jak pojedynczą liczbę, więc

PRINT 3*2+2

daje wynik 6+2 = 6, lecz

PRINT 3*(2+2)

daje wynik 3*4 = 12.

Taka kombinacja nazywana jest wyrażeniem - w tym przypadku arytmetycznym lub numerycznym, ponieważ jego wynikiem jest liczba. Ogólnie, gdy komputer oczekuje od ciebie liczby, możesz dać mu zamiast niej wyrażenie, a on wyliczy z niego wynik.

Liczby możesz zapisywać z przecinkiem dziesiętnym (używaj do tego celu znaku kropki - notacja anglosaska) lub możesz również użyć notacji naukowej (czasami zwanej inżynierską), która jest dosyć popularna na kieszonkowych kalkulatorach. W notacji tej po zwykłej liczbie (z lub bez kropki dziesiętnej) możesz dopisać wykładnik składający się z litery E, dalej z ewentualnym + lub - i na koniec z liczby całkowitej. Litera E oznacza "10**" (razy dziesięć do potęgi), zatem

2.34E0 = 2.34 * 10**0  = 2.34  
2.34E3 = 2.34 * 10**3  = 2340  
2.34E-2 = 2.34 * 10**-2 = 0.0234 itd.

(Wypróbuj wydruk tych liczb na ZX81)

Najprościej można wyobrazić sobie, iż wykładnik zawiera liczbę przesunięć punktu dziesiętnego w prawo, gdy jest dodatni, lub w lewo, gdy jest ujemny.

Jednocześnie można wydrukować kilka rzeczy oddzielając je albo przecinkami lub średnikami (X z SHIFT). Jeśli użyjesz przecinka, to następna liczba zostanie wyświetlona albo na początku wiersza przy lewym marginesie, albo na środku wiersza w 16-tej kolumnie. Jeśli użyjesz średnika, następna liczba będzie wyświetlona bezpośrednio za ostatnią.

Aby zobaczyć różnicę, wpisz

PRINT 1;2;3;4;5;6;7;8;9;10

oraz

PRINT 1,2,3,4,5,6,7,8,9,10

Jeśli masz ochotę, możesz mieszać przecinki i średniki w pojedynczej instrukcji PRINT.

Podsumowanie

Instrukcje: PRINT, z przecinkami i średnikami

Operacje: +,-,*,/,**

Wyrażenia, notacja naukowa (inżynierska)

Ćwiczenia

  1. Wpisz:

    PRINT 2.34E0

    PRINT 2.34E1

    PRINT 2.34E2

    i tak dalej aż do:

    PRINT 2.34E15

    Zobaczysz, iż po chwili ZX81 również rozpocznie używanie notacji naukowej. Jest tak dlatego, iż nigdy nie używa on więcej niż 14 pozycji do zapisu liczby. Podobnie wpisz:

    PRINT 2.34E-1

    PRINT 2.34E-2

    itd.

  1. Wpisz:

    PRINT 1,,2,,3,,,4,,,,5

    Przecinek zawsze przesuwa na pozycję następnej liczby. Teraz wpisz:

    PRINT 1;;2;;3;;;4;;;;5

    Dlaczego ciąg średników nie różni się od pojedynczego średnika?

  1. PRINT udostępnia ci tylko 8 cyfr znaczących. Wpisz:

    PRINT 4294967295, 4294967295 -429E7

    To dowodzi, iż komputer może pamiętać wszystkie cyfry liczby 4294967295, chociaż nie jest przygotowany do wyświetlenia ich jednocześnie.

  1. Jeśli masz pod ręką jakieś tablice logarytmiczne, to sprawdź tę regułę:

    Podniesienie 10 do potęgi pewnej liczby jest tym samym, co wzięcie antylogarytmu z tej liczby.

    Na przykład wpisz:

    PRINT 10**0.3010

    a teraz wyszukaj antylogarytmu z 0.3010. Czemu oba wyniki nie są dokładnie równe?

  1. ZX81 używa arytmetyki zmiennoprzecinkowej, co oznacza, iż pamięta osobno cyfry liczby (jej mantysy) i pozycję przecinka (wykładnik). Nie zawsze jest to dokładne, nawet dla liczb całkowitych. Wpisz:

    PRINT
    1E10+1-1E10,1E10-1E10+1

Liczby są pamiętane z dokładnością około 9 1/2 cyfry, zatem 1E10 jest zbyt duże, aby było dokładnie przechowywane. Niedokładność (właściwie około 2) jest większa niż 1, zatem liczby 1E10 oraz 1E10+1 wyglądają dla komputera tak samo.

Jeszcze ciekawszy przykład otrzymasz wpisując:

PRINT 5E9+1-5E9

Tutaj niedokładność w 5E9 jest równa około 1, a dodanie 1 w rzeczywistości spowoduje zaokrąglenie do 2. Stąd liczby 5E9+1 i 5E9+2 wyglądają dla komputera jak równe.

Największą liczbą całkowitą, którą można przechowywać dokładnie, jest 232-1 (4.294.967.295).

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.