الأسبوع 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، ويجب أن يعطيا الجدول نفسه. الخطوة ٥: الاختبارات: جدول اختبار قصير فيه المخرج الذي تتوقعه. وهناك قرار آخر من الخطة: إذا غاب شرط أو لم يكن نعم أو لا واضحًا فإن البرنامج لا يخمّن. بل يبلغ عن مدخل غير صالح ولا يغيّر المصباح.
A
B
C
(A∧¬B)∨C
0
0
0
0
0
0
1
1
0
1
0
0
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
0
1
1
1
1
أمثلة محلولة
جزء الخطة
المحتوى
المداخل
A: هل يوجد شخص في الداخل؟ B: هل هو نهار؟ C: هل المفتاح اليدوي مشغَّل؟
المخرج
L: هل المصباح مضاء؟
القاعدة بالكلمات
يضيء حين يوجد شخص في الداخل ولا يكون نهارًا، أو حين يكون المفتاح اليدوي مشغَّلًا.
دالة 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
89Console.WriteLine(Lamp(True, False, False) & " " & Lamp(True, True, False) & " " & Lamp(False, True, True) & " " & Lamp(False, False, False))
Output
on off on off
الدالة نفسها في VB.NET داخل برنامج كونسول صغير. وسطر الناتج هو الأجوبة الأربعة نفسها.
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؟
٨ صفوف؛ منها ٥ صفوف L فيها 1.
2
أي رقم صف من ٠ إلى ٧ يعني A = 1 وB = 0 وC = 1؟
الصف ٥ ويُكتب 101.
3
ماذا يفعل المفتاح اليدوي C في الصيغة؟
كلما كان C يساوي 1 أضاء المصباح مهما كان A وB.
4
أعطِ حالة اختبار فيها شخص في الداخل ويجب أن يكون المصباح فيها مطفأ.
شخص في الداخل ونهار والمفتاح اليدوي مطفأ: 1 1 0، فالمصباح مطفأ.