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

حلقة repeat-until

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

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

تبدو الصياغة النحوية هكذا:

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

لاحظ أن condition يتم التحقق منها في النهاية، بعد أن يكون الكود قد نُفّذ مرة واحدة بالفعل. يستمر loop في التكرار until تصبح condition true - وهذا عكس حلقة while التي تستمر ما دامت 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!")

تضمن حلقة loop هذه أنك سترمي النرد مرة واحدة على الأقل، وتستمر في الرمي حتى يصبح الشرط 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.

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

جرّب بنفسك

-- تهيئة المتغيرات
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 عبر الإنترنت