Конкатенация - Concatenation

В теории формальных языков и компьютерного программирования , конкатенации является операция объединения строк символов из конца в конец . Например, сочетание слов «снег» и «мяч» составляет «снежный ком». В некоторых формализации теории конкатенации , также называемой теорией струн, конкатенация струн является примитивным понятием .

Синтаксис

Во многих языках программирования конкатенация строк представляет собой бинарный инфиксный оператор . Оператор +(плюс) часто перегружается для обозначения конкатенации строковых аргументов: "Hello, " + "World"имеет значение "Hello, World". В других языках есть отдельный оператор, в частности, для указания неявного преобразования типа в строку, в отличие от более сложного поведения для общего плюса. Примеры включают .в себя Эдинбургский IMP , Perl и PHP, ..в Lua , а также &в Ada, AppleScript и Visual Basic. Другой синтаксис существует, например, ||в PL / I и Oracle Database SQL .

В некоторых языках, особенно в C, C ++ и Python, существует конкатенация строковых литералов , что означает, что смежные строковые литералы объединяются без какого-либо оператора: "Hello, " "World"имеет значение "Hello, World". В других языках объединение строковых литералов с оператором оценивается во время компиляции посредством сворачивания констант , хотя это часто является деталью реализации компилятора, а не особенностью языка.

Выполнение

В программировании конкатенация строк обычно происходит во время выполнения, поскольку строковые значения обычно не известны до времени выполнения. Однако в случае строковых литералов значения известны во время компиляции, и, таким образом, конкатенация строк может выполняться во время компиляции либо посредством конкатенации строковых литералов, либо посредством сворачивания констант .

Конкатенация наборов строк

В теории формального языка и сопоставлении с образцом (включая регулярные выражения ) операция конкатенации строк обобщается до операции над наборами строк следующим образом:

Для получения двух наборов строк S 1 и S 2 , то конкатенации S 1 S 2 состоит из всех строк вида VW , где V представляет собой строку из S 1 и W представляет собой строку из S 2 , или формально S 1 S 2 = { vw  : vS 1 , wS 2 } . Многие авторы также используют конкатенацию набора строк и одной строки, и наоборот, что аналогично определяется как S 1 w = { vw  : vS 1 } и vS 2 = { vw  : wS 2 } . В этих определениях строка vw представляет собой обычную конкатенацию строк v и w, как определено во вводном разделе.

Например, если F = {a, b, c, d, e, f, g, h} и R = {1, 2, 3, 4, 5, 6, 7, 8} , то FR обозначает множество всех координат шахматной доски в алгебраической записи , а e R обозначает множество всех координат файла королей .

В этом контексте наборы строк часто называют формальными языками. Оператор конкатенации обычно выражается как простое сопоставление (как в случае умножения ).

Алгебраические свойства

Строки в алфавите с помощью операции конкатенации образуют ассоциативную алгебраическую структуру с единичным элементом нулевой строкой - свободным моноидом .

Наборы строк с объединением и чередованием образуют полукольцо , причем объединение (*) распределяется по чередованию (+); 0 - это пустой набор, а 1 - набор, состоящий только из пустой строки.

Приложения

Аудио / телефония

В программировании для телефонии конкатенация используется для предоставления пользователю динамической звуковой обратной связи. Например, в «время суток» говорящие часы , конкатенация используется , чтобы дать правильное время, играя соответствующие записи каскадных кодов вместе. Например:

  • "В гудке будет время"
  • "Восемь"
  • "30"
  • "Пять"
  • "а также"
  • "Двадцать"
  • "Пять"
  • «Секунды»

Сами записи существуют отдельно, но воспроизведение их одна за другой дает слушателю грамматически правильное предложение.

Этот метод также используется в объявлениях об изменении номера, системах голосовой почты или большинстве телефонных приложений, которые обеспечивают динамическую обратную связь с вызывающим абонентом (например, moviefone , tellme и др.).

Программирование для любого вида компьютеризированной системы оповещения также может использовать конкатенацию для динамических публичных объявлений (например, полеты в аэропорту). Система будет архивировать записанную речь с числами, маршрутами или авиакомпаниями, пунктами назначения, временем и т. Д. И воспроизводить их в определенной последовательности для создания грамматически правильного предложения, которое объявляется по всему объекту.

Теория баз данных

Один из принципов проектирования реляционной базы данных состоит в том, что поля таблиц данных должны отражать единственную характеристику объекта таблицы, что означает, что они не должны содержать сцепленных строк. Если в отчете требуется конкатенация, она должна быть предоставлена ​​во время выполнения отчета. Например, чтобы отобразить физический адрес определенного клиента, данные могут включать номер здания, название улицы, номер подразделения здания, название города, название штата / провинции, почтовый индекс и название страны, например, «123 Fake St Apt 4, Boulder, CO 80302, USA », объединяющая семь месторождений. Однако таблица данных клиентов не должна использовать одно поле для хранения этой объединенной строки; скорее, объединение семи полей должно произойти при запуске отчета. Причина таких принципов заключается в том, что без них ввод и обновление больших объемов данных становится подверженным ошибкам и трудоемким. Отдельный ввод города, штата, почтового индекса и страны позволяет проверить ввод данных (например, определить недопустимое сокращение штата). Затем эти отдельные элементы можно использовать для сортировки или индексации записей, например, все с "Boulder" в качестве названия города.

Развлекательная математика

В развлекательной математике многие проблемы касаются свойств чисел при соединении их числительных в некоторой базе . Примеры включают домашние простые числа (простые числа, полученные многократным разложением на множители возрастающей конкатенации простых множителей данного числа), числа Смарандаче-Веллина (конкатенации первых простых чисел ) и константы Чамперноуна и Коупленда-Эрдеша (действительные числа, образованные десятичные представления натуральных и простых чисел соответственно).

Смотрите также

Рекомендации