محاكي NOT: زر واحد يقلب المصباح
لمحاكي NOT زر واحد هو SwitchA وصندوق المصباح. ويبدأ كود التحميل بالنص On والمصباح مطفأ، لأن NOT 1 يساوي 0. ويقلب كود النقر النص. فإذا كان النص Off صار On وأُطفئ المصباح. وإلا صار Off وأُضيء المصباح. ويعرض المصباح دائمًا عكس النص: On مطفأ، وOff مضاء. قارن بمحاكيي AND وOR. هنا مفتاح واحد، فلا مفتاح آخر ننظر إليه، ولا توجد If داخلية. والمساعد ShowLamp من الأسبوع التاسع هو نفسه. ولتتبّع الكود اكتب جدول النقرات كما سبق. ولأن النقرة الواحدة تقلب النص، تتكرر الحالات في أزواج: بعد عدد فردي من النقرات يكون النص Off والمصباح مضاءً، وبعد عدد زوجي يكون النص On والمصباح مطفأ. ومن السهل أن يقع خطأ بنسخ سطر: فإذا استدعى الفرعان ShowLamp(True) بقي المصباح مضاءً حين يعود النص إلى On، وهذا يكسر قاعدة NOT.
| محاكي AND أو OR | محاكي NOT | |
|---|---|---|
| المفاتيح | زران | زر واحد |
| الحالة الابتدائية | Off, Off والمصباح مطفأ | On والمصباح مطفأ |
| If الداخلية | نعم | لا |
| المصباح | يحدده النصان | عكس النص الواحد |
1Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 2 SwitchA.Text = "On" 3 ShowLamp(False) 4End Sub 5 6Private Sub SwitchA_Click(sender As Object, e As EventArgs) Handles SwitchA.Click 7 If SwitchA.Text = "Off" Then 8 SwitchA.Text = "On" 9 ShowLamp(False) 10 Else 11 SwitchA.Text = "Off" 12 ShowLamp(True) 13 End If 14End Sub
On -> unlit Off -> lit On -> unlit
| الخطوة | النقرة | النص | المصباح |
|---|---|---|---|
| 0 | (البداية) | On | مطفأ |
| 1 | نقرة | Off | مضاء |
| 2 | نقرة | On | مطفأ |
| 3 | نقرة | Off | مضاء |
| 4 | نقرة | On | مطفأ |
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(True) 8 End If 9End Sub
On -> lit
تتبّع محاكي NOT لخمس نقرات من الحالة الابتدائية واكتب الجدول. ثم قل ماذا يعرض المحاكي بعد ٢٥ نقرة. استعمل النمط ولا تكتب ٢٥ صفًا.