Сравнение текстовых переменных
Сравнение текстовых переменных проводится с помощью стандартных операторов сравнения: =, >, <, >=, <=, <>. В ходе сравнения компьютер анализирует три основных параметра: количество символов, последовательность ASCII кодов и номера ASCII - кодов. Программа анализирует только соответствующие знаки: первый знак первой переменной сравнивается с первым знаком второй переменной, второй знак со вторым и так далее.
Переменные равны, если они содержат равное количество одинаковых знаков, расположенных в одинаковой последовательности.
Сравнение текстовых переменных: равенство | ||
Равны | Не равны | Причина |
"aa"="aa" | "aa"¹" aa" | Разное число знаков |
"10"="10" | "10"¹"01 | Нарушена последовательность знаков |
"Аврора"="Аврора" | "Аврора"¹"аврора" | "А" и "а" имеют разный код |
"QB" = "Q" + "B" | "norma"¹"почта" | На разных языках |
Сравнивать переменные на равенство и выводить сообщение о результате можно в алгоритмах на основе оператора IF: INPUT A$: INPUT B$ IF A$ - В$ THEN PRINT "Равны" ELSE PRINT "He равны"
Одна текстовая переменная больше другой, если в ходе опарного сравнения, соответствующих знаков очередной ее символ имеет ASCII-код больше, чем соответствующий знак сравниваемой переменной. Как только обнаруживается знак, ASCII-код которого больше или меньше, чем у соответствующего знака второй переменной, процесс сравнения заканчивается и программа выводит результат.
Этот же принцип используется при сортировке списков. Сначала машина сравнивает первые знаки. Если они равны, то сравниваются вторые, третьи и так далее. Таким образом, сортируют даже строки, имеющие в начале одинаковые наборы символов.
Сравнение текстовых переменных: неравенство | |
Больше | Причина |
"ww2" > "ww" | Три знака больше двух, если первые два знака равны |
"ww2" > "wwO" | ASII-код 2 (50), больше ASII-кода 0 (48) |
"f > "p" | ASII-код буквы f (102) больше F (70) |
"A" > "A" | ASII-код русской буквы А (128) больше ASII-кода латинской буквы А (65) |
"file.dat" > "file.bas" | ASII-код буквы d больше b |
"21" > "2"+"00" | ASII-код цифры 1 больше, чем ASII-код цифры 0 |
Инструменты обработки текстовых величин
Существует ряд функций и операторов, предназначенных для анализа и обработки строк. Принципы их действия, допустимые аргументы, практика использования очень похожи, поэтому рассмотрим большинство инструментов в одном параграфе, чтобы он стал справочной базой данной главы.
№ | Оператор | Описание |
1. | Функция LEN | Функция предназначена для определения количества символов в текстовой переменной |
2. | Функция LEFT$ | Функция применяется для выделения заданного количества левых (первых) символов текстового выражения. |
3. | Функция RIGHT$ | Функция аналогична функции LEFT$, только предназначена для выделения указанного количества правых (последних) символов переменной. |
4. | Функция MID$ | Функция предназначена для выделения n символов из символьного выражения, начиная с k-го. |
5. | Оператор MID$ | Оператор предназначен для замены n символов текстовой переменной, начиная с k-го, на знаки другого символьного выражения. |
6. | Функция INSTR | Функция определяет, входит ли одна текстовая переменная в другую |
7. | Функции LTRIM$ и RTRIM$ | Эти функции используются для удаления первых (левых) и последних (правых) пробелов текстового выражения, если начальные или концевые пробелы есть. |
8. | Функция ASC | Функция возвращает код ASCII, соответствующий указанному знаку. |
9. | Функция CHR$ | Выводит на экран символ, соответствующий определенному номеру в таблице ASCII. |
Функция LEN
Функция предназначена для определения количества символов в текстовой переменной.
LЕN (символьное_выражение)
Символьное_выражение — выражение, результат которого представлен величиной текстового типа. Символьным выражением может быть отдельная текстовая переменная, текст в кавычках, сумма переменных, символьная функция с соответствующим аргументом и пр.
Пример1. Определить количество знаков в текстовой переменной и в сумме текстовой переменной и строки текста в кавычках.
A$ = “Информатика”
X = LEN (A$): PRINT X
PRINT LEN(A$ + “BASIC”)
Результат пример 1:
Работа программы. Первая функция LEN вернула количество символов в переменной А$. Затем это значение было присвоено переменной X и выведено, на экран. Вторая функция LEN определила количество символов в сумме переменной А$ и строки текста в кавычках.
Функция LEFT$
Выделенные символы можно присвоить другой переменной или использовать как часть общего выражения. Содержание исходной строки не изменяется.
LЕFТ$ (символьное_выражение. N)
Здесь символьное_выражение — текстовая переменная, символы в кавычках или выражение, результатом вычисления которых является строковое значение;
N — количество левых знаков символьного выражения. N может быть числом, переменной или математическим выражением с целым положительным результатом.
Пример 2. Примеры работы функции LEFT$.
А$ = "Microsoft"
В$ = LEFT$(A$. 5): PRINT B$ '1
PRINT LEFT$(A$, LEN(A$) - 4) '2
PRINT LEFT$("Computer". 4) +"IBM" '3
Результат:
Micro
Micro
CompIBM
Работа программы. Первая строка иллюстрирует простейший случай. Функция LEFT$ выделяет первые 5 символов текстовой переменной и присваивает их переменной В$. В строке '2 число выделяемых символов задано выражением с участием текстовой функции. Запись LEN(A$) - 4 дает возможность выделить все первые знаки переменной А$, кроме последних четырех. Строка '3 показывает, что выделенные знаки могут использоваться как часть общего выражения, в примере они участвуют в сумме.
Функция RIGHT$
Функция аналогична функции LEFT$, только предназначена для выделения указанного количества правых (последних) символов переменной.
RIGHT$ (сиивольное_выражение. N)
Описание аргументов функции соответствует описанию аргументов функции LEFT$, приведенных выше.
Функция MID$
Функция предназначена для выделения n символов из символьного выражения, начиная с k-го.
МID$(символьное_выражение. k [ . n])
Здесь символьное_выражение — строка, из которой выделяется указанное число символов, k — номер символа, с которого начинается выделение. Если значение k больше, чем количество символов в анализируемом тексте, то МID$ возвращает строку нулевой длины (""). Если значение k равно нулю или отрицательно, то появляется сообщение Illegal function call (Неверный вызов функции). n — количество последовательных символов, которое нужно выделить. Если n не указано или n < k, то выделяются все символы, с k-го и до конца строки. При n = 0 функция возвращает, пустую строку.
В качестве k и n можно ставить числа, переменные или расчетные выражения с числовым результатом. Дробные значения автоматически округляются до целых чисел по правилам математики.
Пример 3. Примеры работы, функции МID$.
А$ = "ИНФОРМАТИКА"
M$ = MID$(A$, 3, 6)
PRINT M$
PRINT MID$(A$, 3)
Результат:
ФОРМАТ
ФОРМАТИКА
Работа программы. Первая функция MID$ выделяет 6 последовательных знаков, начиная с третьего, из текстовой переменной А$ и присваивает их переменной М$. Вторая функция MID$ возвращает все символы А$, начиная с третьего, потому что не указано количество выделяемых знаков.
Оператор MID$
Оператор MID$ предназначен для замены n символов текстовой переменной, начиная с k-го, на знаки другого символьного выражения. Оператор изменяет значение текстовой переменной. Согласно формату он замещает n знаков текстовой переменной, начиная с k-го, на первые n знаков текстового выражения, стоящего справа от знака равенства.
Пример 4:
А$ = "123456"
МID$(А$, 3, 2) = "abc"
PRINT A$
Результат:
12аb56
Два знака переменной А$, начиная с третьего, были замещены первыми двумя знаками выражения abc.
Формат оператора:
МID$(текст._перем. ., k[,n]) = символьное_выражение
k — номер знака в текстовой_переменной, с которого начинается замещение. Если номер k больше длины текстовой переменной, равен нулю или имеет отрицательное значение, то выводится сообщение об ошибке Illegal function call (Неверный вызов функции), n — количество замещаемых символов. Если оно не указано или k + n больше длины текстовой переменной, то замещаются все символы переменной, начиная с k-го, но длина полученной строки не может превышать исходной длины текстовой_переиённой. символьное_выражение - строка, первые n символов которой внедряются в текстовую переменную. Если символов в выражении меньше n, то используется столько знаков, сколько есть.
Пример 5. Примеры работы оператора MID$.
A$ = "123456": MID$(A$, 1, 3) = "abc" '1
PRINT A$
A$ = "123456": MID$(A$, 5, 3) = "abc" '2
PRINT A$
A$ = "123456": MID$(A$, 2) = "abcdefghijk" '3
PRINT A$
A$ = "123456": MID$(A$, 4!, 2) = MID$("abc", 2, 1) '4
PRINT A$
Результат:
abc456
1234ab
1abcde
123b56
Работа программы, В строке '1 три символа, начиная с первого, заменяются тремя символами выражения abc. В строке '2 размещена попытка заменить три символа, начиная с пятого, но в исходной переменной всего 6 знаков, поэтому замещены только пятый и шестой. В строке '3 не указан второй параметр оператора MIDS (количество замещаемых знаков). Программа заменяет все знаки от второго до конца строки. Итоговое значение содержит 6 символов, потому что именно столько знаков содержала переменная А$ в начале работы оператора. В строке '4 использованы оператор и функция MID$. Функция выделяет второй знак в abc, а оператор ставит его на место четвертого знака в переменной А$. Согласно аргументам оператора, замещаться должно два знака, но так как функция возвращает только один, то четвертый символ А$ замещен, а пятый остался без изменений.
Функция INSTR
Функция определяет, входит ли одна текстовая переменная в другую. Если результат положительный, то функция возвращает номер символа, с которого начинается вхождение. В противном случае функция возвращает нуль
INSTR([k], текст_выраж_1. текст_выраж_2)
Функция проверяет наличие текстового_выражения_2 в текстовом_выражении_1. Число k задает номер символа, с которого начинается поиск вхождения. Если число не указано, то поиск начинается с первого знака.