اذهب إلى المحتوى
  • 0

ما معنى كائن قابل للتكرار في البرمجة؟

Shams Edeen Haj Hhmad

السؤال

Recommended Posts

  • 0

مرحبا شمس، 

ان كان السؤال متعلق بإحدى الدورات ينصح بالتعليق أسفل الدرس في قسم تعليقات الطلبة أسفل الفيديو.

عموما، قابلية التكرار هي الترجمة العربية لمصطلح Iterable، وتعني نفس الشيء. ويفرق في اللغة الانجليزية بين معنى التكرار Repetition و التكرار Iteration رغم أن كلاهما يشير إلى نفس المصطلح في العربية،

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

أما الثانية، وفي عالم البرمجة والحوسبة، "iteration" تشير إلى عملية تكرار سلسلة من الخطوات أو الأوامر لعدد محدد من المرات. في البرمجة، يستخدم المطورون تكرار الحلقات (loops) لتنفيذ الكود بشكل متكرر حتى تتحقق شرط معين. عند استخدام الحلقات، يتم تكرار جزء معين من الكود مرارًا وتكرارًا حتى يتم تحقيق الشرط المطلوب.

إذ أن هذه هي الفكرة الأصلية من الحلقات، تكرار شيفرة معينة كذا مرة. والتسلسل هو ذات الأمر، اذ نعتمد في تكرار كتلة برمجية معينة على المرور على عدد n من العناصر بشكل تسلسلي. 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

ييفضل اذا كان السؤال خاص بدوره معينه ان يتم طرح السؤال اسفل الدرس حتي يتم الاجابه بشكل افضل، ولكن الان سوف اشرح لك المفهومين بشكل مبسط مع ذكر مثال باستخدام لغة جافاسكريبت.

الكائن القابل للتكرار هو مفهوم يسمح لنا بإنشاء عدة نسخ من نفس التصميم (الكلاس) للقيام بمهام متشابهة، بينما الكائن غير القابل للتكرار يُنشئ فقط مرة واحدة ولا يمكن تكراره.

 

  1. مثال لكائن قابل للتكرار:
    لنفترض أن لدينا كلاس "Car" لتمثيل سيارات. يمكننا إنشاء عدة سيارات مختلفة من هذا الكلاس:
    class Car {
      constructor(brand, model) {
        this.brand = brand;
        this.model = model;
      }
    }
    
    const car1 = new Car("Toyota", "Corolla");
    const car2 = new Car("Honda", "Civic");

    في هذا المثال، قمنا بإنشاء سيارتين مختلفتين بواسطة الكلاس "Car".

  2. مثال لكائن غير قابل للتكرار:
    لنفترض أن لدينا متغير "pi" يحمل قيمة العدد باي (π)، فإن هذا المتغير لن يتغير أو يتكرر، حيث يتم تعيينه مرة واحدة فقط واستخدامه كثابت واذا حاولتي التعديل عليه سوف ينتج عن ذلك خطأ: 

    const pi = 3.14159;

    في هذا المثال، قمنا بتعريف المتغير "pi" مرة واحدة فقط ولا يمكننا تغيير قيمته أو تكراره مرات أخرى.

إذاً، الفرق بين قابلية التكرار وعدمها هو:

  • قابلية التكرار: يمكن إنشاء عدة كائنات من نفس النمط (الكلاس) لتنفيذ مهام مختلفة.
  • عدم قابلية التكرار: يُنشئ الكائن مرة واحدة فقط ولا يمكن تكراره أو تغيير قيمته.

اتمني ان تكون الاجابه واضحه.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

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

التكرار هو عملية تكرار الكود للقيام بعملية ما على كل عنصر في الكائن القابل للتكرار دون الحاجة إلى كتابة نفس الكود مرارًا وتكرارًا.

لنفترض أن لدينا قائمة تحتوي على أسماء بعض الفواكه، ونرغب في طباعة كل فاكهة في سطر منفصل. يمكننا استخدام التكرار لتحقيق ذلك:

fruits = ["تفاح", "برتقال", "موز", "عنب"]

for fruit in fruits:
    print(fruit)

النتيجة ستكون:

تفاح
برتقال
موز
عنب

هنا، تم استخدام الكائن القابل للتكرار (القائمة fruits) وأُجريت عملية التكرار (for loop) للوصول إلى كل فاكهة في القائمة وطباعتها.

القدرة على التكرار عبر الكائنات قابلة للتكرار هي مفهوم أساسي في البرمجة وتُسهل العديد من المهام التي تتطلب معالجة مجموعة من البيانات.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الكائن القابل للتكرار هو الكائن الذي يمكنك ترتيب عناصره بشكل متسلسل بحيث يمكن المرور عليها بترتيب محدد، أبسط مثال على الكائن القابل للتكرار هو list حيث أن ترتيب العناصر الافتراضي فيها يكفي للقيام بذلك، هناك أمثلة أكثر تعقيداً مثل ال set, dict و التي تخزن بطريقة مختلفة في الذاكرة و لكن لغات البرمجة توفر طريقة للوصول المتسلسل إلى عناصرها و بالتالي هي أيضاً كائنات قابلة للتكرار.

الكائن الغير قابل للتعديل لا يمكن تعديل محتواه، قد يمكن إعادة إسناد المتغير إلى قيمة أخرى و لكن الكائن هو القيمة و ليس الاسم الخاص بالمتغير، مثلاً في بايثون لا يمكن تعديل قيمة tuple و لكن هذا لا يعني أنه لا يمكنك إسناد قيمة أخرى للمتغير الذي يحمل قيمة tuple فالكائن هو الغرض و الاسم ما هو إلى مؤشر إلى هذا الغرض، مثلاً:

p = (1, 2)

p[0] = 1  # خطأ لا يمكن التعديل على هذا الكائن فنحن نحاول هنا التعديل على القيمة

p = (2, 1)  # لا مشكلة نحن نعدل المتغير و ليس قيمته

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

أنت تتحدث عن درس المجموعات Sets في أساسيات لغة بايثون Python  في بنى المعطيات الخطية Data Structures، لذلك أرجو منك التعليق أسفل فيديو الدرس في المرة القادمة ليتم مساعدتك بشكل افضل.

وبخصوص سؤالك، المجموعة قابلة للتعديل، يعني أنه بإمكاننا تغيير قائمة العناصر داخلها، سواءً بإضافة عناصر جديدة أو حذف عناصر موجودة.

مثال: 

# إنشاء مجموعة قابلة للتعديل
set1 = {1, 2, 3, 4, 5}
print(set1)  # Output: {1, 2, 3, 4, 5}

# إضافة قيمة جديدة
set1.add(6)
print(set1)  # Output: {1, 2, 3, 4, 5, 6}

# حذف قيمة
set1.remove(3)
print(set1)  # Output: {1, 2, 4, 5, 6}

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

مثال:

# إنشاء مجموعة غير قابلة للتعديل باستخدام frozenset
frozen_set = frozenset({10, 20, 30, 40})
print(frozen_set)  # النتيجة: frozenset({40, 10, 20, 30})

# لا يمكن إجراء أي تغيير في المجموعة الغير قابلة للتعديل
# frozen_set.add(50)  # سيؤدي هذا إلى خطأ TypeError: 'frozenset' object has no attribute 'add'

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

مثال:

# قائمة قابلة للتكرار
my_list = [10, 20, 30, 40, 50]

# الوصول إلى عناصر القائمة باستخدام حلقة for
for item in my_list:
    print(item)
# النتيجة:
# 10
# 20
# 30
# 40
# 50

وبالمقابل، الكائن غير قابل للتكرار يعني أنه لا يمكن استخدام الحلقات للوصول إلى العناصر بشكل متتالٍ.

مثال:

my_number = 42

# لا يمكن استخدام حلقة for مباشرة للعدد (Number) لأنه غير قابل للتكرار
for digit in my_number:
   print(digit)  # سيؤدي هذا إلى خطأ TypeError: 'int' object is not iterable

وبالنسبة لكيفية جعل المجموعات تحتوي على قيم غير مكررة وفي الوقت نفسه تكون قابلة للتكرار، في لغة Python، فالمجموعات تحتوي على قيم فريدة فقط، مما يعني أنها لا تقبل وجود عناصر مكررة.

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

مثال:

# إنشاء مجموعة تحتوي على قيم مكررة
my_set = {1, 2, 2, 3, 4, 4, 5, 5}

# عرض المجموعة
print(my_set)  # النتيجة: {1, 2, 3, 4, 5}

# عند إضافة قيمة مكررة للمجموعة، ستقوم Python تلقائيًا بإزالتها
my_set.add(3)
print(my_set)  # النتيجة: {1, 2, 3, 4, 5}

# يمكنك استخدام التحويل إلى مجموعة لإزالة القيم المكررة من قائمة
my_list = [1, 2, 2, 3, 4, 4, 5, 5]
unique_set = set(my_list)
print(unique_set)  # النتيجة: {1, 2, 3, 4, 5}

المجموعات (Sets) تتكون فعليًا من قيم فريدة غير قابلة للتكرار، ولا يمكن أن تحتوي على عناصر مكررة، وهي في الواقع مجموعة قيم لا تتكرر، ولا تحتوي على ترتيب معين للعناصر.

وبخصوص القابلية للتعديل، فالمجموعة (set) هي هيكل بيانات قابل للتعديل (Mutable) في لغة Python، ويمكنك إضافة وحذف العناصر من المجموعة بحرية، أما frozenset فهو هيكل بيانات غير قابل للتعديل (Immutable) ولا يمكن تعديل أو تغيير العناصر الموجودة فيه.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...