Rozdział 11 - Zestaw znaków

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 graficzny .

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.

 

Podsumowanie

Funkcje: CODE, CHR$

 

Ćwiczenia

  1. 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.

 

 

  1. 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.

 

 

  1. 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.

 

 

  1. 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 (na S i D), natomiast znak na H łączy się zgrabnie z (na F i G).

 

 

  1. 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.

 

 

  1. 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.

 

 

  1. 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?)

 

 


   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