📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
3
نوع: محتوى تعليمي
ابحث عن خطأ قـاعدي (Syntax Error)، وخطأ منطقي (Logical Error) في التعليمات البرمجية الآتية:
نوع: محتوى تعليمي
void loop() {
for (counter = 0; counter < 5; --counter) {
digitalWrite(11, HIGH);
// Wait for 1000 millisecond(s)
delay("1000");
digitalWrite(11, LOW);
// Wait for 1000 millisecond(s)
delay("1000");
}
}
نوع: محتوى تعليمي
خطأ قـاعدي
نوع: محتوى تعليمي
خطأ منطقي
نوع: محتوى تعليمي
void loop() {
temperature = digitalRead(A0);
Serial.println(temperature);
if (temperature >= 270) {
digitalWrite(11, 1);
// Wait for 2000 millisecond(s)
delay(2000);
digitalWrite(11, 0);
}
}
نوع: محتوى تعليمي
خطأ قـاعدي
نوع: محتوى تعليمي
خطأ منطقي
نوع: METADATA
وزارة التعليم
Ministry of Education
2025 - 1447
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 4 بطاقة لهذه الصفحة
في التعليمات البرمجية الآتية، ما هو الخطأ القاعدي (Syntax Error)؟
void loop() {
for (counter = 0; counter < 5; --counter) {
digitalWrite(11, HIGH);
delay("1000");
digitalWrite(11, LOW);
delay("1000");
}
}
- أ) استخدام حلقة for بدلاً من while.
- ب) كتابة قيمة التأخير "1000" كنص بين علامات تنصيص بدلاً من رقم.
- ج) عدم إغلاق الأقواس المعقوفة للدالة loop.
- د) استخدام المنفذ الرقمي 11 بدلاً من 13.
الإجابة الصحيحة: b
الإجابة: كتابة قيمة التأخير "1000" كنص بين علامات تنصيص بدلاً من رقم.
الشرح: 1. دالة `delay()` في بيئة الأردوينو تستخدم لإيقاف التنفيذ لعدد معين من المللي ثانية.
2. هذه الدالة تتوقع قيمة رقمية (عدد صحيح) كمدخل.
3. في الكود، تم تمرير القيمة "1000" بين علامتي تنصيص، مما يجعلها نصاً (String).
4. تمرير نص إلى دالة تتوقع عدداً صحيحاً هو خطأ في قواعد اللغة (Syntax Error).
تلميح: تتوقع دالة التأخير (delay) في لغة الأردوينو نوعاً محدداً من البيانات كمعامل.
التصنيف: مفهوم جوهري | المستوى: سهل
في التعليمات البرمجية الآتية، ما هو الخطأ المنطقي (Logical Error)؟
void loop() {
for (counter = 0; counter < 5; --counter) {
digitalWrite(11, HIGH);
delay(1000);
digitalWrite(11, LOW);
delay(1000);
}
}
- أ) استخدام إنقاص العداد (--counter) بدلاً من زيادته، مما يؤدي إلى حلقة تكرار لا نهائية.
- ب) استخدام القيمة 5 كحد أقصى للتكرار، بينما يجب أن تكون 10.
- ج) عدم وجود تأخير كافٍ بين تشغيل وإطفاء الليد.
- د) استخدام المنفذ 11 الذي لا يدعم الإخراج الرقمي.
الإجابة الصحيحة: a
الإجابة: استخدام إنقاص العداد (--counter) بدلاً من زيادته، مما يؤدي إلى حلقة تكرار لا نهائية.
الشرح: 1. حلقة `for` تتكون من: تهيئة العداد (`counter = 0`)، شرط الاستمرار (`counter < 5`)، وتحديث العداد (`--counter`).
2. التحديث `--counter` يعني إنقاص قيمة العداد بمقدار 1 في كل تكرار.
3. إذا بدأ العداد من 0 وتناقص (-1، -2، -3...)، فإنه سيبقى دائماً أقل من 5.
4. هذا يجعل شرط الاستمرار محققاً إلى الأبد، مما يؤدي إلى حلقة تكرار لا نهائية، وهو خطأ في منطق البرنامج.
تلميح: فكر في كيفية عمل حلقة for: التهيئة، الشرط، والتحديث. ماذا يحدث للعداد في كل تكرار؟
التصنيف: مفهوم جوهري | المستوى: متوسط
في التعليمات البرمجية الآتية، ما هو الخطأ القاعدي (Syntax Error)؟
void loop() {
temperature = digitalRead(A0);
Serial.println(temperature);
if (temperature >= 270) {
digitalWrite(11, 1);
delay(2000);
digitalWrite(11, 0);
}
}
- أ) استخدام عامل المقارنة >= بدلاً من ==.
- ب) استخدام المتغير temperature دون تعريف نوع البيانات الخاص به.
- ج) كتابة delay(2000) بدون علامات تنصيص.
- د) استخدام Serial.println() داخل الدالة loop.
الإجابة الصحيحة: b
الإجابة: استخدام المتغير temperature دون تعريف نوع البيانات الخاص به.
الشرح: 1. في لغة البرمجة C++ المستخدمة في الأردوينو، يجب تعريف جميع المتغيرات قبل استخدامها.
2. يتضمن التعريف تحديد نوع البيانات (مثل `int`، `float`).
3. في الكود، يتم استخدام المتغير `temperature` مباشرة في السطر `temperature = digitalRead(A0);`.
4. لا يوجد تعريف مسبق لهذا المتغير (مثل `int temperature;`)، وهذا خطأ في قواعد اللغة (Syntax Error).
تلميح: في لغات البرمجة مثل C++ (لغة الأردوينو)، يجب الإعلان عن المتغيرات وتحديد نوعها قبل استخدامها.
التصنيف: تعريف | المستوى: سهل
في التعليمات البرمجية الآتية، ما هو الخطأ المنطقي (Logical Error)؟
void loop() {
int temperature = digitalRead(A0);
Serial.println(temperature);
if (temperature >= 270) {
digitalWrite(11, 1);
delay(2000);
digitalWrite(11, 0);
}
}
- أ) استخدام digitalRead() لقراءة قيمة تماثلية (من منفذ A0) تمثل درجة حرارة.
- ب) استخدام قيمة عتبة 270 درجة، بينما يجب أن تكون 25 درجة.
- ج) عدم تحويل قيمة القراءة التماثلية إلى فولت.
- د) استخدام الدالة loop() بدلاً من setup() لقراءة المستشعر.
الإجابة الصحيحة: a
الإجابة: استخدام digitalRead() لقراءة قيمة تماثلية (من منفذ A0) تمثل درجة حرارة.
الشرح: 1. الدالة `digitalRead()` تُستخدم لقراءة حالة مدخل رقمي، وتُرجع إما HIGH (1) أو LOW (0).
2. المنفذ A0 هو منفذ تماثلي، يُستخدم عادةً لقراءة مستويات جهد متغيرة (مثل مستشعر الحرارة).
3. قراءة مستشعر الحرارة تتطلب عادةً استخدام `analogRead()` التي تُرجع قيمة بين 0 و1023.
4. استخدام `digitalRead(A0)` سيعيد فقط 0 أو 1، ولن يعطي قيمة مثل 270، مما يجعل المقارنة `temperature >= 270` غير منطقية.
تلميح: ما الفرق بين قراءة الإشارة الرقمية (HIGH/LOW) وقراءة الإشارة التماثلية (قيمة متدرجة)؟
التصنيف: فرق بين مفهومين | المستوى: متوسط