Course: সম্পূর্ণ জেনারেটিভ এআই কোর্স ল্যাঙ্গচেইন এবং হাগিংফেসের সাথে
রচনা: পাইথন নিয়ন্ত্রণ প্রবাহ
পাইথনের নিয়ন্ত্রণ প্রবাহ আমাদের প্রোগ্রামের সিদ্ধান্তগ্রহণ ও পুনরাবৃত্তি নিয়ন্ত্রণ করে। শর্তাধীন বিবৃতি যেমন if, elif এবং else ব্যবহার করে আমরা ভিন্ন পরিস্থিতিতে ভিন্ন কার্যক্রম নির্ধারণ করতে পারি। লুপের মাধ্যমে কোনো তালিকা বা সিকোয়েন্সের প্রতিটি উপাদানকে ব্যাহতভাবে প্রক্রিয়া করা যায়। for লুপ সাধারণত iterable-এ পুনরাবৃত্তি করার জন্য ব্যবহৃত হয় এবং while লুপ একটি শর্ত সত্য থাকার সময় চলতে থাকে। লুপের ভেতরে break ব্যবহার করলে লুপ পুরোপুরি বন্ধ হয় এবং continue ব্যবহার করলে ওই চক্রটি বাদ দিয়ে পরবর্তী চক্রে চলে যায়। সঠিকভাবে ব্র্যাকেট বা ইনডেন্টেশন ব্যবহার করলে কোড পড়তে ও ডিবাগ করতে সহজ হয়। শর্ত ও লুপ একসাথে মিলিয়ে জটিল প্রবাহ তৈরি করা যায়, যেমন নেস্টেড লুপ ও নেস্টেড শর্ত। বাস্তব উদাহরণ নিয়ে অনুশীলন করলে ধারণাগুলি দ্রুত মনে থাকে। ডিবাগিংয়ের সময় print স্টেটমেন্ট বা লজার ব্যবহার করে মধ্যবর্তী মান দেখা দরকার। নিয়ন্ত্রণ প্রবাহ বোঝা থাকলে প্রোগ্রামের কার্যকারিতা ও পারফরম্যান্স উন্নত করা যায়। শিক্ষার্থীদের উচিত ছোট ছোট প্র্যাকটিস প্রজেক্ট করে নিয়ন্ত্রণ প্রবাহের ধারণা মজবুত করা। নিয়মিত অনুশীলন ও উদাহরণ বিশ্লেষণ আপনার পাইথন দক্ষতা বাড়াতে সাহায্য করবে।
Lesson
Topic
পাইথন নিয়ন্ত্রণ প্রবাহ: শর্তাধীন বিবৃতি, লুপ, এবং প্রবাহ নিয়ন্ত্রণ (break, continue)
Learning Outcomes
- if / elif / else-এর সিনট্যাক্স ও ব্যবহার বুঝতে পারা।
- for ও while লুপের পার্থক্য এবং সঠিক প্রয়োগ জানানো।
- break ও continue কিভাবে লুপের প্রবাহ প্রভাবিত করে তা ব্যাখ্যা করা।
- নেস্টেড কন্সট্রাকশন ব্যবহার করে সমস্যা সমাধান করা।
Conceptual Explanation
শর্তাধীন বিবৃতি (Conditional Statements)
পাইথনে শর্তাধীন বিবৃতির মাধ্যমে কোডের কোনো অংশ নির্দিষ্ট শর্তের উপর ভিত্তি করে কার্যকর করা হয়।
age = 18
if age >= 18:
print("আপনি ভোট দিতে পারবেন।")
elif age == 17:
print("আপনি খুব শীঘ্রই ভোট দাওয়ার যোগ্য হবে।")
else:
print("আপনার ভোট দেওয়ার সময় এখনও আসেনি।")
For লুপ
for লুপ iterable (তালিকা, টিউপল, রেঞ্জ ইত্যাদি) এর প্রতিটি উপাদান পর্যায়ক্রমে প্রক্রিয়াকরণে ব্যবহৃত হয়।
fruits = ["আপেল", "কলা", "কমলা"]
for fruit in fruits:
print(fruit)
While লুপ
while লুপ একটি শর্ত সত্য থাকার সময় পর্যন্ত চালিত হয় এবং অপ্রয়োজনীয় পুনরাবৃত্তি এড়াতে সতর্ক থাকা জরুরি।
count = 0
while count < 5:
print(count)
count += 1
Break এবং Continue
break পুরো লুপ বন্ধ করে দেয়; continue বর্তমান ইটারেশনটি বাদ দিয়ে পরবর্তী চক্র শুরু করে।
for number in range(10):
if number == 5:
break
print(number)
for number in range(5):
if number == 2:
continue
print(number)
Important Notes
- পাইথনে ইনডেন্টেশন (indentation) হল নিয়ন্ত্রণ প্রবাহের অংশ — ভুল ইনডেন্টেশন ভুল ফলাফল দেয়।
- শর্ত লিখতে পারফেক্ট কন্ডিশন ব্যবহার করুন; জটিল কন্ডিশনের জন্য parentheses বা উপযুক্ত লজিক প্রয়োগ করুন।
- লুপে সম্ভাব্য ইনফাইনাইট লুপ এড়াতে যথাযথ শর্ত ও আপডেট নিশ্চিত করুন।
- ডিবাগ করতে লজিং বা print ব্যবহার করুন; বড় প্রোজেক্টে logging মডিউল ব্যবহার করা উত্তম।
Key Constructs Summary
| Construct | Syntax | Purpose | Example |
|---|---|---|---|
| if / elif / else | if ...: elif ...: else: |
শর্তভিত্তিক সিদ্ধান্ত গ্রহণ | if age >= 18: ... |
| for | for item in iterable: |
Iterable-এ পুনরাবৃত্তি | for x in [1,2]: print(x) |
| while | while condition: |
শর্তসাপেক্ষ পুনরাবৃত্তি | while n > 0: n -=1 |
| break / continue | break, continue |
লুপ প্রবাহ নিয়ন্ত্রণ | if x==0: break |
Exercises
True / False
- while লুপ সর্বদা অন্তত একটি বার চলবে।
Answer
False — যদি শর্ত শুরুতেই ভুল থাকে তাহলে while লুপ একবারও চলবে না।
- continue স্টেটমেন্ট বর্তমান ইটারেশন বাদ দিয়ে পরবর্তীটি শুরু করে।
Answer
True — continue শুধুমাত্র বর্তমান চক্রকে এড়িয়ে দেয়।
Fill in the Blanks
- পাইথনে শর্ত লিখতে ব্যবহার করা হয় ___.
Answer
if / elif / else
- লুপ যেখানে পূর্বনির্ধারিত সংখ্যক ইটারেশন চলবে সেটাকে বলা হয় ___ লুপ।
Answer
for লুপ
Multiple Choice Questions (MCQ)
- নিচের কোনটি ইনফাইনাইট লুপ সৃষ্টি করতে পারে?
- A)
while True: break - B)
while False: print("hi") - C)
while x > 0: x += 1 - D)
for i in range(3): print(i)
Answer
উত্তর: C — যদি x আর কখনও কম না হয় (বৃদ্ধি করে), লুপ অনন্তকাল চলতে পারে।
- A)
- কোন স্টেটমেন্ট লুপ সম্পূর্ণভাবে বন্ধ করে দেয়?
- A) continue
- B) pass
- C) break
- D) return
Answer
উত্তর: C — break লুপকে সম্পূর্ণভাবে বন্ধ করে দেয়। (নোট: return ফাংশনের ভিতরে লুপকে বন্ধ করে ফাংশন থেকে বের করে দেয়।)
Matching
Match the construct with its description.
| Construct | Description |
|---|---|
| for | Iterates over items of a sequence |
| while | Runs while a condition is True |
| elif | Additional conditional branch |
Answer
for → Iterates over items of a sequence; while → Runs while a condition is True; elif → Additional conditional branch.
Descriptive
- if এবং while-এর মধ্যে মৌলিক পার্থক্য কী?
Answer
if একটি শর্ত যাচাই করে এবং শর্ত সত্য হলে একটি ব্লক একবারই নির্বাহ করে; while একটি শর্ত সত্য থাকা পর্যন্ত ব্লক বারবার (loop) চালায়।
- break এবং continue-কে উদাহরণসহ ব্যাখ্যা করুন।
Answer
break লুপের কার্যক্রম সম্পূর্ণভাবে শেষ করে (উদাহরণ: কোনো লুপে নির্দিষ্ট মান পাওয়া গেলে আর চলবে না)। continue সেই চক্রের বাকি অংশ বাদ দেয় এবং পরবর্তী ইটারেশনে চলে যায় (উদাহরণ: পজিটিভ সংখ্যাগুলো বাদ দিয়ে নেগেটিভগুলো প্রিন্ট করা)।
Creative
- একটি ছোট প্রোগ্রাম লেখুন যা ১ থেকে ২০ পর্যন্ত সংখ্যার মধ্যে ৩ দ্বারা বিভাজ্য সংখ্যা বাদ দিয়ে বাকিগুলো প্রিন্ট করবে।
Answer
for i in range(1, 21): if i % 3 == 0: continue print(i) - নেস্টেড লুপ ব্যবহার করে একটি ৩x৩ গ্রিড আউটপুট করুন (0/1) যেখানে ডায়াগনাল-এ 1 থাকবে।
Answer
for i in range(3): for j in range(3): if i == j: print(1, end=' ') else: print(0, end=' ') print()
Activities
- জোড়া তৈরি কার্যক্রম: ছোট ছোট কোড স্নিপেট দিন ও শিক্ষার্থীদের if/for/while চিহ্নিত করতে বলুন।
- ডিবাগিং কার্যক্রম: একটি ভুল ইনডেন্টেড লুপ দিন এবং ঠিক করতে বলুন।
Vocabulary
- Iteration — পুনরাবৃত্তি
- Condition — শর্ত
- Control Flow — নিয়ন্ত্রণ প্রবাহ
- Nested — নেস্টেড / অভ্যন্তরীণ
Homework
- একটি প্রোগ্রাম লিখুন যা ১ থেকে ১০০ পর্যন্ত প্রাইম সংখ্যা প্রিন্ট করবে (for ও শর্ত ব্যবহার করুন)।
- while লুপ ব্যবহার করে ফ্যাক্টরিয়াল হিসাব করুন (n ইনপুট নিন)।
Practice Task
GitHub-এ একটি ছোট রেপোজিটরি করুন যেখানে আপনার সকল অনুশীলন কোড থাকবে। প্রতিটি ফাইলের জন্য README-তে কোন নিয়ন্ত্রণ কাঠামো ব্যবহার করা হয়েছে তা উল্লেখ করুন।
Instructor Notes: অনুশীলন, পুনরাবৃত্তি ও প্রকল্প-ভিত্তিক শেখার মাধ্যমে নিয়ন্ত্রণ প্রবাহে দক্ষতা অর্জন সম্ভব।