Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Синтаксис [ править ]

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

В некоторых языках, особенно в 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" в качестве названия города.

Развлекательная математика [ править ]

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

См. Также [ править ]

  • Веревка (структура данных)

Ссылки [ править ]

  1. ^ Операторы конкатенации в Visual Basic
  2. ^ Оператор конкатенации
  • Джон Э. Хопкрофт и Джеффри Д. Уллман, Введение в теорию автоматов, языки и вычисления , издательство Addison-Wesley Publishing, Reading Massachusetts, 1979. ISBN  0-201-02988-X .
  • ДЖОН КОРКОРАН , УИЛЬЯМ ФРАНК и МАЙКЛ МАЛОНИ, Теория струн, Журнал символической логики, т. 39 (1974) стр. 625–637