মূল কন্টেন্টে যান
মডিউল 2 · 1-এর পাঠ 2কোর্সে 3/14~12 min
মডিউল পাঠ (1/2)

শর্তাবলী এবং লুপ

মরিচা-এ কন্ট্রোল ফ্লো দুটি প্রধান নির্মাণের চারপাশে ঘোরে: কোন এক্সিকিউশন পাথ নিতে হবে তা নির্ধারণ করতে শর্তসাপেক্ষ এক্সপ্রেশন এবং নির্দেশের পুনরাবৃত্তি করার জন্য লুপ কনস্ট্রাক্ট।

শর্তাবলী: if একটি অভিব্যক্তি হিসাবে

মরিচা-এ, if স্টেটমেন্ট হল একটি এক্সপ্রেশন, যার অর্থ এটি একটি মান প্রদান করে। আমরা if ব্যবহার করতে পারি একটি ভেরিয়েবলকে সরাসরি একটি মান নির্ধারণ করতে:

Rust
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expression

লুপ এবং পুনরাবৃত্তি

মরিচা তিন ধরনের নেটিভ লুপ প্রদান করে: loop, while, এবং for।

1. loop (অসীম লুপ)

loop কীওয়ার্ডটি একটি অসীম লুপ তৈরি করে যা আপনি স্পষ্টভাবে break ব্যবহার বন্ধ করতে না বলা পর্যন্ত চলতে থাকে:

Rust
let mut count = 0;
loop {
    count += 1;
    if count == 10 {
        break; // Exit the loop
    }
}

অতিরিক্তভাবে, আপনি একটি loop থেকে break এর ঠিক পরে একটি মান ফিরিয়ে দিতে পারেন:

Rust
let result = loop {
    count += 1;
    if count == 10 {
        break count * 2; // Returns 20
    }
};

2. while (শর্তাধীন লুপ)

কোডের একটি ব্লক চালায় যতক্ষণ না একটি বুলিয়ান শর্ত সত্য থাকে:

Rust
let mut number = 3;
while number != 0 {
    println!("{}!", number);
    number -= 1;
}

3. for (সংগ্রহ এবং রেঞ্জের উপর পুনরাবৃত্তি)

for লুপ হল একটি সংগ্রহ বা সংখ্যার পরিসরের উপাদানগুলির উপর পুনরাবৃত্তি করার জন্য সবচেয়ে সাধারণ এবং নিরাপদ টুল:

Rust
// 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 স্টেটমেন্টগুলি ডিফল্টরূপে অন্তর্নিহিত লুপের ক্ষেত্রে প্রযোজ্য হয়৷ মরিচা আপনাকে একটি লুপ লেবেল ('label_name: হিসাবে লিখিত) ব্যবহার করার অনুমতি দেয় স্পষ্টভাবে একটি বাইরের লুপ বন্ধ করতে বা চালিয়ে যেতে:

Rust
let mut count = 0;
'outer: loop {
    loop {
        if count == 5 {
            break 'outer; // Exits the outer loop directly
        }
        count += 1;
    }
}

নিজে চেষ্টা করে দেখুন

ব্যায়াম#rust.m2.l1.e1
প্রচেষ্টা: 0লোড হচ্ছে...

7 এর মান সহ একটি ভেরিয়েবল নামক সংখ্যা ঘোষণা করুন। এরপর, যদি সংখ্যাটি 5-এর বেশি হয় বা অন্যথায় 'ছোট' হয় তবে পরিবর্তনশীল বার্তায় মান 'বৃহত্তর' নির্ধারণ করতে একটি if/else এক্সপ্রেশন ব্যবহার করুন। অবশেষে, println ব্যবহার করে বার্তা মুদ্রণ করুন!

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

বার্তা লিখুন = যদি সংখ্যা > 5 { 'বৃহত্তর' } অন্য { 'ছোট' };` লিখুন এবং এটিকে `ছাপিয়ে দিন!`।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#rust.m2.l1.e2
প্রচেষ্টা: 0লোড হচ্ছে...

একটি লুপের জন্য লিখুন যা প্রিন্টএলএন ব্যবহার করে 1 থেকে 5 পর্যন্ত সংখ্যাগুলি প্রিন্ট করে (যেমন 1, 2, 3, 4, 5)! প্রতিটি পুনরাবৃত্তি এ

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

1..=5`-এ i এর জন্য অন্তর্ভুক্ত পরিসরের সিনট্যাক্স ব্যবহার করুন এবং ব্লকের ভিতরে `println!('{}', i);` চালান।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#rust.m2.l1.e3
প্রচেষ্টা: 0লোড হচ্ছে...

একটি লুপ লিখুন যা 0 থেকে শুরু করে একটি পরিবর্তনযোগ্য পরিবর্তনশীল কাউন্টার বৃদ্ধি করে। কাউন্টার 10 এ পৌঁছালে, একটি অপরিবর্তনীয় পরিবর্তনশীল ফলাফলে এই মানটি নির্ধারণ করতে বিরতি বিবৃতি ব্যবহার করে 5 দ্বারা গুণিত লুপ রিটার্নিং কাউন্টার থেকে প্রস্থান করুন। অবশেষে, ফলাফল মুদ্রণ.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

`চলুন ফলাফল = লুপ { ... };` ব্যবহার করুন। লুপ ইনক্রিমেন্ট `কাউন্টার` এর ভিতরে এবং শর্ত যোগ করুন `যদি কাউন্টার == 10 { ব্রেক কাউন্টার * 5; }`

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ