سلسلة

تُستخدم دالة الربط ("&") في جداول البيانات لتجميع سلسلة نصية معقدة - في هذا المثال، رمز XML لعنصر "دائرة" SVG .

في نظرية اللغات الرسمية وبرمجة الحاسوب ، يُعرَّف الربط بأنه عملية ضمّ كائنات متسلسلة، مثل سلاسل الأحرف أو الملفات أو القوائم أو مقاطع الصوت أو الفيديو ، من طرف إلى طرف. على سبيل المثال، ربط كلمتي "snow" و"ball" هو "snowball". في بعض الصيغ الرسمية لنظرية الربط ، والتي تُسمى أيضًا نظرية السلاسل، يُعدّ ربط السلاسل مفهومًا أساسيًا .

مصطلحات

إن عملية الربط هي ضم كائنين أو أكثر متسلسلة معًا لإنشاء كائن جديد، بشكل عام دون تعديل أي من الكائنات الأصلية.

الإلحاق هو تعديل كائن متسلسل بإضافة بيانات في نهايته. فإلحاق a بـ b يعني تعديل b ليصبح مساويًا لمجموع قيمتي b و a الأصليتين . مع ذلك، في بعض لغات البرمجة عالية المستوى ، وخاصة الوظيفية والمنطقية، تُستخدم عملية دمج القوائم أو المصفوفات دون تعديل عناصرها الأصلية.append

الإضافة في البداية تعني تعديل عنصر متسلسل بإضافة مادة في بدايته. وبالتالي، فإن إضافة a إلى b تعني تعديل b ليصبح مساوياً لمجموع a والقيمة الأصلية لـ b .

بناء الجملة

في العديد من لغات البرمجة ، تُكتب عملية دمج السلاسل النصية باستخدام عامل ثنائي وسطي ، وفي بعضها تُكتب بدون عامل. ويتم تنفيذ ذلك بطرق مختلفة:

  • مثال على تحميل علامة الجمع بشكل زائد +من لغة C#: "Hello, " + "World"لها القيمة "Hello, World".
  • عامل مخصص، كما هو الحال .في PHP ، &وفي Visual Basic ، [ 1 ]|| وفي SQL [ 2 ] [ 3 ] وفي D. [ 4 ] قد تشمل المزايا على إعادة الاستخدام دعم التحويل الضمني ~للأنواع إلى سلاسل نصية والتمييز بين دمج المصفوفات/القوائم الرقمية وجمع المتجهات ، اعتمادًا على اللغة.+
  • دمج السلاسل النصية ، أي دمج السلاسل المتجاورة دون استخدام أي عامل. مثال من لغة C: "Hello, " "World"القيمة هي "Hello, World".
  • الاستيفاء ، باستخدام مُستَوفِق السلاسل النصية لدمج النصوص. مثال من لغة C#: $"{hello}{world}"، حيث string hello = "Hello, ";وstring world = "World";
  • التنسيق، باستخدام مُنسِّق السلاسل النصية لدمج النصوص. مثال من لغة جافا:String.format("%s%s", "Hello, ", "World")

في العديد من المنشورات أو المعايير العلمية، يتم استخدام رمز عامل الربط ||. [ 5 ]

التلعثم

يأخذ الإجراء appendصفرًا أو أكثر من القوائم (المرتبطة) كوسيطات، ويعيد سلسلة هذه القوائم.

( أضف ' ( 1 2 3 ) ' ( a b ) ' () ' ( 6 )) ; الناتج: (1 2 3 ab 6)

بما أن appendالإجراء يجب أن ينسخ جميع وسائطه بالكامل باستثناء الوسيط الأخير، فإن تعقيده الزمني والمكاني هو O( n ) لقائمة منن{\displaystyle n}قد يكون استخدام العناصر بشكل غير مدروس في التعليمات البرمجية مصدرًا لعدم الكفاءة.

يقوم الإجراء nconc(المسمى append!في Scheme ) بنفس وظيفة append، ولكن بشكل تدميري : فهو يغير cdr لكل وسيط (باستثناء الأخير)، ويشير إليه إلى القائمة التالية.

تطبيق

Appendيمكن تعريفها بسهولة بشكل تكراري بدلالةcons . فيما يلي تطبيق بسيط في لغة Scheme، لوسيطين فقط:

( define append ( lambda ( ls1 ls2 ) ( if ( null? ls1 ) ls2 ( cons ( car ls1 ) ( append ( cdr ls1 ) ls2 ))))))

يمكن أيضًا تنفيذ الإلحاق باستخدام fold-right:

( define append ( lambda ( a b ) ( fold-right cons b a )))

مقدمة

تتميز لغة البرمجة المنطقية برولوج بوجود دالة منطقية مدمجة append، والتي يمكن تنفيذها على النحو التالي:

أضف ([], Ys , Ys ). أضف ([ X | Xs ], Ys ,[ X | Zs ]) :- أضف ( Xs , Ys , Zs ).

يمكن استخدام هذا الشرط للإضافة، وكذلك لفصل القوائم. استدعاء

?- append ( L , R ,[ 1 , 2 , 3 ]).

ينتج عنه الحلول التالية:

L = [], R = [1, 2, 3] ; L = [1]، R = [2، 3]؛ L = [1, 2], R = [3] ; L = [1, 2, 3], R = []

ميراندا

في ميراندا ، هذا الطي الأيمن ، من هيوز (1989:5-6)، له نفس الدلالات (على سبيل المثال) مثل تطبيق Scheme أعلاه، لوسيطين.

أضف ab = قلل cons ba

حيث أن reduce هو اسم ميراندا للدالة fold ، و cons تقوم بإنشاء قائمة من قيمتين أو قائمتين.

على سبيل المثال،

أضف [1،2] [3،4] = قلل cons [3،4] [1،2] = (reduce cons [3,4]) (cons 1 (cons 2 nil)) = cons 1 (cons 2 [3,4])) (استبدال cons بـ cons و nil بـ [3,4]) = [1,2,3,4]

هاسكل

في لغة هاسكل ، يكون لهذا الطي الأيمن نفس تأثير تطبيق Scheme المذكور أعلاه:

أضف :: [ a ] -> [ a ] - > [ a ] أضف xs ys = foldr ( :) ys xs

هذا في الأساس إعادة تنفيذ لعامل Haskell ++.

بيرل

في لغة بيرل ، تُعادل دالة push طريقة append، ويمكن استخدامها بالطريقة التالية.

my @list ; push @list , 1 ; push @list , 2 , 3 ;

والنتيجة النهائية هي قائمة تحتوي على [1، 2، 3]

تقوم دالة unshift بإضافة العناصر إلى بداية القائمة، وليس إلى نهايتها.

my @list ; unshift @list , 1 ; unshift @list , 2 , 3 ;

والنتيجة النهائية هي قائمة تحتوي على [2، 3، 1]

عند فتح ملف، استخدم وضع ">>" للإلحاق بدلاً من الكتابة فوق الملف.

افتح ( ملف $fh الخاص بي ، '>>' ، "/some/file.txt" اطبع $fh "بعض النصوص الجديدة\n" ؛ أغلق $fh ؛

لاحظ أنه عند فتح وإغلاق مقابض الملفات، يجب دائمًا التحقق من القيمة المُعادة.

بايثون

في لغة بايثون ، استخدم طريقة القائمة extendأو عوامل التشغيل الوسطية +لإلحاق +=القوائم.

>>> l = [ 1 , 2 ] >>> l . extend ([ 3 , 4 , 5 ]) >>> l [1, 2, 3, 4, 5] >>> l + [ 6 , 7 ] [1, 2, 3, 4, 5, 6, 7]

لا تخلط بينها وبين طريقة القائمة append، التي تضيف عنصرًا واحدًا إلى القائمة:

>>> ل = [ 1 , 2 ] >>> ل . إلحاق ( 3 ) >>> ل [1، 2، 3]

سحق

في Bash ، يُستخدم رمز ">>" لإضافة دفق إلى شيء ما، كما هو الحال في سلسلة أوامر shell التالية:

echo Hello world! >text ; echo Goodbye world! >>text ; cat text 

تمت إضافة عبارة "وداعًا أيها العالم!" إلى ملف النص المكتوب في الأمر الأول. تشير الفاصلة المنقوطة (;) إلى تنفيذ الأوامر المعطاة بالتسلسل، وليس في آنٍ واحد. لذا، يكون المحتوى النهائي لملف النص كما يلي:

مرحباً أيها العالم! وداعاً أيها العالم!

لغات أخرى

اعتمدت لغات البرمجة عالية المستوى الأخرى التي تستخدم القوائم المتصلة كبنى بيانات أساسية، طريقةً لإلحاق القوائم append. ولإلحاق القوائم، تستخدم لغة هاسكل عاملًا ، بينما تستخدم لغة أوكاميل عاملًا آخر . وتستخدم لغات أخرى الرموز أو لدمج سلسلة نصية أو قائمة أو مصفوفة بطريقة غير تدميرية.++@+++

تطبيق

في البرمجة، تتم عملية دمج السلاسل النصية عادةً أثناء التشغيل، لأن قيم السلاسل النصية لا تُعرف عادةً إلا في وقت التشغيل. أما في حالة السلاسل النصية الحرفية، فتكون القيم معروفة أثناء الترجمة، وبالتالي يمكن دمج السلاسل النصية أثناء الترجمة إما عن طريق دمج السلاسل النصية الحرفية أو عن طريق طي الثوابت ، وهو ما يُعد تحسينًا محتملاً لأداء وقت التشغيل.

دمج مجموعات من السلاسل النصية

في نظرية اللغة الرسمية ومطابقة الأنماط (بما في ذلك التعبيرات النمطية )، يتم تعميم عملية الربط على السلاسل النصية لتصبح عملية على مجموعات من السلاسل النصية على النحو التالي:

بالنسبة لمجموعتين من السلاسل النصية S1 و S2 ، تتكون عملية الربط S1S2 من جميع السلاسل النصية التي تأخذ الشكل vw، حيث v سلسلة نصية من S1 و w سلسلة نصية من S2 ، أو بصورة رسمية S1S2 = { vw : vS1 , wS2 } . يستخدم العديد من المؤلفين أيضًا ربط مجموعة سلاسل نصية وسلسلة نصية واحدة، والعكس صحيح، ويتم تعريفهما بشكل مشابه كما يلي: S1w = { vw : v S1 } و vS2 = { vw : wS2 } . في هذه التعريفات ، السلسلة النصية 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) هو المجموعة التي تحتوي على السلسلة الفارغة فقط.

التطبيقات

الصوت والهاتف

في برمجة أنظمة الهاتف، يُستخدم دمج المقاطع الصوتية لتوفير تغذية صوتية تفاعلية للمستخدم. على سبيل المثال، في ساعة ناطقة تعرض الوقت ، يُستخدم دمج المقاطع الصوتية لإعطاء الوقت الصحيح من خلال تشغيل التسجيلات المناسبة المدمجة معًا. على سبيل المثال: "عند سماع النغمة، سيكون الوقت"، "الثامنة"، "الثلاثين"، "الخامسة"، "و"، "العشرين"، "الخمسة"، "الثانية".

توجد التسجيلات نفسها بشكل منفصل، لكن تشغيلها واحداً تلو الآخر يوفر للمستمع جملة صحيحة نحوياً.

تُستخدم هذه التقنية أيضًا في إعلانات تغيير الأرقام، وأنظمة البريد الصوتي ، أو معظم تطبيقات الهاتف التي توفر ردود فعل ديناميكية للمتصل (مثل moviefone و tellme وغيرها).

يمكن برمجة أي نوع من أنظمة الإذاعة العامة المحوسبة باستخدام تقنية دمج النصوص للإعلانات العامة الديناميكية (مثل إعلانات الرحلات الجوية في المطارات). يقوم النظام بأرشفة التسجيلات الصوتية للأرقام، والمسارات، وشركات الطيران، والوجهات، والأوقات، وما إلى ذلك، ثم يعيد تشغيلها بتسلسل محدد لإنتاج جملة صحيحة نحوياً تُذاع في جميع أنحاء المنشأة.

نظرية قواعد البيانات

من مبادئ تصميم قواعد البيانات العلائقية أن تعكس حقول جداول البيانات سمةً واحدةً فقط من سمات موضوع الجدول، ما يعني عدم احتوائها على سلاسل نصية مُدمجة. عند الرغبة في دمج البيانات في تقرير، يجب توفير هذه الميزة عند تشغيل التقرير. على سبيل المثال، لعرض العنوان الفعلي لعميل معين، قد تتضمن البيانات رقم المبنى، واسم الشارع، ورقم الوحدة الفرعية للمبنى، واسم المدينة، واسم الولاية/المقاطعة، والرمز البريدي، واسم الدولة، مثل "123 Fake St Apt 4, Boulder, CO 80302, USA"، وهو ما يجمع سبعة حقول. مع ذلك، لا ينبغي لجدول بيانات العملاء استخدام حقل واحد لتخزين هذه السلسلة النصية المُدمجة؛ بل يجب دمج الحقول السبعة عند تشغيل التقرير. يكمن سبب هذه المبادئ في أنه بدونها، يصبح إدخال وتحديث كميات كبيرة من البيانات عرضةً للأخطاء ويتطلب جهدًا كبيرًا. يُتيح إدخال المدينة والولاية والرمز البريدي والدولة بشكل منفصل التحقق من صحة البيانات المدخلة (مثل اكتشاف اختصار غير صالح للولاية). بعد ذلك، يمكن استخدام هذه العناصر المنفصلة لفرز السجلات أو فهرستها، مثل جميع السجلات التي تحمل اسم المدينة "بولدر".

الرياضيات الترفيهية

في الرياضيات الترفيهية ، تتعلق العديد من المسائل بخصائص الأعداد عند تجميع أرقامها في أساس معين . وتشمل الأمثلة الأعداد الأولية المنزلية (الأعداد الأولية التي يتم الحصول عليها عن طريق التحليل المتكرر لتسلسل العوامل الأولية المتزايدة لعدد معين)، وأعداد سميرانداتش-ويلين (تسلسلات الأعداد الأولية الأولى )، وثوابت شامبرنون وكوبلاند -إردوش (الأعداد الحقيقية المكونة من التمثيلات العشرية للأعداد الصحيحة الموجبة والأعداد الأولية، على التوالي).

انظر أيضاً

مراجع

الاقتباسات

  1. "عوامل الربط في فيجوال بيسك" . دليل فيجوال بيسك لـ .NET. ميزات اللغة: العوامل والتعبيرات . مايكروسوفت. 2015.
  2. "SQL | عامل الربط" . geeksforgeeks.org . ١٢ يناير ٢٠١٨. تم الاطلاع عليه بتاريخ ١١ أغسطس ٢٠٢٣ .
  3. "عامل الربط" . وثائق قاعدة بيانات أوراكل عبر الإنترنت، الإصدار 10g 2 (10.2) / الإدارة: مرجع SQL لقاعدة البيانات . أوراكل.
  4. "المصفوفات" . لغة البرمجة D. تم الاطلاع عليه في 4 يونيو 2026 .
  5. موريارتي، كاثلين؛ كاليسكي، بيرت؛ جونسون، جاكوب؛ روش، أنياس (نوفمبر 2016). "2. الترميز". PKCS #1: مواصفات تشفير RSA الإصدار 2.2 (تقرير). فريق عمل هندسة الإنترنت.

مصادر

فهرس