Course: সম্পূর্ণ জেনারেটিভ এআই কোর্স ল্যাঙ্গচেইন এবং হাগিংফেসের সাথে
আমি পাইথনের নিয়ন্ত্রণ প্রবাহ নিয়ে একটি সংক্ষিপ্ত রচনা রচনা করছি। পাইথন প্রোগ্রামিংয়ে নিয়ন্ত্রণ প্রবাহ হল মূল ধারণা যা সিদ্ধান্ত গ্রহণ ও পুনরাবৃত্তি নিয়ন্ত্রণ করে। শর্তাধীন বিবৃতি যেমন if, elif এবং else ব্যবহার করে বিভিন্ন শর্তের উপর ভিত্তি করে কোড চালানো যায়। উদাহরণস্বরূপ, কোনো ব্যক্তির বয়স যাচাই করে ভোটের যোগ্যতা নির্ধারণ করা যায়। for লুপ সাধারণত iterable-এর প্রতিটি উপাদানকে পুনরাবৃত্তি করার জন্য ব্যবহৃত হয়। while লুপ তখন পর্যন্ত চলতে থাকে যতক্ষণ পর্যন্ত নির্দিষ্ট শর্তটি সত্য থাকে। লুপের ভিতরে break ব্যবহারে সম্পূর্ণ লুপ বন্ধ করা যায় এবং continue ব্যবহার করে বর্তমান চক্র বাদ দিয়ে পরের চক্রে যায়। উপযুক্তভাবে লুপ ও শর্ত মিশিয়ে জটিল লজিক সহজে বাস্তবায়ন করা সম্ভব। ভুল শর্ত বা অপর্যাপ্ত update হলে infinite loop হতে পারে, তাই সতর্ক হওয়া জরুরি। কোডকে পরিষ্কার ও পড়তে সহজ রাখার জন্য ইনডেন্টেশন ও মন্তব্য ব্যবহার করা উচিত। নিয়ন্ত্রণ প্রবাহ ভালোভাবে আয়ত্ত করলে প্রোগ্রামের কার্যকারিতা ও কার্যকারিতার নিয়ন্ত্রণ দুটোই উন্নত হয়। তাই নতুন প্রোগ্রামারদের নিয়ন্ত্রণ প্রবাহের মূল ধারণাগুলো অনুশীলন করে নেওয়া উচিত। নিয়ন্ত্রণ প্রবাহ শিখে নিলে আরও জটিল অ্যাপ্লিকেশন ও অ্যালগরিদম নির্মাণে সুবিধা হবে।Lesson
Topic: পাইথন নিয়ন্ত্রণ প্রবাহ (শর্তাধীন বিবৃতি, লুপ, break/continue)
Learning Outcomes
- পাইথনে if, elif, else এর ব্যবহার বুঝতে পারা।
- for ও while লুপের কার্যপ্রণালী এবং উপযুক্ত ব্যবহার শিখা।
- break ও continue কিভাবে লুপের প্রবাহকে নিয়ন্ত্রণ করে তা অনুশীলন করা।
- নিয়ন্ত্রণ প্রবাহ ব্যবহার করে ছোট সমস্যা সমাধান করতে সক্ষম হওয়া।
Conceptual Explanation
নিয়ন্ত্রণ প্রবাহ হলো প্রোগ্রামের অংশগুলো কোন ক্রমানুসারে চালানো হবে তা নির্ধারণ করে। শর্তাধীন বিবৃতি (if / elif / else) নির্দিষ্ট শর্ত সত্য হলে নির্দিষ্ট ব্লক চালায়; অন্যথায় বিকল্প ব্লকে যায়। for লুপ iterable-এর প্রতিটি উপাদানকে ধারাবাহিকভাবে গ্রহণ করে কাজ সম্পন্ন করে। while লুপ শর্ত সত্য থাকাভাবে পুনরাবৃত্তি করে; সুতরাং শর্ত ও আপডেট সঠিক না হলে অনন্ত লুপ ঘটতে পারে। লুপে break ব্যবহারে সম্পূর্ণ লুপ থেকে বের হওয়া যায় এবং continue ব্যবহার করে সেই চক্রটির বাকি অংশ বাদ দিয়ে পরবর্তী পর্যায়ে যাওয়া যায়। নিচের টেবিলে মূল কনসেপ্টগুলো দ্রুতভাবে তুলনা করা হয়েছে:
| কনসেপ্ট | লক্ষ্য | নোট |
|---|---|---|
| if / elif / else | শর্তাধীন সিদ্ধান্ত | শর্তগুলো শীর্ষ থেকে নীচে পরীক্ষা হয় |
| for লুপ | Iterable পুনরাবৃত্তি | তালিকা, রেঞ্জ ইত্যাদির জন্য উপযুক্ত |
| while লুপ | শর্তভিত্তিক 반복 | শর্ত মিথ্যা না হওয়া পর্যন্ত চলে |
| break / continue | লুপ প্রবাহ নিয়ন্ত্রণ | break=ছেড়ে যাওয়া, continue=চক্র বাদ |
কোনো বাস্তব উদাহরণে কোডটি কেমন দেখতে পারে তা নিচে দেখানো হলো:
age = 18
if age >= 18:
print("আপনি ভোট দিতে পারবেন।")
else:
print("আপনার ভোট দেওয়ার সময় এখনও আসেনি।")
fruits = ["আপেল", "কলা", "কমলা"]
for fruit in fruits:
if fruit == "কলা":
continue
print(fruit)
count = 0
while count < 3:
print(count)
count += 1
Important Notes
- ইন্ডেন্টেশন পাইথনে গুরুত্বপূর্ণ — ভুল ইন্ডেন্টেশন SyntaxError দেয়।
- while লুপে ভ্যারিয়েবল আপডেট না করলে infinite loop হতে পারে।
- if-elif শৃঙ্খলে প্রথম মিল পাওয়া মাত্র পরবর্তী elif/else ব্লকগুলো অনুশীলিত হয় না।
- break ও continue ব্যবহার করার আগে লজিক স্পষ্ট করা উচিত, নচেৎ কোড পড়া কঠিন হয়ে যায়।
Exercises
True / False
-
for লুপ শুধুমাত্র তালিকা (list) এর উপরই ব্যবহার করা যায়।
Answer
False — for লুপ যেকোনো iterable (list, tuple, set, dict keys, range, string ইত্যাদি) নিয়ে কাজ করে।
-
break বিবৃতি বর্তমান লুপ সম্পূর্ণ বন্ধ করে দেয়।
Answer
True — break লুপটি সম্পূর্ণভাবে থামিয়ে দেয় এবং কন্ট্রোল লুপের পরের স্টেটমেন্টে চলে যায়।
-
while লুপে শর্ত চেক হওয়ার আগে শরীর (body) একবার চালায়।
Answer
False — while লুপ প্রথমে শর্ত পরীক্ষা করে; শর্ত সত্য হলে বডি চালায়।
Fill in the Blanks
-
if-elif-else ব্লকে সর্বোচ্চ একবারই ______ ব্লক চালানো হয়।
Answer
True branch (প্রথম মিলিত শর্ত) — শুধুমাত্র একটি উপযুক্ত ব্লক চালানো হয়।
-
for লুপে একটি সংখ্যার পরিসীমা তৈরির জন্য ______ ফাংশন ব্যবহার করা হয়।
Answer
range()ফাংশন ব্যবহার করা হয়। -
লুপের বর্তমান ইটারেশন বাদ দিতে আমরা ______ বিবৃতি ব্যবহার করি।
Answer
continueব্যবহার করা হয়।
MCQ
-
কোনটি while লুপের জন্য সঠিক?
A) অনিবার্যভাবে কমপ্যাক্ট
B) শর্তভিত্তিক পুনরাবৃত্তি
C) শুধুমাত্র তালিকার জন্য
D) break অব্যবহারে কাজ বন্ধ হয় নাAnswer
Correct: B) শর্তভিত্তিক পুনরাবৃত্তি।
-
কোনটি for লুপে ব্যবহার করা যাবে না?
A) 문자열ে চরিত্র পুনরাবৃত্তি
B) set-এ উপাদান নেওয়া
C) list-এর সাথে index পুনরাবৃত্তি
D) range() ছাড়া সংখ্যা জেনারেট করাAnswer
Correct: D) কারণ range() ছাড়া সাধারণত for লুপে sequence বা iterable দিতে হয়; কিন্তু custom generator/iterable থাকলে সম্ভব। সাধারণভাবে A, B, C সম্ভব।
-
নিচের কোনটি লুপের অপ্টিমাইজেশনে সহায়ক?
A) অপ্রয়োজনীয় কন্ডিশন চেক বজায় রাখা
B) ভেতরের লুপে অপ্রয়োজনীয় কাজ করা
C) প্রয়োজনীয় শর্ত আগে চেক করা
D) প্রতিটি ইটারেশনে বড় ডেটা কপি করাAnswer
Correct: C) প্রয়োজনীয় শর্ত আগে চেক করা — এটি দ্রুত বিসর্জন দেয় এবং অপচয় কমায়।
Matching
নিচের কলাম A ও B মিলান করুন:
| Column A | Column B |
|---|---|
| 1. break | a. পরবর্তী চক্রে যায় |
| 2. continue | b. লুপ সম্পূর্ণ বন্ধ করে |
| 3. for | c. iterable পুনরাবৃত্তি |
| 4. while | d. শর্তভিত্তিক পুনরাবৃত্তি |
-
Answer
1 → b, 2 → a, 3 → c, 4 → d
Descriptive
ব্যাখ্যা করুন: if-elif-else ব্লক কিভাবে কাজ করে এবং কখন elif ব্যবহার করা উচিত?
Answer
if ব্লক প্রথমে শর্ত পরীক্ষা করে; যদি True হয়, সংশ্লিষ্ট ব্লক চালায়। যদি না হয় এবং যদি একটি বা একাধিক elif উল্লিখিত থাকে, তাহলে পরপর প্রতিটি elif-এর শর্ত পরীক্ষা করে। প্রথম যেটি True পায় সেটি চালায় এবং বাকি ব্লকগুলো উপেক্ষা করে। সব শর্তই False হলে else ব্লক থাকলে সেটি চালায়। elif ব্যবহার করা উচিত যখন একাধিক বিকল্প শর্ত আছে কিন্তু শুধুমাত্র একটিই সত্য হতে পারে।
Creative
একটি ছোট প্রোজেক্ট ডিজাইন করুন যেখানে ব্যবহারকারী একটি সংখ্যা ইনপুট দেয় এবং প্রোগ্রামটি 1 থেকে সেই সংখ্যা পর্যন্ত সব মৌলিক সংখ্যাগুলি প্রিন্ট করে।
Answer
প্রকল্পের ধারণা:
- ইনপুট নিন: n (ইউজার-প্রদান)
- for লুপ ব্যবহার করে 2 থেকে n পর্যন্ত প্রতিটি সংখ্যা চেক করুন; প্রতিটি সংখ্যার জন্য ভিতরের for লুপে 2 থেকে sqrt(number) পর্যন্ত ভাগ করে দেখুন।
- যদি কোন বিভাজক না পাওয়া যায়, তাহলে সংখ্যাটি মৌলিক এবং সেটি প্রিন্ট করুন।
- optimization: inner loop এ range(2, int(sqrt(num))+1) ব্যবহার করুন এবং break পেলে পরবর্তী num এ যান।
Activities
- কোড অনুশীলন: একটি প্রোগ্রাম লিখুন যা 1-100 পর্যন্ত সব ফিবোনাচ্চি সংখ্যাগুলি প্রিন্ট করে।
- গ্রুপ কার্যকলাপ: দলভিত্তিকভাবে একটি ছোট কনসোল-ভিত্তিক মেনু সিস্টেম তৈরি করুন (if/while ব্যবহার করে)।
Vocabulary
Iterable কোনো এমন অবজেক্ট যা উপাদানগুলির উপর পুনরাবৃত্তি করা যায় (list, tuple, string ইত্যাদি)। Infinite loop একটি লুপ যা কখনই শেষ হয় না কারণ শর্ত কখনই মিথ্যা হয় না বা আপডেট নাই।Homework
- একটি প্রোগ্রাম লিখুন যা একটি তালিকার সমস্ত অনন্য উপাদান উল্টা ক্রমে প্রদর্শন করে (list এবং set ব্যবহার করে)।
- while লুপ ব্যবহার করে ১ থেকে N পর্যন্ত সংখ্যাগুলির যোগফল বের করার কোড লিখুন।
Practice Task
নিচের কোড টুকু বিশ্লেষণ করে বলে দিন আউটপুট কী এবং কেন:
for i in range(3):
for j in range(2):
if i == 1:
break
print(i, j)
Answer
আউটপুট:
0 0
0 1
2 0
2 1
কারণ যখন i==1 inner loop এ break চালু হলে inner loop বন্ধ হয়ে গিয়ে নতুন outer iteration শুরু হয় (i=2) এবং সেখানে আবার print হয়।
পরবর্তী পাঠ: পাইথন ফাংশন ও ডেটা স্ট্রাকচার—লিস্ট, টাপল, সেট, ডিকশনারি অনুশীলনসহ।