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

يقوم هذا الكود بالتالي:

  1. تعريف دالة fibonacci_for التي تستقبل عددًا صحيحًا n.

  2. تهيئة المتغيرين a وb بالقيم 0 و1 على التوالي.

  3. استخدام حلقة for لتكرار العملية من 0 إلى n-1.

  4. في كل تكرار، يتم تحديث قيم a وb بحيث يأخذ a القيمة الحالية لـ b، ويأخذ b مجموع القيمتين a و b الحاليتين.

  5. بعد انتهاء الحلقة، ترجع الدالة القيمة النهائية لـ 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

يقوم هذا الكود بالتالي:

  1. تعريف دالة fibonacci_while التي تستقبل عددًا صحيحًا n.

  2. تهيئة المتغيرين a وb بالقيم 0 و1 على التوالي.

  3. تهيئة المتغير count بالقيمة 0.

  4. استخدام حلقة while لتكرار العملية طالما أن count أقل من n.

  5. في كل تكرار، يتم تحديث قيم a وb بحيث يأخذ a القيمة الحالية لـ b، ويأخذ b مجموع القيمتين a و b الحاليتين. كما يتم زيادة قيمة count بمقدار 1.

  6. بعد انتهاء الحلقة، ترجع الدالة القيمة النهائية لـ a.

سيكون شكل المخطط التدفقي المعبر عن الكود السابق على النحو التالي

الخلاصة

تعرفنا في مقال اليوم على طريقة استخدام حلقات for وwhile في المخططات التدفقية واستعرضنا عدة أمثلة عملية، حاول التدرب على أكواد مختلفة فحلقات المخططات الانسيابية أداة لا غنى عنها في التعبير عن الكود البرمجي بشكل فعّال.
Next Post Previous Post
No Comment
Add Comment
comment url