تدريب 6 - كتاب المهارات الرقمية - الصف 10 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب المهارات الرقمية - الصف 10 - الفصل 1 | المادة: المهارات الرقمية | المرحلة: الصف 10 | الفصل الدراسي: 1

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

الدرس: تدريب 6

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

الكتاب: كتاب المهارات الرقمية - الصف 10 - الفصل 1 | المادة: المهارات الرقمية | المرحلة: الصف 10 | الفصل الدراسي: 1

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

📝 ملخص الصفحة

شغل المقطع البرمجي وصف وظيفته.

المقطع البرمجي المعطى هو:

```

player = game.create_sprite(0, 0)

for i in range(5):

for j in range(5):

player.set(LedSpriteProperty.Y, i)

player.set(LedSpriteProperty.X, j)

basic.pause(400)

```

وظيفة هذا المقطع البرمجي هي إنشاء كائن (Sprite) يسمى `player` في موضع (0,0) على شاشة LED، ثم تحريك هذا الكائن عبر جميع النقاط (الخلايا) في شبكة 5x5 (من 0 إلى 4) بشكل منهجي. يتحرك الكائن أولاً عبر جميع الأعمدة (j) في الصف الأول (i=0)، ثم ينتقل إلى الصف التالي، وهكذا حتى يغطي جميع الصفوف الخمسة. يتم إدخال تأخير قدره 400 مللي ثانية بعد اكتمال حركة الكائن عبر جميع أعمدة كل صف.

اكتب مقطعًا برمجيًا يعرض باستمرار رمز البطة على الشاشة، كما يعرض الرسالة "Quack" عند الضغط على الزر B.

مقترح للمقطع البرمجي:

```

basic.show_leds("""

. # # # .

# . . . #

# . . . #

. # # # .

. . . . .

""")

def on_button_pressed_b():

basic.show_string("Quack")

input.on_button_pressed(Button.B, on_button_pressed_b)

```

شرح الحل:

  • `basic.show_leds()`: تُستخدم لعرض رمز (أيقونة) ثابت على شاشة LED. الرمز المعرّف داخل الأقواس يمثل شكل بطة.
  • `def on_button_pressed_b():`: تُعرّف دالة (وظيفة) تُنفذ عند الضغط على الزر B.
  • `basic.show_string("Quack")`: داخل الدالة، هذا الأمر يعرض كلمة "Quack" على الشاشة.
  • `input.on_button_pressed(Button.B, on_button_pressed_b)`: يربط حدث الضغط على الزر B بالدالة التي عُرّفت سابقًا، بحيث عند الضغط على الزر B تُنفّذ الدالة وتظهر الرسالة.
  • 📋 المحتوى المنظم

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

    تدريب 6

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

    شغّل المقطع البرمجي وصف وظيفته.

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

    player = game.create_sprite(0, 0) for i in range(5): for j in range(5): player.set(LedSpriteProperty.Y, i) player.set(LedSpriteProperty.X, j) basic.pause(400)

    تدريب 7

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

    اكتب مقطعًا برمجيًا يعرض باستمرار رمز البطة، كما يعرض الرسالة "Quack" عند الضغط على الزر B.

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

    --- SECTION: تدريب 6 --- شغّل المقطع البرمجي وصف وظيفته. player = game.create_sprite(0, 0) for i in range(5): for j in range(5): player.set(LedSpriteProperty.Y, i) player.set(LedSpriteProperty.X, j) basic.pause(400) --- SECTION: تدريب 7 --- اكتب مقطعًا برمجيًا يعرض باستمرار رمز البطة، كما يعرض الرسالة "Quack" عند الضغط على الزر B.

    ✅ حلول أسئلة الكتاب الرسمية

    عدد الأسئلة: 2

    سؤال تدريب 6: شغّل المقطع البرمجي وصف وظيفته. player = game.create_sprite(0, 0) for i in range(5): for j in range(5): player.set(LedSpriteProperty.Y, i) player.set(LedSpriteProperty.X, j) basic.pause(400)

    الإجابة: س6: ينشئ كائناً (Sprite) عند الإحداثيات (0,0)، ثم يحركه على شبكة مصابيح Micro:bit عبر جميع الإحداثيات من (0,0) إلى (4,4)؛ حيث ينتقل في كل صف من اليسار إلى اليمين (X من 0 إلى 4)، ثم ينزل للصف التالي (Y يزيد من 0 إلى 4)، مع توقف مقداره 400 ملي ثانية بين كل حركة.

    خطوات الحل:

    1. **الشرح:** لنفهم هذا المقطع البرمجي. نبدأ بقراءة السطر الأول: `player = game.create_sprite(0, 0)`. هذا السطر ينشئ كائنًا (Sprite) جديدًا في اللعبة ويضعه في موضع البداية على الإحداثيات (0,0) على شاشة Micro:bit. ثم نرى حلقتين `for` متداخلتين. الحلقة الخارجية `for i in range(5):` تعني أن المتغير `i` سيأخذ القيم من 0 إلى 4 (خمس مرات). الحلقة الداخلية `for j in range(5):` تعني أن المتغير `j` سيأخذ القيم من 0 إلى 4 أيضًا. داخل الحلقات، نجد أمرين: 1. `player.set(LedSpriteProperty.Y, i)` يغير الإحداثي الرأسي (Y) للكائن ليكون مساويًا لقيمة `i`. 2. `player.set(LedSpriteProperty.X, j)` يغير الإحداثي الأفقي (X) للكائن ليكون مساويًا لقيمة `j`. بعد كل تغيير للإحداثيات، يأتي الأمر `basic.pause(400)` الذي يجعل البرنامج ينتظر 400 مللي ثانية (أو 0.4 ثانية) قبل الانتقال للخطوة التالية. إذن، طريقة عمل البرنامج هي: يبدأ الكائن عند (0,0). ثم يتحرك أولاً عبر جميع الأعمدة في الصف الأول (حيث Y=0 و X من 0 إلى 4). بعد انتهاء الصف الأول، تزيد قيمة `i` إلى 1، فينتقل الكائن للصف الثاني (Y=1) ويتحرك عبر جميع أعمدة ذلك الصف (X من 0 إلى 4 مرة أخرى). يستمر هذا النمط حتى يغطي جميع الإحداثيات من (0,0) إلى (4,4). لذلك، وظيفة هذا المقطع البرمجي هي: **ينشئ كائنًا عند الإحداثيات (0,0)، ثم يحركه عبر جميع نقاط شبكة مصابيح Micro:bit من (0,0) إلى (4,4)؛ حيث ينتقل في كل صف من اليسار إلى اليمين (X من 0 إلى 4)، ثم ينزل للصف التالي (Y يزيد من 0 إلى 4)، مع توقف مقداره 400 ملي ثانية بين كل حركة.**

    سؤال تدريب 7: اكتب مقطعًا برمجيًا يعرض باستمرار رمز البطة على الشاشة، كما يعرض الرسالة "Quack" عند الضغط على الزر B.

    الإجابة: س 7: اجعل البرنامج يعمل كالتالي: - تكرار مستمر (إلى الأبد): - إذا كان الزر B مضغوطًا: اعرض الرسالة النصية "Quack". - وإلا: اعرض رمز البطة على الشاشة باستمرار.

    خطوات الحل:

    1. **الشرح:** الفكرة هنا هي كتابة برنامج يقوم بعملين رئيسيين: 1. عرض رمز البطة على الشاشة باستمرار. 2. عرض الرسالة النصية "Quack" عند الضغط على الزر B. لتحقيق ذلك، نحتاج إلى استخدام حلقة `while` أو `forever` (إلى الأبد) لأن البرنامج يجب أن يعمل باستمرار. داخل هذه الحلقة، نضع شرطًا باستخدام `if` للتحقق مما إذا كان الزر B مضغوطًا أم لا. إذا كان الزر B مضغوطًا (`if input.button_is_pressed(Button.B):`)، فإن البرنامج سيعرض الرسالة النصية "Quack" على الشاشة. إذا لم يكن الزر B مضغوطًا (`else:`)، فإن البرنامج سيعرض رمز البطة على الشاشة. لضمان استمرارية العرض، يجب أن تكون هذه العملية داخل حلقة لا نهائية. إذن، المقطع البرمجي سيكون: python while True: if input.button_is_pressed(Button.B): basic.show_string("Quack") else: basic.show_icon(IconNames.DUCK) لذلك، الإجابة هي: **اجعل البرنامج يعمل كالتالي: تكرار مستمر (إلى الأبد): إذا كان الزر B مضغوطًا: اعرض الرسالة النصية "Quack". وإلا: اعرض رمز البطة على الشاشة باستمرار.**

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

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

    ما وظيفة المقطع البرمجي التالي الذي يستخدم حلقتين for متداخلتين؟ player = game.create_sprite(0, 0) for i in range(5): for j in range(5): player.set(LedSpriteProperty.Y, i) player.set(LedSpriteProperty.X, j) basic.pause(400)

    • أ) إنشاء 25 كائنًا مختلفًا في مواقع عشوائية على شاشة Micro:bit.
    • ب) تحريك كائن عبر جميع نقاط شبكة مصابيح Micro:bit من (0,0) إلى (4,4) بترتيب صفوف وأعمدة مع توقف 400 مللي ثانية بين كل حركة.
    • ج) جعل الكائن يتحرك بشكل دائري حول مركز الشاشة بسرعة ثابتة.
    • د) تغيير سطوع مصباح LED الموجود في مركز الكائن كل 400 مللي ثانية.

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

    الإجابة: تحريك كائن عبر جميع نقاط شبكة مصابيح Micro:bit من (0,0) إلى (4,4) بترتيب صفوف وأعمدة مع توقف 400 مللي ثانية بين كل حركة.

    الشرح: 1. ينشئ كائنًا (Sprite) عند الإحداثيات (0,0). 2. الحلقة الخارجية (i) تمثل الصفوف (Y) من 0 إلى 4. 3. الحلقة الداخلية (j) تمثل الأعمدة (X) من 0 إلى 4. 4. في كل تكرار، يغير إحداثيات الكائن إلى (i, j). 5. الأمر basic.pause(400) يوقف البرنامج 400 مللي ثانية. 6. النتيجة: يتحرك الكائن عبر جميع الإحداثيات (5×5) بترتيب الصفوف من الأعلى إلى الأسفل، وفي كل صف من اليسار إلى اليمين.

    تلميح: فكر في القيم التي يأخذها المتغيران i و j، وكيف تؤثر على إحداثيات الكائن (Sprite).

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

    أي من المقتطفات البرمجية التالية يحقق الهدف التالي: 'يعرض رمز البطة باستمرار، ويعرض الرسالة Quack عند الضغط على الزر B'؟

    • أ) كتابة أمرين منفصلين: basic.show_icon(IconNames.DUCK) ثم input.on_button_pressed(Button.B, basic.show_string("Quack")).
    • ب) استخدام حلقة for محدودة التكرار لعرض الرمز، ووظيفة منفصلة لعرض الرسالة عند الضغط على الزر.
    • ج) استخدام حلقة لا نهائية (while True) مع شرط if للتحقق من ضغط الزر B، وعرض الرسالة في حالة الضغط، وعرض الرمز في الحالة الأخرى.
    • د) تعريف متغير يحفظ حالة الزر، وتغيير قيمة هذا المتغير فقط عند الضغط عليه دون استخدام حلقات.

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

    الإجابة: استخدام حلقة لا نهائية (while True) مع شرط if للتحقق من ضغط الزر B، وعرض الرسالة في حالة الضغط، وعرض الرمز في الحالة الأخرى.

    الشرح: 1. الهدف يتطلب برنامجًا يعمل باستمرار (تكرار مستمر). 2. يجب التحقق من حالة الزر B في كل تكرار. 3. إذا كان الزر مضغوطًا (True)، اعرض النص "Quack". 4. إذا لم يكن مضغوطًا (False)، اعرض رمز البطة (IconNames.DUCK). 5. هذا المنطق يتم تنفيذه داخل حلقة لا نهائية مثل while True.

    تلميح: تذكر أن البرنامج يجب أن يعمل باستمرار (حلقة لا نهائية) ويتفاعل مع حدث الضغط على الزر.

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

    في المقطع البرمجي لتدريب 6، ما الدور الذي يلعبه الأمر `basic.pause(400)` داخل الحلقات المتداخلة؟

    • أ) إعادة تشغيل الكائن من موقعه الأولي (0,0) بعد كل 400 مللي ثانية.
    • ب) إدخال تأخير زمني (400 مللي ثانية) بين كل تغيير في موقع الكائن، مما يسمح برؤية حركته بوضوح.
    • ج) تحديث شاشة Micro:bit كل 400 مللي ثانية لعرض التغييرات التي حدثت.
    • د) إيقاف تنفيذ البرنامج بالكامل بعد مرور 400 مللي ثانية من بدايته.

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

    الإجابة: إدخال تأخير زمني (400 مللي ثانية) بين كل تغيير في موقع الكائن، مما يسمح برؤية حركته بوضوح.

    الشرح: 1. الأمر basic.pause() يوقف تنفيذ البرنامج مؤقتًا. 2. القيمة 400 تمثل عدد المللي ثانية (0.4 ثانية). 3. موقعه داخل الحلقات يعني أنه ينفذ بعد كل مرة نغير فيها إحداثيات الكائن (X, Y). 4. بدون هذا التأخير، ستكون الحركة سريعة جدًا وقد لا تُرى على الشاشة. 5. الوظيفة: التحكم في سرعة الحركة وجعلها مرئية للمستخدم.

    تلميح: ماذا يحدث لو حذفنا هذا الأمر؟ هل سيتغير السلوك الوظيفي أم سرعة التنفيذ فقط؟

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