تمثيل الحلقات التكرارية في المخططات التدفقية Flowcharts
سنشرح في كقال اليوم طريقة استخدام المخططات التدفقية في المشاريع البرمجية التي تتضمن حلقات تكرارية أو تحتاج إلى تنفيذ نفس الشيء عدة مرات، سنوضح كيفية تمثيل المهام المتكررة رسوميًا حتى تتمكن من تحويلها إلى كود برمجي بكفاءة.
ما هي الحلقة في المخطط التدفقي
لفهم حلقات المخططات التدفقية، لنناقش أولاً مفهوم التكرار في البرمجة. فتكرارالتعليمات ميزة أساسية في معظم لغات البرمجة وهو يسمح للمطور بتكرار تنفيذ مهمة معينة عدة مرات حتى يتحقق شرط ما لإيقاف الحلقة.
على سبيل المثال، لنفترض أنك قمت بالتسجيل للتو في منصة برمجية وعليك تأكيد عنوان بريدك الإلكتروني، ستحتاج المنصة لكتابة الكود التالي (المكتوب بلغة البرمجة بايثون) الذي يقوم بإرسال رسائل تأكيد بالبريد الإلكتروني إلى قائمة المستخدمين الموجودين في قائمة user_list.
def send_confirmation_emails(user_list):
es = EmailSender(type="confirmation")
for user in user_list:
es.send_email(
address=user["email"],
subject=f"{user['name']}, confirm your email address",
).
for على كل مستخدم جديد وترسل له بريد التأكيد. سيمنع استخدام حلقة في هذا السياق التكرار في الكود.
حلقة المخطط التدفقي هي نمط متكرر أو تسلسل من الإجراءات الممثلة في مخطط تدفقي والتي تهدف إلى تمثيل الكود، مثل المثال المذكور أعلاه. تستخدم الرموز والسهام لرسم خطوات أو إجراءات معينة يتم تنفيذها بشكل متكرر حتى يتم تحقيق شرط محدد أو الوصول إلى عدد معين من التكرارات.
الفرق بين حلقة for وحلقة while
هناك نوعان مختلفان من حلقات المخطط التدفقي: حلقة for وحلقة while. على الرغم من أنهما تحددان معايير لنهاية الحلقة، فإن الطريقة التي تحدد بها تلك المعايير تختلف.
إليك مثال بسيط: تحتاج إلى تلوين دوائر في صورة كبيرة. لذا ستقوم بإنشاء حلقة تكرارية لتخبر برنامجك بمواصلة تلوين الدوائر حتى تأمره بالتوقف.
تحدد كل من حلقة for وحلقة while نقاط التوقف بشكل مختلف. كيف؟ حسناً، تذكر هذا المثال التلوين، ودعنا نلقي نظرة أقرب على كل نوع من الحلقات.
فهم حلقة for
تستخدم حلقة for عندما تعرف بالضبط عدد المرات التي يجب فيها تكرار المهمة، أو عندما تريد تنفيذ نفس المهمة على قائمة من العناصر.
لنقل أنك تعرف أن صورتك تحتوي بالضبط على 10 دوائر لتلوينها. بمجرد بدء العملية، تفحص حلقة for عدد الدوائر الملونة بشكل متكرر. إذا كان العدد أقل من 10، تستمر الحلقة. ولكن إذا كان العدد أكبر من 10، تنتهي الحلقة.
مصطلحات مهمة عند دراسة حلقات المخطط التدفقي:
التهيئة (Initialization): بداية الحلقة.
الشرط (Condition): هذا ما يتم اختباره في كل مرة تتكرر فيها الحلقة (هل لونت أقل من 10 دوائر؟).
التعليمات (Statement): هذا هو الإجراء الذي يتم اتخاذه عندما لا يتم تحقيق الشرط (لون دائرة أخرى).
الزيادة/النقصان (Increment/Decrement): هذا يزيد أو ينقص قيمة المتغير (لذا تنتقل من دائرة ملونة واحدة إلى اثنتين). هذا اختياري بناءً على لغة البرمجة.
شكل حلقة for في المخطط التدفقي:
لنلقِ نظرة على مثال برمجي آخر يعبر عن سلسلة أو متتالية فيبوناتشي. تبدأ المتتالية بالأرقام 0 و1، وكل رقم بعد أول رقمين يتم حسابه عن طريق إضافة الرقمين السابقين. لذا فإن أول ارقام هي: 0، 1، 1، 2، 3، 5، 8، وهكذا.
for:
def fibonacci_for(n):
a, b = 0, 1
for i in range(0, n):
a, b = b, a + b
return aتعريف دالة
fibonacci_forالتي تستقبل عددًا صحيحًاn.تهيئة المتغيرين
aوbبالقيم 0 و1 على التوالي.استخدام حلقة
forلتكرار العملية من 0 إلىn-1.في كل تكرار، يتم تحديث قيم
aوbبحيث يأخذaالقيمة الحالية لـb، ويأخذbمجموع القيمتينaوbالحاليتين.بعد انتهاء الحلقة، ترجع الدالة القيمة النهائية لـ
a.
يمكن تمثيل هذا الكود في مخطط تدفقي على النحو التالي
while
تستخدم حلقة while عندما لا تكون متأكدًا من عدد المرات التي تحتاج فيها إلى تكرار مهمة معينة، ولكنك تعرف أن هناك شرطًا محددًا يجب أن يكون صحيحًا لاستمرار الحلقة.
بالعودة لمثال تلوين الدوائر، يمكنك استخدام حلقة while لمواصلة تلوين الدوائر حتى ينفد اللون الأحمر على سبيل المثال.
أثناء تشغيل الحلقة، ستتحقق باستمرار مما إذا كان هناك أي قلم أحمر متبقٍ للتلوين. إذا كان موجودًا، تستمر الحلقة. إذا لم يكن موجودًا، تنتهي الحلقة.
while
def fibonacci_while(n):
a, b = 0, 1
count = 0
while count < n:
a, b = b, a + b
count += 1
return aيقوم هذا الكود بالتالي:
تعريف دالة
fibonacci_whileالتي تستقبل عددًا صحيحًاn.تهيئة المتغيرين
aوbبالقيم 0 و1 على التوالي.تهيئة المتغير
countبالقيمة 0.استخدام حلقة
whileلتكرار العملية طالما أنcountأقل منn.في كل تكرار، يتم تحديث قيم
aوbبحيث يأخذaالقيمة الحالية لـb، ويأخذbمجموع القيمتينaوbالحاليتين. كما يتم زيادة قيمةcountبمقدار 1.بعد انتهاء الحلقة، ترجع الدالة القيمة النهائية لـ
a.




