28 - سلسلة تبسيط البرمجة – برنامج الحلقة غير المحدودة Until

السلام عليكم ورحمة الله وبركاته

بسم الله الرحمن الرحيم

سبق وذكرنا في الدرس

11 - سلسلة تبسيط البرمجة – آلية الحلقات التكرارية غير المحددة

أنه يوجد نوعين للحلقات غير المحددة

الأولى تتحقق من الشرط في البداية أي قبل دخول الحلقة

والثانية تتحقق من الشرط في نهاية جسم الحلقة أي بعد أن تنتهي من تنفيذ الحلقة لمرة واحدة على الأقل ثم تتحقق من الشرط فإما أن تكرر وإما أن تخرج

المثال العملي الذي طبقناه في الدرس السابق كان للنوع الأول

وهذا نسميه حلقة

Do While

Loop

أي طالما كذا كرر

أما النوع الثاني يدعى حلقة

Do

Loop While

أي كرر طالما كذا

والفرق بينهما واضح أن الأولى تتحقق من الشرط في البداية

أما الثانية تتحق في النهاية والفرق الجوهري أن الأولى قد لا تنفذ جسم الحلقة مطلقا أي ربما يكون من البداية الشرط غير متحقق وبالتالي سيقفز إلى ما بعد الحلقة

أما الثانية فستنفذ جسم الحلقة مرة واحدة على الأقل من ثم تتحقق من الشرط لأول مرة فإما أن تعاود وإما أن تخرج

ولو رجعنا للمثال النظري في الرابط المذكور أعلاه لعرفنا ذلك من خلال الفرق بين المثالين

أود أن أنوه أن اللغة تسمح بحلقة شبيهة بالحالتين باستخدام كلمة Until بدلا من While

والفرق أن حلقات While تكرر جسم الحلقة في حال كان نتيجة الشرط المنطقية هي صح True أي عندما يكون الشرط متحقق

أما حلقات

Do Until

Loop

و

Do

Loop Until

فهي تكرر في حالة كانت النتيجة المنطقية للشرط خطأ أي False أي عندما لا يكون الشرط متحقق ومتى تحقق تخرج من الحلقة

المثال التالي يبين أنواع الحلقات ونلاحظ كيف أن الأولى لا تطبع شيء بينما الثانية تطبع مرة على الأقل علما أنهما نفس الشرط والبداية إلا أن الفرق هو كون فحص الشرط في الأول أو في الآخير

وكذلك الفرق بين وايل وأنتيل هو في الشرط :

Module Module1

    Sub Main()
        Dim i As Integer

        Console.WriteLine("Do While .. Loop -----")

        i = 0
        Do While i > 0
            Console.WriteLine(i)
            i = i + 1
        Loop

        Console.WriteLine("----------------------")
        Console.WriteLine()
        Console.ReadLine()

        Console.WriteLine("Do .. Loop While -----")

        i = 0
        Do
            Console.WriteLine(i)
            i = i + 1
        Loop While i < 0

        Console.WriteLine("----------------------")
        Console.WriteLine()
        Console.ReadLine()

        Console.WriteLine("Do Until .. Loop -----")

        i = 0
        Do Until i >= 0
            Console.WriteLine(i)
            i = i + 1
        Loop

        Console.WriteLine("----------------------")
        Console.WriteLine()
        Console.ReadLine()

        Console.WriteLine("Do .. Loop Until -----")

        i = 0
        Do
            Console.WriteLine(i)
            i = i + 1
        Loop Until i >= 0

        Console.WriteLine("----------------------")
        Console.WriteLine()
        Console.ReadLine()

    End Sub

End Module

الواجب :

لو أمكن تحويل المثالين في الدرس

11 - سلسلة تبسيط البرمجة – آلية الحلقات التكرارية غير المحددة

إلى برنامج عملي

ودمتم بخير