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

حلقة repeat-until

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

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

يبدو أسلوب الكتابة (syntax) كالتالي:

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

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

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

local roll = 0

repeat
    roll = math.random(1, 6) -- يرمي رقماً بين 1 و 6
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

تضمن هذه الحلقة أنك ستلقي النرد مرة واحدة على الأقل، وتستمر في الإلقاء حتى يصبح الشرط roll == 6 صحيحًا (true). هذا السلوك الذي يقوم على "التنفيذ أولاً، ثم التحقق لاحقًا" يجعل حلقات 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.

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

جرّب بنفسك

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

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

-- TODO:
-- استخدم حلقة repeat-until لـ:
-- 1. عيّن المحاولة الحالية إلى النص الدقيق من التعليمات
-- 2. اطبع كلمة المرور المحاوَلة
-- 3. انتقل إلى المحاولة التالية
-- توقف عندما تتطابق password مع correctPassword
quiz iconاختبر نفسك

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

جميع دروس الأساسيات

تدرّب بنفسك: مترجم Lua عبر الإنترنت