الدرس الأول تطبيقات الحماية الذكية ولغة ++C (١)
انظر إلى العنوان: تطبيقات الحماية الذكية ولغة ++C. تخيل أنك تبني درعاً لمنزلك باستخدام أدوات متصلة ببعضها. هذا هو نظام الحماية الذكي. لا يتوقف الأمر على قفل الأبواب، بل يمتد لدمج كاميرات ترصد الحركة، فإذا اقترب شخص بطريقة غير اعتيادية، يصدر إنذار أو يتصل بالشرطة تلقائياً. في قسم الميزات، تدير منزلك عبر الهاتف وتكتشف الأخطار مبكراً، لكن في قسم المخاطر، تذكر أن ربط كل أجهزة المنزل بالإنترنت بلا معايير أمان عالمية يعرض خصوصيتك ومعلوماتك الشخصية للخطر، لأن كل جهاز يجمع بياناتك ويحتفظ بها. انظر إلى الصورة في الأسفل، فهي توضح شخصاً يستخدم الهاتف الذكي لفتح بوابة أوتوماتيكية.
يقوم الدرس على ربط أنظمة الحماية الذكية مثل الأقفال والكاميرات والمستشعرات بلغة البرمجة C++ للتحكم في المنازل ومراقبتها عبر إنترنت الأشياء. تتضمن الأساسيات أنواع البيانات مثل الأعداد الصحيحة والنصوص، والمصفوفات لتخزين عدة قيم، والمعاملات الرياضية والمنطقية، بالإضافة إلى الجمل الشرطية مثل عبارة if للتحكم في سير البرنامج. على سبيل المثال، إذا أردت التحقق من كلمة المرور المدخلة عبر لوحة المفاتيح ومقارنتها بالقيمة المخزنة في المصفوفة، فإنك تستخدم الشروط والمعاملات المنطقية لتحديد ما إذا كانت صحيحة لتنفيذ الأمر أو خاطئة لتخطيها.
الفكرة الأساسية
تدور الفكرة حول كيفية حماية المنازل والممتلكات باستخدام تقنيات إنترنت الأشياء والأجهزة الذكية مثل الكاميرات والأقفال ومستشعرات الحركة، وكيفية برمجتها والتحكم بها باستخدام لغة C++ عبر أنواع البيانات والمصفوفات والمعاملات والعبارات الشرطية.
الشرح
أنظمة الحماية الذكية تجمع أدوات لمراقبة المنزل داخليا وخارجيا عبر إنترنت الأشياء، مثل الأقفال الذكية والأبواب التي تتيح الفتح عن بعد أو بصمة الإصبع، والكاميرات الرقمية، ومستشعرات الحريق والدخان ومستشعرات الحركة التي ترسل إنذارات مبكرة عند حدوث أي خطر.
ولبرمجة هذه الأنظمة، نستخدم لغة C++ وهي لغة برمجة قوية وعالية المستوى. عند كتابة البرنامج تحتاج إلى تحديد نوع البيانات للمتغيرات، مثل الأعداد الصحيحة (int) والأعداد الحقيقية (float أو double) والنصوص (char) والبيانات المنطقية (bool).
والمصفوفات (Array) هي هياكل بيانات تمكنك من الاحتفاظ بقيم متعددة من نفس النوع، مثل تعريف مصفوفة قيم صحيحة حجمها عشرة هكذا: int values[10]; حيث تبدأ الفهرسة في لغة C++ من الصفر. كما توجد المصفوفات ثنائية الأبعاد مثل char keys[4][2];.
وتشمل المعاملات الأساسية المعاملات الرياضية مثل الجمع والطرح والقسمة، ومعاملات الإسناد مثل = و+=، والمعاملات العلائقية مثل == و!=، والمعاملات المنطقية مثل && و|| و!. وتستخدم التعليقات لتسهيل قراءة الكود عبر // لسطر واحد أو /*... */ لعدة أسطر أو لإلغاء تنفيذ جزء من الأوامر مؤقتا.
أما العبارات الشرطية فتنظم تنفيذ التعليمات بناء على تحقق شرط معين، مثل عبارة if التي تفحص الشرط بين قوسين، فإذا كان صائبا يتم تنفيذ التعليمات البرمجية الموجودة داخل الأقواس، وإن كان خاطئا يتم تخطيها.
مثال محلول خطوة بخطوة
إذا أردت فحص رقم سري مدخل عبر لوحة المفاتيح ومقارنته بقيمة مخزنة في مصفوفة ضمن نظام حماية، اتبع الآتي:
- قم بتعريف متغير منطقي لقيمة صحيحة:
bool correctPass = true; - حدد فهرس المصفوفة المراد مقارنتها، مثلا:
int index = 4; - اكتب عبارة الفحص الشرطية if لتحديد ما إذا كان العنصر المخزني في المصفوفة لا يساوي المدخل:
if(password[index]!= buttonPressed){ - إذا تحقق عدم التساوي، قم بتغيير قيمة المتغير المنطقي إلى خطأ:
correctPass = false; - اغلق الأقواس، وبذلك يتحقق النظام من تطابق كلمة المرور بدقة.
أخطاء شائعة
- البدء برقم عند تسمية المتغيرات، مثل كتابة
5numberبدلا منnumber5. - نسيان أن الفهرسة في المصفوفات تبدأ من الرقم صفر وليس من الرقم واحد، مما يسبب قراءة عنصر خاطئ.
- استخدام علامة القسمة العادية
/مع الأعداد الصحيحة لتوقع نتائج عشرية، بينما الصحيح هو أن قسمة عدد صحيح على عدد صحيح تعطي ناتجا صحيحا، وللحصول على كسور يجب استخدام الأعداد العشرية (float أو double). - كتابة شروط عبارة if بدون وضعها بين قوسين، أو نسيان أقواس النهاية للتعليمان البرمجية المرتبطة بالشرط.
سؤالان للتدريب مع الإجابة
السؤال الأول: ماذا تعطي نتيجة العملية الحسابية 5 / 2 باستخدام الأعداد الصحيحة (int) في لغة C++ ولماذا؟
الإجابة: تعطي الناتج 2، لأن القسمة بين عددين صحيحين تحسب حاصل القسمة الصحيح فقط وتهمل الكسر.
السؤال الثاني: كيف تعلن عن مصفوفة أحادية الأبعاد من نوع الأعداد الصحيحة اسمها scores وحجمها 5؟
الإجابة: int scores[5];