Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

حلقة repeat-until

جزء من قسم Fundamentals في رحلة Lua على Coddy — الدرس 72 من 90.

تقدم لغة Lua نوعًا آخر من الحلقات يسمى حلقة repeat-until، والتي تتميز بخاصية فريدة تميزها عن حلقة while التي تعلمتها للتو. الفرق الجوهري هو أن حلقة repeat-until تنفذ كتلة الكود الخاصة بها مرة واحدة على الأقل دائمًا، بغض النظر عن الشرط.

تبدو الصيغة كما يلي:

repeat
    -- الكود المراد تكراره
until condition

لاحظ أن الشرط يتم التحقق منه في النهاية، بعد أن يكون الكود قد تم تشغيله مرة واحدة بالفعل. تستمر الحلقة في التكرار حتى يصبح الشرط true - وهو عكس حلقة while التي تستمر طالما كان الشرط true.

إليك مثال عملي يحاكي رمي حجر نرد حتى تحصل على الرقم 6:

local roll = 0

repeat
    roll = math.random(1, 6)
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

تضمن هذه الحلقة أنك ستقوم برمي النرد مرة واحدة على الأقل، وتستمر في الرمي حتى يصبح الشرط roll == 6 صحيحاً. هذا السلوك المتمثل في "التنفيذ أولاً، والتحقق لاحقاً" يجعل حلقات repeat-until مثالية للحالات التي تحتاج فيها إلى حدوث شيء ما مرة واحدة على الأقل قبل اتخاذ القرار بشأن الاستمرار.

challenge icon

التحدي

سهل

أنت تقوم بإنشاء محاكاة بسيطة للتحقق من كلمة المرور.

  1. قم بإنشاء متغير يسمى password وقم بتعيينه إلى سلسلة فارغة ("").
  2. قم بإنشاء متغير آخر يسمى correctPassword وقم بتعيينه إلى "secure123".
  3. قم بإنشاء جدول يسمى attempts يحتوي على محاولات كلمة المرور التالية بالترتيب:
    • "password"
    • "123456"
    • "admin"
    • "secure123"
  4. قم بإنشاء متغير يسمى index وقم بتعيينه إلى 1. ستستخدم هذا لتتبع المحاولة التي وصلت إليها حالياً.
  5. استخدم حلقة repeat-until للقيام بما يلي:
    • قم بتعيين المحاولة الحالية إلى password باستخدام attempts[index] — هذا يقرأ العنصر الموجود في الموضع index من الجدول
    • اطبع قيمة password الحالية
    • قم بزيادة index بمقدار 1 (على سبيل المثال index = index + 1) للانتقال إلى المحاولة التالية
  6. يجب أن تتوقف الحلقة فقط عندما تساوي password القيمة correctPassword.

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

ورقة مرجعية

تنفذ حلقة repeat-until الكود مرة واحدة على الأقل قبل التحقق من الشرط. وتستمر في التكرار حتى يصبح الشرط true.

الصيغة:

repeat
    -- الكود المراد تكراره
until condition

مثال - رمي النرد حتى الحصول على الرقم 6:

local roll = 0

repeat
    roll = math.random(1, 6)
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

الاختلافات الرئيسية عن حلقات while:

  • تنفذ دائماً مرة واحدة على الأقل
  • يتم التحقق من الشرط في النهاية
  • تستمر حتى يصبح الشرط true (عكس while)

جرّب بنفسك

-- تهيئة المتغيرات
local password = ""
local correctPassword = "secure123"

-- قائمة محاولات كلمة المرور
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1

-- المهام المطلوبة:
-- استخدم حلقة repeat-until من أجل:
-- 1. تعيين المحاولة الحالية للمتغير `password`
-- 2. طباعة كلمة المرور التي تمت محاولتها
-- 3. الانتقال إلى المحاولة التالية
-- التوقف عندما تتطابق كلمة المرور مع correctPassword
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals