☰ Year plan · Communication Technology (Arabic)

المحوّل بلغة ⁦VB.NET⁩: النافذة والكود والاختبار

Week 6 · Unit 1 Topic 2: a number converter project with VB.NET: window, controls, properties and code · 3 lessons
3

دوال التحويل الجاهزة: الاختبار بإجابات معروفة

ICT Secondary 3 Term 1, Unit 1, Topic 2: pp. 27–36
الهدفاستعمل ⁦Convert.ToInt32⁩ و⁦Convert.ToString⁩، واختبر المحوّل بإجابات تستطيع التحقق منها يدويًا، وسمِّ المدخلات التي توقفه.
كلمات جديدة
دالة جاهزة ⁦(ready function)⁩ · دالة تأتي مع اللغة فلا نكتب خطواتها بأنفسناحالة اختبار ⁦(test case)⁩ · مدخل مع الإجابة التي نتوقعهااستثناء (exception) · خطأ يوقف البرنامج حين يحدث ما لم يكن متوقعًا⁦Try … Catch⁩ · كتلة تجرّب كودًا، وإذا وقع استثناء نفّذت رسالة آمنة بدلًا منه
الشرح

تؤدي دالتان جاهزتان العمل كله. الدالة ⁦Convert.ToInt32(text, base)⁩ تقرأ نصًا مكتوبًا بالأساس 2 أو 10 أو 16 وتعطي عددًا صحيحًا. والدالة ⁦Convert.ToString(number, base)⁩ تكتب عددًا بأساس ما. ويخرج النظام السداسي عشر بأحرف صغيرة، فيصير 255 إلى ff؛ وإضافة .⁦ToUpper()⁩ تعطي FF كما كتبناه يدويًا في الأسبوعين الرابع والخامس. كيف نعرف أن البرنامج صحيح؟ نختبره بإجابات معروفة حوّلناها يدويًا، وحالة الاختبار مدخل مع الإجابة المتوقعة. ثم نختبر المدخلات الخاطئة أيضًا: مربعًا فارغًا، أو رمزًا غير صالح مثل 2 في عدد ثنائي، أو علامة سالب في عدد ثنائي أو سداسي عشري، أو عددًا عشريًا يزيد على ٢٬١٤٧٬٤٨٣٬٦٤٧. وكل واحد منها يوقف البرنامج باستثناء. وإذا وضعنا السطرين داخل ⁦Try … Catch⁩ أظهر البرنامج رسالة مهذبة بدلًا من التوقف.

الدالةمثالتعطي
⁦Convert.ToInt32(text, base)⁩⁦Convert.ToInt32("3C", 16)⁩60 (عدد)
⁦Convert.ToString(number, base)⁩⁦Convert.ToString(60, 16)⁩3c (نص، والسداسي عشر بأحرف صغيرة)
أمثلة محلولة
المكتوبمنإلىالرسالةمع .⁦ToUpper()⁩
111100ثنائيعشري6060
60عشريسداسي عشري3c3C
3Cسداسي عشريثنائي111100111100
255عشريسداسي عشريffFF
أربعة اختبارات بإجابات نستطيع التحقق منها يدويًا. وهي مترابطة: العدد 60 يساوي 111100 بالثنائي و3C بالسداسي عشر.
المكتوبمنماذا يحدث
(مربع فارغ)أي نظاميتوقف البرنامج
12ثنائييتوقف البرنامج: الرمز 2 ليس رمزًا ثنائيًا
⁦-101⁩ثنائييتوقف البرنامج: لا تُقبل علامة السالب إلا في العشري
3000000000عشرييتوقف البرنامج: أكبر من أن يُحفظ في عدد صحيح من هذا النوع
FFFFFFFFسداسي عشريلا يظهر خطأ، لكن الرسالة ⁦-1⁩، وهي نتيجة غريبة
شُغّلت هذه المدخلات الخاطئة على المعالج العادي.
Vb
1Try
2    number = Convert.ToInt32(typed, fromBase)
3    MessageBox.Show(Convert.ToString(number, toBase).ToUpper())
4Catch ex As Exception
5    MessageBox.Show("Please type a valid number for the system you chose.")
6End Try
Output
D
Please type a valid number for the system you chose.
السطران نفسهما داخل ⁦Try … Catch⁩ مع الأحرف الكبيرة. في التجربة الأولى كُتب 1101 من ثنائي إلى سداسي عشري، وفي الثانية كُتب 12 من ثنائي إلى عشري.
نشاط الفصل

اصنع على الورق جدول اختبار من خمسة صفوف للمحوّل. في كل صف نص مكتوب ونظام «من» ونظام «إلى» والإجابة التي تتوقعها بالتحويل اليدوي. ويجب أن يكون صف واحد على الأقل مدخلًا خاطئًا؛ وبيّن الرسالة التي ينبغي أن تظهر له في نسخة ⁦Try … Catch⁩.

تدرّب
1
ماذا تعطي ⁦Convert.ToString(255, 16)⁩؟
2
يستلم المعالج العادي النص 12 مع تحديد «ثنائي» في «من». ماذا يحدث؟
3
لماذا يستعمل جدول الاختبار إجابات حُسبت يدويًا؟
4
اذكر مدخلين يوقفان المحوّل العادي.