cb
codebamin
الفصل 8 · الحلقات المتداخلة (Nested Loops)

تتبع التعبيرات المركبة خطوة بخطوة

تصبح التعبيرات المعقدة أسهل عندما تقسّمها إلى أجزاء أصغر. شغّل هذا الكود:

a = 2
b = 3
c = 4
d = 5
print(a * b + c * d)

احسب a b وc d كلًّا على حدة أولًا، ثم اجمع النتيجتين. بهذه الطريقة تستطيع تتبع ترتيب تقييم التعبير بدل محاولة فهمه كله دفعة واحدة.

يتبع بايثون أولوية العمليات، ولذلك يُقيَّم التعبير a b + c d كما لو كان مكتوبًا (a b) + (c d). عندما يبدو التعبير مربكًا، أضف الأقواس على الورق واحسب أصغر الأجزاء أولًا.

جرّب تغيير التعبير إلى (a (b + c)) d، وتوقع النتيجة قبل تشغيله.

لاحظ أثناء تتبع البرنامج أربع نقاط:

  1. يوجد تحكم للتنقل بين دورات الحلقة؛ استخدمه لترى ما حدث في كل دورة زمنية مختلفة.
  2. الكود الذي لا يُنفذ في دورة معينة بسبب شرط if يظهر على أنه غير منفذ، ولذلك لا تكون للتعبيرات داخله قيم في تلك الدورة.
  3. القيم المسجلة للتعبيرين vowels وconsonants تختلف حسب اللحظة التي تنظر إليها. بعد انتهاء الحلقة يحتويان كل الأحرف التي جُمعت، أما داخل الحلقة فيحتويان ما وصل إليه البرنامج حتى تلك الدورة فقط.
  4. عند السطر vowels.append(letter) ترى قيم المتغيرات في اللحظة السابقة لتنفيذ الإضافة؛ أي إن letter على وشك أن يُضاف إلى vowels لكنه لم يُضف بعد.
solution.py
1
2
3
4
5
6
7
8
9
10
الطرفية (shell)
>>>