دروس دورة برنامج الفجوال بيسك 6 من إعداد الأستاذ خليل إبراهيم عبد الله

درس عمل مسابقة تعليمية بسيطة

نريد تنفيذ مسابقة  تقوم باختبار قدرة معرفة أرقام تقبل القسمة و يحسب عدد الإجابات الصحيحة و الخاطئة

قم بفتح مشروع جديد و أدرج فيه الأدوات لتحصل على شكل مثل التالي أو حسبما ترغب:

قم بتغيير التسمية  لتصبح بالشكل التالي :

قم بتنشيط الأزرار التسعة (بدون سؤال جديد ) و قم بتغيير خاصية Enabled للأزرار إلى False

جرب تشغيل البرنامج يفترض انه بهذا الشكل :

الآن  يجب أن نفكر في الكود

الكود الأول في General  :

 يجب كتابة كود يقوم بكتابة أرقام عشوائية صحيحة في الأزرار الثمانية فنحتاج إلى ثمانية متغيرات و هي لجلب أرقام عشوائية  صحيحة و أيضا نحتاج أن تكون هذه المتغيرات محفوظة في ذاكرة الكمبيوتر فيجب أن نعرفها  في General اضغط  ضغطا مزدوج و ثم اختر  General  أو قم بما يلي اضغط ضغطا مزدوجا على الفورم ثم اذهب لأعلى جملة  Private Sub Form_Load()  و اكتب الشفرة التالية فوقعه:

Dim a1, a2, a3, a4, a5, a6, a7, a8 As Integer

Private Sub Form_Load()

End Sub
 

هذا معناه أننا قمنا بتعريف ثمانية متغيرات من النوع الرقمي أسماء المتغيرات هي  a1, a2, a3, a4, a5, a6, a7, a8

الكود الثاني في زر سؤال جديد  :

هنا نعطيه شفرة يقوم بجلب 8 أرقام عشوائية صحيحة و يكتبها في الأزرار و هو التالي قم بالضغط المزدوج لكتابة الكود في سؤال جديد :

Private Sub Command10_Click()
Randomize
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = True
a1 = Int(Rnd * 101)
a2 = Int(Rnd * 101)
a3 = Int(Rnd * 101)
a4 = Int(Rnd * 101)
a5 = Int(Rnd * 101)
a6 = Int(Rnd * 101)
a7 = Int(Rnd * 101)
a8 = Int(Rnd * 101)
Command1.Caption = a1
Command2.Caption = a2
Command3.Caption = a3
Command4.Caption = a4
Command5.Caption = a5
Command6.Caption = a6
Command7.Caption = a7
Command8.Caption = a8
End Sub

 

الجــــــــــملة

المــــــــــــــــــــــــــــــــــــــــعنى
Randomize هذه تفيد عدم تكرار الرقم العشوائي
Command1.Enabled = True لتفعيل تشغيل الزر
Command2.Enabled = True لتفعيل تشغيل الزر
Command3.Enabled = True لتفعيل تشغيل الزر
Command4.Enabled = True لتفعيل تشغيل الزر
Command5.Enabled = True لتفعيل تشغيل الزر
Command6.Enabled = True لتفعيل تشغيل الزر
Command7.Enabled = True لتفعيل تشغيل الزر
Command8.Enabled = True لتفعيل تشغيل الزر
Command9.Enabled = True لتفعيل تشغيل الزر

a1 = Int(Rnd * 101)

المتغير قيمته رقم عشوائي صحيح اقل من 101

a2 = Int(Rnd * 101)

المتغير قيمته رقم عشوائي صحيح اقل من 101
a3 = Int(Rnd * 101) المتغير قيمته رقم عشوائي صحيح اقل من 101
a4 = Int(Rnd * 101) المتغير قيمته رقم عشوائي صحيح اقل من 101
a5 = Int(Rnd * 101) المتغير قيمته رقم عشوائي صحيح اقل من 101
a6 = Int(Rnd * 101) المتغير قيمته رقم عشوائي صحيح اقل من 101
a7 = Int(Rnd * 101) المتغير قيمته رقم عشوائي صحيح اقل من 101
a8 = Int(Rnd * 101) المتغير قيمته رقم عشوائي صحيح اقل من 101
Command1.Caption = a1 الكتابة بداخل الزر الأول و جعل قيمته قيمة المتغير الأول a1
Command2.Caption = a2 الكتابة بداخل الزر الثاني  و جعل قيمته قيمة المتغير الأول a2
Command3.Caption = a3 الكتابة بداخل الزر الثالث  و جعل قيمته قيمة المتغير الأول a3
Command4.Caption = a4 الكتابة بداخل الزر الرابع  و جعل قيمته قيمة المتغير الأول a4
Command5.Caption = a5 الكتابة بداخل الزر الخامس  و جعل قيمته قيمة المتغير الأول a5
Command6.Caption = a6 الكتابة بداخل الزر السادس  و جعل قيمته قيمة المتغير الأول a6
Command7.Caption = a7 الكتابة بداخل الزر السابع  و جعل قيمته قيمة المتغير الأول a7
Command8.Caption = a8 الكتابة بداخل الزر الثامن  و جعل قيمته قيمة المتغير الأول a8

الكود الثالث في الزر Command1 :

  اضغط ضغطا مزدوجا على الزر Command1  و اكتب ما يلي :

Private Sub Command1_Click()

If a1 Mod 2 = 0 Then
Label4 = Val(Label4.Caption) + 1
Else
Label3 = Val(Label3.Caption) + 1
End If
Command1.Enabled = False

End Sub

 

الجــــــــــملة

المــــــــــــــــــــــــــــــــــــــــعنى

If a1 Mod 2 = 0 Then

إذا  كان قيمة باقي قسمة  المتغير a1  على 2 تساوي 0 فإن .

Label4 = Val(Label4.Caption) + 1  يتم تنفيذ هذه الجملة إذا تحقق الشرط السابق و هي تجمع درجة إجابة صحيحة أي يجمع 1على الدرجة الموجودة في الليبل الرابع المخصص لعدد الإجابات الصحيحة .
Else معناها و إلا و يقصد بها في حال عدم تنفيذ الشرط ينفذ الشرط الذي تحت .
Label3 = Val(Label3.Caption) + 1  يتم تنفيذ هذه الجملة إذا لم تحقق الشرط السابق و هي تجمع درجة إجابة خاطئة  أي يجمع 1 على الدرجة الموجودة في الليبل الثالث المخصص لعدد الإجابات الخاطئة .
End If جملة إجبارية لإنهاء جملة الشرط معناها إنهاء جملة الشرط
Command1.Enabled = False لإلغاء تشغيل الزر مرة أخرى .

كرر الكود السابق في الأزرار الباقية ليكون بالشكل التالي :

Private Sub Command2_Click()
If a2 Mod 2 = 0 Then
Label4 = Val(Label4.Caption) + 1
Else
Label3 = Val(Label3.Caption) + 1
End If
Command2.Enabled = False
End Sub

 


Private Sub Command3_Click()
If a3 Mod 2 = 0 Then
Label4 = Val(Label4.Caption) + 1
Else
Label3 = Val(Label3.Caption) + 1
End If
Command3.Enabled = False
End Sub

 


Private Sub Command4_Click()
If a4 Mod 2 = 0 Then
Label4 = Val(Label4.Caption) + 1
Else
Label3 = Val(Label3.Caption) + 1
End If
Command4.Enabled = False
End Sub

 


Private Sub Command5_Click()
If a5 Mod 2 = 0 Then
Label4 = Val(Label4.Caption) + 1
Else
Label3 = Val(Label3.Caption) + 1
End If
Command5.Enabled = False
End Sub

 


Private Sub Command6_Click()
If a6 Mod 2 = 0 Then
Label4 = Val(Label4.Caption) + 1
Else
Label3 = Val(Label3.Caption) + 1
End If
Command6.Enabled = False
End Sub

 


Private Sub Command7_Click()
If a7 Mod 2 = 0 Then
Label4 = Val(Label4.Caption) + 1
Else
Label3 = Val(Label3.Caption) + 1
End If
Command7.Enabled = False
End Sub

 


Private Sub Command8_Click()
If a8 Mod 2 = 0 Then
Label4 = Val(Label4.Caption) + 1
Else
Label3 = Val(Label3.Caption) + 1
End If
Command8.Enabled = False
End Sub

 

الكود الثالث في الزر Command9 المكتوب عليه لا توجد أرقام :

  اضغط ضغطا مزدوجا على الزر Command9  و اكتب ما يلي :

Private Sub Command9_Click()
Dim a As Integer

If Command1.Enabled = True Then
If a1 Mod 2 = 0 Then a = 1
End If

If Command2.Enabled = True Then
If a2 Mod 2 = 0 Then a = a + 1
End If

If Command3.Enabled = True Then
If a3 Mod 2 = 0 Then a = a + 1
End If

If Command4.Enabled = True Then
If a4 Mod 2 = 0 Then a = a + 1
End If


If Command5.Enabled = True Then
If a5 Mod 2 = 0 Then a = a + 1
End If

If Command6.Enabled = True Then
If a6 Mod 2 = 0 Then a = a + 1
End If

If Command7.Enabled = True Then
If a7 Mod 2 = 0 Then a = a + 1
End If


If Command8.Enabled = True Then
If a8 Mod 2 = 0 Then a = a + 1
End If

If a > 0 Then
showmsg = MsgBox("اكتشف أعداد أخرى ، حاول مرة أخرى", vbOKOnly, "رسالة البرنامج")
Label3 = Val(Label3.Caption) + 1
Else
Label4 = Val(Label4.Caption) + 1
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = True
showmsg = MsgBox("ممتاز لقد أجبت عن جميع الأعداد", vbOKOnly, "رسالة البرنامج")
End If

End Sub

و هذا شرح للكود

المعنى

الجملة

تعريف متغير اسمه a من النوع الرقمي فائدته لحساب عدد الإجابات الصحيحة أي الأرقام التي لم يخترها المستخدم سهوا مثلا.

Dim a As Integer

هنا جملة شرطية إذا كان الزرCommand1 مفعل  ينفذ الشرط  إذا كان باقي قسمة المتغير a1 مقسوما على 2 يساوي صفر فإنه يجعل قيمة المتغير تساوي 1

If Command1.Enabled = True Then
If a1 Mod 2 = 0 Then a = 1
End If

هنا جملة شرطية إذا كان الزرCommand2 مفعل  ينفذ الشرط  إذا كان باقي قسمة المتغير a2 مقسوما على 2 يساوي صفر فإنه يجعل قيمة المتغير تساوي مجموع قيمة المتغير a  السابقة و نضيف عليها 1

If Command2.Enabled = True Then
If a2 Mod 2 = 0 Then a = a + 1
End If

هنا جملة شرطية إذا كان الزرCommand3 مفعل  ينفذ الشرط  إذا كان باقي قسمة المتغير a3 مقسوما على 2 يساوي صفر فإنه يجعل قيمة المتغير تساوي مجموع قيمة المتغير a  السابقة و نضيف عليها 1

If Command3.Enabled = True Then
If a3 Mod 2 = 0 Then a = a + 1
End If

هنا جملة شرطية إذا كان الزرCommand4 مفعل  ينفذ الشرط  إذا كان باقي قسمة المتغير a4 مقسوما على 2 يساوي صفر فإنه يجعل قيمة المتغير تساوي مجموع قيمة المتغير a  السابقة و نضيف عليها 1

If Command4.Enabled = True Then
If a4 Mod 2 = 0 Then a = a + 1
End If

هنا جملة شرطية إذا كان الزرCommand5 مفعل  ينفذ الشرط  إذا كان باقي قسمة المتغير a5 مقسوما على 2 يساوي صفر فإنه يجعل قيمة المتغير تساوي مجموع قيمة المتغير a  السابقة و نضيف عليها 1

If Command5.Enabled = True Then
If a5 Mod 2 = 0 Then a = a + 1
End If

هنا جملة شرطية إذا كان الزرCommand6 مفعل  ينفذ الشرط  إذا كان باقي قسمة المتغير a6 مقسوما على 2 يساوي صفر فإنه يجعل قيمة المتغير تساوي مجموع قيمة المتغير a  السابقة و نضيف عليها 1

If Command6.Enabled = True Then
If a6 Mod 2 = 0 Then a = a + 1
End If

هنا جملة شرطية إذا كان الزرCommand7 مفعل  ينفذ الشرط  إذا كان باقي قسمة المتغير a7 مقسوما على 2 يساوي صفر فإنه يجعل قيمة المتغير تساوي مجموع قيمة المتغير a  السابقة و نضيف عليها 1

If Command7.Enabled = True Then
If a7 Mod 2 = 0 Then a = a + 1
End If

هنا جملة شرطية إذا كان الزرCommand8 مفعل  ينفذ الشرط  إذا كان باقي قسمة المتغير a8 مقسوما على 2 يساوي صفر فإنه يجعل قيمة المتغير تساوي مجموع قيمة المتغير a  السابقة و نضيف عليها 1

If Command8.Enabled = True Then
If a8 Mod 2 = 0 Then a = a + 1
End If
هنا جملة شرطية إذا المتغير a أكبر من 0 أي إذا وجد زر لم يختاره المستخدم. If a > 0 Then
 
يرسل مسج  اكتشف أعداد أخرى ، حاول مرة أخرى و جملة vbOKOnly الرسالة بها زر OK و الجملة رسالة البرنامج هي عنوان الرسالة . showmsg = MsgBox("اكتشف أعداد أخرى ، حاول مرة أخرى", vbOKOnly, "رسالة البرنامج")
جعل قيمة Label3 تساوي أن يحول قيمة Label3 السابقة إلى رقم و يجمع عليه 1 . اي يزيد إجابة خاطئة Label3 = Val(Label3.Caption) + 1
معنها  إذا لم يتنفذ الشرط  السابق و هو  a > 0 ينفذ   الجمل التي بالسطر الذي تحت Else . Else
جعل قيمة Label4 تساوي أن يحول قيمة Label4 السابقة إلى رقم و يجمع عليه 1 .أي يزيد إجابة صحيحة . Label4 = Val(Label4.Caption) + 1
يلغي تفعيل الزر الأول أي لا يمكن أن يضغط عليه

المستخدم و بالمثل لباقي الأزرار

Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
يفعل زر سؤال جديد Command10.Enabled = True
رسل مسج  ممتاز لقد أجبت عن جميع الأعداد و جملة vbOKOnly الرسالة بها زر OK و الجملة رسالة البرنامج هي عنوان الرسالة . showmsg = MsgBox("ممتاز لقد أجبت عن جميع الأعداد", vbOKOnly, "رسالة البرنامج")
ينهي جملة الشرط و هي إجبارية إذا تعددت الأسطر End If

هكذا اكتمل البرنامج و سنعمل على تطويره إنشاء الله .

 

المطلوب الآن :  تصميم البرنامج السابق مع تنسيقه بشكل جميل و كتابة اسم الصانع عليه

 

حقوق الطبع محفوظة لجزيرة الرياضيات@2006