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

الحلقات التكرارية كتعبيرات

جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 5 من 66.

في معظم لغات البرمجة، تُعد الحلقات التكرارية (loops) عبارات (statements) تنفذ الكود بشكل متكرر. لكن لغة Rust تمتلك ميزة فريدة: يمكن أن تكون الحلقات التكرارية أيضاً تعبيرات (expressions) تُرجع قيمة. وهذا يعني أنه يمكنك إسناد نتيجة الحلقة التكرارية إلى متغير.

لإرجاع قيمة من حلقة (loop)، يمكنك استخدام break متبوعة بالقيمة التي تريد إرجاعها:

let result = loop {
    // بعض التحقق من الشروط
    if condition_met {
        break 42; // الخروج من الحلقة وإرجاع 42
    }
};

إليك مثال عملي يجد أول رقم زوجي بدءاً من 10:

let mut counter = 10;

let first_even = loop {
    if counter % 2 == 0 {
        break counter; // إرجاع الرقم الزوجي
    }
    counter += 1;
};

println!("First even number: {}", first_even);

تستمر الحلقة حتى تجد رقماً زوجياً، ثم تستخدم break counter للخروج من الحلقة وإرجاع ذلك الرقم. يتم تعيين القيمة المرجعة إلى first_even.

challenge icon

التحدي

سهل

ستتلقى رقماً كبداية كمدخل. اقرأ المدخلات، وقم بتحويلها إلى عدد صحيح، واستخدم تعبير loop للعثور على أول رقم يقبل القسمة على 7 بدءاً من ذلك الرقم.

المتطلبات:

  • استخدم تعبير loop يقوم بإرجاع قيمة
  • ابدأ التحقق من الرقم المدخل
  • ابحث عن أول رقم يقبل القسمة على 7 (الباقي هو 0 عند القسمة على 7)
  • استخدم break لإرجاع الرقم الذي تم العثور عليه من الحلقة
  • اطبع النتيجة

المدخلات: عدد صحيح واحد يمثل رقم البداية

المخرجات: اطبع أول رقم يقبل القسمة على 7 بدءاً من الرقم المدخل

ورقة مرجعية

في لغة Rust، يمكن أن تكون الحلقات التكرارية (loops) عبارة عن تعبيرات (expressions) تُرجع قيمة. استخدم break متبوعة بقيمة للخروج من الحلقة وإرجاع تلك القيمة:

let result = loop {
    if condition_met {
        break 42; // exit loop and return 42
    }
};

مثال على إيجاد أول عدد زوجي:

let mut counter = 10;

let first_even = loop {
    if counter % 2 == 0 {
        break counter; // return the even number
    }
    counter += 1;
};

println!("First even number: {}", first_even);

جرّب بنفسك

use std::io;

fn main() {
    // قراءة المدخلات
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let start_number: i32 = input.trim().parse().expect("Invalid input");
    
    // TODO: اكتب الكود الخاص بك أدناه
    // استخدم تعبير حلقة (loop) للعثور على أول رقم يقبل القسمة على 7
    
    
    // طباعة النتيجة
    // println!("{}", result);
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow