Обработка текстовой информации.
Символьные константы, переменные и массивы:
Символьные константы, используемые в качестве литеральных констант в тексте исходной программы, представляют собой последовательность произвольных знаков алфавита, окаймляемую двойными кавычками.
Версия Quick BASIC допускает употребление именованных констант символьного типа :
CONST RUS$ = "Россия"
Идентификаторы текстовых переменных распознаются либо по последнему символу имени ($), либо по первой букве, если эта буква была указана в списке оператора DEFSTR :
DEFSTR D-F, Q
Quick BASIC позволяет вводить объекты символьного типа с помощью описателя AS STRING , который может встретиться в одном из декларативных операторов: COMMON, DECLARE, DEF, DIM, FUNCTION, SHARED, STATIC, SUB, TYPE,
REDIM.
Например : DIM fio(40) AS STRING, address AS STRING *40
TYPE anketa
fam AS STRING *20
name AS STRING *10
otech AS STRING *10
datar AS STRING *10
END TYPE
В операторах DIM и REDIM имеется возможность объявления не только символьных массивов, но и скалярных переменных. Указание о длине символьного объекта после описателя AS STRING причисляет его к разряду статических.
DEFSTR D-F, Q
DIM gruppa AS STRING *4
Максимальная длина текстовой переменной не может превышать 32767 символов.
Ввод строки символов
При помощи оператора LINE INPUT программа может выдать запрос на ввод символьного значения с клавиатуры или из последовательного файла данных.
LINE INPUT [;] ["текст";] <имя переменной>
LINE INPUT#n, <имя переменной>
<имя переменной> - имя единственной переменной, в которую водятся все набираемые символы до появления управляющего кода "возврат каретки". Среди них могут быть и пробелы, и запятые.
Оператор LINE INPUT# не выдает приглашение ко вводу в виде вопросительного знака, но все остальные атрибуты (точка с запятой вначале, текстовая подсказка) имеют тот же смысл, что и в оператореINPUT.
Ввод данных с клавиатуры по операторам INPUT и LINE INPUT сопровождается отображением поступающих значений на экране дисплея.
Операции, применяемые к символьным переменным
В символьном выражении опрерации производятся над символьными опрерандами, представляющими собой символьные константы, переменные, элементы символьных массивов, а также функций обработки
символьных данных и другие символьнные выражения.
В символьных выражениях может использоваться операция конкатенации (сцепления), которая обозначается знаком плюс:
A$= "Quick"
B$="BASIC"
C$=A$+B$
В результате выполнения операции значение С равно "QuickBASIC"
Операция конкатенации сводится к приписыванию значения очередного "слагаемого" в хвост к предыдущей строке.
В качестве операндов символьного выражения наряду с текстовыми константами и переменными могут выступать стандартные или нестандартные функции символьного типа.
Функция MID$, используемая для выделения внутренней подстроки, может применяться и как оператор для замены внутренней подстроки новым значением. В этом случае в качестве первого аргумента может выступать только идентификатор символьной переменной :
A$ = "Turbo BASIC"
MID$ (A$,1,5) = "Quick"
Длина заменяемой подстроки при таком присвоении не меняется. Если заменяющее значение имеет меньшую длину, то недостающие символы справа дополняются пробелами. В противном случае используются первые n символов замещающего выражения.
Кроме стандартных функций, перечисленных в качестве операндов символьных выражений могут выступать служебные переменные текстового типа, а также символьные функции пользователя.
Стандартные процедуры обработки текстовой информации:
ФункцияINSTR
Назначение: Осуществляет поиск первого вхождения одной строки в другую строку и возвращает позицию начала вхождения найденной подстроки.
Синтаксис: INSTR ([начало,] строка 1,строка2)
Необязательный аргумент начало устанавливает позицию начала поиска в диапазоне от 1 до 32767. По умолчанию начальная позиция равна 1. Если величина этого аргумента выйдет за допустимый диапазон, то появится сообщение «Illegal Function Call» (недопустимый вызов функции).
Аргумент строка1 является строкой для поиска. Аргумент строка2 является искомой подстрокой. Оба аргумента могут быть строковыми переменными, строковыми выражениями или литералами.
Функция INSTR возвращает значение 0, если: аргумент начало превышает длину строки1; строка1 — нулевая (пустая) строка; строка2 не найдена.
Если строка2 - пустая строка, то функция возвращает значение начальной позиции для поиска.
ФункцияLEFT$
Назначение: Возвращает подстроку, содержащую указанное число символов в левой части заданной строки.
Синтаксис: LEFT$(x$,n)
Аргумент х$ — исходная строка для выделения подстроки. Аргумент n задает число символов искомой подстроки и должен находиться в диапазоне от 1 до 32767. Если n превышает длину строки, то возвращается исходная строка х$. Если n равно 0, то возвращается нулевая (пустая) строка.
ФункцияRIGHT$
Назначение: Возвращает заданное число крайних правых символов исходной строки.
Синтаксис: RIGHT$ (.строка, число)
Аргумент число задает число символов, выделяемых в правой части исходной строки, заданной аргументом строка.
Если число символов больше длины или равно длине исходной строки, то функция возвращает всю строку. Если число выделяемых символов равно 0, то возвращается пустая строка.
ФункцияLEN
Назначение: Возвращает длину строки в байтах.
Синтаксис: LEN(x$)
ФункцияLTRIM$
Назначение: Возвращает копию строки с удаленными лидирующими пробелами.
Синтаксис: LTRIM$(cтрокa)
Аргумент строка — исходное строковое выражение. Аналогичную операцию с хвостовыми пробелами выполняет функция RTRIM$.
Функция MID$
Назначение: Возвращает подстроку заданной длины исходной строки, начиная с указанного символа.
Синтаксис:МID$(строка, начало[, длина])
Аргумент строка представляет собой исходное строковое выражение. Аргументы начало и длина устанавливают начало выделения и длину искомой подстроки соответственно. Эти аргументы должны иметь целыйтипи находиться в диапазоне от 1 (начало) или от 0 (длина) до 32767.
Если аргумент длина опущен или с начала выделения подстроки до конца исходной строки осталось менее символов, чем это установлено аргументом длина, то возвращаются все символы исходной строки, начиная с указанного.
Если аргумент начало превышает длину исходной строки, то результатом вызова функции будет нулевая (пустая) строка.
При установке нулевой длины подстроки функция возвращает также нулевую подстроку.
В случае выхода числовых аргументов за пределы указанных диапазонов произойдет ошибка «Illegal function call» (недопустимый вызов функции).
Оператор MID$
Назначение: Заменяет символы одной строки символами другой строки.
Синтаксис: МID$( переменная, начало[,длина])=выражение
Параметр переменная - строковая переменная, которая должна быть изменена. Параметр выражение - строковое выражение, замещающее часть строковой переменной. Параметры начало - числовые выражения целого типа, указывающие начало замещения и число заменяемых символов в строковой переменной.
Результатом выполнения оператора является замещение указанного числа символов строковой переменной, начиная с заданной позиции, символами строкового выражения.
Если необязательный параметр длина опущен, то используются все символы строкового выражения. Замещение символов всегда происходит в пределах длины исходной строковой переменной.
Функция STR$
Назначение: Возвращает строковое представление указанного аргумента.
Синтаксис: STR$ (выражение)
Аргумент выражение является числовым выражением целого типа. Если аргумент положителен, то функция возвращает строку с лидирующим пробелом.
Функция VAL
Назначение: Возвращает числовое представление строки.
Синтаксис: VAL (cтрока)
Функция VAL ликвидирует лидирующие пробелы, символы табуляции и перевода строки в аргументе строка.
Функция VAL является обратной по назначению функции STR$. Если первый символ аргумента — не числовой, то функция VAL возвращает 0.
2. Описание практической части работы:
2.1. Цели лабораторной работы: Ознакомиться с основными функциями и операторами обработки символьной информации, используемыми в языке Quick Basic.
2.2. Постановка задачи: В соответствии с вариантом в заданной строке определить количество слов, все слова записать в одномерный массив.
2.3. Порядок выполнения работы:
2.3.1. Ознакомиться с теоретической частью.
2.3.2. Получить задание у преподавателя.
2.3.2. Выполнить работу.
2.3.3. Оформить отчет:
2.3.4.1. Содержание отчета:
1. Цель работы - краткая формулировка поставленной цели.
2. Порядок выполнения - определяются действия, необходимые для выполнения данной работы.
3. Постановка задачи - формулирование задачи в соответствии с индивидуальным заданием.
4. Решение поставленной задачи:
4.1. Математическое описание решения поставленной задачи содержит описание связей между параметрами с использованием принятых в математике обозначений.
4.2. Описание логической структуры программы (алгоритм решения) содержит:
- краткое описание схемы программы,
- алгоритм решения (по ГОСТ ) - рисунок,
- краткое описание используемых операторов языка программирования (при необходимости).
4.3. Описание программы содержит:
· название файла, его размер,
· текст программы (или фрагмент для решения конкретной, наиболее важной части задания).
4.4. Результат работы программы:
- значения, полученные в результате выполнения программы
- анализ полученных результатов.
Выводы - отвечают на поставленную цель.
2.4. Контрольные вопросы:
1. Что такое символьная информация ?
2. Какие символы при работе на ЭВМ Вы знаете ?
3. Что такое основная кодовая страница ?
4. Какие действия можно производить с символьными переменными?
5. Можно ли сложить две символьные переменные и что произойдет если слагаемые поменять местами ?
6. Как определить длину символьной переменной произвольной длины ?
7. Что является разделителем при вводе символьных переменных с клавиатуры ?
8. Можно ли определить встречается ли в переменной искомый набор символов ?
9. Может ли символьная переменная не содержать ни одного символа?
10 Какова длина переменной, не содержащей ни одного символа ?.
Таблица
Задания
n | задание | n | задание |
В заданном предложении определить количество слов | В заданном предложении определить встречается ли в нем заданное слово | ||
В заданном предложении добавить пробелы, чтобы получить требуемую длину строки | Переписать заданное предложение в обратной последовательности | ||
В заданном предложении определить количество раз встречается заданная буква | В заданном предложении к каждому слову подписать в конце специальный знак | ||
В заданном предложении заменить одно слово на другое | В заданном предложении определить все встречающиеся цифры | ||
В заданном предложении заменить один символ на другой | В заданном предложении определить все встречающиеся знаки препинания | ||
В заданном предложении удалить лишние пробелы (оставив между словами один пробел) | В заданном предложении удалить символы, заключенные в круглые скобки | ||
В заданном предложении заменить прописные буквы на строчные | В заданном предложении поменять местами слова, заключенные в круглые скобки | ||
Определить сколько символов (букв) встречается в заданном предложении | В заданном предложении определить встречаются ли числа в квадратных скобках | ||
В заданном предложении определить все слова меньше заданной длины | Определить сколько раз встречается в предложении заданное сочетание букв | ||
В заданном предложении поменять местами слова | В заданном предложении определить все слова, начинающиеся и заканчивающиеся на одну и ту же букву | ||
В заданном предложении к каждому слову подписать спереди специальный знак | В заданном предложении определить все слова, начинающиеся и заканчивающиеся на заданные буквы | ||
В заданном предложении каждое слово написать с заглавной буквы | В заданном предложении определить все слова, имеющие заданную длину | ||
В заданном наборе символов определить количество предложений | В заданном предложении определить все слова больше заданной длины | ||
В заданном предложении определить встречаются ли числа | В заданном предложении определить все числа в квадратных скобках | ||
В заданном предложении определить все встречающиеся числа | В заданном предложении определить встречается ли знаки арифметических действий |
Лабораторная работа №11.