Rozdział 6 - Zmienne

Powiesz: "Mój kalkulator kieszonkowy może zapamiętać jakąś liczbę i użyć jej później. Czy ZX81 potrafi to samo?"

Tak. W rzeczywistości jest on w stanie zapamiętać dosłownie setki liczb przy pomocy polecenia LET. Załóżmy, iż jaja kosztują 58p (pensów) za tuzin i chcesz to zapamiętać. Wpisz:

LET JAJA=58     (i oczywiście NEWLINE)

Teraz po pierwsze komputer zarezerwował miejsce wewnątrz siebie, gdzie można przechować liczbę, po drugie nadał temu miejscu nazwę "JAJA", abyś mógł się do niego odwołać później. Taka kombinacja miejsca w pamięci i nazwy zwana jest zmienną. Po trzecie w zarezerwowanym miejscu umieścił liczbę 58; mówimy, iż przypisał wartość 58 do zmiennej (o nazwie) JAJA. Zmienna JAJA jest zmienną liczbową, ponieważ jej wartością jest liczba.

Czy chcesz się dowiedzieć, ile kosztują jaja? Wpisz

PRINT JAJA

Jeśli chcesz znać cenę pół tuzina jaj, to wpisz:

PRINT JAJA/2

W zasadzie gdybyś zechciał poznać wartość kwadratu kosinusa ceny jednego jaja, mógłbyś wpisać:

PRINT COS (JAJA/12)**2

"Jak naprawdę łatwo" musisz pomyśleć sobie i będziesz zastanawiał się, co z tym możesz zrobić w dalszej kolejności, gdy wbiegnie twój gospodarz krzycząc "O Boże, jaja właśnie podskoczyły do 61p za tuzin".

Więc nie ma czasu do stracenia. Wpisz

LET JAJA=61

Nie zarezerwuje to żadnego dodatkowego miejsca, lecz zastąpi starą wartość 58 nową 61. Teraz możesz wpisać:

PRINT JAJA

oczekując z wiarą, iż otrzymasz najbardziej aktualną cenę z możliwych.

Teraz wpisz:

PRINT MLEKO

Dostaniesz komunikat 2/0 i wyszukując go w dodatku B zobaczysz, iż mówi on -  "zmienna nie odnaleziona" - komputer nie ma zielonego pojęcia, ile kosztuje mleko, ponieważ mu o tym nie powiedziałeś. Wpisz:

LET MLEKO=18.5

a wszystko będzie w porządku. Wpisz ponownie:

PRINT MLEKO

Zmienna nie musi się nazywać zgodnie z produktami spożywczymi - możesz użyć dowolnych liter i cyfr pod warunkiem, iż pierwsza będzie litera. Możesz również wstawiać spacje w celu zwiększenia czytelności nazwy, lecz nie będą one się do niej zaliczać. Na przykład poniższe nazwy są dozwolone jako nazwy zmiennych:

DWA FUNTY JABLEK ALE NIE TYCH ZLOTYCH PYSZNYCH
RADIO 3
RADIO 33
X
K9P

ale te już nie:

3 MISIE (rozpoczyna się od cyfry)
TALBOT? (? nie jest ani literą, ani cyfrą)
 CZARNE NA BIALYM   (znaki w negatywie są niedozwolone)
FOTHERINGTON-THOMAS (- nie jest ani literą, ani cyfrą)

Teraz wpisz:

CLEAR

a następnie:

PRINT JAJA

Znów dostaniesz komunikat 2 (zmienna nie odnaleziona). Wynikiem CLEAR jest zwolnienie całej pamięci zarezerwowanej dla zmiennych - wtedy każda zmienna jest jakby nigdy nie zdefiniowana. Wyłączenie i włączenie komputera również to robi - lecz wtedy nie pamięta on zupełnie nic z poprzedniej sesji.

Wyrażenia mogą zawierać nazwy zmiennych wszędzie tam, gdzie można umieścić liczbę.

Uwaga: w niektórych wersjach języka BASIC wolno opuścić słowo LET i po prostu wpisać (powiedzmy):

JAJA=58

Na ZX81 jest to niedozwolone. Z drugiej strony trudno byłoby ci to wpisać.

Również w niektórych wersjach sprawdzane są tylko dwa pierwsze znaki nazwy, tak że RADIO 3 i RADIO 33 jest traktowane jak odwołanie do tej samej zmiennej, a w innych wersjach nazwa zmiennej musi się składać z litery i następującej za nią cyfry. Oba te ograniczenia nie dotyczą ZX81.

W jeszcze innych wersjach języka BASIC istnieje reguła, iż jeśli zmienna nie pojawiła się dotychczas po lewej stronie polecenia LET, to ma przypisaną wartość 0. Jak zauważyłeś powyżej przy poleceniu PRINT MLEKO, nie obowiązuje to na ZX81.

 

Podsumowanie

Zmienne

Polecenia LET, CLEAR

 

Ćwiczenia

  1. Dlaczego nazwy zmiennych muszą rozpoczynać się od litery?

 

 

  1. Jeśli nie znasz operacji podnoszenia do potęgi (** - H z SHIFT), to wykonaj to ćwiczenie.

Na najbardziej podstawowym poziomie "A**B" oznacza "A pomnożone przez siebie B razy", lecz oczywiście ma to sens tylko dla dodatnich liczb całkowitych. W celu znalezienia definicji pasującej również do innych wartości B rozważmy wzór:

A ** (B+C) = A**B * A**C

Nie potrzeba specjalnie przekonywać, iż jest on słuszny dla dodatnich liczb całkowitych B i C, lecz jeśli zdecydujemy, iż chcemy, aby był również słuszny dla liczb niecałkowitych, to zmuszeni jesteśmy przyjąć, że:

A**0 = 1
A**(-B) = 1/A**B
A**(1/B) = pierwiastek B-tego stopnia z A

oraz

A**(B*C) = (A**B)**C

Jeśli żadnego z tych wzorów wcześniej nie widziałeś, nie staraj się ich od razu zapamiętywać, po prostu zapamiętaj, że:

A**-1 = 1/A
A**(1/2) = pierwiastek kwadratowy z A

a być może gdy się z tym oswoisz, to reszta zacznie mieć dla ciebie sens.

Eksperymentuj z tym rozkazując komputerowi wyświetlanie różnych wyrażeń zawierających **, np.:

PRINT 3**(2+0),3**2*3**0

PRINT 4**-1,1/4

 

 

  1. Wpisz

LET E=EXP 1

Teraz E posiada wartość 2.718281828..., równą podstawie logarytmów naturalnych. Dla różnych liczb sprawdź regułę:

EXP liczba = E ** liczba

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   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.