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Ł 11 – Zestaw znaków

Funkcje: CODE, CHR$
Zestaw znaków jest całkowicie niestandardowy
GRAPHICS

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Ł 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 obrazek 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 obrazek.

Oto 22 symbole graficzne:

obrazek

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 obrazek, 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: obrazek. 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: obrazek. 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:

    obrazek

    Musisz rozpocząć od drukowania  "obrazek", a następnie zmieniać na "obrazek" lub "obrazek", w zależności o tego, czy A jest większe lub mniejsze od B. (z uwagi na to, iż znak obrazek jest negatywem obrazek, to przejście pomiędzy obrazek a obrazek 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 obrazekobrazek (na S i D), natomiast znak na H łączy się zgrabnie z obrazekobrazek (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"
    "obrazek"
    "(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?)
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.