Функции для обработки символьных переменных

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.