Найти тему

Программирование на Бейсике. Работа с символами, строкой, текстом

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

Самый первый оператор для работы с текстом мы уже знаем – это знак «+». Он склеивает между собой куски текста. Например, строка кода

PRINT “Hello ” + “world!”

Выведет на экран текст «Hello world!».

Таким же образом он работает и с символьными переменными:

a$ = “Hi”
b$ = “Bob”
c$ = a$ + “ “ + b$

Результат: «Hi Bob».

Далее необходимо понять, что в представлении компилятора все символы – это какой-то числовой код. Иными словами, каждому символу соответствует какое-то число. Это придумано для того, чтобы, зная код какого-то специального символа, отсутствующего в алфавите, можно было его вывести на экран. Для этого служит функция CHR$(код символа). Например:

PRINT CHR$(176)
PRINT CHR$(177)
PRINT CHR$(178)

Здесь последовательно выводятся на экран символы с кодами 176, 177, 178.

Есть и обратная функция для получения кода определенного символа. Например, строка кода

PRINT ASC(“B”)

выведет на экран «66». Это код латинской заглавной буквы «B».

И если вывод на экран какого-то спецсимвола по его коду еще можно понять, то зачем нужно знать код какого-то символа? Все просто. Бывают ситуации, когда необходимо сравнить между собой две строки текста, или два символа, или символьные переменные. Так вот компилятор их сравнивает, основываясь на кодах этих символов. Чем больше код, тем больше символ.

Список остальных символьных функций:

  • LEN(строка или переменная) – вычисляет длину строки
  • STR$(x) – преобразует число x в символьный тип
  • SPACE$(x) – получает строку пробелов размером x
  • STRING$(m, n) – получает строку длиной m символов, имеющих код n
  • STRING$(m, строка или переменная) – получает строку длиной m символов из указанного символа или первого символа указанной строки или переменной
  • LCASE$(строка или переменная) – преобразует символы строки в нижний регистр
  • UCASE$(строка или переменная) – преобразует символы строки в верхний регистр
  • LTRIM$(строка или переменная) – удаляет из строки все левые пробелы
  • RTRIM$(строка или переменная) – удаляет из строки все правые пробелы
  • INSTR([начало, ] строка1, строка2) – ищет первую позицию строки2 (переменной2) в строке1 (переменной1), начиная с указанной позиции (необязательно)
  • LEFT$(строка или переменная, n) – получает строку, состоящую из n символов исходной строки, отрезанных слева
  • RIGHT$(строка или переменная, n) – получает строку, состоящую из n символов исходной строки, отрезанных справа
  • MID$(строка или переменная, начало [, длина]) – получает часть строки из исходной, начиная с начала. Если не указываем длину, то получаемый результат занимает всю оставшуюся длину исходной строки
  • MID$(строка или переменная, начало) = строка или переменная – заменяет часть исходной строки на новую
  • HEX$(x) – преобразует число x в шестнадцатеричный вид
  • OCT$(x) – преобразует число x в восьмеричный вид

Приведем несколько примеров работы вышеперечисленных функций.

PRINT LEN("mama")
a$ = "Hello"
PRINT LEN(a$)
k = LEN(a$)
PRINT k

Первая строка считает количество символов строки «mama» и выводит результат на экран («4»).

Вторая и третья строки демонстрируют, что функция LEN() может работать не только со строкой текста, но и с символьной переменной a$, которая содержит в себе строку «Hello». В результате мы получаем на экране «5».

Четвертая и пятая строки демонстрируют, что результат функции можно не только выводить на экран, но и присвоить какой-нибудь переменной. В нашем случае переменной «k» присваивается значение, которое получается в результате выполнения функции LEN(a$).

Итак, данный пример показывает, что, во-первых, функции для работы с символьной информацией одинаково работают как с готовым текстом, так и с переменными, которые этот текст содержат. А во-вторых, результат выполнения функций можно сохранять в переменную.

Приведем примеры результата работы других вышеперечисленных функций.

Код

a$ = STR$(5 * 2)

запишет в переменную a$ значение «10». То есть не числа десять, а текста «10», с которым потом никаких математических операций уже не выполнишь.

Код

PRINT SPACE$(10) + “X”

выведет на экран букву «Х» не в начале строки, а на 11-й позиции, т.к. перед ней будут 10 пробелов.

Код

PRINT STRING$(10, 178)

выведет в одну строку десять символов, код которых равен 178.

Код

PRINT STRING$(10, “X”)

выведет в одну строку десять больших букв «Х».

А код

PRINT STRING$(10, “Xa”)

выведет в одну строку также десять больших букв «Х» - потому что выводятся только первые буквы строки.

Код

PRINT LCASE$(“Mama”)

выведет на экран «mama».

Код

PRINT UCASE$(“Mama”)

выведет на экран «MAMA».

В результате кода

a$ = LTRIM$(“ Mama”)

в переменную a$ запишется «Mama» без пробелов слева.

В результате кода

a$ = RTRIM$(“Mama ”)

в переменную a$ запишется «Mama» без пробелов справа.

Код

PRINT INSTR(“Hello world”, “world”)

выведет на экран число «7» - т.к. именно с этой позиции в строке «Hello world» начинается текст «world». Однако если мы добавим в функцию позицию начала поиска, например, 8

PRINT INSTR(8, “Hello world”, “world”)

то на экран выведется число «0» - т.к. начиная поиск с позиции 8 компилятор не нашел в строке «Hello world» никакого текста «world». В исходной строке, начиная с позиции 8, и до конца остались только буквы «orld».

Код

PRINT LEFT$(“Hello world”, 5)

выведет на экран «Hello» - потому что этот текст имеет длину ровно 5 символов.

А код

PRINT RIGHT$(“Hello world”, 5)

выведет на экран «world» - по той же самой причине.

Код

PRINT MID$(“Hello world”, 7)

выведет на экран «world» - потому что этот текст начинается именно с седьмой позиции исходной строки. А код с указанием длины вырезаемого текста

PRINT MID$(“Hello world”, 1, 4)

выведет на экран «Hell» - потому что теперь начинаем вырезать с первого символа, а длина вырезаемого куска текста составляет 4 символа.

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

Комменты приветствуются, за палец вверх - отдельное спасибо. Удачи!

------------------------------

Список уроков Программирование на Бейсике для начинающих

Следующий урок Условный оператор

Предыдущий урок Основные математические функции

------------------------------

Задания

1. Дан символ. Вывести на экран сначала тот символ, код которого меньше на 1 кода введенного символа, а потом символ, код которого больше на 1 кода введенного символа.

2. Дана непустая строка. Вывести коды ее первого и последнего символа.

3. Дано целое число N (N>0) и символ. Вывести строку длиной N, которая состоит из введенного символа.

4. Дана строка, состоящая из 5 символов. Вывести на экран текст, полученный в результате разворота исходной строки слева направо.

5. Даны целые положительные числа N1 и N2, а также строки S1 и S2. Получить из этих строк новую строку S, содержащую первые N1 символов строки S1 и последние N2 символов строки S2.

6. Даны строки S1 и S2. Строка S1 содержит в себе строку S2. Удалить из S1 фрагмент, совпадающий со строкой S2.

7. Даны строки S1, S2 и S3. Заменить в первой строке фрагмент текста, совпадающего со второй строкой, на третью строку.

8. Дана строка, содержащая как минимум 2 пробела. Вывести фрагмент текста, расположенный между первыми двумя пробелами.