15. Znaky a čísla: CHR$, ASC, STR$, VAL

Na čo to je

Počítač nepozná písmená, len čísla. Každý znak má svoj kód – A je 65, B je 66, medzera 32. Tabuľka kódov na Atari sa volá ATASCII. Štyri funkcie tejto kapitoly prevádzajú medzi znakom a jeho kódom a medzi číslom a textom.

Ako sa to píše

FunkciaČo vrátiPríkladVýsledok
ASC(text)kód prvého znakuASC("A")65
CHR$(kód)znak s tým kódomCHR$(66)B
STR$(číslo)číslo ako textSTR$(1234)"1234"
VAL(text)text ako čísloVAL("12")12

Funkcie s dolárom na konci mena vracajú text, ostatné číslo.

Celý program

Súbor examples/chars.abas:

Atari BASIC
10 REM CHR$, ASC, STR$, VAL
20 DIM A$(20),D$(10)
30 PRINT "The code of A is ";ASC("A")
40 PRINT "Character 66 is ";CHR$(66)
50 FOR C=65 TO 90:PRINT CHR$(C);:NEXT C
60 PRINT
70 A$="hello"
80 REM Small letters to capitals: 32 less
90 FOR I=1 TO LEN(A$)
100   C=ASC(A$(I,I))
110   IF C>=97 AND C<=122 THEN A$(I,I)=CHR$(C-32)
120 NEXT I
130 PRINT A$
140 REM A number into text and back
150 N=1234
160 D$=STR$(N)
170 PRINT D$;" has ";LEN(D$);" digits"
180 PRINT "The last digit is ";D$(LEN(D$))
190 PRINT VAL("12")+VAL("30")
200 PRINT VAL("3.5 apples")

Preklad a spustenie

Basic26 chars.abas --sim

Čo uvidíš

The code of A is 65
Character 66 is B
ABCDEFGHIJKLMNOPQRSTUVWXYZ
HELLO
1234 has 4 digits
The last digit is 4
42
3.5

Ako to funguje

Užitočné kódy

KódZnak
32medzera
48–57číslice 0–9
65–90veľké písmená
97–122malé písmená
125zmaže obrazovku (kapitola 19)
155koniec riadka (RETURN)
253pípnutie

PRINT CHR$(125) teda nevypíše znak, ale zmaže obrazovku. Atari má takých riadiacich kódov viac; všetky sú v prílohe D. Kódy 0 až 31 a 123 až 127 sú grafické znaky – čiarky, rohy a srdiečka, z ktorých sa skladali rámčeky.

Úvodzovka sa v texte v úvodzovkách napísať nedá. Keď ju chceš vypísať, pomôže jej kód: PRINT CHR$(34);"Hello";CHR$(34).

Časté chyby

Čo sa staloČo sa stane
VAL textu, ktorý sa nezačína číslom (VAL("ABC"))ERROR- 18 AT LINE 10
výsledok STR$ sa nezmestí do reťazcaodreže sa ako každý text: DIM A$(3) a A$=STR$(123456) nechá 123
ASC prázdneho textuvráti 0
číslo sa „sčíta“ ako text"12"+"30" nejde; najprv VAL

Vyskúšaj si

  1. Vypíš kódy všetkých znakov slova, ktoré človek napíše.
  2. Otoč text naopak: prejdi ho od posledného znaku po prvý.
  3. Spočítaj ciferný súčet čísla: preveď ho cez STR$ na text a sčítaj VAL jednotlivých znakov.

Zhrnutie

Späť: 14. Dáta v programe · Ďalej: 16. Matematika a náhoda