محاكي OR: ما الذي يتغير عن AND؟
يكاد كل شيء في محاكي OR يُنسخ من الأسبوع التاسع. للنافذة الأدوات نفسها: زران SwitchA وSwitchB وصندوق المصباح LampBox. والحالة الابتدائية نفسها: المفتاحان Off والمصباح مطفأ. وكود التحميل والمساعد الصغير ShowLamp لا يتغيران. ما يتغير هو كود النقر فقط، وفيه الجزء الذي يقرر حالة المصباح فقط. فقاعدة AND تحتاج المفتاحين On، فحين يُشغَّل A يجب أن ينظر الكود إلى B أولًا: وهذه هي If الداخلية. أما قاعدة OR فتحتاج مفتاحًا واحدًا على الأقل On. فحين يُشغَّل A يمكن أن يضيء المصباح فورًا، لأن مفتاحًا واحدًا On يكفي، ولا حاجة إلى النظر في B. وحين يُطفأ A لا ينبغي أن يُطفأ المصباح إلا إذا كان B Off أيضًا، فتنتقل If الداخلية إلى فرع Off ويتغير اختبارها. وكود SwitchB هو الصورة المرآة مرة أخرى، مع تبديل A وB.
| النقر على A وكان A | محاكي AND | محاكي OR |
|---|---|---|
| Off (يصير On) | يضيء فقط إذا كان B On (If داخلية) | يضيء فورًا |
| On (يصير Off) | يُطفأ فورًا | يُطفأ فقط إذا كان B Off أيضًا (If داخلية) |
| النقر على B | صورة مرآة لـ A | صورة مرآة لـ A |
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 If SwitchB.Text = "Off" Then 8 ShowLamp(False) 9 End If 10 End If 11End Sub
On Off -> lit
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 تعطي |
|---|---|---|
| Off, Off | On, Off (مضاء) | Off, On (مضاء) |
| On, Off | Off, Off (مطفأ) | On, On (مضاء) |
| Off, On | On, On (مضاء) | Off, Off (مطفأ) |
| On, On | Off, On (مضاء) | On, Off (مضاء) |
اكتب كود النقر للمفتاح SwitchB في محاكي OR بتبديل موضعي A وB في كود SwitchA. ثم قل في جملة واحدة ماذا تفحص If الداخلية في كود OR.