تطبيقات الحماية الذكية ولغة C++ | الوحدة السادسة | الدرس الأول

تطبيقات الحماية الذكية ولغة C++ هو عنوان الدرس الأول من الوحدة السادسة التي تحمل اسم “برمجة إنترنت الأشياء باستخدام لغة C++” في القسم الثاني من مقرر “إنترنت الأشياء 2-1”.
في هذا الموضوع، سنستكشف مفهوم الحماية الذكية، ونتعرف على الأجهزة الشائعة التي تدعم إنترنت الأشياء. كما سنتعمق في عالم C++ للتعرف على أنواع البيانات، والمصفوفات، والمعاملات الأساسية. سنطبق التعليقات والطباعة، ونفهم كيفية استخدام العبارات الشرطية، مع إجراء مقارنة بينها. بالإضافة إلى ذلك، سنتناول أنواع التكرارات، ونقارن بينها، مع فهم الفرق بين break وcontinue. سنتعرف أيضًا على أهمية الدوال في C++، ونطبقها عمليًا، إلى جانب المقارنة بين دالتي loop وsetup، وفهم دور الوظائف في C++. وبالنهاية، سنتعمق في الكائنات والفئات لفهم كيفية استخدامها في البرمجة الكائنية.
لذا قم بقراءة نواتج التعلُّم بعناية، ثم أعد قراءتها وتأكد من تحصيل محتوياتها بعد انتهائك من دراسة الموضوع.
أهداف التعلُّم
- مفهوم الحماية الذكية.
- الأجهزة الشائعة التي تدعم إنترنت الأشياء.
- أنواع البيانات في .C++
- مفهوم المصفوفات.
- المعاملات الأساسية في .C++
- التعليقات في .C++
- الطباعة في .C++
- العبارات الشرطية في .C++
- أنواع التكرارات في .C++
- المقارنة بين break & continue .
- الدوال في .C++
- المقارنة بين loop & setup.
- التعرف على الفئات والكائنات والوظائف في C++.
هيــّـــــــا لنبــــــدأ!
الحماية الذكية (Smart Security)
ما المقصود بنظام الحماية الذكية؟
نظام الحماية الذكية وسيلة دعم أو عملية لحماية شيء ما باستخدام مجموعة من الأدوات والمكونات التي تعمل معًا.
- يمكن لأنظمة إنترنت الأشياء التعامل مع عمليات المراقبة الداخلية والخارجية للبيوت والممتلكات.
- تحديد من يمكنه الوصول إلى البوابات والأبواب من خلال استخدام الأقفال الذكية المثبتة عليها.
- مثلاً: يمكن الاستعانة بأجراس الباب الذكية للتعرف على الزائرين ومخاطبتهم قبل فتح باب المنزل.
- يمكن دمج كاميرات عالية الدقة يتم تنشيطها بواسطة الحركة في هذه الأدوات لحماية المنزل.
- توفر أنظمة الحماية الذكية تحذيراً من أي تحركات غير اعتيادية
يمكنها تنشيط انذار معين أو حتى الاتصال بالشرطة.
لمعرفة المزيد من المعلومات عن نظام الجرس الذكي، قم بالاطّلاع على الرابط التالي:
مميزات نظام الحماية الذكية
- يتيح إنترنت الأشياء مراقبة المنزل وإدارته عن بعد عبر تطبيقات الهاتف المحمول.
- تستخدم أجهزة الحماية الذكية تقنيات الذكاء الاصطناعي لاكتشاف الأخطار مبكرًا لتحذير المستخدمين واتخاذ الإجراءات المحددة كالاتصال بالشرطة.
- يستثمر الناس في أنظمة الحماية المنزلية الذكية لجعل مساكنهم أكثر أمنًا.
- توفر هذه التقنيات المتطورة. إمكانية الدخول إلى منزلك دون الحاجة إلى مفتاحك.
- تمنح تحديثات فورية في حال حصول أمور غير اعتيادية.
مخاطر الحماية الذكية
- انعدام أو ضعف التشريعات الخاصة باستخدام إنترنت. الأشياء وتوفير الحماية بشكل تهديدًا خطيرًا عند تطبيق إنترنت الأشياء في المنزل الذكي.
- تبرز أخطار الخصوصية وأمن البيانات أثناء استخدام أجهزة إنترنت الأشياء في منزلك.
- ولذلك يجب حماية كل نظام يجمع معلوماتك الشخصية ويحتفظ بها اذا أردت الحفاظ على خصوصيتك.
الأجهزة الشائعة التي تدعم إنترنت الأشياء
لغة C++ (C++ Language)
لتحقيق أمن المعلومات لا بد من استخدام لغة برمجة قوية مثل لغة C++ لبرمجة واجهات البرنامج.
- تُعد لغة برمجية تجميعية عالية المستوى تتضمن العديد من ميزات البرمجة الكائنية.
- الإمكانيات القوية في معالجة الذاكرة.
- تتميز لغة C++ بكفاءتها وسرعتها العالية.
لاحظ أن
تم تصميم لغة C++ كتطوير للغة برمجة C.
أنواع البيانات الأساسية Basic Data Type
- يجب تعريف نوع المتغير في C++ قبل استخدامه.
- لأن نوع المتغير يشير إلى نوع البيانات التي يحملها.
- يحتاج البرنامج في C++ إلى هذه المعلومات لمعرفة مقدار الذاكرة المطلوب تخصيصها لهذه البيانات.

تطبيقات الحماية الذكية
القواعد التي يجب إتباعها عند إنشاء
المصفــوفـــات (Arrays)
يعد هياكل المصفوفة Array من أكثر هياكل البيانات شيوعًا في C++.
المصفوفة هي متغير يمكن الاحتفاظ بقيم بيانات متعددة من نفس النوع.
هل يمكن تغيير نوع وحجم المصفوفة بعد الإعلان عنها؟
لا يمكن تغيير نوع أو حجم المصفوفة بعد الإعلان عنها.
كيف يمكن الوصول إلى عناصر المصفوفة؟
يمكنك الوصول إلى عناصرها باستخدام الدليل أو فهرس المصفوفة.
على سبيل المثال:
إذا كنت تريد تخزين 10 قيم صحيحة يمكنك إنشاء مصفوفة تخزن فيها هذه القيم فيجب الإعلان عن حجم ونوع المصفوفة.
لتعبئة القيم في المصفوفة نستخدم الأمر التالي:
للوصول إلى عناصر المصفوفة نستخدم الأمر التالي:
على الرغم من استخدام مصفوفات أكثر من بعد واحد إلا أن أكثر أنواع المصفوفات شيوعاً هي:
- المصفوفات الأحادية.
- المصفوفات ثنائية الأبعاد.
الإعلان عن أبعاد المصفوفة نستخدم الأمر التالي:
الإعلان عن مصفوفة تتكون من 4 صفوف وعددين نستخدم الأمر التالي:
لمعرفة المزيد من المعلومات عن المصفوفات أحادية الأبعاد، قم بالاطّلاع على الرابط التالي:
لمعرفة المزيد من المعلومات عن المصفوفات ثنائية الأبعاد، قم بالاطّلاع على الرابط التالي:
بإمكانك مراجعة محتوى موضوع “تطبيقات الحماية الذكية ولغة C++” من بدايته وحتى نهاية هذا القسم، من خلال الرابط التالي:
المعاملات الأساسية في C++ (Basic Operator in C++)
تتضمن المعاملات الأساسية في C++ كلاً من:
- المعاملات الرياضية
- معاملات الإسناد
- المعاملات العلائقية
- المعاملات المنطقية
التعليقات في C++ (Comments in C++)
جميع لغات البرمجة تدعم ميزة اضافة التعليقات داخل التعليمات البرمجية.
هل يتم تنفيذه ضمن التعليقات ضمن البرنامج؟
لا يتم تنفيذ هذه التعليقات ضمن البرنامج، ولكنها تستخدم لتحسين قابلية قراءة البرنامج مما يُسهل على المبرمجين أو مراجعي البرامج فهم وظائف البرنامج.
عند إضافة تعليق داخل البرنامج هناك طريقتان:
- استخدام // لإضافة تعليق يتكون من سطر واحد.
- استخدام */ لبدء تعليق متعدد و/* لإنهائه.
لمعرفة المزيد من المعلومات عن التعليقات في C++ بشكل عملي، قم بالاطّلاع على الرابط التالي:
الطباعة في C++
لطباعة المتغير في C++ نستخدم الأمر التالي:
لمعرفة المزيد من المعلومات عن الطباعة في C++ بشكل عملي، قم بالاطّلاع على الرابط التالي:
العبارات الشرطية في C++ (Conditional Statements in C++)
لتنفيذ مجموعة معينة من التعليمات البرمجية بناء على تحقق شرط ما، يُمكنك استخدام مجموعة من الجمل الشرطية ومنها:
- عبارة if الشرطية
يتم استخدام هذا النوع من العبارات الشرطية إذا أردت تنفيذ مجموعة تعليمات برمجية حال تحقق شرط محدد.
في البداية يتم فحص الشرط الموجود بين القوسين وهناك حالتان:
- في حال كانت قيمته صائبة، يتم تنفيذ التعليمات البرمجية الموجودة داخل الأقواس.
- في حال كانت قيمته خاطئة، يتم تخطي التعليمات البرمجية داخل الأقواس.
لمعرفة المزيد من المعلومات عن حالة If، قم بالاطّلاع على الرابط التالي:
- عبارة if…else
في هذا النوع من العبارات الشرطية هناك حالتان:
- تنفيذ مجموعة من التعليمات البرمجية داخل if{}، وتخطي التعليمات البرمجية الموجودة داخل .else{}
- إما، تخطي مجموعة من التعليمات البرمجية داخل if{} ، وتنفيذ التعليمات البرمجية الموجودة داخل else{} .

تطبيقات الحماية الذكية
كيف تعمل if…else ؟
أولاً يتم تقييم الشرط الموجود بين القوسين وهناك حالتان:
- إذا كانت قيمته صائبة، سيتم تنفيذ التعليمات البرمجية الموجودة داخل if{}.
- إذا كانت قيمته خاطئة، سيتم تنفيذ التعليمات الموجودة داخل else{}.
لمعرفة المزيد من المعلومات عن حالة if…else، قم بالاطّلاع على الرابط التالي:
- عبارة if…else if…else
يتم استخدام هذا النوع من العبارات الشرطية عندما:
- نحتاج للتحقق من أكثر من شرط واحد.
- تنفيذ 3 مجموعات أو أكثر من التعليمات البرمجية.
كيف تعمل عبارة if…else if…if ؟
أولاً يتم تقييم الشرط الموجود بين القوسين وهناك 3 حالات:
- إذا كان الشرط الأول صائباً ستُنفّذ مجموعة التعليمات البرمجية الأولى ويتم تخطي باقي التعليمات البرمجية.
- إذا كان الشرط الأول خطأ والشرط الثاني صائباً ستُنفّذ مجموعة التعليمات البرمجية الثانية وتخطي باقي التعليمات البرمجية.
- إذا لم يكن أي من الشرط الأول والشرط الثاني صائباً ستُنفّذ مجموعة التعليمات البرمجية الثالثة.
ملاحظة: يمكن تضمين عبارة if داخل مجموعة التعليمات البرمجية لعبارة if أخرى ولا يُشترط أن تكون من نفس النوع.
لمعرفة المزيد من المعلومات عن if…else if..else، قم بالاطّلاع على الرابط التالي:
بإمكانك مراجعة محتوى موضوع “تطبيقات الحماية الذكية ولغة C++” بدايةً من عنوان “المعاملات الأساسية في C++” حتى نهاية هذا القسم، من خلال الرابط التالي:
التكرارات (Loops)
يتم استخدام 3 أنواع من التكرارات البرمجية في C++ منها:
- تكرار for
في هذه الحالة: يتم تنفيذ هيئة المتغير مرة واحدة فقط قبل بدء التكرار وتعيين قيم البداية للمتغيرات التي تُشكل جزءًا من الشرط.
أيضًا يُمكن الإعلان عن متغير وتهيئته في هذه الخطوة وغالبًا عداد لتنفيذ التكرار عدة مرات حسب الشرط.
فإذا كانت قيمة الشرط صائبة يتم تنفيذ جميع جمل التكرار ثم الزيادة بتحديث المتغيرات التي تمت تهيئتها ويستمر هذا التكرار حتى يتغير قيمة الشرط خاطئة.
لمعرفة المزيد من المعلومات عن تكرار for، قم بالاطّلاع على الرابط التالي:
- تكرار while
في هذه الحالة تُنفذ عبارات التكرار عندما يكون الشرط صائبًا وعندما يُصبح الشرط خاطئًا يتوقف التكرار ويتم تخطي عبارات التكرار.
لمعرفة المزيد من المعلومات عن تكرار while، قم بالاطّلاع على الرابط التالي:
- تكرار do…while
يختلف عن تكرار while في أنه في تكرار do…while يتم فحص الشرط بعد جمل التكرار وهذا يعني أن التعليمات البرمجية داخل التكرار ستُنفّذ مرة واحدة على الأقل ويتوقف التكرار عند دخول الشرط خطأ.
لمعرفة المزيد من المعلومات عن تكرار do…while، قم بالاطّلاع على الرابط التالي:
عبارات التحكم البرمجية break & continue (“break” and “continue” Statement)
توجد عبارتان مفيدتان جدًا عند التعامل مع التكرارات وهما break ، continue واللتان تعملان مع جميع أنواع التكرارات.
- عبارة break
تنهي عبارة break التكرار حيث تكون موجودة.
إذا تم العثور على عبارة break داخل تكرار متداخل فإنها تنهي التكرار الداخلي.
- عبارة continue
تتخطى بقية التعليمات البرمجية داخل التكرار وتنتقل إلى التكرار التالي.
إذا وُجدت عبارة continue داخل التكرار المتداخل، سيتم تخطي التكرار الحالي في التكرار الداخلي.
لمعرفة المزيد من المعلومات عن عبارات التحكُّم البرمجية continue and break، قم بالاطّلاع على الرابط التالي:
الدوال في C++
Function in C++
عند القيام بكتابة البرامج إليك التعليمات التالية:
- ستلاحظ أن الكثير من المهام البرمجية قد تحتاج إلى تنفيذ عمليات معينة عدة مرات خلال تشغيل البرنامج.
- يمكنك كتابة نفس سطور التعليمات البرمجية كل مرة تحتاج فيها إلى تنفيذ هذه المهام. ولكن الحل الأفضل هو تجميع هذه التعليمات وإنشاء دالة تؤدي هذه المهام.
- يُمكن للمبرمجين إنشاء الدوال الخاصة بهم بناء على احتياجاتهم حيث يُمكن تسميتها بأنفسهم.
- يمكن لكل دالة قبول بعض المتغيرات كمُعاملات ادخال. وتنفيذ بعض المُعاملات البرمجية المضمنة بين الأقواس {} ولإنهاء الدالة توجد عبارة (return) تُرجع قيمة.
لإنشاء دالة تحتاج إلى الإعلان عنها أولاً.

تطبيقات الحماية الذكية
كيف يمكن استدعاء الدالة بعد كتابتها؟
دالة main
- دالة تقوم بإرجاع القيمة 0 وهكذا فإن نوع البيانات الذي ترجعه الدالة هو int (عدد صحيح).
- لا يقبل أي مُعاملات إدخال في هذه الحالة يُشار إليها بالأقواس الفارغة ().
- هي نوع خاص من الدوال في c ++ حيث يوجد الجزء الرئيس من البرنامج.
لاحظ أن
يجب أن يتطابق نوع وعدد وترتيب الوسيطات التي يتم تمريرها إلى دالة ما مع نوع المعاملات الموجودة في إعلان الدالة.
للتعرف على function بشكل عملي، بإمكانك مشاهدة الفيديو من خلال الرابط التالي:
دالّتي Setup() وLoop() (Setup() and Loop() Functions)
عند كتابة برنامج أرد وينو في منصة تينكر كاد، توجد دالتان يجب استدعاؤهما لتنفيذ برنامج الدائرة يتم استدعاء هذه الدوال تلقائيًا عند تنفيذ البرنامج.
وذلك عكس باقي الدوال التي يجب استدعاؤها يدويًا من خلال التعليمات البرمجية.
دالة void setup()
- يتم تنفيذ هذه الدالة مرة واحدة فقط في البداية.
- مسؤولة عن تكوين أجزاء الدائرة المختلفة مثل ضبط وضع أطراف الأردو ينو الرقمية.
- إنشاء اتصال مع الطرف التسلسلي وغيرها من الأمور.
- يتم كتابة إعداد البرنامج داخل هذه الدالة.
دالة void loop()
- يتم استدعاؤها بعد تنفيذ دالة void setup() بشكل متكرر أثناء عمل النظام.
- تُنفّذ الوظيفة الرئيسية للدائرة.
- يتم كتابة منطق البرنامج الرئيس داخل هذه الدالة .
أي إعلان عن أي ثوابت أو دوال يتم كتابتهما خارج هاتين الدالتين
لمعرفة المزيد من المعلومات عن دالّتي void setup() & void loop()، قم بالاطّلاع على الرابط التالي:
الفئات والكائنات والوظائف (Classes, Objects, and Methods)
ترتكز البرمجية الكائنية object-oriented programming على إجراء العمليات البرمجية على أساس الكائنات.
الكائن هو الوحدة الأساسية للبرمجة الكائنية قد يكون لهذه الكائنات خصائص كما يمكنها أن تُنفذ بعض الأحداث action الأساسية.
مثلاً يمكن اعتبار محرك سيرفو موتور servo motor بمثابة كائن له بعض الخصائص مثل الاسم والنوع وبناء على ذلك:
- يمكن تنفيذ بعض الإجراءات الأساسية مثل القراءة من طرف رقمي.
- تدوير محركه بعدد معين من الدرجات وغيرها.
تسمى هذه الإجراءات التي يمكن لكل كائن تنفيذها بالوظائف Methods .
- هي في لغة C++ بالأساس الدوال التي تم الإعلان عنها داخل جسم الكائن.
- من الناحية الفنية يتم الإعلان عن الخصائص والوظائف داخل جسم الفئة Class وليس الكائن .Objects
ما الفرق بين الفئة والكائن؟
الفئة يمكن اعتبارها كمفهوم.
الكائن تُتعبر تجسيد لهذا المفهوم.
مثال: في محاكاة الدائرة سيكون هناك 3 محركات سيرفو servo motor
أولاً سنحتاج في البداية الإعلان عن فئة servo وسيكون كل من هذه المحركات الثلاثة كائنًا مؤازرًا ويطلق عليه تسمية العينة instance من فئة .servo
بإمكانك مراجعة محتوى موضوع “تطبيقات الحماية الذكية ولغة C++” بدايةً من عنوان “التكرارات (Loops)” وحتى نهاية الموضوع، من خلال الرابط التالي:
إلى هنا يكون قد انتهي موضوع “تطبيقات الحماية الذكية ولغة C++ “، لا تنسوا مراجعة نواتج التعلُّم أعلى المقال، وانتظرونا في الموضوع القادم!