إنشاء المقاطع البرمجية - كتاب إنترنت الأشياء - الصف 11 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب إنترنت الأشياء - الصف 11 - الفصل 1 | المادة: إنترنت الأشياء | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: إنشاء المقاطع البرمجية

📚 معلومات الصفحة

الكتاب: كتاب إنترنت الأشياء - الصف 11 - الفصل 1 | المادة: إنترنت الأشياء | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

📝 ملخص الصفحة

📚 إنشاء المقاطع البرمجية

المفاهيم الأساسية

المقاطع البرمجية: هي الأكواد التي ستقوم بتشغيل العقد في مشروع المحاكاة.

الدالة `randint`: تأخذ عددين صحيحين كوسيطين، وتُعيد عدداً صحيحاً عشوائياً داخل نطاق هذين العددين.

الدالة `.id()`: تُرجع معرف العقدة (وهو عدد صحيح فريد) والذي يمثل أيضاً رقم القطاع.

الدالة `.send()`: تُستخدم لإرسال البيانات من عقدة إلى العقد الأخرى داخل نطاقها.

خريطة المفاهيم

```markmap

أدوات محاكاة إنترنت الأشياء

برنامج كاب كاربون (CupCarbon)

إنشاء مشروع محاكاة جديد

#### الخطوة 1: بدء مشروع جديد

  • اضغط على أيقونة "New Project" (مشروع جديد) من شريط الأدوات.
#### الخطوة 2: حفظ المشروع

  • اختر الموقع المراد حفظ المشروع فيه.
  • اكتب اسم الملف: "My First CupCarbon Simulation".
#### الخطوة 3: تأكيد الحفظ

  • اضغط على زر "Save" (حفظ).

مشروع محاكاة: مراقبة الحريق والتحذيرات

#### إنشاء مشروع جديد للمراقبة

##### الخطوة 1: بدء مشروع جديد

  • اضغط على New Project (مشروع جديد) من شريط الأدوات.
##### الخطوة 2: تسمية المشروع وحفظه

  • اختر الموقع الذي تريد تخزين المشروع فيه.
  • اكتب "Fire Surveillance and Notification" في حقل File name (اسم الملف).
  • اضغط على Save (حفظ).

إنشاء شبكة العقدة بوحدة التحكم الرئيسية والوسطي

#### الخطوة 1: إدراج العقد

  • اضغط على "عقدة إنترنت أشياء (IoT) Node" من شريط Toolbar.
  • اضغط على الخريطة لإضافة العقدة.
  • اضغط على "All" من شريط State.
  • ضع عقدتين أخريين داخل الدائرة الخارجية للعقدة الأولى.
  • اضغط على Esc.
#### الخطوة 2: التعرف على العقد

  • العقدة الأولى المضافة هي وحدة التحكم الرئيسية.
  • العقدتان الأخريان هما عقد الوسطي.
#### الخطوة 3: ضمان الاتصال

  • يجب وضع العقد داخل نصف قطر اتصال وحدة التحكم.
  • إذا لم تكن داخل النطاق، اسحبها وأقلتها بالقرب حتى يظهر سهم اتصال ثنائي الاتجاه.

تابع إضافة العقد الطرفية

#### لإدراج العقد الطرفية:

##### الخطوة 1

  • اضغط على Node IoT (عقدة إنترنت الأشياء) من شريط Toolbar (الأدوات).
##### الخطوة 2

  • ضع عقدتين كل node proxy (عقدة وسطى)، وذلك داخل دائرتها الأخرى.
##### الخطوة 3

  • اضغط على All (الكل) من شريط الحالة.
##### الخطوة 4

  • اضغط على Esc في لوحة المفاتيح.

إنشاء المقاطع البرمجية

#### المكتبات اللازمة

  • `import time`
  • `import random`
#### منطق المحاكاة (العقد الطرفية)

##### توليد حدث حريق عشوائي

  • داخل حلقة `while node.loop():`
  • `fire = random.randint(1, 6)` لتحديد القطاع الذي قد يحدث فيه الحريق.
##### التحقق من وقوع الحريق وإرسال التحذير

  • إذا كانت `fire == 1` (اندلع حريق في القطاع 1):
- `node.print("FIRE!")`

- إنشاء رسالة: `message = "FIRE IN SECTOR " + str(node.id())`

- إرسال الرسالة: `node.send(message)`

```

نقاط مهمة

  • الغرض من المقطع البرمجي هو تشغيل العقد الطرفية في محاكاة مراقبة الحريق.
  • يتم استخدام مكتبة `random` لتوليد رقم عشوائي (من 1 إلى 6) يمثل القطاع الذي قد يحدث فيه حريق.
  • معرف العقدة (الذي تُرجعه `node.id()`) هو نفسه رقم القطاع.
  • يتم إرسال رسالة تحذير (`"FIRE IN SECTOR X"`) إلى العقد المجاورة باستخدام الدالة `node.send()`.

📋 المحتوى المنظم

📖 محتوى تعليمي مفصّل

إنشاء المقاطع البرمجية

نوع: محتوى تعليمي

إنشاء المقاطع البرمجية

Creating the Scripts

نوع: محتوى تعليمي

Creating the Scripts

نوع: محتوى تعليمي

ستتعرف الآن على المقاطع البرمجية التي ستقوم بتشغيل العقد. لنبدأ ببرمجة العقد الطرفية.

في البداية، أضف المكتبات اللازمة.

نوع: محتوى تعليمي

في البداية، أضف المكتبات اللازمة.

نوع: محتوى تعليمي

import time import random

نوع: محتوى تعليمي

تأخذ دالة توليد الأرقام العشوائية (randint) عددين صحيحين كوسيطين، وتُعيد عدداً صحيحاً عشوائياً داخل نطاق هذين العددين. على سبيل المثال، في الحالة السابقة ستُنشئ عدداً صحيحاً عشوائياً بشكل عشوائي بقيمة بين 1 إلى 6. سيستخدم الرقم ليمثل القطاع الذي قد فيه الحريق وكل فترة زمنية. وسيتم تخزين العدد الصحيح في متغير fire.

نوع: محتوى تعليمي

while node.loop(): fire = random.randint(1, 6)

نوع: محتوى تعليمي

إذا افترضنا أن دالة (randint) سترجع الرقم 1، فستكون النيران قد اندلعت افتراضياً في هذا القطاع. سيتحقق البرنامج مما إذا كانت قيمة المتغير fire تساوي 1، وإذا كان الأمر كذلك، فسيتم تشغيل سلسلة من الأوامر بما فيها طباعة رسالة لتحديد معرف القطاع الخاص بها إلى العقد الوسطى (proxy node) المجاورة لها.

نوع: محتوى تعليمي

إن معرف القطاع هو نفسه رقم معرف العقدة، وهو عدد صحيح فريد. إذا كان معرف القطاع 5، فستكون الرسالة المرسلة (proxy node) هي "FIRE IN SECTOR 5" (حريق في قطاع 5). يمكن إرجاع معرف العقدة وبالتالي القطاع بواسطة الدالة (.id) التي يتم إرجاعها من الرسالة المتبقية.

نوع: محتوى تعليمي

if fire == 1: node.print("FIRE!") message = "FIRE IN SECTOR " + str(node.id())

نوع: محتوى تعليمي

استخدم الدالة (.send) لإرسال البيانات لبعضها البعض. تستخدم الدالة التي تقوم ببيثه إلى جميع العقد داخل نطاقها.

نوع: محتوى تعليمي

node.send(message)

📄 النص الكامل للصفحة

--- SECTION: إنشاء المقاطع البرمجية --- إنشاء المقاطع البرمجية --- SECTION: Creating the Scripts --- Creating the Scripts ستتعرف الآن على المقاطع البرمجية التي ستقوم بتشغيل العقد. لنبدأ ببرمجة العقد الطرفية. --- SECTION: في البداية، أضف المكتبات اللازمة. --- في البداية، أضف المكتبات اللازمة. import time import random تأخذ دالة توليد الأرقام العشوائية (randint) عددين صحيحين كوسيطين، وتُعيد عدداً صحيحاً عشوائياً داخل نطاق هذين العددين. على سبيل المثال، في الحالة السابقة ستُنشئ عدداً صحيحاً عشوائياً بشكل عشوائي بقيمة بين 1 إلى 6. سيستخدم الرقم ليمثل القطاع الذي قد فيه الحريق وكل فترة زمنية. وسيتم تخزين العدد الصحيح في متغير fire. while node.loop(): fire = random.randint(1, 6) إذا افترضنا أن دالة (randint) سترجع الرقم 1، فستكون النيران قد اندلعت افتراضياً في هذا القطاع. سيتحقق البرنامج مما إذا كانت قيمة المتغير fire تساوي 1، وإذا كان الأمر كذلك، فسيتم تشغيل سلسلة من الأوامر بما فيها طباعة رسالة لتحديد معرف القطاع الخاص بها إلى العقد الوسطى (proxy node) المجاورة لها. إن معرف القطاع هو نفسه رقم معرف العقدة، وهو عدد صحيح فريد. إذا كان معرف القطاع 5، فستكون الرسالة المرسلة (proxy node) هي "FIRE IN SECTOR 5" (حريق في قطاع 5). يمكن إرجاع معرف العقدة وبالتالي القطاع بواسطة الدالة (.id) التي يتم إرجاعها من الرسالة المتبقية. if fire == 1: node.print("FIRE!") message = "FIRE IN SECTOR " + str(node.id()) استخدم الدالة (.send) لإرسال البيانات لبعضها البعض. تستخدم الدالة التي تقوم ببيثه إلى جميع العقد داخل نطاقها. node.send(message)

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 2 بطاقة لهذه الصفحة

ما هي وظيفة الدالة `random.randint(1, 6)` في مقطع برمجة إنترنت الأشياء الموصوف؟

  • أ) توليد رقم عشوائي عشري بين 0.0 و 1.0.
  • ب) توليد عدد صحيح عشوائي بين 1 و 6 لتمثيل القطاع الذي قد يحدث فيه حريق.
  • ج) إرسال رسالة إلى العقدة الوسطى (proxy node).
  • د) طباعة رسالة تحذيرية على شاشة العقدة الطرفية.

الإجابة الصحيحة: b

الإجابة: توليد عدد صحيح عشوائي بين 1 و 6 لتمثيل القطاع الذي قد يحدث فيه حريق.

الشرح: 1. الدالة `randint` تأخذ عددين صحيحين كوسيطين (بداية ونهاية نطاق). 2. تُرجع الدالة عدداً صحيحاً عشوائياً يقع ضمن هذا النطاق (شامل البداية والنهاية). 3. في هذا السياق، الرقم العشوائي يمثل القطاع (من 1 إلى 6) الذي قد يشتعل فيه حريق في كل فترة زمنية.

تلميح: تأخذ الدالة وسيطين وتستخدم في محاكاة حدث غير مؤكد.

التصنيف: تعريف | المستوى: سهل

كيف يتم الحصول على معرف القطاع (Sector ID) لإدراجه في رسالة الإنذار في المثال البرمجي؟

  • أ) يتم توليده عشوائياً باستخدام `random.randint(1, 6)`.
  • ب) يتم إدخاله يدوياً من قبل المبرمج كقيمة ثابتة.
  • ج) باستدعاء الدالة `node.id()` والتي تُرجع معرف العقدة (وهو نفسه معرف القطاع).
  • د) يتم استلامه من العقدة الوسطى (proxy node) عبر الدالة `node.receive()`.

الإجابة الصحيحة: c

الإجابة: باستدعاء الدالة `node.id()` والتي تُرجع معرف العقدة (وهو نفسه معرف القطاع).

الشرح: 1. معرف القطاع هو رقم فريد يميز كل عقدة/قطاع. 2. في هذا النموذج، معرف القطاع مطابق لرقم معرف العقدة. 3. توفر بيئة البرمجة دالة `node.id()` لاسترجاع هذا المعرف. 4. يتم تحويل القيمة الرقمية التي تُرجعها الدالة إلى نص (`str()`) لدمجها في رسالة النص.

تلميح: يتم استخدام دالة خاصة بالعقدة للحصول على معرف فريد.

التصنيف: صيغة/خطوات | المستوى: متوسط