Функции для обработки символьных переменных
QBASIC имеет значительное число функций для работы с символьными переменными.
Примечание: В данном разделе все символьные переменные будут обозначены символом С, а числовые переменные символом N.
По назначению функции для работы с символьными переменными можно разделить на ряд групп.
Обмен данными: SWAP. Синтаксис функции SWAP C1, C2
Перевод символов таблицы ASCII в число и чисел в код ASCII: ASC, CHR$.
Синтаксис функции ASC: ASC(C).
Функция ASC выделяет из строки символов первый символ и возвращает ASCII код числа. Например, ASC(Азбука) – результат число 128 – код русской буквы А.
Синтаксис функции CHR$: CHR$(N)
Функция CHR$ возвращает символ, соответствующий коду числа в таблице ASCII. Например, CHR$(129) – результат - символ Б.
Перевод чисел из машинного представления в строку символов и из символьного представления в числовое: STR$ и VAL.
Синтаксис функции STR$: STR$(N).
Функция STR$ переводит число в строку символов.
Синтаксис функции VAL: VAL(C).
Функция VAL переводит строку символов в число.
Перевод числового аргумента любого типа в строки символов: BIN$, OST$, HEX$;
Функция BIN$(N) переводит число в двоичный код.
Функция OST$(N) переводит число в восьмеричный код.
Функция HEX$(N) переводит число в шестнадцатеричный код.
Замена числовых данных их символьными эквивалентами и преобразование символьных эквивалентов в числовые данные: MKI$, MKL$, MKS$, MKD$, CVI, CVL, CVS, CVD. При переводе чисел в символьные эквиваленты программа добавляет необходимое число байтов и заключает содержание переменной в кавычки.
Функция MKI$(N) переводит числовую переменную целого типа одинарной длины в символьный двухбайтовый эквивалент.
Функция MKL$(N) переводит числовую переменную целого типа удвоенной длины в символьный четырехбайтовый эквивалент.
Функция MKS$(N) переводит вещественную переменную одинарной точности в символьный четырехбайтовый эквивалент.
Функция MKD$(N) переводит вещественную переменную удвоенной точности в символьный двухбайтовый эквивалент.
Функции CVI(С), CVL(С), CVS(С) и CVD(С) выполняют действия, обратные действию функций MKI$, MKL$, MKS$, MKD$, то есть переводят символьные эквиваленты числовых переменных в числовые переменные соответствующего типа.
Функции для обработки строк: LEN, LEFT$, RIGHT$, MID$, LTRIM$, RTRIM$, INSTR; LCASE$, UCASE$.
Функция LEN(C) возвращает длину строки.
Функции LEFT$(C,N), RIGHT$(C,N) – выделяют из строки символов N символов слева и справа, соответственно.
Функция MID$(C,N1,N2) – выделяют из строки символов N1 символ с позиции N2. Например:
C1 = MID$("Шумит, гудит зеленый лес",8,5)
PRINT C1
RUN
гудит
Функция MID$ выделяет из строки "Шумит, гудит зеленый лес" 5 симво-лов с восьмой позиции - слово “гудит”.
Функция MID$ может использоваться и для замены части текста. Синтаксис функции при замене текста:
MID$(C, N1, N2) = C1
В данном случае в строке С заменяется N2 символов строкой С1, начиная с позиции N1. Если длина строки С1 больше N2, то лишние символы отбрасываются. Если длина строки С1 меньше N2, то недостающие символы заполняются пробелами. Длина строки С при этом не изменяется. Результат замены сохраняется в строке С. Например:
C$="Отражается месяц в пруду"
MID$(C$, 12, 5) = "башня"
PRINT C$
RUN
Отражается башня в пруду
Функция LTRIM$(C) и RTRIM$(C) отбрасывают лидирующие и хвостовые пробелы, соответственно.
Функция LCASE$(C) переводит прописные буквы в строчные.
Функция UCASE$(C) переводит строчные буквы в прописные.
Функция INSTR([I,]С1, С2) осуществляет поиск первого вхождения строки символов С2 в строку символов С1 и возвращает номер позиции, с которой строка символов С2 входит в строку символов С1. Если вхождение не найдено, то возвращается значение 0. Поиск может осуществляться с начала строки или с позиции I, если I отсутствует, то поиск начинается с первой позиции.
C$ = "Светит месяц, светит ясный"
C1$ = "месяц"
n = INSTR(1,C$, С1$)
PRINT n
RUN
Функция INSTR(I,C,C1) осуществляет поиск первого вхождения искомой строки (С2), в строку С1:
C$ = "светит месяц, светит ясный"
C1$ = "светит"
n = INSTR(C$, С1$)
PRINT n
RUN
Для поиска других вхождений необходимо организовать цикл.
Функции генерирования строк символов: SPACE$, STRING$
Функция SPACE$(n) генерирует строку из n пробелов.
Функция имеет два формата.
В первом формате: STRING$(n,C), - функция выделяет из строки С первый символ и генерирует строку содержащую n этих символов.
Во втором формате: STRING$(n,Cod), - функция генерирует строку из n символов, определяемых кодом Cod. Здесь Cod – код кодовой таблицы ASCII. Cod может принимать значения от 31 до 255.