|
Serwis Edukacyjny w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor: Steven Vickers |
©2026 mgr Jerzy Wałaszek
|
Funkcje: CODE, CHR$
Zestaw znaków jest całkowicie niestandardowy
GRAPHICS
| SPIS TREŚCI |
|
ROZDZIAŁ 1 Przygotowanie
ROZDZIAŁ 2 Wydawanie poleceń ROZDZIAŁ 3 Lekcja historii ROZDZIAŁ 4 Kalkulator ROZDZIAŁ 5 Funkcje ROZDZIAŁ 6 Zmienne ROZDZIAŁ 7 Teksty ROZDZIAŁ 8 Programowanie I ROZDZIAŁ 9 Programowanie II ROZDZIAŁ 10 Jeśli ... ROZDZIAŁ 11 Znaki ROZDZIAŁ 12 Pętle ROZDZIAŁ 13 Wolno i Szybko ROZDZIAŁ 14 Podprogramy ROZDZIAŁ 15 Programy ROZDZIAŁ 16 Pamięć taśmowa ROZDZIAŁ 17 Wyświetlanie ROZDZIAŁ 18 Grafika ROZDZIAŁ 19 Czas i ruch ROZDZIAŁ 20 Drukarka ROZDZIAŁ 21 Podłańcuchy ROZDZIAŁ 22 Tablice ROZDZIAŁ 23 Pamięć ROZDZIAŁ 24 Liczenie ROZDZIAŁ 25 Praca komputera ROZDZIAŁ 26 Kod maszynowy ROZDZIAŁ 27 Organizacja pamięci ROZDZIAŁ 28 Zmienne systemowe A Zestaw znaków B Numery komunikatów C ZX81 dla znających BASIC |
Litery, cyfry, znaki przystankowe itp., które mogą pojawiać się w łańcuchach tekstowych, nazywamy znakami, a z nich tworzony jest alfabet lub zestaw znaków używanych przez ZX81. Większość z tych znaków to pojedyncze symbole, lecz istnieją dalsze, zwane hasłami, które reprezentują całe słowa, takie jak PRINT, STOP, **, itd.
Wszystkich znaków jest w sumie 256, a każdy z nich posiada kod pomiędzy 0 a 255. W dodatku A umieszczona jest pełna lista znaków. Do zamiany pomiędzy kodami a znakami mamy dwie funkcje: CODE i CHR$.
CODE jest stosowane do łańcucha i zwraca kod pierwszego znaku w tym łańcuchu (lub 0 dla pustego łańcucha)
CHR$ jest stosowane do liczby i daje w wyniku łańcuch zawierający jeden znak, którego kodem jest podana liczba.
Ten program wyświetla cały zestaw znaków:
|
10 LET A=0 20 PRINT CHR$ A; 30 LET A=A+1 40 IF A<256 THEN GOTO 20 |
U góry zobaczysz znaki ", £, $ itd. aż do Z, wszystkie obecne na klawiaturze, a możesz je wprowadzić przy kursorze L . Dalej zobaczysz te same znaki, lecz w negatywie - białe na czarnym tle; te również mogą być wprowadzone z klawiatury. Jeśli naciśniesz GRAPHICS (9 z SHIFT), to kursor zmieni się na G : oznacza to tryb znaków graficznych. Jeśli wpiszesz znak, to pojawi się on w negatywie, a tryb ten będzie obowiązywał aż ponownie naciśniesz GRAPHICS lub NEWLINE. Klawisz RUBOUT posiada swoje normalne znaczenie - usuwa znak na lewo od kursora. Uważaj jednak, aby kursor G nie zginął ci wśród wprowadzonych właśnie znaków w negatywie.
Gdy trochę poeksperymentowałeś sobie, wciąż powinieneś mieć zestaw znaków na ekranie, jeśli nie ma go, uruchom ponownie program. Na samym początku jest
spacja i dziesięć wzorów zbudowanych z czarnych punktów; dalej jest jeszcze
jedenaście. Nazywamy je symbolami graficznymi, stosowanymi do rysowania
obrazków. Można je wprowadzać z klawiatury przy pomocy trybu graficznego
(z wyjątkiem spacji będącej zwykłym znakiem przy kursorze L
; czarny kwadrat jest spacją w negatywie). Wykorzystuje
się do tego 20 klawiszy z wyrysowanymi na nich symbolami graficznymi. Dla
przykładu załóżmy, iż potrzebujesz symbolu
znajdującego się na klawiszu T. Naciśnij GRAPHICS, aby uzyskać kursor G , a następnie naciśnij
T
z SHIFT. Z poprzedniego opisu trybu graficznego oczekiwałbyś, iż dostaniesz symbol graficzny w negatywie, lecz T z SHIFT jest zwykle hasłem <>,
a hasła nie posiadają negatywów: dlatego dostaniesz w zamian symbol
.
Oto 22 symbole graficzne:

Teraz spójrz ponownie na zestaw znaków. Hasła grupują się w dwa łatwo rozróżnialne bloki: w małą grupę trzech (RND, INKEY$ oraz PI) po Z oraz w większą grupę (rozpoczynającą się od obrazu cudzysłowu za Z , a dalej od AT aż do COPY).
Reszta znaków wydaje się być pytajnikiem ?. Tak tylko są one wyświetlane - rzeczywisty pytajnik znajduje się pomiędzy : a (. Fałszywe pytajniki są znakami
sterującymi, takimi jak
, EDIT i NEWLINE,
a reszta tych znaków nie posiada wcale żadnego znaczenia dla ZX81.
Funkcje: CODE, CHR$
Wyobraź sobie, iż powierzchnia znaku jest podzielona na cztery ćwiartki:
. Jeśli każda
z nich może być albo czarna, albo biała to dostajemy 2*2*2*2 = 16 możliwości. Odszukaj je wszystkie w zestawie znaków.
Wyobraź sobie powierzchnię znaku podzieloną poziomo:
. Jeśli każda
połówka może być czarna, biała lub szara, dostajemy 3*3 = 9 możliwości. Znajdź je wszystkie.
Znaki przedstawione w ćwiczeniu 2 zostały zaprojektowane do stosowania w poziomych wykresach słupkowych wykorzystujących dwa kolory, szary i czarny. Napisz program, który wczytuje dwie liczby (obie pomiędzy 0 i 32) i rysuje dla nich wykres słupkowy:

Musisz rozpocząć od drukowania "
", a następnie zmieniać na "
" lub
"
", w zależności o tego, czy
A jest większe lub mniejsze od B.
(z uwagi na to, iż znak
jest negatywem
, to przejście pomiędzy
a
będzie
niestety widoczne z uwagi na inny układ kropek tworzących szary kolor - przyp. tłum.)
A co zrobi twój program, jeśli A i B nie będą liczbami całkowitymi? Lub nie będą w zakresie od 0 do 32? Dobry - "przyjazny dla użytkownika" jest modnym terminem - program powinien wykonać coś sensownego i użytecznego.
Na klawiaturze są dwa różne znaki szare, na A i H. Jeśli się im dokładnie przyjrzysz, to zauważysz, iż ten na H przypomina miniaturową
szachownicę, gdy tym czasem drugi na A jest szachownicą odwróconą. Wydrukuj je jeden obok drugiego, a zobaczysz, iż nie łączą się ze sobą zgrabnie. Znak
na A używa się do zgrabnego łączenia z
i
(na S i D), natomiast znak na H łączy się zgrabnie z
i
(na F i G).
Uruchom ten program:
| 10 INPUT A 20 PRINT CHR$A; 30 GOTO 10 |
Jeśli z nim poeksperymentujesz, to odkryjesz, iż dla CHR$ zmienna A jest zaokrąglana do najbliższej liczby całkowitej, a gdy A wyjdzie poza zakres od 0 do 255, to program się zatrzyma dając komunikat B.
Wykorzystując kody znaków możemy rozszerzyć koncepcję "porządku alfabetycznego" w celu objęcia nią łańcuchów zawierających dowolne znaki, nie tylko litery. Zamiast traktowania ich w kategoriach zwykłego alfabetu z 26 liter przejdziemy na rozszerzony alfabet 256 znakowy o takim samym porządku jak kody znaków, to zasada pozostanie niezmieniona. Na przykład poniższe łańcuchy są w kolejności alfabetycznej dla ZX81:
| " ZACHARY" " "(ASIDE)" "123 TAXI SERVICE" "AASVOGEL" "AA R D V A R K " "ZACHARY" " A A RDVARK" |
Oto zasada. Najpierw porównuje się pierwsze znaki obu łańcuchów. Jeśli są różne, to jeden z nich ma kod mniejszy od drugiego, a łańcuch zawierający ten znak poprzedza łańcuch ze znakiem o kodzie większym. Jeśli znaki są takie same, to przechodzimy do porównania kolejnych znaków. Jeśli w tym procesie jeden z łańcuchów skończy się przed drugim, to krótszy poprzedza dłuższy; w przeciwnym razie łańcuchy muszą być równe.
Wpisz jeszcze raz program z ćwiczenia 4 w rozdziale 10 (ten, który wczytuje dwa łańcuchy i wypisuje je w kolejności alfabetycznej) i wykorzystaj go do eksperymentowania.
Ten program wypisuje pełen ekran przypadkowych białych i czarnych znaków graficznych:
|
10 LET A=INT (16*RND) 20 IF A>=8 THEN LET A=A+120 30 PRINT CHR$ A; 40 GOTO 10 |
(jak on działa?)
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.