3
تتبع كود AND نقرة بعد نقرة
ICT Secondary 3 Term 1, Unit 2, Topic 2: pp. 19–31
الهدفتتبّع كود النقر في محاكي AND في جدول، واعثر على الخطأ في نسخة تتجاهل المفتاح الآخر.
كلمات جديدة
التتبع (trace) · متابعة الكود خطوة خطوة وكتابة الحالة بعد كل خطوةIf متداخلة (nested If) · If مكتوبة داخل If أخرىمعالج النقر (click handler) · الكود الذي يعمل عند النقر على أداةالخطأ البرمجي (bug) · خطأ في برنامج
الشرح
هذا هو كود النقر للمفتاح A. إذا كان نصه Off صار On، ثم تفحص If داخلية المفتاح الآخر: لا يُضاء المصباح إلا إذا كان B يساوي On أيضًا. وإلا، حين كان A يساوي On، صار Off وانطفأ المصباح، لأن مفتاحًا واحدًا مفتوحًا يكسر AND. وكود المفتاح B صورة معكوسة له بتبديل A وB. وانتبه: حين ينقلب A إلى On ويكون B يساوي Off لا يحتاج المصباح إلى تغيير، فقد كان مطفأ أصلًا لأن A كان Off. وIf المتداخلة هي AND: يقول الاختبار الخارجي إن A يُشغَّل الآن، ويقول الداخلي إن B يساوي On. ولتتبّع الكود نكتب جدولًا بصف لكل نقرة، فيه نصا A وB والمصباح بعد النقرة. والصف الأول هو الحالة الابتدائية.
| الخطوة | النقر | A | B | المصباح |
|---|---|---|---|---|
| 0 | (البداية) | Off | Off | مطفأ |
| 1 | A | On | Off | مطفأ |
| 2 | B | On | On | مضاء |
أمثلة محلولة
Vb
1Private Sub SwitchA_Click(sender As Object, e As EventArgs) Handles SwitchA.Click 2 If SwitchA.Text = "Off" Then 3 SwitchA.Text = "On" 4 If SwitchB.Text = "On" Then 5 ShowLamp(True) 6 End If 7 Else 8 SwitchA.Text = "Off" 9 ShowLamp(False) 10 End If 11End Sub
| الخطوة | النقر | A | B | المصباح |
|---|---|---|---|---|
| 0 | (البداية) | Off | Off | مطفأ |
| 1 | A | On | Off | مطفأ |
| 2 | B | On | On | مضاء |
| 3 | A | Off | On | مطفأ |
| 4 | B | Off | Off | مطفأ |
| 5 | B | Off | On | مطفأ |
| 6 | A | On | On | مضاء |
Vb
1Private Sub SwitchA_Click(sender As Object, e As EventArgs) Handles SwitchA.Click 2 If SwitchA.Text = "Off" Then 3 SwitchA.Text = "On" 4 ShowLamp(True) 5 Else 6 SwitchA.Text = "Off" 7 ShowLamp(False) 8 End If 9End Sub
Output
On Off -> lit
نشاط الفصل
تتبّع على الورق الكود الصحيح بدءًا من الحالة الابتدائية للنقرات B وA وA وB. اكتب جدولًا بصف لكل نقرة فيه نصا A وB والمصباح بعدها.
تدرّب
1
الحالة الابتدائية، ثم نقرة على B ونقرة على A. ما الحالة بعد كل نقرة؟
بعد B: Off On والمصباح مطفأ. بعد A: On On والمصباح مضاء.
2
الحالة On On والمصباح مضاء. ما الحالة بعد نقرة على B؟
On Off، والمصباح مطفأ.
3
لماذا لا يغيّر الكود المصباح حين ينقلب A إلى On ويكون B يساوي Off؟
كان A يساوي Off، فكان المصباح مطفأ قبل النقرة، ويجب أن يبقى كذلك.
4
في SwitchA_Click المعيبة، ماذا يحدث بعد نقرة واحدة على A من الحالة الابتدائية؟
يعرض A القيمة On ويضيء المصباح مع أن B يساوي Off.