Konkatenacja — Concatenation

W formalnej teorii języka i programowania komputerowego , ciąg konkatenacji jest operacją łączenia bohatera Struny end end-to- . Na przykład połączenie słów „śnieg” i „piłka” to „kuli śnieżnej”. W niektórych formalizacjach teorii konkatenacji , zwanej również teorią strun, konkatenacja strun jest pojęciem pierwotnym .

Składnia

W wielu językach programowania konkatenacja ciągów jest operatorem wrostków binarnych . Operator (plus) jest często przeciążony, aby wskazać konkatenację argumentów ciągu: ma wartość . W innych językach istnieje osobny operator, szczególnie w celu określenia niejawnej konwersji typu na łańcuch, w przeciwieństwie do bardziej skomplikowanego zachowania dla ogólnego plusa. Przykłady obejmują w Edynburgu IMP , Perl i PHP, w Lua oraz w Ada, AppleScript i Visual Basic. Istnieje inna składnia, jak w PL/I i Oracle Database SQL . +"Hello, " + "World""Hello, World"...&||

W kilku językach, zwłaszcza w C, C++ i Pythonie, istnieje konkatenacja literałów ciągów znaków , co oznacza, że ​​sąsiednie literały ciągów są łączone bez żadnego operatora: "Hello, " "World"ma wartość "Hello, World". W innych językach konkatenacja literałów ciągów z operatorem jest oceniana w czasie kompilacji za pomocą stałego składania , chociaż często jest to szczegół implementacji kompilatora, a nie funkcja języka.

Realizacja

W programowaniu konkatenacja ciągów zwykle występuje w czasie wykonywania, ponieważ wartości ciągu nie są ogólnie znane do czasu uruchomienia. Jednak w przypadku literałów ciągów wartości są znane w czasie kompilacji, a zatem łączenie ciągów można wykonać w czasie kompilacji, za pomocą łączenia literałów ciągów lub za pomocą stałego składania .

Łączenie zestawów ciągów

W teorii języka formalnego i dopasowywaniu wzorców (w tym wyrażeń regularnych ), operacja konkatenacji na ciągach jest uogólniona do operacji na zbiorach ciągów w następujący sposób:

Dla dwóch zestawów napisów S 1 i S 2 , konkatenacja S 1 S 2 składa się ze wszystkich napisów w postaci vw , gdzie v jest napisem z S 1 , a w jest napisem z S 2 , lub formalnie S 1 S 2 = { VW  : vS 1 , WS 2 } . Wielu autorów używa również konkatenacji zbioru napisów i pojedynczego napisu i odwrotnie, które są podobnie definiowane przez S 1 w = { vw  : vS 1 } i vS 2 = { vw  : wS 2 } . W tych definicjach ciąg vw jest zwykłym połączeniem ciągów v i w, jak zdefiniowano w części wprowadzającej.

Na przykład, jeśli F = { a, b, c, d, e, f, g, h } i R = { 1, 2, 3, 4, 5, 6, 7, 8 } , to FR oznacza zbiór wszystkich współrzędnych szachownicy w notacji algebraicznej , natomiast e R oznacza zbiór wszystkich współrzędnych pliku królów .

W tym kontekście zestawy ciągów są często określane jako języki formalne. Operator konkatenacji jest zwykle wyrażany jako proste zestawienie (jak w przypadku mnożenia ).

Własności algebraiczne

Łańcuchy nad alfabetem, z operacją konkatenacji, tworzą asocjacyjną strukturę algebraiczną z elementem tożsamościowym łańcuchem pustymwolnym monoidem .

Zestawy ciągów z konkatenacją i naprzemiennością tworzą półpierścień , z konkatenacją (*) rozłożonym na przemian (+); 0 to zestaw pusty, a 1 to zestaw składający się tylko z łańcucha pustego.

Aplikacje

Audio/telefonia

W programowaniu telefonii konkatenacja służy do zapewnienia użytkownikowi dynamicznego sprzężenia zwrotnego audio. Na przykład w zegarze mówiącym „pora dnia” konkatenacja służy do podania prawidłowego czasu poprzez odtworzenie odpowiednich nagrań połączonych ze sobą. Na przykład:

  • „W tonie będzie czas”
  • "Osiem"
  • "Trzydzieści"
  • "Pięć"
  • "i"
  • "Dwadzieścia"
  • "Pięć"
  • "Sekundy"

Same nagrania istnieją osobno, ale odtworzenie ich po kolei daje słuchaczowi poprawne gramatycznie zdanie.

Ta technika jest również stosowana w ogłoszeniach o zmianie numeru, systemach poczty głosowej lub większości aplikacji telefonicznych, które zapewniają dynamiczną informację zwrotną do dzwoniącego (np. moviefone , tellme i inne).

Programowanie dowolnego rodzaju skomputeryzowanego systemu nagłośnieniowego może również wykorzystywać konkatenację dla dynamicznych ogłoszeń publicznych (na przykład loty na lotnisku). System archiwizowałby nagraną mowę liczb, tras lub linii lotniczych, miejsc docelowych, godzin itp. i odtwarzał je w określonej kolejności, aby uzyskać poprawne gramatycznie zdanie ogłaszane w całym obiekcie.

Teoria baz danych

Jedną z zasad projektowania relacyjnych baz danych jest to, że pola tabel danych powinny odzwierciedlać jedną cechę tematu tabeli, co oznacza, że ​​nie powinny zawierać połączonych ciągów. Jeśli konkatenacja jest pożądana w raporcie, należy ją podać w momencie uruchamiania raportu. Na przykład, aby wyświetlić fizyczny adres określonego klienta, dane mogą obejmować numer budynku, nazwę ulicy, numer podrzędnej jednostki budynku, nazwę miasta, nazwę stanu/prowincji, kod pocztowy i nazwę kraju, np. „123 Fake St Apt 4, Boulder, CO 80302, USA”, który łączy siedem pól. Jednak tabela danych klientów nie powinna używać jednego pola do przechowywania tego połączonego ciągu; raczej konkatenacja siedmiu pól powinna nastąpić po uruchomieniu raportu. Powodem takich zasad jest to, że bez nich wprowadzanie i aktualizowanie dużych ilości danych staje się podatne na błędy i pracochłonne. Oddzielne wprowadzenie miasta, stanu, kodu pocztowego i kraju umożliwia walidację wprowadzania danych (np. wykrywanie nieprawidłowego skrótu stanu). Następnie te oddzielne pozycje mogą być używane do sortowania lub indeksowania rekordów, na przykład wszystkie z „Boulder” jako nazwą miasta.

Matematyka rekreacyjna

W matematyce rekreacyjnej wiele problemów dotyczy własności liczb w połączeniu ich liczb w jakiejś podstawie . Przykłady obejmują domowe liczby pierwsze (liczby pierwsze uzyskane przez wielokrotne rozkładanie na czynniki rosnącej konkatenacji czynników pierwszych danej liczby), liczby Smarandache-Wellin (połączenia pierwszych liczb pierwszych ) oraz stałe Champernowne'a i Copelanda- Erd'a (liczby rzeczywiste utworzone przez dziesiętne reprezentacje odpowiednio liczb całkowitych dodatnich i liczb pierwszych).

Zobacz też

Bibliografia