☰ خطة العام · تكنولوجيا المعلومات والاتصالات (بالعربية)

محاكي AND بلغة ⁦VB.NET⁩

الأسبوع 9 · الوحدة ٢ الموضوع الثاني: مشروع محاكاة بوابة AND بلغة VB.NET: الهدف والمراحل وأدوات التحكم والكود في ثلاثة أجزاء · 3 دروس
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 والمصباح بعد النقرة. والصف الأول هو الحالة الابتدائية.

الخطوةالنقرABالمصباح
0(البداية)OffOffمطفأ
1AOnOffمطفأ
2BOnOnمضاء
أمثلة محلولة
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 هو نفسه بتبديل A وB.
الخطوةالنقرABالمصباح
0(البداية)OffOffمطفأ
1AOnOffمطفأ
2BOnOnمضاء
3AOffOnمطفأ
4BOffOffمطفأ
5BOffOnمطفأ
6AOnOnمضاء
تتبّع ست نقرات بدءًا من الحالة الابتدائية. يضيء المصباح بعد الخطوة ٢ ومرة أخرى بعد الخطوة ٦.
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
البحث عن خطأ. في هذه النسخة من ⁦SwitchA_Click⁩ نُسيت If الداخلية. وبعد نقرة واحدة على A ومع بقاء B يساوي Off يضيء المصباح، وهذا يكسر قاعدة AND. وسطر الناتج هو الحالة بعد تلك النقرة.
نشاط الفصل

تتبّع على الورق الكود الصحيح بدءًا من الحالة الابتدائية للنقرات B وA وA وB. اكتب جدولًا بصف لكل نقرة فيه نصا A وB والمصباح بعدها.

تدرّب
1
الحالة الابتدائية، ثم نقرة على B ونقرة على A. ما الحالة بعد كل نقرة؟
2
الحالة ⁦On On⁩ والمصباح مضاء. ما الحالة بعد نقرة على B؟
3
لماذا لا يغيّر الكود المصباح حين ينقلب A إلى On ويكون B يساوي Off؟
4
في ⁦SwitchA_Click⁩ المعيبة، ماذا يحدث بعد نقرة واحدة على A من الحالة الابتدائية؟