تمثيل الحلقات التكرارية في المخططات التدفقية 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
.