دروس الوحدة (1/2)
الشروط والحلقات
يتمحور تدفق التحكم في Rust حول مبنيين رئيسيين: التعبيرات الشرطية لتحديد مسار التنفيذ الذي يجب اتباعه، وبنيات الحلقة لتكرار التعليمات.
الشروط الشرطية: if كتعبير
في Rust، عبارة if هي تعبير، مما يعني أنها تُرجع قيمة. يمكننا استخدام if لتعيين قيمة للمتغير مباشرة:
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expressionالحلقات والتكرارات
يوفر Rust ثلاثة أنواع من الحلقات الأصلية: loop، وwhile، وfor.
1. loop (حلقة لا نهائية)
تنشئ الكلمة الأساسية loop حلقة لا نهائية تستمر حتى تطلب منها صراحةً التوقف عن استخدام break:
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Exit the loop
}
}بالإضافة إلى ذلك، يمكنك إرجاع قيمة من loop بوضعها مباشرة بعد break:
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Returns 20
}
};2. while (الحلقة الشرطية)
تشغيل كتلة من التعليمات البرمجية طالما ظل الشرط المنطقي صحيحًا:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}3. for (التكرار على المجموعات والنطاقات)
تعد الحلقة for الأداة الأكثر شيوعًا والأكثر أمانًا للتكرار على العناصر الموجودة في مجموعة أو نطاق من الأرقام:
// Iterates over numbers 1 through 3 (excluding 4)
for number in 1..4 {
println!("Valore: {}", number);
}
// Iterates including the right boundary using '='
for number in 1..=3 {
println!("Valore: {}", number); // Prints 1, 2 and 3
}تسميات الحلقة
عند التعامل مع الحلقات المتداخلة، تنطبق عبارات break وcontinue على الحلقة الأعمق بشكل افتراضي. يتيح لك Rust استخدام تسمية حلقة (مكتوبة كـ 'label_name:) لإنهاء حلقة خارجية أو مواصلتها بشكل صريح:
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Exits the outer loop directly
}
count += 1;
}
}جربه بنفسك
قم بتعريف متغير مسمى رقم بقيمة 7. بعد ذلك، استخدم تعبير if/else لتعيين القيمة "أكبر" لرسالة المتغير إذا كان الرقم أكبر من 5، أو "أصغر" بخلاف ذلك. وأخيرًا، قم بطباعة الرسالة باستخدام println!.
إظهار التلميح
اكتب `let message = if number > 5 { 'greater' } else { 'smaller' };` ومررها إلى `println!`.
الحل متاح بعد 3 من المحاولات
اكتب حلقة for تطبع الأرقام من 1 إلى 5 (أي 1، 2، 3، 4، 5) باستخدام println! في كل التكرار.
إظهار التلميح
استخدم صيغة النطاق الشامل `for i in 1..=5` وقم بتشغيل `println!('{}', i);` داخل الكتلة.
الحل متاح بعد 3 من المحاولات
اكتب حلقة تزيد عداد متغير قابل للتغيير بدءًا من 0. عندما يصل العداد إلى 10، قم بالخروج من الحلقة وإرجاع العداد مضروبًا في 5 باستخدام عبارة Break لتعيين هذه القيمة لنتيجة متغير غير قابل للتغيير. وأخيرا، طباعة النتيجة.
إظهار التلميح
استخدم `اسمحوا النتيجة = حلقة { ... }؛`. داخل الحلقة قم بزيادة `counter` وأضف الشرط `if counter == 10 {break counter * 5; }`.
الحل متاح بعد 3 من المحاولات