Символы и строки. Функции ASC и CHR$.
Когда мы говорили о дружественном интерфейсе, то упоминали о так называемых строковых переменных, имена которых отличаются от обычных добавлением знака $. В таких переменных могут содержаться как отдельные символы, так и их последовательности длиной до 255 символов. К ним в Бейсике применимы специальные операции, о которых мы здесь и расскажем.
Для начала надо немного отвлечься, чтобы сообщить о том, что каждый символ, представленный на клавиатуре для компьютера переводится в числовой код. Эти коды объединены в стандартную международную таблицу кодов ASCII (см. Приложение). Коды с 0 по 32 не имеют изображения на экране и служат для функций управления (пробел, клавиши управления курсором и т. д.). Далее следуют знаки препинания, цифры, строчные и прописные буквы латинского алфавита и другие символы, которые вы можете найти на клавиатуре. Всего их 128. А еще 128 кодов (от 129 до 255) служат для расширения возможностей клавиатуры, например для генерации национальных символов – в нашем случае для кириллицы. Учить их наизусть ни в коем случае не надо – они есть в таблице. Но если ее не окажется под рукой, то вы должны определить код любого символа, используя специальные функции asc и chr$.
Функция asc определит нам код ASCII для первого символа этой строковой переменной и имеет следующую форму записи:
ASC(строковая_переменная)
Например:
N=ASC("F") ? " Код заглавной буквы F – "; N
В результате получим:
Код заглавной буквы F – 70
Еще пример.
Х$="YAHOO" N=ASC(X$) ?N
В результате получим код первого символа, входящего в слово "YAHOO", т. е. "Y", который равен 89.
Замечание
Следует помнить, что коды заглавных и строчных букв – разные.
Кроме того, если мы напрямую указываем в функции asc символ или текст, то он берется в кавычки (первый пример), а если это строковая переменная, то без кавычек (второй пример).
Функция chr$ определит нам символ, код которого указан в скобках. Форма записи функции:
CHR$(код)
Например:
CLS 1: INPUT "Введите любой код от 33 до 128"; N IF N < 33 OR N >=128 THEN? "Обратите внимание на числовые границы для кода": GOTO 1 ? "Символ с кодом "; N; " – это"; CHR$(N)
Обратите внимание на оформление программы. Сначала выполняется очистка экрана. Затем – запрос кода. Если он введен не в требуемых пределах, то программа возвращает человека к запросу – простейший, но очень полезный способ помочь пользователю.
221. Опробуйте представленную выше программу и узнайте, что за символы скрываются под кодами 33, 66, 99, 100, 128.
222. Примените функции asc и chr$ к примеру простейшей шифровки информации, когда символы вводятся побуквенно, а программа определяет их код, добавляет к ним 1 и выводит на экран вместо введенного символа символ с новым получившимся кодом. Слово для тестовой проверки такой программы – "CAT", после его побуквенного введения должно получиться "DBU".
223. Напишите программу-дешифратор для предыдущего задания. Тестовая проверка: из слова "DBU" должно получиться слово "CAT".
Эти программы грамотно работают для первых стандартизированных 128 кодов. Чтобы правильно работать, например, с русским текстом, надо знать коды строчных и прописных букв кириллицы, которые скрываются в интервале от 129 до 255. Поэтому еще одно задание.
224. Напишите программу, выводящую на экран символы, скрывающиеся за кодами 129-255. Распечатайте или выпишите коды строчных и прописных букв кириллицы.
Но, всякий раз вводить текст побуквенно – большая морока. Нельзя ли как-нибудь в Бейсике обрабатывать слова и строки? Конечно, можно. Для этого существуют специальные функции.