اقتباس:
المشاركة الأصلية كتبت بواسطة جناكليس
السلام عليكم
اخى الفاضل الاستاذ عاطف حسان
انا محتار فى اجابة هذا السالسؤال
الرجاء من حضرتك الاجابة علية مع الشرح
for i = 0 to 7
if (i mod 2 =0) thne
1- msgbox i+1
else if(i mod 3 =0) thne
2- msgbox i*1
else if(i mod 5 =0) thne
3- msgbox 2*1
else
4- msgbox i
end if
end sub
|
=========================== Dim i As Integer
For i = 0 To 7
if (i Mod 2 = 0) Then
MsgBox (i + 1)u
ElseIf (i Mod 3 = 0) Then
MsgBox (i * 1)u
ElseIf (i Mod 5 = 0) Then
MsgBox (2 * 1)u
Else
MsgBox (i)u
End If
Next
هذا سؤال متشابه لحد كبير جدا لتمرين اخر الفصل الثالث فى الكتاب المطبوع سابقا
و يطلب منك تحديد المخرجات – أى ما يظهر فى مربع الرسالة MsgBox
اولا التعبيرات الشرطية يتم تفيذها من أعلى لأسفل
أول شرط يتحقق يتم تفيذ البديل الذى يليه مباشرة ثم يتم تجاهل باقى الشروط و البدائل حتى End If
إذا لم يتحقق أى شرط يتم تفيذ البديل الافتراضى فى جملة If و هو البديل الذى يلى Else
إذا لم يتحقق أى شرط و لم يتم إستخدام كلمة Else ل يتم عمل شىء
(1) عندما يذهب البرنامج فى اول مرة لـ For يتم تخزين قيمة البداية Start [0] فى العداد i
و يتم اختبار شرط التكرار – هل I<=End أى هل 0 اقل من او تساوى 7 فيكون ناتج الشرط صحيح فيتم التكرار و التكرار هنا عبارة عن جملة Else If المتداخلة فيتم تفيذها
اول شرط يتحقق لأن 2 Mod 0 = 0 و Mod تشير لباقى القسمة هنا باقى قسمة صفر على 2 يكون 0 فيتم تنفيذ البديل الذى يلى الشرط و هو MsgBox ( I +1) أى طباعة 0+1 فى مربع الرسالة فيكون أول مخرجات (ما يطبعه) البرامج هو 1
(2) ثم يذهب البرنامج لـ Next ليتم زيادة قيمة العداد بقيمة الزيادة الافتراضية و هى 1 لأننا لم نستخدم كلمة Step – فتصبح قيمة I تساوى قيمتها + مقدار الزيادة فتصبح 0+1=1
و يتم اختبار شرط التكرار – هل I<=End أى هل 1 اقل من او تساوى 7 فيكون ناتج الشرط صحيح فيتم التكرار و التكرار هنا عبارة عن جملة Else If المتداخلة فيتم تفيذها
اول شرط لا يتحقق لأن 1 Mod 2 <> 0 فيتم تجاهل البديل الذى يليه
ثانى شرط لا يتحقق لأن 1 Mod 3 <> 0 فيتم تجاهل البديل الذى يليه
ثالث شرط لا يتحقق لأن 1 Mod 5 <> 0 فيتم تجاهل البديل الذى يليه
فيتم تفيذ البديل الإفتراضى و هو الذى يلى Else – MsgBox(i) أى أى طباعة 1 فى مربع الرسالة فيكون ثاى مخرجات (ما يطبعه) البرامج هو 1
(3) ثم يذهب البرنامج لـ Next ليتم زيادة قيمة العداد بقيمة الزيادة الافتراضية و هى 1 لأننا لم نستخدم كلمة Step – فتصبح قيمة I تساوى قيمتها + مقدار الزيادة فتصبح 1+1=2
و يتم اختبار شرط التكرار – هل I<=End أى هل 2 اقل من او تساوى 7 فيكون ناتج الشرط صحيح فيتم التكرار و التكرار هنا عبارة عن جملة Else If المتداخلة فيتم تفيذها
اول شرط يتحقق لأن 2 Mod 2 = 0 فيتم تنفيذ البديل الذى يلى الشرط و هو MsgBox ( I +1) أى طباعة 2+1 فى مربع الرسالة
فيكون ثالث مخرجات (ما يطبعه) البرامج هو 3
(4) ثم يذهب البرنامج لـ Next ليتم زيادة قيمة العداد بقيمة الزيادة الافتراضية و هى 1 لأننا لم نستخدم كلمة Step – فتصبح قيمة I تساوى قيمتها + مقدار الزيادة فتصبح 2+1=3
و يتم اختبار شرط التكرار – هل I<=End أى هل 3 اقل من او تساوى 7 فيكون ناتج الشرط صحيح فيتم التكرار و التكرار هنا عبارة عن جملة Else If المتداخلة فيتم تفيذها
اول شرط لا يتحقق لأن 3 Mod 2 <> 0 فيتم تجاهل البديل الذى يليه
ثانى شرط يتحقق لأن 3 Mod 3 = 0
فيتم تنفيذ البديل الذى يلى الشرط و هو MsgBox ( I *1) أى طباعة 3*1 فى مربع الرسالة
فيكون رابع مخرجات (ما يطبعه) البرامج هو 3
(5) ثم يذهب البرنامج لـ Next ليتم زيادة قيمة العداد بقيمة الزيادة الافتراضية و هى 1 لأننا لم نستخدم كلمة Step – فتصبح قيمة I تساوى قيمتها + مقدار الزيادة فتصبح 3+1=4
و يتم اختبار شرط التكرار – هل I<=End أى هل 4 اقل من او تساوى 7 فيكون ناتج الشرط صحيح فيتم التكرار و التكرار هنا عبارة عن جملة Else If المتداخلة فيتم تفيذها
اول شرط يتحقق لأن 4 Mod 2 = 0
فيتم تنفيذ البديل الذى يلى الشرط و هو MsgBox ( I +1) أى طباعة 4+1 فى مربع الرسالة
فيكون خامس مخرجات (ما يطبعه) البرامج هو 5
(6) ثم يذهب البرنامج لـ Next ليتم زيادة قيمة العداد بقيمة الزيادة الافتراضية و هى 1 لأننا لم نستخدم كلمة Step – فتصبح قيمة I تساوى قيمتها + مقدار الزيادة فتصبح 4+1=5
و يتم اختبار شرط التكرار – هل I<=End أى هل 1 اقل من او تساوى 7 فيكون ناتج الشرط صحيح فيتم التكرار و التكرار هنا عبارة عن جملة Else If المتداخلة فيتم تفيذها
اول شرط لا يتحقق لأن 5 Mod 2 <> 0 فيتم تجاهل البديل الذى يليه
ثانى شرط لا يتحقق لأن 5 Mod 3 <> 0 فيتم تجاهل البديل الذى يليه
ثالث شرط يتحقق لأن 5 Mod 5 <> 0
فيتم تنفيذ البديل الذى يلى الشرط و هو MsgBox ( 2*I ) أى طباعة 2*1 فى مربع الرسالة
فيكون سادس مخرجات (ما يطبعه) البرامج هو 2
(7) ثم يذهب البرنامج لـ Next ليتم زيادة قيمة العداد بقيمة الزيادة الافتراضية و هى 1 لأننا لم نستخدم كلمة Step – فتصبح قيمة I تساوى قيمتها + مقدار الزيادة فتصبح 5+1=6
و يتم اختبار شرط التكرار – هل I<=End أى هل 6 اقل من او تساوى 7 فيكون ناتج الشرط صحيح فيتم التكرار و التكرار هنا عبارة عن جملة Else If المتداخلة فيتم تفيذها
اول شرط يتحقق لأن 6 Mod 2 = 0
فيتم تنفيذ البديل الذى يلى الشرط و هو MsgBox ( i+1 ) أى طباعة 6+1 فى مربع الرسالة
فيكون سابع مخرجات (ما يطبعه) البرامج هو 7
(8) ثم يذهب البرنامج لـ Next ليتم زيادة قيمة العداد بقيمة الزيادة الافتراضية و هى 1 لأننا لم نستخدم كلمة Step – فتصبح قيمة I تساوى قيمتها + مقدار الزيادة فتصبح 6+1=7
و يتم اختبار شرط التكرار – هل I<=End أى هل 7 اقل من او تساوى 7 فيكون ناتج الشرط صحيح فيتم التكرار و التكرار هنا عبارة عن جملة Else If المتداخلة فيتم تفيذها
اول شرط لا يتحقق لأن 7 Mod 2 <> 0 فيتم تجاهل البديل الذى يليه
ثانى شرط لا يتحقق لأن 7 Mod 3 <> 0 فيتم تجاهل البديل الذى يليه
ثالث شرط لا يتحقق لأن 7 Mod 5 <> 0 فيتم تجاهل البديل الذى يليه
فيتم تفيذ البديل الإفتراضى و هو الذى يلى Else – MsgBox(i) أى أى طباعة i فى مربع الرسالة فيكون ثامن مخرجات (ما يطبعه) البرامج هو 7
(9) ثم يذهب البرنامج لـ Next ليتم زيادة قيمة العداد بقيمة الزيادة الافتراضية و هى 1 لأننا لم نستخدم كلمة Step – فتصبح قيمة I تساوى قيمتها + مقدار الزيادة فتصبح 7+1=8
و يتم اختبار شرط التكرار – هل I<=End أى هل 8 اقل من او تساوى 7 فيكون ناتج الشرط خطأ فيتوقف التكرار