recent
أخبار ساخنة

الأمر For في فيجوال بيسيك (For Loop)


شرح الأمر For في فيجوال بيسيك

تستخدم الدورة For في برنامج الVisual Basic  في العديد من التطبيقات البرمجية التي تتطلب تكرار متغيرات أو نصوص أو حتى أعداد مختلفة. كما وتستخدم في البحث عن قيم معينة واستخراج المطلوب منها، مثل البحث عن جميع الأعداد الزوجية أو الفردية الواقعة بين عددين مختلفين.

الصورة العامة للدورة For في برنامج الفيجوال بيسيك Visual Basic

For اسم المتغير =العدد  من to الى العدد
المنطقة التي ينطبق عليها التكرار
Next اسم المتغير

ما هي حالات تطبيق الدورة For في برنامج الفيجوال بيسيك؟

أولاً:- تطبيق الدورة For على النصوص For Loops on Texts

في هذه الحالة يتم تكرار النص بعدد المرات التي يتم تحديدها في معالم الدورة Attributes كما يلي:
مثال: قم بتكرار العبارة النصية I Like Visual Basic عشرة مرات؟
For i =1 من to 10
توقف عن تكرار العبارة التي في الأسفل عندما تصبح قيمة i أكبر من العدد 10
1
Print “I Like Visual Basic”
اطبع العبارة I Like Visual Basic
2
Next i
نهاية منطقة التكرار التابعة للدورة (القفلة)
3

كيف يتم قراءة البرنامج السابق من قِبَل المترجم Compiler الخاص بال Visual Basic؟

كما نلاحظ، فإن قيمة المتغير i الابتدائية هي 1، ثم يقوم المترجم الخاص ببرنامج الفيجوال بيسيك بفحص فيما إذ كانت قيمة المتغير الصحيح i أقل من أو تساوي العدد 10 أم لا؟ فإذا كانت قيمة المتغير أقل من العدد 10 سيتم تنفيذ العبارة التي تليها مباشرة والواقعة بين الكلمة For والكلمة Next أي الأمر البرمجي Print “I Like Visual Basic” ثم يصل الى العبارة البرمجية Next i والتي تقوم بزيادة قيمة المتغير بمقدار عدد واحد صحيح (أي تصبح قيمة i تساوي 2) ونعود من جديد الى البداية For وهكذا.
قد نتساءل، ماذا يحدث عندما تصل قيمة المتغير i الى العدد 10 في المثال السابق؟
كما ذكرنا من قبل، يقوم المترجم الخاص ببرنامج الفيجوال بيسيك بفحص فيما إذ كانت قيمة المتغير الصحيح i أقل من أو تساوي العدد 10 أم لا؟ فإذا كان الجواب لا، (أي  >10i) سيتم الخروج من الدورة ة مباشرة والانتقال الى الأوامر البرمجية التي ما بعد العبارة Next وذلك إن وجدت أوامر أخرى.

ثانياً:- تطبيق الدورة For على المتغيرات For Loops on Variables

وهي الحالة الأكثر شيوعا، حيث يتم في هذه الحالة التعامل مع المتغير i (العداد) مباشرة وخاصة في حالة البحث واستخراج القيم وحتى حل المعادلات المتكررة كالمتتاليات والمتسلسلات الحسابية والهندسية وغيرها. الأمثلة التالية توضح العديد من الأفكار التي يمكن استخدام هذه الحالة فيها:

مثال: اطبع الأعداد الصحيحة على شاشة الحاسوب من العدد صفر وحتى العدد 5؟

For i =0 من to 5
توقف عن تكرار العبارة التي في الأسفل عندما تصبح قيمة i أكبر من العدد 5
1
Print i
اطبع قيمة المتغير i
2
Next i
نهاية منطقة التكرار التابعة للدورة (القفلة)
3

كي نفهم كيف يقوم المترجم الخاص بالفيجوال بيسيك بتفسير الكود البرمجي السابق سنبدأ بقيمة المتغير i الابتدائية والتي تساوي 0 (هل i > 5) ؟ الجواب لا، نكمل الى الأمر الذي يليه Print i أي سيطبع القيمة 0 على الشاشة، ثم يقوم الأمر البرمجي Next i بإضافة عدد واحد صحيح للمتغير i ليصبح قيمة i = 2 ونعود من جديد لنسأل (هل i > 5) ؟ الجواب لا، إذن نكمل الى الأمر الذي يليه وهكذا حتى تصبح قيمة المتغير i = 6 لنعود ونسأل من جديد (هل i > 5)؟ الجواب نعم، وعليه لا نكمل تنفيذ الأوامر التي بداخل الدورة (أي الواقعة بين الأمر For والأمر Next). ومن هنا نتوقف عن اكمال طباعة الأعداد بعد طباعة العدد 5، ليكمل المترجم قراءة الأوامر الأخرى التي تقع بعد الأمر البرمجي Next i (إن وجدت)، كما سنرى في المثال التالي.

مثال: ما ناتج تنفيذ الكود التالي في برنامج الفيجوال بيسيك؟

For i =0 من to 3
1
Print 2*i
2
Next i
3
Print “The Final Value of i = ”
4
Print i
5

سيقوم البرنامج السابق بطباعة مضاعفات العدد 2، ابتداءً من العدد 0 وحتى العدد 6. بعد الانتهاء من الدورة For والخروج منها سيتم تنفيذ الأمر الذي يلي الأمر البرمجي Next i ثم يليهما طباعة قيمة ناتج المتغير i والذي سيظهر القيمة 4 على الشاشة، حيث أن آخر قيمة اكتسبها المتغير i والتي أدت لخروجه من الدورة.
والشكل التالي يوضح مخرجات البرنامج في بيئة الفيجوال بيسيك:


يمكن أيضا التعديل على البرنامج السابق ليتم عرض العبارة The Final Value of i =4 في سطر واحد وذلك بكتابة الأمر البرمجي التالي:
Print “The Final Value of i = ” ; i
وهنا يأتي دور الفاصلة المنقوطة Semicolon لتنفيذ الأوامر البرمجية وطباعتها على سطر واحد جنبا الى جنب.

كيف أطبع جدول الضرب لأي عدد في برنامج الفيجوال بيسيك عن طريق الأمر For كما في الشكل التالي؟


Dim x As Integer
عرف المتغير الصحيح x
1
Dim y As Integer
عرف المتغير الصحيح y
2
Dim z As Integer
عرف المتغير الصحيح z
3
z = Val(Text1.Text)
قم بتخزين القيمة المدخلة في Text1 ووضعها في المتغير الصحيح z
4
x = Val(Text2.Text)
قم بتخزين القيمة المدخلة في Text2 ووضعها في المتغير الصحيح x
5
y = Val(Text3.Text)
قم بتخزين القيمة المدخلة في Text3 ووضعها في المتغير الصحيح y
6
For i = x To y
اجعل قيمة المتغير الصحيح مساوية لقيمة المتغير x.
توقف عن تكرار العبارة التي في الأسفل، (رقم 8)، وذلك عندما تصبح قيمة i أكبر من قيمة المتغير y.
7
Print z; "X"; i; " = "; z * i
اطبع قيمة المتغير z يليها إشارة الضرب X يليها قيمة المتغير i يليها إشارة المساواة =  وأخيرا قيمة حاصل ضرب المتغيرين z و  i. (لاحظ إشارة النجمة * والتي تشير الى عملية الضرب في برنامج الـ Visual Basic)
8
Next i
زيادة قيمة المتغير i بمقدار عدد واحد صحيح وقفل الدورة For
9

أسئلة شائعة عن الدورة For في بيئة الفيجوال بيسيك

كيف أقوم بطباعة الأعداد العشرية المتتالية في برنامج الفيجوال بيسيك؟

ذلك بقسمة قيمة المتغير i على الأعداد التي تخدم تلك الغاية، فمثلاً لطباعة الأعداد العشرية المتتالية 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 نقوم بقسمة المتغير i على العدد 10 كما في البرنامج التالي:
For i = 1 to 8
1
Print i / 10
2
Next i
3

ما هي طريقة استخراج وطباعة الأعداد الزوجية في برنامج فيجوال بيسيك؟

كما نعلم، فإن الأعداد الزوجية هي الأعداد التي تقبل القسمة على العدد 2 بدون باقي. حيث أن صورتها الرياضية العامة هي 2k  حيث ( k: أي عدد صحيح). وعليه، بعد تحديد قيمة البداية والنهاية للمتغير i في الدورة For أي:
For i = بداية to نهاية
نضع ذلك الشرط البرمجي والذي ينص على أننا فقط نريد طباعة الأعداد التي باقي قسمتها على العدد 2 يساوي صفر. بالطبع سندرج استخدام العبارة البرمجية الشرطية if داخل الدورة For كما في الشيفرة البرمجية (النص البرمجي) التالي، والذي سيقوم باستخراج وطباعة جميع الأعداد الزوجية من العدد 5 وحتى العدد 20؟
For i = 5 to 20
تعريف المدى الذي سيقوم المتغير i بأخذ قيمه
1
If i Mod 2 = 0 Then
إذا كان باقي قسمة i على 2 يساوي صفراً
2
Print i
اطبع قيم i
3
End if
انتهاء صلاحية if
4
Next i
قفل الدورة For بعد زيادة i بمقدار وحدة واحدة
5

ما هي طريقة استخراج وطباعة الأعداد الفردية في برنامج فيجوال بيسيك؟

على عكس السؤال السابق، فهنا يكون الشرط البرمجي هو طباعة الأعداد التي لا تقبل القسمة على العدد 2 من دون باقي، أي طباعة الأعداد التي ناتج قسمتها على العدد 2 لا تساوي 0 كما في النص البرمجي التالي والذي سيقوم بطباعة الأعداد الفردية من العدد 1 وحتى العدد 30:
For i = 1 to 30
تعريف المدى الذي سيقوم المتغير i بأخذ قيمه
1
If i Mod 2 <> 0 Then
إذا كان باقي قسمة i على 2 لا يساوي صفراً
2
Print i
اطبع قيم i
3
End if
انتهاء صلاحية if
4
Next i
قفل الدورة For بعد زيادة i بمقدار وحدة واحدة
5

ما هي طريقة طباعة الأعداد الأولية في برنامج فيجوال بيسيك ضمن فترة محددة؟

ما هي الأعداد الأولية؟

إن تعريف الأعداد الأولية Prime Numbers هي جميع الأعداد التي لا تقبل القسمة الا على العدد واحد وعلى نفسها فقط من دون باقي. وتمتاز جميعها بأنها أعداد فردية عدا العدد 2. حيث يعتبر العدد 2 هو عدد أولي.
ملاحظة: العدد 1 هو عدد غير أولي.

طريقة استخراج وطباعة الأعداد الأولية الواقعة في فترة معينة

في هذه الحالة البرمجية الخاصة، سنقوم باستخدام وتوظيف دورتين؛ الأولى تمثل الفترة التي نريد استخراج وطباعة الأعداد الفردية منها. أما الدورة الثانية فهي للعدد المقسوم عليه والتي تقع بين العددين الصحيحين الواقعين في الدورة الأولى. في الأسفل الكود البرمجي الخاص بطباعة الأعداد الفردية الواقعة في فترة من 1 وحتى العدد 500:
Dim i, j, p As Integer
عرف المتغيرات i  و j و p كأعداد صحيحة
1
For i = 1 to 500
تعريف المدى الذي سيقوم المتغير i بأخذ قيمه
2
If i <> 1 Then
إذا كانت قيمة i لا تساوي العدد واحد
3
p = 1
اجعل قيمة المتغير p تساوي 1
4
For j = 2 To i - 1
تعريف المدى الذي سيقوم المتغير j بأخذ قيمه
5
If i Mod j = 0 Then
إذا كان باقي قسمة i على j يساوي صفراً
6
p = p * 0
اجعل قيمة المتغير p تساوي صفرا (غير أولي)
7
End if
انتهاء شرط باقي القسمة (رقم 6)
8
Next j
قفل الدورة For بعد زيادة j بمقدار وحدة واحدة
9
If p = 1 Then
إذا كانت قيمة p تساوي واحد
10
Print i
اطبع قيم i
11
End if
انتهاء شرط طباعة الأعداد الأولية
12
End if
نهاية الجملة الشرطية رقم 3
13
Next i
قفل الدورة For بعد زيادة i بمقدار وحدة واحدة
14

سؤال للتفكير؟

كيف نقوم باستخراج وطباعة جميع الأعداد الزوجية الواقعة بين العدد 6 والعدد 20؟ (أي لا نريد أن يظهر أي من العدد 6 والعدد 20 في الناتج المطبوع).
author-img
العلم للجميع

تعليقات

18 تعليقًا
إرسال تعليق
  • Unknown photo
    Unknown4 يونيو 2020 في 6:09 م

    طريقه عمل كود جمع وطرح وقسمه وضرب عددين في برنامج الفيجول بيزك باستخدام امر التكرار for next

    حذف التعليق
    • العلم للجميع photo
      العلم للجميع6 يونيو 2020 في 5:49 م

      ليس هنالك ضرورة لاستخدام الأمر For لحساب عملية واحدة على عددين، لكن وإن لا بد، فهذا الكود البرمجي سيفي بالغرض:
      Private Sub Command1_Click()
      Dim x As Double
      Dim y As Double
      Dim i As Integer
      x = Val(Text1.Text)
      y = Val(Text2.Text)

      For i = 1 To 4
      If i = 1 Then
      Print "x + y = "; x + y
      Else
      If i = 2 Then
      Print "x - y = "; x - y
      Else
      If i = 3 Then
      Print "x * y = "; x * y
      Else
      If i = 4 Then
      Print "x / y = "; x / y
      End If
      End If
      End If
      End If
      Next i
      End Sub

      حذف التعليق
    • Unknown photo
      Unknown23 يوليو 2020 في 1:07 م

      اكتب برنامج بلغة فيجوال بيسك دوت نت لإيجاد حل المعادلة بطريقة for و y=3i +5i +7i

      حذف التعليق
      • العلم للجميع photo
        العلم للجميع31 يوليو 2020 في 9:42 ص

        عزيزي الكريم، السؤال لديه محتوى ناقص!! فالمعادلة y=3i+5i+7i هي y=15i لذلك ما هل المتغيرات المطلوب ايجادها هنا ؟؟

        حذف التعليق
      • Unknown photo
        Unknown23 يوليو 2020 في 1:08 م

        ممكن حلة بأسرع وقت وجزيل الشكر

        حذف التعليق
        • Unknown photo
          Unknown19 سبتمبر 2020 في 5:53 ص

          أريد خاتمةاو إستنتاج بخصوص المقاومة الضوئية من فضلك

          حذف التعليق
          • Unknown photo
            Unknown12 مارس 2021 في 11:01 ص

            اذا ممكن احتاج حل ايجاد المتواليه بلغة فيجوال بيسك باستخدام التكرار whiles=(1/2+2/3+3/4

            حذف التعليق
          • Unknown photo
            Unknown8 مايو 2021 في 10:53 م

            اريد حل Dim I,c As integer
            for i=0to 17 step 3
            c=c+i+3
            Next
            Msgbox(c)

            حذف التعليق
          • sara photo
            sara25 سبتمبر 2021 في 1:54 ص

            1
            Module Module1
            Sub Main()
            Dim X As Integer = 7
            Dim Y As Integer = -1

            حذف التعليق
            • غير معرف12 نوفمبر 2022 في 2:33 ص

              برنامج بحلقة for يقوم بطباعة القيمة

              Fori=1to5
              علما بأن i<3

              حذف التعليق
            • Unknown photo
              Unknown26 ديسمبر 2021 في 8:00 ص

              برنامج يقوم بإضافه ارقام عشوائيه وان وجدت ارقام زوجيه تتحول الي صفر؟

              حذف التعليق
              • Unknown photo
                Unknown6 يناير 2022 في 1:14 م

                Add:

                Dim myitem
                myitem = TextBox1.Text
                ListBox1.Items.Add(myitem)

                even:

                Dim max As Integer
                max = 0
                For a As Integer = 0 To (ListBox1.Items.Count) - 1
                If ListBox1.Items(a) Mod 2 = 0 Then
                ListBox1.Items.Remove(ListBox1.Items(a))
                (ListBox1.Items.Insert(a, 0

                حذف التعليق
              • Unknown photo
                Unknown27 يناير 2022 في 2:43 م

                برنامج لطباعه الاعداد الزوجيه بين 4 و 40

                حذف التعليق
                • غير معرف29 نوفمبر 2022 في 7:50 ص

                  1 - اكتب برنامج بلغة فيجوال بيسك لطباعة جميع الاعداد الكاملة الواقعة ما بين 1 - 30 حيث ان العدد الكامل هو ذلك العدد الذ مجموع عوامله يساوي ضعف العدد مثال العدد 6 هو عدد كامل لان عوامله هي 1,2,3,6 ومجموعها = ١٢

                  حذف التعليق
                  • غير معرف9 أبريل 2023 في 5:51 م

                    اكتب برنامج لطباعة الاعداد من 1الى 5 بحلقة for next

                    حذف التعليق
                    • akeed alhara photo
                      akeed alhara11 أبريل 2024 في 10:08 ص

                      السلام عليكم شلونك اخي انا اريد منك كود عالفيجوال بيسك 6 الكود هو ان يطبع 8 اصفار في صف واحد وكل ما ينزل سطر يزيد الصفر الثامن الى 1 وينزل سطر ويزيد الصفر الثامن الى 2 وهكذا ويستمر بارقام تسلسلية وليست عشوائية ويطبع الاعداد هاي في ليستا قابلة للنسخ ويكون في بوتون يعني زر لحفظ التيكست الى الكومبيوتر واتمنا تكتبلي الكود كامل في الرد واكون لك من الشاكرين ينطيك العافية اخي الوردة وشكرا اخوك من سورية

                      حذف التعليق
                      google-playkhamsatmostaqltradent