Конкатенация строк.
Выходные данные программы обычно представляют собой строку символов, создаваемую выполнением операторов WRITE. Оператор WRITE, где <список вывода> является <строкой символов>, помещает новую строку вслед за текущими данными в OUTPUT.
Операция конкатенации в CF Pascal задается оператором WRITE и заключается в помещении строки символов в OUTPUT. Конкатенацией двух строк является третья строка, полученная присоединением второй строки к первой. Например:
C= †character†
S= †string†
C&S=†characterstring†
S&C=†stringcharacter†
S&S=†stringstring†
Для пустой строки справедливо следующее тождество:
† † & S = S & † † = S
Операция конкатенации является бинарной (два операнда, оба - строки), инфиксной (символ операции помещается между операндами), ассоциативной ((C&B)&S = C&(B&S)) и не является коммутативной(S&C ¹ C & S).
Подстроки.
Строки W = †WRITE(Any, ‘string’)† и строка S = †string† имеют некоторое отношение, а именно символы встречаются внутри W. Говорят, что строка S является подстрокой W.
Строка P является подстрокой Q, если и только если существует строки X и Y, такие что
Q= X & P & Y
В случае с S и W мы можем записать
W = †WRITE(Any, ‘† & S & †’)†
Где согласно определению подстроки
X = †WRITE(Any, ‘†
Y = †’)†
Или для строки T = †tring†
S = †s† & T
T- подстрока S и согласно определению подстроки
X = †s†
Y = ††
или
S = †s† & T & ††
Пустая строка избавляет нас от необходимости вводить специальные правила для случаев, когда подстрока находится на первом месте или завершает строку. Также, пустая строка является подстрокой любой строки.
Композиция строк.
Оператор WRITE может выполнять другую операцию, присоединяя значение переменной типа CHAR к строке, которая является текущим значением OUTPUT. Это операция композиции, обозначаемая знаком Ñ. Композиция строки и символа – добавление символа к концу строки.
†strin† Ñ g = †string†
Композиция обеспечивает нам способ превращения символа в строку
† † Ñ g = †g†
Это общее тождество, связывающее символ и 1-строку содержащую этот символ.
Композиция с пустой строкой настолько полезна, что пустую строку принято опускать и получается унарная префиксная версия композиции:
Ñ g = †g†
Аналогично конкатенации операция композиции является бинарной(первый операнд – строка, второй - символ), инфиксной, ассоциативной и не является коммутативной.
Следующие варианты недопустимы для композиции
Вариант | Причина |
a Ñ b | Первый операнд – символ |
Ñ †x† | Операнд 1-строка, а не символ |
N Ñ †† | Оба операнда выбраны неверно |
Дата добавления: 2016-12-08; просмотров: 898;