Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Алгоритмы обработки текстовых величин




Текстовыми (символьными, строковыми, литерными) называют переменные, которые содержат в качестве значения текстовую информацию. В отличие от числовых переменных, хранящих только число, текстовые содержат буквы, цифры и специальные знаки. В одной такой переменной можно разместить целый текст.

Переменные текстового типа широко используются в задачах обработки символов, создании шифров; баз данных и многих других. Логика программного решения, таких задач несколько отличается от рассмотренных ранее алгоритмов, поэтому знакомство с нею играет важную роль в подготовке программиста.

Текстовые переменные могут содержать только символы из таблицы ASCII (American Standard Code for Information Interchange). Таблица ASCII. У компьютера нет отдельного участка памяти для хранения текста. Все, что поступает в память машины, преобразуется в числовой формат, то есть в двоичное представление. Формат ASCII состоит в том, что каждый выводимый

на экран символ имеет номер в интервале от 0 до 255. В это количество входят как видимые знаки, такие как буквы, цифры, знаки пунктуации, так и управляющие символы — табуляция, перевод строки и пр; Управляющие символы имеют номера от 1 до 32.

Различают два типа строковых переменных — переменной и фиксированной длины.

Присвоение значения текстовой переменной может быть осуществлено несколькими способами в зависимости от решаемой задачи.

1. Ввести текст с клавиатуры. INPUT A$

2. Присвоить текст в кавычках. А$ = "BASIC"

3. Присвоить значения других переменных или текста в кавычках.
В$ = А$ + "for ever! "

4. Присвоить результат расчета символьного выражения.
D$ = LEFT$(A$, 3)

5. Присвоить значение с помощью операторов DATA READ.
DATA "Терек": READ A$

Если строковой переменной не присвоено никакого значения, но она указана в тексте, то программа считает ее пустой — А$ = " ". Так можно «обнулять» текстовые переменные.

Таблица ASCII
  А   Р   а         р   Ё
  Б   С   б         с   ё
  В   Т   в         т   Є
  Г   У   г         у   є
  Д   Ф   д         ф   Ї
  Е   Х   е         х   ї
  Ж   Ц   ж         ц   Ў
  З   Ч   з         ч   ў
  И   Ш   и         ш   °
  Й   Щ   й         щ  
  К   Ъ   к         ъ   ·
  Л   Ы   л         ы  
  М   Ь   м         ь  
  Н   Э   н         э   ¤
  О   Ю   о         ю  
  П   Я   п         я    

Сложение текстовых переменных

Текстовые переменные можно складывать и сравнивать между собой. Сложение текстовых переменных называется конкатенацией. Для сложения используют знак +. Фактически сложение является сцеплением текстовых строк — вторая записывается вплотную за первой.

Пример: Сложить слова «Мой» и «компьютер», поставив между ними пробел А$ = "Мой"

В$ = "компьютер"

С$ = А$ + " " + В$

PRINT C$

Результат: Мой компьютер

Другие математические действия с текстовыми переменными проводить нельзя. Если указан знак, отличный от +, то будет выдано сообщение об ошибке Type mismatch (Несоответствие типа).

Сравнение текстовых переменных

Сравнение текстовых переменных проводится с помощью стандартных операторов сравнения: =, >, <, >=, <=, <>. В ходе сравнения компьютер анализирует три основных параметра: количество символов, последовательность 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 задает номер символа, с которого начинается поиск вхождения. Если число не указано, то по­иск начинается с первого знака.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...