الأسبوع 6 · الوحدة ١ الموضوع الثاني: مشروع محوّل الأعداد بلغة VB.NET: النافذة وأدوات التحكم والخصائص والكود · 3 دروس
2
قراءة كود المحوّل جزءًا جزءًا
ICT Secondary 3 Term 1, Unit 1, Topic 2: pp. 27–36
الهدفاقرأ معالج النقر في المحوّل في خمسة أجزاء، وبيّن عمل كل جزء.
كلمات جديدة
الحدث (event) · شيء يحدث لأداة تحكم، مثل النقرمعالج الحدث (event handler) · كتلة الكود التي تعمل عند وقوع حدثهاالمتغير (variable) · مكان له اسم في الذاكرة يحمل قيمةDim · الكلمة التي تعلن عن متغير فتعطيه اسمه ونوعه
الشرح
يوجد الكود في حدث النقر للزر. الحدث شيء يقع، وهو هنا نقرة، ومعالج الحدث هو كتلة الكود التي تعمل حين يقع. ومعالجنا من خمسة أجزاء. الجزء ١ هو السطر الأول، ويقول إن الكتلة تعمل عند النقر على ButtonConvert. الجزء ٢ يعلن بالكلمة Dim عن أربعة متغيرات: النص المكتوب، والأساس الذي نقرأ به، والأساس الذي نكتب به، والعدد. الجزء ٣ ينظر إلى أزرار الاختيار الثلاثة في «من» ويضبط أساس القراءة: 10 أو 16 أو 2. والجزء ٤ يفعل الشيء نفسه لـ «إلى». أما الجزء ٥ فيستعمل دالتين جاهزتين: الأولى تقرأ النص بأساس «من» وتعطي عددًا، والثانية تكتب هذا العدد بأساس «إلى»، ويعرضه مربع رسالة. ليس للعدد أساس خاص به؛ فهو كمية فقط، والأساسان يحددان طريقة كتابته عند الدخول وعند الخروج.
الجزء
ماذا يفعل
1
السطر الذي يحدد الأداة والحدث اللذين يبدآن الكتلة
2
يعلن عن النص المكتوب وأساس القراءة وأساس الكتابة والعدد
3
يضبط أساس القراءة من أزرار «من»
4
يضبط أساس الكتابة من أزرار «إلى»
5
يقرأ النص ويكتب العدد ويعرض الجواب
أمثلة محلولة
Vb
1' Part 1: this block runs when the button is clicked
2Private Sub ButtonConvert_Click(sender As Object, e As EventArgs) Handles ButtonConvert.Click
3 ' Part 2: four variables
4 Dim typed As String = TextNumber.Text
5 Dim fromBase As Integer
6 Dim toBase As Integer
7 Dim number As Integer
89 ' Part 3: which system is the typed number in?
10 If RadioFromDec.Checked Then
11 fromBase = 1012 ElseIf RadioFromHex.Checked Then
13 fromBase = 1614 Else
15 fromBase = 216 End If
1718 ' Part 4: which system do we want?
19 If RadioToDec.Checked Then
20 toBase = 1021 ElseIf RadioToHex.Checked Then
22 toBase = 1623 Else
24 toBase = 225 End If
2627 ' Part 5: read, write, show
28 number = Convert.ToInt32(typed, fromBase)
29 MessageBox.Show(Convert.ToString(number, toBase))
30End Sub
هذا هو المعالج كاملًا. اقرأه في أجزائه الخمسة. سمّينا المتغير الرابع number لأنه يحمل الكمية لا أساسًا.
بعد الجزء
typed
fromBase
toBase
number
2
1101
0
0
0
3
1101
2
0
0
4
1101
2
10
0
5
1101
2
10
13
تتبّعه على الورق. يكتب المستخدم 1101 ويحدد «ثنائي» في «من» و«عشري» في «إلى». في الجزء ٣ يفشل الاختباران الأولان فيضبط Else الأخير القيمة 2. يعرض الجدول المتغيرات بعد كل جزء. ويعرض مربع الرسالة 13.
المكتوب
من
إلى
الرسالة
1010
لا شيء محدد
عشري
10
1010
عشري
لا شيء محدد
1111110010
فخ: يلتقط Else الأخير في كل جزء حالة عدم تحديد أي زر، فيختار الأساس 2 بصمت. وهاتان التجربتان من الكود الحقيقي.
نشاط الفصل
تتبّع المعالج على الورق للنص المكتوب 75 مع تحديد «عشري» في «من» و«ثنائي» في «إلى». اكتب قيم fromBase وtoBase وnumber بعد الأجزاء ٣ و٤ و٥، والنص الذي يظهر في مربع الرسالة.
تدرّب
1
كم متغيرًا يعلن عنه المعالج، وماذا يحمل كل منها؟
أربعة: النص المكتوب، وأساس القراءة، وأساس الكتابة، والعدد.
2
ما القيمة التي يعطيها الجزء ٤ للمتغير toBase حين يكون RadioToHex محددًا؟
16.
3
أي الدالتين تعمل أولًا، ToInt32 أم ToString، ولماذا؟
تعمل ToInt32 أولًا لأنها تحوّل النص المكتوب إلى عدد، ثم تكتب ToString هذا العدد بالأساس الآخر.
4
لماذا سُمّي المتغير الرابع number وليس fromBase؟
لأنه يحمل كمية لا أساسًا، والاسم الواضح يمنع القارئ من الخلط بين الأمرين.