عندما نتحدث عن هياكل البيانات، فإن مفهوم مترابطة بيانية. يعد هذا المصطلح، الذي يستخدم على نطاق واسع في الرياضيات والبرمجة وقواعد البيانات، مفتاحًا لفهم كيفية إدارة اللغات الحديثة لمجموعات المعلومات. في هذه المقالة سوف نكتشف بعمق ماهية Tuple وخصائصها وكيفية استخدامها في لغات البرمجة المختلفة مثل Python وVisual Basic وحتى في قواعد البيانات العلائقية.
الصفوف هي، في جوهرها، أ التسلسل المرتب للقيم. ومع ذلك، على عكس الأنواع الأخرى من المجموعات مثل القوائم، فهي تتمتع بخصوصية تجعلها مفيدة جدًا في سيناريوهات معينة: ثبات. هذا يعني أنه بمجرد إنشائها، لا يمكن تغيير العناصر التي تشكل الصف. تكون هذه الميزة فعالة بشكل خاص عندما نريد التأكد من عدم تغيير البيانات عن طريق الخطأ أو عن عمد. ولكن قبل الخوض في استخداماته وخصائصه، من المفيد أن نفهم أصوله وسبب مصطلحاته.
أصل وتعميم الصفوف
على المدى مترابطة بيانية مشتق من التعميم الرياضي لمصطلحات مثل ثنائي (عنصرين)، ثلاثي (ثلاثة عناصر) وهكذا. ومن هنا ثبت أن سلسلة من n العناصر (n كونها عددًا صحيحًا) تسمى a n-tuple، كوسيلة لتجميع الأرقام أو البيانات. وقد امتد هذا الاسم إلى استخدامه في البرمجة والرياضيات، حيث تسمح الصفوف بالعمل مع عدد محدود من العناصر، مع الحفاظ على ترابطها. النظام والهيكل.
في الرياضيات، الصفوف ويمكن أيضًا أن ينظر إليها على أنها تفصيل للأزواج المرتبة، حيث يمكن تعريف مجموعة من المدخلات من خلال طبقات مختلفة من التجميع. وبهذه الطريقة أ n-tuple مع أكثر من عنصرين، يمكن تمثيله كزوج مرتب من إدخاله الأول ومجموعة فرعية تحتوي على بقية الإدخالات. وقد انتقلت فكرة التنظيم هذه إلى عالم البرمجة حيث الصفوف إنها أداة قوية ومرنة للغاية.
الميزات الرئيسية للصفوف
ال الصفوف يتم تعريفها من خلال سلسلة من الخصائص التي تجعلها فريدة مقارنة بهياكل البيانات الأخرى:
- ثبات: بمجرد إنشائه، لا يمكن تعديل عناصر الصف. هذا يعني أنه لا يمكننا إعادة تعيين قيمة إلى موضع معين داخل المجموعة. على سبيل المثال، إذا كان الصف يحتوي على القيمة 3 في عنصره الأول، فسوف يستمر في الاحتفاظ بهذه القيمة طوال حياته.
- الترتيب: يتم تخزين العناصر الموجودة في الصف بترتيب معين. على عكس العديد من المجموعات الأخرى، مثل المجموعات، فإن الترتيب الذي يتم به إدخال العناصر ليس عشوائيًا. الترتيب مهم وسيتم احترامه عندما نتفاعل مع الصف.
- أنواع مختلفة: على عكس أنواع البيانات الأخرى مثل المصفوفات، يمكن أن تحتوي الصفوف على عناصر من أنواع مختلفة. من المقبول تمامًا أن يشتمل الصف على كل من الأعداد الصحيحة والسلاسل والقيم المنطقية.
- الوصول من خلال الفهارس: مثل القوائم، تسمح المجموعات بالوصول إلى عناصرها الفردية من خلال الفهارس. تبدأ هذه المؤشرات عمومًا من الرقم 0. علاوة على ذلك، نظرًا لأن الصفوف موجودة مشابهفمن الممكن التحقق من العلاقات بينهما بناءً على قيمة عناصرها.
هذه الخصائص تجعل الصفوف إنها مثالية للمواقف التي نحتاج فيها إلى تجميع البيانات غير المتجانسة والتأكد من عدم تغييرها عن طريق الخطأ أثناء تنفيذ البرنامج. على سبيل المثال، سيكون الصف هو الخيار المناسب لتخزين الإحداثيات (x، y) في المستوى، حيث لا ينبغي تغيير تلك القيم بعد تعريفها.
استخدام الصفوف في لغات البرمجة
Tuples في بايثون
في بايثون، الصفوف إنها بنية بيانات متعددة الاستخدامات ومستخدمة على نطاق واسع. يتم تعريفها باستخدام الأقواس ()
وفصل العناصر بفواصل. خصوصية الصفوف في بايثون هي أنها، بالإضافة إلى ثباتها، يمكن أن تحتوي على عناصر من أنواع مختلفة:
>>> t = (1, 'dos', 3)
في هذا المثال لدينا مترابطة بيانية بثلاثة عناصر: عدد صحيح، وسلسلة نصية، وعدد صحيح آخر. إذا حاولنا تعديل أحد عناصرها، مثل إعادة تعيين قيمة الرقم الأول، فسوف تُرجع بايثون خطأً:
>>> t[0] = 'uno'Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: 'tuple' object does not support item assignment
إن استحالة تعديل المجموعات هو ما يجعلها عناصر مفيدة للغاية عندما نريد حماية بياناتنا من التعديلات العرضية.
العمليات مع الصفوف في بايثون
بعض العمليات التي يمكننا تنفيذها باستخدام الصفوف في بايثون تشبه تلك التي يمكننا القيام بها باستخدام القوائم:
- الوصول من خلال الفهارس: يمكننا الوصول إلى عناصر الصف باستخدام الفهرس المقابل له. كما سبق ذكره، المؤشرات في بايثون يبدأون من 0.
- التقطيع أو التقطيع: من الممكن استخراج أجزاء من الصف باستخدام هذه الطريقة شريحة. على سبيل المثال، يمكننا الحصول على صف فرعي يحتوي على العناصر الموجودة في الموضعين 1 و2 من الصف الذي أنشأناه سابقًا:
>>> t[1:3]
ستكون النتيجة صفًا جديدًا يحتوي على العناصر:
('اثنان'، 3)
التلاعب بالصفوف: على الرغم من أن الصفوف غير قابلة للتغيير ولا يمكننا تغيير عناصرها مباشرة، إلا أنه من الممكن إعادة تعيين الصف إلى متغير جديد أو دمج عدة صفوف لإنشاء صف جديد. على سبيل المثال، يمكننا إضافة صفين باستخدام عامل التشغيل +
:
>>> t = (1, 2) + (3, 4)>>> t(1, 2, 3, 4)
Tuples في قواعد البيانات العلائقية
وفي مجال قواعد البيانات أ مترابطة بيانية هو صف في جدول قاعدة البيانات العلائقية. يحتوي كل عمود في الجدول على قيمة مرتبطة بالصف.
على سبيل المثال، في جدول مشغلات ألعاب الفيديو، يمكن أن يمثل كل صف صفًا بالبنية التالية:
(Jugador: 'Luis', Puntuación: 25)
هنا، يحتوي الصف على قيمتين: اسم اللاعب ونتيجته. في هذا السياق، تكون الصفوف مفيدة جدًا لأنها تسمح بربط أنواع مختلفة من البيانات (مثل السلاسل والأعداد الصحيحة، كما رأينا) بطريقة متسقة.
أمثلة الصفوف المتقدمة
في بعض لغات البرمجة مثل Visual Basicيمكن إنشاء الصفوف بسهولة باستخدام الأقواس ومجموعة من القيم المفصولة بفواصل. بالإضافة إلى ذلك، يسمح Visual Basic باستخدام تسمى الصفوف، والتي تمنحنا المرونة لتعيين أسماء لكل عنصر داخل الصف.
على سبيل المثال ، صف مكون من عنصرين يمكن أن تكون قيمة منطقية وسلسلة نصية:
Dim holiday = (#07/04/2017#, "Independence Day", True)
في هذه الحالة، تم إنشاء صف مكون من ثلاثة عناصر حيث الأول عبارة عن تاريخ، والثاني عبارة عن سلسلة، والثالث عبارة عن قيمة منطقية.
Tuples وكفاءتها
هناك جانب آخر يجب أخذه في الاعتبار وهو أن المجموعات، كونها غير قابلة للتغيير، أكثر كفاءة نسبيًا من حيث الوقت والذاكرة من القوائم. وذلك لأنه، مع عدم تغيير لغة البرمجة، لا يتعين عليها إدارة بنيتها الداخلية بنفس الطريقة كما تفعل مع القائمة القابلة للتغيير. ولهذا السبب يُفضل استخدام الصفوف عندما تكون هناك حاجة إلى كفاءة أكبر أو عندما لا يتم تعديل البيانات.
التحويل بين القوائم والصفوف
أخيرًا، في العديد من لغات البرمجة من الممكن تحويل القائمة إلى ملف مترابطة بيانية والعكس صحيح. في بايثون، يمكن القيام بذلك بسهولة باستخدام وظائف محددة مسبقًا tuple () y قائمة().
>>> l = [1, 2, 3]>>> t = tuple(l)>>> t(1, 2, 3)
وبالمثل، يمكننا تحويل Tuple إلى قائمة:
>>> t = (1, 2, 3)>>> l = list(t)>>> l[1, 2, 3]
تتيح لنا هذه المرونة استخدام بنية البيانات الأكثر ملاءمة في كل حالة، وفقًا لاحتياجات البرنامج.
باختصار، الصفوف إنها أداة أساسية في البرمجة والتعامل مع البيانات المعقدة. بفضل ثباتها وقدرتها على تجميع البيانات غير المتجانسة، فهي بنية مفيدة للغاية في مجموعة متنوعة من السياقات، بدءًا من تحسين الخوارزمية وحتى تمثيل البيانات في قواعد البيانات العلائقية. إذا كنت بحاجة إلى نوع بيانات يبقى دون تغيير أثناء تنفيذ البرنامج، فإن Tuple هو خيار ممتاز.