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

ملخص

الشرط تعبير قيمته صواب أو خطأ. يدرس هذا الدرس كيف تُبنى الشروط في C++: عوامل المقارنة الستة، التي تقارن بين قيمتين وتُنتج bool؛ والروابط المنطقية الثلاث، && و|| و!، التي تجمع الشروط كما يفعل العطف والفصل والنفي في المنطق؛ والأسبقية التي ترتّبها فيما بينها وبالنسبة إلى الحساب. ويدرس أيضًا سمتين تبتعد فيهما C++ عن الكتابة الرياضية: السلسلة 1 < x < 5، التي تُترجم ولا تعني ما تبدو عليه، والحساب المختصر، الذي بموجبه لا يُحسب المعامَل الثاني لـ && و|| حين يكون الأول قد حسم النتيجة، وهو ما يتيح حماية عملية خطرة. ويختم بنفي الشروط المركّبة بقوانين دي مورغان، مع التحقق منه بجداول الصدق، وبمثاله المحوري: شرط السنة الكبيسة ونفيه. وليس في الوحدة بعدُ قرارات: فالشروط تُحسب وتُطبع بوصفها true أو false، وسيجعلها الدرس القرارات تتحكّم في البرنامج.

أهداف التعلم

  1. كتابة شروط مركّبة في C++ تترجم عبارات مثل «xx يقع بين 1 و10، مع دخول الطرفين».
  2. نفي شرط مركّب بقوانين دي مورغان والتحقق من التكافؤ بجدول صدق.
  3. استعمال الحساب المختصر لحماية عملية، كما في count != 0 && total / count > 2.
  4. اكتشاف خطأ كتابة 1 < x < 5، وشرح ما يحسبه، وتصحيحه.

الشرط بوصفه تعبيرًا

قدّم الدرس المحارف والقيم المنطقية والتحويلات والثوابت النوع bool بقيمتيه true وfalse، وبيّن الدرس العمليات الحسابية أن للتعبير شجرةً تحددها الأسبقية والتجميعية، ونوعًا تحدده معاملاته. وهذا الدرس يجمع الفكرتين. الشرط تعبير من النوع bool: ليس تعليمة تسأل عن شيء، بل حسابًا نتيجته جواب. فـ count < 10 يُحسب كما يُحسب count + 1: تؤخذ المعاملات، ويُطبَّق العامل، وتُنال قيمة، غير أن القيمة true أو false بدلًا من عدد. وإذا كان الأمر كذلك، فكل ما يصدق على التعابير الحسابية يصدق على الشروط: لها أسبقية، ولها شجرة، ويمكن حفظها في متغير ذي اسم (const bool inRange{…}) ويمكن طباعتها. ومن ذلك يلزم السؤال الذي يسري في الدرس كله: إذا أُعطيت جملة («السنة كبيسة»، «العمر بين 18 و65»)، فأي تعبير له قيمة الصدق نفسها بالضبط لكل المعطيات الممكنة؟