انتقل إلى المحتوى
Topos Uranos

ملخص

يفتتح هذا الدرس الوحدة الرابعة من الدورة، المخصّصة للتحكم في التدفق. ويشرح الغاية من الوحدة: أن تعلّم التحكم في الترتيب الذي تُنفَّذ به تعليمات البرنامج، بالقرارات وبالحلقات، والاستدلال على صحتها، أي ضمان أن تُعالَج كل حالة، وأن تفعل كل حلقة ما يجب عليها، وأن تتوقف؛ ويعرض دروسها الأربعة والخيط الذي يجمعها؛ ويذكّر بما تفترض الوحدة أنه معلوم، ولا سيما الشروط المركّبة في الوحدة 3؛ ويصوغ المسألة التي تحلّها الوحدة، مسألة برنامج يحسب القاسم المشترك الأكبر بعدد ثابت من الخطوات، فيجيب خطأً أو يتوقف عند قسمة على الصفر بحسب المعطيات؛ ويمهّد للامتغير بوصفه الأداة التي ستعلّل بها الوحدة حلقاتها؛ ويبيّن إلى أين تقود، في الوحدات اللاحقة وفي دورة البرمجة بلغة C++ II.

أهداف التعلم

  1. وصف تسلسل محتويات الوحدة، وشرح ما يقدّمه كل درس للدرس الذي يليه.
  2. تذكّر الشروط المركّبة في الوحدة 3 (الروابط المنطقية، والحساب المختصر، والنفي بقوانين دي مورغان)، ومراجعتها إن لزم الأمر.
  3. التمهيد، بمثال، للامتغير بوصفه أداة للاستدلال: علاقة بين المتغيرات تحفظها عملية التكرار، وتعطي النتيجة عند انتهائها.
  4. تمييز ما يُنتظر إتقانه في نهاية الوحدة، وفصله عمّا سيُتعلَّم في الوحدات اللاحقة.

تقييم الدخول

قبل اجتياز الوحدة يحسن قياس نقطة البداية. وهذا التقييم تقييم ذاتي: لا تُمنح عليه درجة، وغايته الوحيدة توجيه الدراسة. وتتناول الأسئلة الأربعة الأولى ما تفترض الوحدة أنه معلوم: نفي شرط مركّب، والحساب المختصر، وتتبّع تكرار من الدرس 1.1، وحدّ النوع int. وتتناول الأسئلة السبعة التي تليها، بترتيب الدروس، الأفكار المحورية في الوحدة، وينطلق عدد منها من الرياضيات المدرسية: القاسم المشترك الأكبر، ورمز المجموع، وتوقف إجراء ما. ولا أحد ملزم بالإصابة فيها بعدُ، وفي بعضها يكون «لا أعرف بعدُ» جوابًا صادقًا: فكل جواب، صائبًا كان أو خاطئًا، يشرح المسألة ويسمّي الدرس الذي يعالجها. وتُقاس المهارات نفسها مرة أخرى في النهاية، في درس الخلاصة.

تقييم الدخول

قبل أن تبدأ الوحدة، قِس نقطة انطلاقك. إنه تقييم ذاتي قصير: لا يُمنح عليه درجة، وتُحفظ نتيجته في متصفحك فقط.

  1. السؤال 1من وحدات سابقةما نفي الشرط 1 <= n && n <= 10؟

  2. السؤال 2من وحدات سابقةمع int d{0}; وint n{5};، ماذا يحدث عند حساب d != 0 && n / d > 2؟

  3. السؤال 3من وحدات سابقةتبدأ القسمة بالطرح المتتالي في الدرس 1.1 بـ q=0q = 0 وr=ar = a، وتكرّر «ما دام r≥br \geq b، اطرح bb من rr وأضف 1 إلى qq». مع a=20a = 20 وb=5b = 5، كم مرة يُنفَّذ جسم التكرار؟

  4. السؤال 4من وحدات سابقةمع int من 32 بتًّا، ماذا يضمن المعيار عن قيمة 46341 * 46341؟

  5. السؤال 5يحتوي برنامج على سلسلة القرارات: if (score >= 50)، الذي يكتب «ناجح»؛ وelse if (score >= 90)، الذي يكتب «ممتاز»؛ وelse، الذي يكتب «راسب». ماذا يكتب حين تكون قيمة score هي 95؟

  6. السؤال 6أيّ التعابير الآتية يدلّ على المجموع 1+2+⋯+n1 + 2 + \cdots + n؟

  7. السؤال 7مع int total{0};، ماذا يكتب std::println("{}", total); بعد for (int i{0}; i < 5; ++i) { total += i; }؟

  8. السؤال 8في القسمة بالطرح المتتالي (q=0q = 0، r=ar = a؛ ما دام r≥br \geq b، تصير rr إلى r−br - b وqq إلى q+1q + 1)، أيّ علاقة بين المتغيرات تصحّ كلما حُسب الشرط؟

  9. السؤال 9ينطلق إجراء من عدد صحيح nn أيًّا كان (موجبًا أو صفرًا أو سالبًا) ويكرّر «ما دام n>0n > 0، اطرح 2 من nn». هل يتوقف لكل nn؟

  10. السؤال 10ما القاسم المشترك الأكبر للعددين 84 و36؟

  11. السؤال 11لتقرير ما إذا كان 101 عددًا أوليًّا بتجربة القواسم، إلى أيّ قاسم يكفي الوصول؟