16

11 - سلسلة تبسيط البرمجة – آلية الحلقات التكرارية غير المحددة

11 - سلسلة تبسيط البرمجة – آلية الحلقات التكرارية غير المحددة

السلام عليكم ورحمة الله وبركاته

بسم الله الرحمن الرحيم

نفس مدير التسويق في الشركة المذكورة في الحلقة السابقة

وبعد أن عاد العامل من مهمته أعطاه كمية من البروشورات

وطلب منه أن يقوم بالمرور على المحلات على طول الشارع

فقال له قم بالمرور على كل محل وأعطه بروشور واحد وعندما تنتهي البروشورات عد إلى المكتب

نلاحظ أنه لا يختلف الأمر عن المثال في الحلقة السابقة إلا في ناحية واحدة

وهي أنه لا يعلم أي المحل الذي سينتهي عنده البروشورات

فقد يصل إلى المحل العاشر ثم ينتهي وقد يصل إلى أبعد من ذلك أو أقل

فالمدير لم يحدد له الكمية ولم يحدد له عدد المحلات

وإنما وضع له شرط عندما يتحقق يعود إلى المكتب

وهذا الشرط هو انتهاء كمية البروشورات

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

وهو في مثالنا هل انتهت كمية البروشورات ؟

وبالإمكان صياغة المثال بطريقة رمزية أو على شكل خوارزمية كما يلي :

1- لدينا عدد من البروشورات

2- كرر

3- اذهب للمحل التالي

4- قم بإعطاء بروشور واحد للمحل

5- (هل أصبح عدد البروشورات صفر؟) - في حال نعم انتقل للسطر التالي وإلا عد إلى الخطوة 2

6- عد إلى المكتب

نلاحظ مما سبق أنه طالما لدينا كمية سيتم تنفيذ الخطوات 3 و 4 ومن ثم التحقق من الشرط 5

وبما أننا نعلم يقينا أن البروشورات ستنتهي حتما فلا بد أن تأتي لحظة وننتقل للخطوة 6

أريد أن أنوه لملاحظة أن هذا النوع من الحلقة يملك خيارين وهو إما أن نتحقق من الشرط في النهاية كما في مثالنا أو من البداية أي قبل البدء بتنفيذ الجزء التكراري (أي جسم الحلقة)

والفرق أنه في حال التحقق من البداية ربما يكون الشرط متحققا فيخرج من الحلقة مباشرة دون الدخول فيها

أما عندما يكون التحقق في النهاية فسيتم تنفيذ جسم الحلقة مرة واحدة على الأقل

ولصياغة المثال عن هذا الخيار

كأن يقول المدير للعامل خذ هذه الكمية و قم بالمرور على المحلات وعندما تصادف موظف تفتيش في أحد المحلات عد فورا

هنا سيقوم العامل بالتأكد من عدم وجود مفتش قبل أن يعطي البروشور

وقد يجده في أول محل لذا سينهي عمله ويعود فورا دون أن يوزع بروشور واحد

وكصياغة رمزية :

1- لدينا كمية من البروشورات

2- اذهب لأول محل

3- كرر ( طالما لا يوجد مفتش في المحل ) فإن وجد انتقل للخطوة 7 وإلا انتقل للتالي

4- أعط بروشور واحد للمحل

5- انتقل للمحل التالي

6- عاود التنفيذ من الخطوة 2

7- ارجع للمكتب

هذا هو درسنا لهذه الحلقة

دمتم موفقين

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

تشكر على المبادرة أخي عبد الرحمن

في المشكل اﻷول كان من المفروض أن يتم تحديد أحد الطرفين أما البروشورات أو عدد المحلات،فمن غير الممكن أن تقوم بكتابة حلقة تكرارية شرطية بدون معرفة للشروط،لهذا قمت بتحوير للمشكل عن طريق تحديد عدد البروشورات في بداية الكود...

#!/usr/bin/python
brochurs = int(raw_input("How much brochurs you have: "))
while brochurs >=0:
    print "...Working done!"
    brochurs -=1

لماذا أحب بايثون

targets=['ahmad', 'omar', 'ali']
brochures=range(10)
for target, brochure in zip(targets, brochures):
  give_brochure_to(target)

أيضا جافا ليست سئية لتلك الدرجة

Iterator<String> it=set.iterator();
for(int i=0;i<n;++i) {
   if (!it.hasNext()) break;
   give_brochure_to(it.next());
}

أعطاه كمية من البروشورات

ونحن نفترض أنها محددة ومعلومة ولم أحدد الرقم لأني ركزت على الحلقة

يعني بإمكانك أن تضع Random أو أي عدد من عندك

بالفعل،باﻹمكان جعلها عشوائية...و الله لم اتفطن لها إﻻ بعد أن ذكرتها...المهم:أتمنى التوفيق للجميع و جاري كتابة الحل للمسألة الثانية....

الشروط غير واضحة بتاتا . لو امكن اعطاء مثال نطبق عليه

المكتوب هو المثال أخي

الدرس هو أصلا لمن لا يعرف لغات البرمجة فجعلناه كمثال عام

والإخوة جزاهم الله خيرا كل منهم قام بكتابة مثال برمجي مقابل أو شبيه بالمثال أعلاه

يعني الشروط كيفية الهدف هو توضيح مفهوم الحلقات غير محدودة العدد والتي تخرج بشرط

وكل شخص يرغب يطبق المثال بلغته التي يتقنها كما فعل الإخوة

مقدمة السلسلة

الدرس السابق 10

الدرس التالي 12