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

بوابة NOT

الأسبوع 13 · الوحدة ٢ الموضوعات من السابع إلى التاسع: بوابة NOT ومشروعا محاكاتها بلغة VB.NET وPHP · 3 دروس
3

NOT في صفحة ويب والبوابات الثلاث جنبًا إلى جنب

ICT Secondary 3 Term 1, Unit 2, Topics 7–9: pp. 65–81
الهدفاقرأ صفحة NOT، وتجنّب مزالق NOT في الكود، وقارن بين البوابات الثلاث في جدول واحد.
كلمات جديدة
! · عامل NOT في PHP: يحوّل الصحيح إلى خاطئ والخاطئ إلى صحيحNot · عامل NOT في ⁦VB.NET⁩: يعكس القيمتين True وFalseعلى مستوى البتات (bitwise) · العمل على البتات المفردة في عدد صحيحالجدول الملخص · جدول واحد يضع البوابات الثلاث جنبًا إلى جنب
الشرح

لصفحة NOT قائمة منسدلة واحدة للمفتاح وزر Apply وسطر مصباح يعرض عكس الاختيار. وفي الدالة أدناه يكون المفتاح on فقط إذا أرسلت القائمة on بالضبط؛ فيكون المصباح مطفأ، وإلا فمضاء. ولا يطبع الكتاب كودًا لهذه الصفحة، فالدالة من تأليفنا. والآن المزالق. في PHP تعكس العلامة ! الشرط، لكن echo يطبع القيمة false نصًا فارغًا، فلا يطبع ⁦echo !1⁩ شيئًا. ولترى 0 اكتب ⁦(int)!1⁩. وفي ⁦VB.NET⁩ تعكس الكلمة Not القيمتين True وFalse وتُطبعان True وFalse. لكنها على عدد صحيح تعمل على البتات: ⁦Not 1⁩ يساوي ⁦-2⁩ لا 0. فلا تكتب ⁦Not 1⁩ وأنت تقصد ⁦«NOT⁩ للبت ⁦1»⁩. استعمل قيمة Boolean، أو اكتب ⁦1 - a⁩. وأخيرًا يمكن جمع NOT مع بوابة أخرى. فالعمود ⁦A AND NOT B⁩ يساوي 1 فقط حين يكون A يساوي 1 وB يساوي 0. ويضع الجدول الملخص البوابات الأساسية الثلاث جنبًا إلى جنب.

البوابةالمداخلالصفوفالمخرج 1 حينالصيغة
ANDاثنان أو أكثر⁦2ⁿ⁩كل المداخل 1⁦Y = A·B⁩
ORاثنان أو أكثر⁦2ⁿ⁩مدخل واحد على الأقل 1⁦Y = A + B⁩
NOTواحد2المدخل 0⁦Y = ¬A⁩
أمثلة محلولة
Php
1function notPage(array $post): string {
2    $switch = "off";
3    if (isset($post['apply'])) {
4        $switch = (($post['list1'] ?? "") === "on") ? "on" : "off";
5    }
6    $lamp = ($switch === "on") ? "unlit" : "lit";
7    return "$switch $lamp";
8}
9
10echo notPage([]), "\n";
11echo notPage(['apply' => 'Apply', 'list1' => 'on']), "\n";
12echo notPage(['apply' => 'Apply', 'list1' => 'off']), "\n";
13echo notPage(['apply' => 'Apply', 'list1' => 'maybe']);
Output
off lit
on unlit
off lit
off lit
صفحة NOT على شكل دالة. وأسطر الناتج للزيارة الأولى، ولـ on، ولـ off، وللنص maybe.
Php
1echo "[", !1, "]\n";
2echo "[", (int)!1, "]\n";
3var_dump(!1);
Output
[]
[0]
bool(false)
المزلق في PHP: النص الفارغ والتحويل الذي يُظهر 0.
Vb
1Dim t As Boolean = True
2Dim n As Integer = 1
3Console.WriteLine(Not t)
4Console.WriteLine(Not n)
5Console.WriteLine(1 - n)
Output
False
-2
0
المزلق في ⁦VB.NET⁩ داخل برنامج كونسول صغير: Not على Boolean، وNot على عدد صحيح، والطريقة الآمنة ⁦1 - n⁩.
ABA∧¬B
000
010
101
110
NOT مجموعة مع AND. المصباح مضاء فقط حين A يساوي 1 وB يساوي 0.
نشاط الفصل

تنبّأ أولًا ثم تحقق بالقلم: ماذا يطبع ⁦echo (int)!0;⁩ و⁦echo (int)!!1;⁩ في PHP، وماذا يطبع ⁦Console.WriteLine(Not False)⁩ في ⁦VB.NET⁩؟ ثم اكتب جدول الحقيقة لـ ⁦(NOT A) AND B⁩.

تدرّب
1
ماذا يطبع ⁦echo !1;⁩ في PHP؟
2
كم يعطي ⁦Not 1⁩ في ⁦VB.NET⁩ حين يكون 1 عددًا صحيحًا؟
3
أي تعبير PHP يُظهر 0 للبت 1؟
4
أي بوابة من البوابات الأساسية الثلاث لها مدخل واحد فقط؟