Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
символ_литер величины.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
68.1 Кб
Скачать

8. Операция соединения

Для литерных величин существует специальная операция — соединение. Она обозначается знаком "+". При выполнении соединения двух строк получается новая строка, образованная приписыванием второй исходной строки в конец первой. Например, " ,бал" + " кон" = = "балкон".

Обратите внимание, что, хотя для соединения используется тот же знак, что и для арифметического сложе­ния, это совершенно разные операции. При соединении "сумма" зависит от порядка слагаемых. Например, если у и z — литерные величины, у = "вес", z = "на", то у + z = "весна", но z + у = "навес".

Еще одно важное отличие соединения от сложения — отсутствие обратной операции. Никакого аналога вычитания для литерных величин не существует.

9. Метол посимвольного формирования

Во многих задачах требуется на основе заданной ли­терной величины построить другую. К эти задачам отно­сится, например, рассмотренная выше замена символов.

Чаще всего подобные задачи легко решаются мето­дом посимвольного формирования. Суть его в следую­щем. Берется пустая строка, к которой постепенно с помощью операции соединения добавляются символы, полученные в результате анализа исходной строки.

Например, алгоритм замены можно переписать так:

алг замена (арг сим х,у, арг рез лит а)

надо |в строке а все символы х заменены на у

нач цел i, лит b

b := ""

нц для i от 1 до длин (а)

если a[i]=х

то b:=b+y

иначе b:=b+a[i]

все

кц

а:=b

кон

Метод посимвольного формирования особенно удо­бен, когда в результате преобразования должна измениться длина исходной строки.

Это хорошо иллюстрирует следующий алгоритм:

алг вычеркивание пробелов (арг лит а, рез лит b)

надо| строка b получена из а | вычеркиванием всех пробелов

нач цел i

b := ""

нц для i от 1 до длин (а)

если a[i] <> “ ”

то b:=b+a[i]

все

кц

кон

В приведенных алгоритмах новая строка формиро­валась последовательным добавлением символов в ко­нец строки. Иногда удобно формировать строку в обратном порядке — от конца к началу. Вот типичный пример подобной задачи:

алг переворот (арг лит а, рез лит b)

надо| b содержит строку а, прочитанную с конца

нач цел i

b := ""

нц для i от 1 до длин (а)

b := a[i] + b

кц

кон

10. Вырезки

До сих пор мы работали со строками либо целиком, либо поэлементно. Операция вырезки позволяет "вырезать" из строки группу соседних символов. Вырезка из строки t обозначается t [ i : j ] (читается: t от i до j ), где i — индекс первого, a j — индекс последнего элементов вырезки. Например, если значением литерной величины t является строка информатика, то

t[l:4] = "инфо"

t[8:10] = "тик"

t[10:10] + t[l:2] + t[4] = "кино"

t[l:4]-+ "МИР" = "инфоМИР"

t[10:10] = "к"

11. Команда присваивания вырезке

Вырезку можно использовать в левой части команды присваивания. Например, если t="План недовыполнен", то при выполнении команды присваивания

t[6:9] := "пере"

элементы строки t с шестого по девятый будут заменены на "пере" и t станет равным "План перевыполнен".

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