اقتباس:
المشاركة الأصلية كتبت بواسطة حازم المحمدى
شكرا أستاذ زياد على التواصل و لك منى كل تقدير و إحترام حتى و إن إختلفنا فى الرأى
بالمناسبة أول دخولى للمنتدى سألت عدة أسئلة و ذلك لم يكن لأعرف الإجابة و لكن لكى أحدد مستوى تفكير الأعضاء و أعلم ما إذا كان هناك تفاعل حقيقى و من الذى يقوم بالتفاعل مع الأعضاء الجدد و للعلم مستواك عالى أستاذ زياد
و لكن هنك نقطة كنت أريد مناقشتها معك فى الكود الذى قمت بكتابته و هو كالتالى
Dim A As integer
For A = 1 To 3 Step 0
Label1.text = A
Next
Label2.Text = A
ما القيمة المعروضه فى أداة العنوان Label1 و أداة العنوان Label2 و كم عدد مرات التكرار
أولا عدد مرات التكرار سيكون عدد لا نهائى من المرات و لكن ستكون النتيجة فى كل مرة تكرار هى نفس النتيجة و هى الرقم واحد لذلك سيكون عدد مرات التكرار (1) و ذلك حسب القانون
عدد مرات التكرار = ((النهاية - البداية)/الزيادة )+1
= ((3 - 1 ) / 0 ) + 1
= ( 2 / 0 ) + 1 = ليس لها معنى + 1 = 1
ثانيا فى الأداة Label2 لن يتم عرض أى شىء و ذلك لأن الأمر Label2 جاء بعد نهاية التكرار و هذا التكرار غير متوقف لذلك لن يخرج من الحلقة و لن يتم تنفيذ الكود الذى يلى Next
ثالثا و هو ما يحيرنى أن الأداة Label1 يجب أن يكون بها القيمة 1 و لكن عند التنفيذ عملى لم تكن النتيجة كذلك و لكنها ظلت Label1
السؤال الثانى فى الكود التالى
Dim A As integer
For A = 1 To 3 Step -1
Label1.text = A
Next
Label2.Text = A
ما القيمة المعروضه فى أداة العنوان Label1 و أداة العنوان Label2 و كم عدد مرات التكرار مع ذكر السبب فى كل إجابة
|
======================================
Dim A As integer
For A = 1 To 3 Step 0
Label1.text = A
Next
Label2.Text = A
ما القيمة المعروضه فى أداة العنوان Label1 و أداة العنوان Label2 و كم عدد مرات التكرار
أولا عدد مرات التكرار سيكون عدد لا نهائى من المرات و لكن ستكون النتيجة فى كل مرة تكرار هى نفس النتيجة و هى الرقم واحد لذلك سيكون عدد مرات التكرار (1) و ذلك حسب القانون
عدد مرات التكرار = ((النهاية - البداية)/الزيادة )+1
= ((3 - 1 ) / 0 ) + 1
= ( 2 / 0 ) + 1 = ليس لها معنى + 1 = 1
====================================
أولاً :-
كل الشكر و التقدير على كلامك الجميل و أتمنى ان أكون عند حسن ظنك
ثانياً :-
التعليق :-
عاطف مهدى حسان ( معلم اول (أ) كمبيوتر
إذا كانت قيمة العداد متزايدة [ قيمة النهاية أكبر من قيمة البداية يجب أن تكون قيمة الزيادة موجبة حتى يتم التكرار ] أما إذا كانت قيمة الزيادة صفر فسوف يتم التكرار إلى مالانهاية و لن يتم الخروج من الحلقة التكرارية
و للعلم انه إذا تم التكرار ام لم يتم فإن العداد سيخزن به قيمة البداية و هى [1]
أول تكرار يكون قيمة العداد 1 و سينفذ الجملة Label1.text = A فيظهر قيمة العداد A [1] على الأداة Label1 و يذهب البرنامج لـ Next فيتم زيادة قيمة العداد بمقدار الزيادة التى بعد Step و هى صفر فتظل قيمة العداد A ب 1 و يتم التكرار الثانى و هكذا لمالا نهاية و لن يتم الخروج من الحلقة التكرارية و لن يتوقف التكرار الا بعد عمل Stop Debugging
و لن يعرض البرنامج القيمة [1] بالشكل المتوقع حيث يتم التنفيذ فى جزء من مليون جزء من الثانية و لن نلاحظ القيمة - لذا كان يفضل العرض من خلال صندوق رسالة MsgBox حيث يتوقف البرنامج معه و لا يواصل التكرار التالى إلا بعد الخروج من المربع و لذا ننصح بالكود التالى
Dim A As integer
For A = 1 To 3 Step 0
MsgBox(" While Looping" & A)
Next
MsgBox(" After Looping" & A)
=====================================
و بالنسبة لعدد مرات التكرار فهناك مآخذ عليه
حيث أنك ذكرت أنه يتم حساب عدد مرات التكرار كالتالى
عدد مرات التكرار = ((النهاية - البداية)/الزيادة )+1
= ((3 - 1 ) / 0 ) + 1
= ( 2 / 0 ) + 1 = ليس لها معنى + 1 = 1
ففى السطر الآخير ليس لها معنى المقصود بها ما لانهاية و ما لانهاية +1 = ما لانهاية أى الحلقة لا نهائية و المفهوك من السطر الأخير من كلامك أن ليس لها معنى تكافىء الصفر و هذا غير حقيقى
================================================== ==