اختيار البوابة المناسبة لقاعدة: AND أو OR أو NOT
تسأل المهمة ٣: كيف تتحد الشروط؟ فإذا لزمت كلها فالبوابة AND وصيغتها Y = A·B. وإذا كفى واحد منها على الأقل فالبوابة OR وصيغتها Y = A + B. وإذا كانت النتيجة عكس الشرط فالبوابة NOT وصيغتها Y = ¬A. وتناسبها قراراتنا الثلاثة بالتتابع. فالرحلة تحتاج قسيمة موقعة ومقعدًا شاغرًا: AND. وتُعفى الغرامة إذا أُعيد الكتاب في موعده أو كانت البطاقة ذهبية: OR. ويضيء المصباح الليلي حين لا يكون نهارًا: NOT. وبعض القواعد تحتاج بوابتين. فرشاش الحديقة يعمل حين تكون التربة جافة ولا تمطر؛ وإذا جعلنا A للتربة الجافة وB للمطر كانت الصيغة Y = A·¬B. وبعد الجدول يأتي الاختبار. يجب أن تعطي دالة PHP أو VB.NET الأجوبة نفسها التي في الجدول، صفًا بعد صف. اكتب الدالة وشغّلها على كل صف وقارن.
| تقول القاعدة | البوابة | الصيغة |
|---|---|---|
| كل الشروط لازمة | AND | Y = A·B |
| يكفي شرط واحد على الأقل | OR | Y = A + B |
| النتيجة عكس الشرط | NOT | Y = ¬A |
| شرط وعكس شرط آخر | AND مع NOT | Y = A·¬B |
1function tripOk(bool $slip, bool $seat): bool { 2 return $slip && $seat; 3} 4function feeWaived(bool $onTime, bool $gold): bool { 5 return $onTime || $gold; 6} 7function nightLight(bool $daylight): bool { 8 return !$daylight; 9} 10 11var_dump(tripOk(true, false)); 12var_dump(feeWaived(false, true)); 13var_dump(nightLight(true)); 14var_dump(nightLight(false));
bool(false) bool(true) bool(false) bool(true)
1Function Sprinkler(dry As Boolean, raining As Boolean) As Boolean 2 Return dry And Not raining 3End Function 4 5Console.WriteLine(Sprinkler(True, False) & " " & Sprinkler(True, True) & " " & Sprinkler(False, False) & " " & Sprinkler(False, True))
True False False False
| A | B | A∧¬B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
مروحة بيت زجاجي يجب أن تعمل حين يكون الجو حارًا أو يكون الباب مفتوحًا. اكتب المداخل والمخرج والبوابة والصيغة وجدول الحقيقة. ثم اكتب دالة PHP.