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áti | Príklad | Výsledok |
|---|---|---|---|
ASC(text) | kód prvého znaku | ASC("A") | 65 |
CHR$(kód) | znak s tým kódom | CHR$(66) | B |
STR$(číslo) | číslo ako text | STR$(1234) | "1234" |
VAL(text) | text ako číslo | VAL("12") | 12 |
Funkcie s dolárom na konci mena vracajú text, ostatné číslo.
Celý program
Súbor examples/chars.abas:
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.5Ako to funguje
- Riadok 50: kódy 65 až 90 sú veľké písmená A až Z. Slučka cez kódy vypíše celú abecedu.
- Riadky 90 až 120: malé písmená majú kódy 97 až 122, presne o 32 viac než veľké. Slučka prejde text znak po znaku, a kde nájde malé písmeno, prepíše ho znakom s kódom o 32 menším.
A$(I,I)je jeden znak – na čítanie aj na zápis. - Riadok 160:
STR$spraví z čísla text. S textom sa dajú robiť veci, ktoré s číslom nejdú: spočítať číslice (LEN), vybrať poslednú, zarovnať stĺpec. - Riadok 190:
VALrobí opak. Dva texty, z ktorých sa stanú čísla, a tie sa sčítajú. - Riadok 200:
VALčíta číslo od začiatku textu a skončí pri prvom znaku, ktorý do čísla nepatrí.
Užitočné kódy
| Kód | Znak |
|---|---|
| 32 | medzera |
| 48–57 | číslice 0–9 |
| 65–90 | veľké písmená |
| 97–122 | malé písmená |
| 125 | zmaže obrazovku (kapitola 19) |
| 155 | koniec riadka (RETURN) |
| 253 | pí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ťazca | odreže sa ako každý text: DIM A$(3) a A$=STR$(123456) nechá 123 |
ASC prázdneho textu | vráti 0 |
| číslo sa „sčíta“ ako text | "12"+"30" nejde; najprv VAL |
Vyskúšaj si
- Vypíš kódy všetkých znakov slova, ktoré človek napíše.
- Otoč text naopak: prejdi ho od posledného znaku po prvý.
- Spočítaj ciferný súčet čísla: preveď ho cez
STR$na text a sčítajVALjednotlivých znakov.
Zhrnutie
- Každý znak má kód ATASCII;
ASCdá kód,CHR$znak. - Veľké písmená sú 65–90, malé o 32 viac, číslice 48–57.
STR$robí z čísla text,VALz textu číslo.VALtextu bez čísla je chyba 18.- Niektoré kódy sú príkazy pre obrazovku:
CHR$(125)ju zmaže.
Späť: 14. Dáta v programe · Ďalej: 16. Matematika a náhoda