Урок 11

Меню

Урок 13

Урок 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.

     Напишите программу, которая из слов “финал”, “урок”, “турист”, “балет”, “окно”, “линия” составит слово “футбол”.

Урок 11

Меню

Урок 13

Яндекс цитирования Rambler's Top100
Сайт создан в системе uCoz