Урок 12.
Функции обработки символьных величин.
При обработке текста часто необходимо знать его длину, т. е. количество
составляющих его символов.
Задание.
Подсчитайте длину символьной величины
А$="Информатика изучает технологию сбора, хранения и переработки
информации."
(72)
Обратите внимание! Считаются не только буквы, но и пробелы, знаки препинания,
кроме кавычек.
Трудоемкую работу по определению длины текста в Бейсике выполняет функция
LEN(X$) (от англ. LENgth —длина),
которая находит длину символьной величины Х$. Аргументом функции
LEN должна быть символьная величина. Результатом является целое
число, заключенное между 0 и 255.
LEN("SOS") = 3
LEN("*****") = 5
LEN ( " ") = 1
В результате выполнения фрагмента программы
Р$ = "эта фраза в настоящем времени"
PRINT "длина = "; LEN(P$)
на экран будет выведено сообщение о длине цепочки Р$, равной 29.
Вопрос.
Может ли быть результатом функции LEN число 325?
Одна из основных операций, необходимая для анализа текста, — выделение
какой-либо его части. Выполнить эту операцию позволяет функция
MID$ (от англ. MIDdle— середина).
Ее результатом являются символьные строки, поэтому имя этой функции всегда
сопровождается знаком $.
Функция MID$(X$, N, М) вырезает подстроку длиной в М символов
из строки Х$, начиная с символа с номером N.
Формат:
В$ = MID$(A$, N, [М])
При выполнении этой команды переменной В$ присваивается значение,
представляющее собой М последовательных символов величины А$,
первый из которых занимает позицию N.
MID$("мишка", 2, 3) = "ишк"
Если М не указано или количество символов в строке справа от символа
N меньше, чем М, то выделяется строка с номера N
до конца текста:
MID$("паровоз", 5) ="воз"
Если значение М равно 0 или значение N превышает
длину строки, то результатом будет пустая строка.
a) MID $(" ", 2, 3) = ""
6) MID$("ЭBM", 5, 3) = ""
в) INPUT X$, M
Y$ = MID$(X$, M)
PRINT Y$
В результате выполнения последнего фрагмента при вводе 1234567890, 5
на экран выводится 567890 (т. е. переменная Y$ принимает значение, равное
567890).
Кроме функций LEN и MID в разных версиях Бейсика имеются
несколько десятков других функций, две основные из которых
STRING$(N, M) и INSTR(N, X$, Y$).
Функция STRING$(N, M) создает строку из N одинаковых символов,
равных символу с ASCII-кодом М.
Функция STRING$(N, X$) создает строку из N одинаковых символов,
равных первому символу строки Х$.
STRING$(20, "*") = "********************"
STRING$(5, "ПРИВЕТ") = "ППППП"
STRING$(4, 61) = "===="
STRING$(0, "В") = ""
STRING$(N, " ") более просто записывается как SPACE$(N)
(от англ. SPACE — пробел) и изображает N пробелов. Данная
функция может быть полезна при построении диаграмм в текстовом режиме.
Функция INSTR([N], X$, Y$)
производит поиск первого вхождения подстроки-Y$ в строку X$
начиная с N-го символа строки X$. Если N – не задано
, поиск выполняется с первого символа. Значением функции является
целое число — номер позиции начала вхождения (0 — если строка
не найдена, N — если Y$ пуста).
INSTR(3, "Иванов Иван Иванович", "Иван") = 8
INSTR("Иванов Иван Иванович", "Иван") = 1
Решение задач.
Задача 1.
Замените в предложении восклицательный знак на вопросительный.
Решение.
Используемые величины:
А$ — вводимый текст;
N — длина вводимого текста;
В$ — вырезаемый из текста символ;
I — номер вырезаемого символа;
С$ — текст, в котором “!” заменен “?”.
Из вводимого текста А$ вырезается по одному символу В$ и проверяется
условие: если В$="!", то С$=С$+"?", иначе С$=С$+В$.
INPUT A$
N =LEN(A$)
С$ = ""
FOR I =1 TO N
В$ =MID$(A$, I, 1)
IF B$ ="!" THEN C$ -=С$ + "?" ELSE C$ =С$ + В$
NEXT I
PRINT C$
END
Вопрос.
Обязательно ли использовать при решении величину N? Почему?
Для самостоятельного решения:
Задача 2.
Дан текст. Определить, содержит ли он символы “*”.
Задача 3.
Напишите программу, которая из слов “финал”, “урок”, “турист”, “балет”,
“окно”, “линия” составит слово “футбол”.
|