الدرس الأول تطبيقات الحماية الذكية ولغة ++C (٢)
انظر إلى الشكل: عندما تريد أن ينفذ الحاسب أمراً إن تحقق شرط، وأمراً آخر إن لم يتحقق، فأنت تستخدم جملة الشرط المزدوجة. انظر إلى المخطط السهمي في الأعلى، الشرط يقع في المعين، فإن كان الجواب صواباً يتجه لتنفيذ المقطع البرمجي الأول، وإن كان خطأً يتجه للمقطع الثاني. اكتب كود الصيغة هكذا: افتح قوس الشرط بجانب الكلمة المفتاحية، ثم بين الأقواس المعقوفة اكتب الكود الأول، ثم استخدم الكلمة الأخرى للأوامر البديلة. انظر إلى المثال في الأسفل: لو كان لدينا متحرّك قيمته خمسة، وسألنا هل هو أصغر من الصفر؟ الشرط خاطئ، إذن سيتجاوز الكود الأول وينفذ كود الأمر البديل. أما لو سألنا هل هو أكبر من الصفر؟ الشرط صائب، إذن سينفذ الكود الأول ويتجاوز البديل تماماً.
يقوم هذا الدرس على تمكين المتحكمات الذكية من اتخاذ القرارات وتكرار المهام بكفاءة باستخدام لغة ++C. يعتمد الشرح على الجمل الشرطية مثل if و else if للتحقق من الشروط، وحلقات التكرار مثل for و while و do...while لتنفيذ الأوامر مرات عديدة، إضافة إلى عبارات التحكم break و continue. كما يغطي الدرس بناء الدوال (Functions) لتنظيم الأوامر واستدعائها عند الحاجة. مثال سريع: إذا أردت فحص درجة الحرارة، تستخدم if (temp > 30) لتشغيل التكييف وإلا فإيقافه.
الفكرة الأساسية
تعتمد الحماية الذكية وأنظمة إنترنت الأشياء على اتخاذ قرارات تلقائية بناء على المدخلات وتكرار العمليات دون تدخل بشري، وتوفر لغة ++C الأدوات البرمجية لتحقيق ذلك عبر الجمل الشرطية، والحلقات التكرارية، والدوال المنظمة.
الشرح
تبدأ اتخاذ القرارات بعبارات الشرط. عبارة if...else تختبر شرطا معينا، فإذا كان صائبا تنفذ مجموعة التعليمات الأولى داخل القوسين، وإذا كان خطأ تتخطاها وتنفذ تعليمات else. وعند وجود أكثر من شرط، تستخدم عبارة if...else if...else لفحص شروط متعددة بالتسلسل حتى يتحقق أحدهما. لتكرار المهام، توجد ثلاث حلقات: حلقة for وتستخدم عندما تكون مرات التكرار معلومة حيث تبدأ بتهيئة المتغير ثم الشرط ثم معامل الزيادة. حلقة while تفحص الشرط قبل كل تكرار وتستمر طالما كان صائبا. حلقة do...while تختلف عنها بأنها تنفذ جسم التكرار مرة واحدة على الأقل قبل فحص الشرط في النهاية. للتحكم في هذه الحلقات، تستخدم عبارة break لإنهاء التكرار فورا، وعبارة continue لتخطي التكرار الحالي والانتقال إلى التالي. أما الدوال، فهي تجميع لتعليمات برمجية لتنفيذ مهمة محددة، ويبدأ تعريفها بتحديد نوع البيانات المرتجعة returnType، ثم اسم الدالة functionName، تليها وسيطات الإدخال بين قوسين، وتنتهي بعبارة return لارجاع القيمة.
مثال محلول خطوة بخطوة
لنفترض أنك تريد كتابة دالة تجمع عددي صحيحي. الخطوة الأولى: تحديد نوع البيانات المرتجعة وهو رقم صحيح int. الخطوة الثانية: كتابة اسم الدالة adding. الخطوة الثالثة: تحديد وسيطات الإدخال وهما عددا صحيحان int a و int b. الخطوة الرابعة: كتابة جسم الدالة الذي يحسب المجموع s = a + b ثم يرجع القيمة عبر return s. يصبح شكل الكود: int adding (int a, int b) { int s = a + b; return s; }
أخطاء شائعة
استخدام حلقة while وتنسى تحديث قيمة المتغير الشرطي، مما يؤدي إلى حلقة لا نهائية توقف البرنامج. الخلط بين do...while و while العادية باعتقاد أن الأولى لا تنفذ أبدا إذا كان الشرط خاطئا من البداية، والصحيح أنها تنفذ مرة واحدة على الأقل.
سؤالان للتدريب مع الإجابة
السؤال الأول: ما الفرق الأساسي بين حلقة while وحلقة do...while من حيث تنفيذ الأوامر؟ الإجابة: حلقة while تفحص الشرط أولا وقد لا تنفذ الأوامر أبدا إذا كان الشرط خاطئا، بينما حلقة do...while تنفذ الأوامر مرة واحدة على الأقل قبل فحص الشرط في النهاية. السؤال الثاني: ما وظيفة عبارة break داخل حلقات التكرار؟ الإجابة: إنهاء التكرار فورا والخروج منه عند تحقق شرط معين بغض النظر عن انتهاء مرات التكرار المحددة.