📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
نوع: محتوى تعليمي
إنشاء المقاطع البرمجية Creating the Scripts
نوع: محتوى تعليمي
ستلقي الآن نظرة على كافة المقاطع البرمجية التي ستستخدمها بدءاً من برمجة الحاويات. مع العلم بأن برمجة النوعين المختلفين من الحاويات ستكون متطابقة.
نوع: محتوى تعليمي
ابدأ بإضافة المكتبة اللازمة، وطباعة نص فارغ على العقدة لإزالة أي نصوص مطبوعة من عمليات التنفيذ السابقة.
نوع: محتوى تعليمي
import time
node.print("")
نوع: محتوى تعليمي
ستقوم حاويات المواد القابلة للتلف ببث رسالة تتضمن محتوياتها ومعرفها ليتم استخدامها من قبل مركبة التفتيش لتصنيف كل حاوية. المعرف (ID) عدد صحيح، ويجب تحويل نوعه إلى متغير نصي قبل ربطه بالنص. توضع مسافة بين معلومات المحتويات والمعرف بحيث يمكن إرسال نص واحد فقط في آن واحد باستخدام دالة (send) للإرسال، ثم يتعين عليك إرسال جزئيتين من المعلومات يفصل بينهما بواسطة المسافة.
نوع: محتوى تعليمي
while node.loop():
node.send("CONSUMABLES " + str(node.id()))
نوع: محتوى تعليمي
ستُرسل إما "1" والتي تعني أنه يجب اختيارها، أو ستُرسل "2" والتي تعني أنه يجب ألا يتم ذلك. بدورها، ستطيع الحاوية النص الذاتي "PICK" (الالتقاط) أو "DO NOT PICK" (لا تلتقط)، ثم ستسكن لمدة ثانية واحدة.
نوع: محتوى تعليمي
message = node.read()
if message == "1":
node.print("PICK")
elif message == "2":
node.print("DO NOT PICK")
time.sleep(1)
نوع: METADATA
وزارة التعليم
Ministry of Education
2025 - 1447
نوع: METADATA
342
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 4 بطاقة لهذه الصفحة
في سياق برمجة حاويات إنترنت الأشياء، ما الغرض من استخدام دالة `node.send()` كما ورد في المثال البرمجي؟
- أ) طباعة رسالة على شاشة الحاوية نفسها لعرض حالة التشغيل.
- ب) استقبال الأوامر من مركبة التفتيش لتحديد الإجراء التالي.
- ج) إرسال رسالة تتضمن محتويات الحاوية ومعرفها (ID) إلى عقدة أخرى (مثل مركبة التفتيش) لتصنيفها.
- د) تشغيل محرك الحاوية لتحريكها نحو نقطة الالتقاط.
الإجابة الصحيحة: c
الإجابة: إرسال رسالة تتضمن محتويات الحاوية ومعرفها (ID) إلى عقدة أخرى (مثل مركبة التفتيش) لتصنيفها.
الشرح: 1. دالة `node.send()` تستخدم للتواصل بين العقد في شبكة إنترنت الأشياء. 2. في المثال، ترسل الحاوية نصاً يجمع بين نوع محتوياتها (CONSUMABLES) ومعرفها الرقمي بعد تحويله إلى نص. 3. هذا يسمح للجهة المستقبلة (مركبة التفتيش) بمعرفة هوية ومحتوى كل حاوية لاتخاذ قرار الالتقاط أو عدمه.
تلميح: تذكر أن الحاوية تحتاج إلى إبلاغ جهة أخرى بمعلوماتها لاتخاذ قرار.
التصنيف: مفهوم جوهري | المستوى: سهل
في الكود البرمجي المقدم، ما الشرط الذي يؤدي إلى طباعة الأمر "PICK" على عقدة الحاوية؟
- أ) إذا كانت الرسالة المستقبلة عبر `node.read()` تساوي القيمة الرقمية 1.
- ب) إذا كانت الرسالة المستقبلة عبر `node.read()` تساوي القيمة النصية "PICK".
- ج) إذا كانت الرسالة المستقبلة عبر `node.read()` تساوي القيمة النصية "1".
- د) بعد إرسال الحاوية لمعرفها مباشرة وقبل استقبال أي رد.
الإجابة الصحيحة: c
الإجابة: إذا كانت الرسالة المستقبلة عبر `node.read()` تساوي القيمة النصية "1".
الشرح: 1. تستخدم الحاوية دالة `node.read()` لقراءة الرسالة الواردة. 2. يتم تخزين هذه الرسالة في متغير اسمه `message`. 3. إذا كانت قيمة `message` مساوية تماماً للنص "1"، فإن الشرط `if message == "1":` يصبح صحيحاً. 4. عند تحقق الشرط، يتم تنفيذ الأمر `node.print("PICK")` لطباعة كلمة "PICK".
تلميح: انظر إلى بنية الشرط `if` في الكود. ما هي القيمة التي تتم مقارنتها؟
التصنيف: صيغة/خطوات | المستوى: سهل
ما الوظيفة الأساسية للتعليمة `time.sleep(1)` في نهاية المقطع البرمجي للحاوية؟
- أ) تسريع معالجة الحاوية لجعلها تستجيب بشكل أسرع للأوامر.
- ب) إيقاف تشغيل عقدة الحاوية تماماً لمدة ثانية لتوفير الطاقة.
- ج) إيقاف تنفيذ برنامج الحاوية مؤقتاً لمدة ثانية واحدة قبل بدء الدورة التالية.
- د) تحديث الوقت الحقيقي المخزن في ذاكرة الحاوية كل ثانية.
الإجابة الصحيحة: c
الإجابة: إيقاف تنفيذ برنامج الحاوية مؤقتاً لمدة ثانية واحدة قبل بدء الدورة التالية.
الشرح: 1. دالة `sleep()` من مكتبة `time` تستخدم لإيقاف التنفيذ مؤقتاً. 2. الرقم `1` الممرر لها يمثل مدة التوقف بالثواني. 3. في هذا السياق، بعد أن تطبع الحاوية "PICK" أو "DO NOT PICK"، تتوقف لمدة ثانية. 4. هذا يساعد في تنظيم توقيت العمليات ومنع ازدحام المعالجة أو الاتصال في الشبكة.
تلميح: كلمة `sleep` تعني نوم أو توقف. الرقم بين القوسين يمثل الزمن.
التصنيف: مفهوم جوهري | المستوى: متوسط
لماذا يتم تحويل معرف الحاوية (ID) من عدد صحيح إلى متغير نصي (`str`) قبل إرساله في المثال البرمجي؟
- أ) لأن أجهزة الاستقبال لا تفهم سوى البيانات النصية.
- ب) لأن دالة `node.send()` تتوقع إرسال بيانات من نوع نصي (String)، ولا يمكن ربط النص (`CONSUMABLES `) بالرقم مباشرة دون تحويله أولاً.
- ج) لجعل معرف الحاوية أكثر أماناً ومنع اختراقه.
- د) لأن القيم النصية تشغل مساحة ذاكرة أقل من القيم الرقمية.
الإجابة الصحيحة: b
الإجابة: لأن دالة `node.send()` تتوقع إرسال بيانات من نوع نصي (String)، ولا يمكن ربط النص (`CONSUMABLES `) بالرقم مباشرة دون تحويله أولاً.
الشرح: 1. معرف الحاوية `node.id()` يُرجع قيمة رقمية (عدد صحيح). 2. النص الثابت هو `"CONSUMABLES "`. 3. عملية الربط (`+`) بين نص ورقم مباشرة ستتسبب في خطأ لأن أنواع البيانات غير متوافقة. 4. دالة `str()` تحول العدد الصحيح إلى تمثيله النصي (مثل تحويل 5 إلى "5"). 5. بعد التحويل، يمكن ربط النصين (`"CONSUMABLES " + "5"`) للحصول على نص واحد لإرساله.
تلميح: فكر في أنواع البيانات (Data Types) وعملية الربط (`+`).
التصنيف: مفهوم جوهري | المستوى: متوسط