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

مراجعة ومشروعك الصغير

الأسبوع 15 · مراجعة الفصل الدراسي الأول (الوحدتان ١ و٢) ومشروع صغير من تصميمك · 3 دروس
3

مشروعك الصغير: قاعدة بثلاثة شروط، تُبنى وتُختبر

ICT Secondary 3 Term 1, Review: pp. 5–86
الهدفخطّط وارسم الجدول واكتب الكود واختبر قاعدة مصباح بثلاثة شروط: ⁦L =⁩ (شخص في الداخل ⁦AND NOT⁩ نهار) OR مفتاح يدوي.
كلمات جديدة
المشروع الصغير (mini-project) · مهمة صغيرة كاملة: خطة وقاعدة وجدول وكود واختباراتجدول الاختبار ⁦(test table)⁩ · جدول مداخل مع المخرج الذي تتوقعه، يُستعمل لفحص برنامجرقم الصف · رقم من ٠ إلى ٧ للصف؛ وإذا كُتب ثنائيًا أعطى قيم A وB وCمدخل غير صالح ⁦(invalid input)⁩ · قيمة غائبة أو ليست نعم أو لا واضحة
الشرح

هذا مشروع دارسلاب الصغير الخاص: مصباح ركن قراءة في مكتبة من تأليفنا. الخطوة ١: الخطة. المداخل ثلاثة أسئلة جوابها نعم أو لا: A هل يوجد شخص في الداخل؟ B هل هو نهار؟ C هل المفتاح اليدوي مشغَّل؟ والمخرج L هل المصباح مضاء؟ الخطوة ٢: القاعدة بالكلمات: يضيء المصباح حين يوجد شخص في الداخل ولا يكون نهارًا، أو حين يكون المفتاح اليدوي مشغَّلًا. والصيغة ⁦L = (A·¬B) + C⁩. الخطوة ٣: الجدول. ثلاثة مداخل تصنع ٢ أس ٣ يساوي ٨ صفوف. وأرقام الصفوف من ٠ إلى ٧ إذا كُتبت ثنائية فهي الأعمدة A وB وC تمامًا، كأنماط البتات في الأسبوع الثاني: الصف ٥ هو 101 أي ⁦A = 1⁩ و⁦B = 0⁩ و⁦C = 1⁩. والجزء ⁦A·¬B⁩ يساوي 1 فقط للصفين 100 و101، والمتغير C يساوي 1 للصفوف 001 و011 و101 و111، فيكون لخمسة صفوف ⁦L = 1⁩. الخطوة ٤: الكود في PHP وفي ⁦VB.NET⁩، ويجب أن يعطيا الجدول نفسه. الخطوة ٥: الاختبارات: جدول اختبار قصير فيه المخرج الذي تتوقعه. وهناك قرار آخر من الخطة: إذا غاب شرط أو لم يكن نعم أو لا واضحًا فإن البرنامج لا يخمّن. بل يبلغ عن مدخل غير صالح ولا يغيّر المصباح.

ABC⁦(A∧¬B)∨C⁩
0000
0011
0100
0111
1001
1011
1100
1111
أمثلة محلولة
جزء الخطةالمحتوى
المداخلA: هل يوجد شخص في الداخل؟ B: هل هو نهار؟ C: هل المفتاح اليدوي مشغَّل؟
المخرجL: هل المصباح مضاء؟
القاعدة بالكلماتيضيء حين يوجد شخص في الداخل ولا يكون نهارًا، أو حين يكون المفتاح اليدوي مشغَّلًا.
الصيغة⁦L = (A·¬B) + C⁩
الخطة في جدول واحد.
Php
1function lamp(bool $inside, bool $daylight, bool $manual): string {
2    return (($inside && !$daylight) || $manual) ? "on" : "off";
3}
4
5echo lamp(true, false, false), " ";
6echo lamp(true, true, false), " ";
7echo lamp(false, true, true), " ";
8echo lamp(false, false, false);
Output
on off on off
دالة PHP وأربعة استدعاءات. وسطر الناتج يعطي المصباح لـ ⁦(inside, daylight, manual) = (true, false, false)⁩ و⁦(true, true, false)⁩ و⁦(false, true, true)⁩ و⁦(false, false, false)⁩.
Vb
1Function Lamp(inside As Boolean, daylight As Boolean, manual As Boolean) As String
2    If (inside And Not daylight) Or manual Then
3        Return "on"
4    Else
5        Return "off"
6    End If
7End Function
8
9Console.WriteLine(Lamp(True, False, False) & " " & Lamp(True, True, False) & " " & Lamp(False, True, True) & " " & Lamp(False, False, False))
Output
on off on off
الدالة نفسها في ⁦VB.NET⁩ داخل برنامج كونسول صغير. وسطر الناتج هو الأجوبة الأربعة نفسها.
Php
1for ($row = 0; $row < 8; $row++) {
2    $bits = str_pad(decbin($row), 3, "0", STR_PAD_LEFT);
3    echo $row, "  ", $bits, "  ", lamp($bits[0] === "1", $bits[1] === "1", $bits[2] === "1"), "\n";
4}
Output
0  000  off
1  001  on
2  010  off
3  011  on
4  100  on
5  101  on
6  110  off
7  111  on
الصفوف الثمانية كلها من دالة PHP، مع رقم الصف ورقم الصف ثنائيًا (قيم A وB وC) والمصباح. والأحرف الثلاثة في ⁦$bits⁩ هي A وB وC.
الحالة⁦A B C⁩L المتوقع
شخص يقرأ ليلًا والمفتاح اليدوي مطفأ⁦1 0 0⁩on
شخص يقرأ في النهار والمفتاح اليدوي مطفأ⁦1 1 0⁩off
لا أحد في الداخل ونهار والمفتاح اليدوي مشغَّل (تنظيف)⁦0 1 1⁩on
لا أحد في الداخل وليل والمفتاح اليدوي مطفأ⁦0 0 0⁩off
جدول اختبار لركن المكتبة. ولكل حالة المصباح المتوقع.
نشاط الفصل

أضف شرطًا رابعًا D هو «المكتبة مغلقة»، بحيث يكون المصباح مطفأ دائمًا حين يكون D يساوي 1. اكتب القاعدة الجديدة بالكلمات والصيغة الجديدة، وقل كم صفًا في الجدول الآن.

تدرّب
1
كم صفًا في جدول القاعدة ذات الشروط الثلاثة، وكم منها L يساوي 1؟
2
أي رقم صف من ٠ إلى ٧ يعني ⁦A = 1⁩ و⁦B = 0⁩ و⁦C = 1⁩؟
3
ماذا يفعل المفتاح اليدوي C في الصيغة؟
4
أعطِ حالة اختبار فيها شخص في الداخل ويجب أن يكون المصباح فيها مطفأ.