বিষয়বস্তুতে চলুন

প্রোগ্রামিংয়ের মৌলিক ধারণা/হোয়াইল লুপ

উইকিবই থেকে

সংক্ষিপ্ত বিবরণ

[সম্পাদনা]

“while” লুপ একটি নিয়ন্ত্রণ প্রবাহের বিবৃতি, যা একটি নির্দিষ্ট বুলিয়ান শর্তের উপর ভিত্তি করে কোনও কোডকে বারবার চালাতে সাহায্য করে। এটিকে এমন একটি “if” শর্তের মতো ভাবা যায়, যা বারবার পুনরাবৃত্ত হয় যতক্ষণ না শর্তটি মিথ্যা হয়। Wikipedia: While loop

আলোচনা

[সম্পাদনা]

“টেস্ট বিফোর” লুপের পরিচিতি

[সম্পাদনা]

পুনরাবৃত্তিমূলক নিয়ন্ত্রণ কাঠামোর মধ্যে দুটি বহুল ব্যবহৃত “টেস্ট বিফোর” ধরনের লুপ হলো “while” ও “for”। এই মডিউলে আমরা “while” লুপ নিয়ে আলোচনা করছি।

সাধারণভাবে পুনরাবৃত্তি বোঝা – “While”

[সম্পাদনা]

পুনরাবৃত্তি বলতে বোঝায় কোনো কাজ বারবার করার প্রক্রিয়া। প্রতিটি নিয়ন্ত্রণ কাঠামোর মতো এখানে একটি প্রশ্ন থাকে যা লুপ চালু থাকবে কি না তা নির্ধারণ করে। “লুপ” শব্দটি প্রবাহচিত্রে ঘটে যাওয়া চক্রাকার গতির ধারণা থেকে এসেছে। “while” লুপের মূল কাঠামো সাধারণত নিচের ধাপগুলো অনুসরণ করে:

  • পতাকা (flag) প্রাথমিক মান নির্ধারণ
  • যদি প্রশ্নের উত্তর সত্য হয়
  • কিছু কার্যক্রম বা বিবৃতি
  • কিছু কার্যক্রম বা বিবৃতি
  • কিছু কার্যক্রম বা বিবৃতি
  • পতাকা হালনাগাদ

বেশিরভাগ প্রোগ্রামিং ভাষায় এই প্রশ্নটিকে বুলিয়ান এক্সপ্রেশন হিসেবে প্রকাশ করা হয়, যার ফলাফল হয় true অথবা false। এই কাঠামোটিকে আবার এভাবে সহজভাবে প্রকাশ করা যায়:

  • পতাকা প্রাথমিককরণ
  • যদি এক্সপ্রেশন সত্য হয়, তাহলে
  • কিছু কার্যক্রম
  • কিছু কার্যক্রম
  • কিছু কার্যক্রম
  • পতাকা হালনাগাদ

একটি কার্যকর “while” লুপের চারটি গুরুত্বপূর্ণ উপাদান রয়েছে:

  • পতাকা প্রাথমিককরণ
  • টেস্ট এক্সপ্রেশন
  • কার্যক্রম বা বিবৃতি
  • পতাকা হালনাগাদ

পতাকার প্রাথমিককরণ যদিও নিয়ন্ত্রণ কাঠামোর অন্তর্ভুক্ত নয়, তবু লুপ শুরুর আগে এটি একটি আবশ্যিক ধাপ। সহজভাবে বললে, এর ইংরেজি অনুবাদ হতে পারে: “যতক্ষণ পর্যন্ত শর্ত সত্য, ততক্ষণ নিচের কাজগুলো করে যান।” যখন শর্তটি মিথ্যা হবে, তখন লুপ থেমে যাবে এবং পরবর্তী কোড কার্যকর হবে। যেহেতু এটি একটি “টেস্ট বিফোর” লুপ, তাই কাজটি একবারও নাও ঘটতে পারে। “টেস্ট বিফোর” মানে টেস্টিং (শর্ত যাচাই) কাজের আগে হয়। এ কারণে একে “প্রি-টেস্ট” লুপও বলা হয়।

“While” লুপের মানবিক উদাহরণ

[সম্পাদনা]

ধরুন, এক অভিভাবক তার সন্তানকে বলেন—

"যতক্ষণ পর্যন্ত মেঝেতে সেরিয়াল পড়ে আছে, ততক্ষণ তা তুলে ডাস্টবিনে ফেলো।"

এই বাক্যে একটি প্রশ্ন আছে (মেঝেতে সেরিয়াল আছে কিনা) এবং সেই প্রশ্নের ভিত্তিতে একটি কাজ (সেরিয়াল তোলা) নির্ধারিত হয়েছে। প্রশ্নের উত্তরের দুটি সম্ভাবনা আছে—সত্য অথবা মিথ্যা। সন্তানের কাজ চলতে থাকবে যতক্ষণ পর্যন্ত মেঝেতে সেরিয়াল থাকবে। যদি সেরিয়াল না পড়ে, তাহলে কাজটি একবারও হবে না। আবার যদি থাকে, তাহলে যতবার থাকবে ততবার তুলতে হবে।

অসীম লুপ

[সম্পাদনা]

ভালো প্রোগ্রামিংয়ের অন্যতম নিয়ম হলো এমন ব্যবস্থা রাখা যাতে লুপ একসময় বন্ধ হয়। যদি শর্ত কখনো মিথ্যা না হয়, তাহলে লুপ কখনো থামবে না—এমন লুপকে বলে অসীম লুপ। উদাহরণস্বরূপ নিচের সুডোকোডটি দেখুন:

loop_response = ‘y’ While loop_response == ‘y’ Output “What is your age?” Input user_age Output “What is your friend’s age?” Input friend_age Output “Together your ages add up to: “ Output user_age + friend_age

এখানে প্রোগ্রামার লুপের শুরুতে পতাকা ঠিকভাবে সেট করলেও, পরে সেটি হালনাগাদ করতে ভুলে গেছেন। ফলে শর্ত সবসময় সত্য থেকে যাচ্ছে, যার কারণে লুপ কখনো থামছে না—এটি অসীম লুপ।

আরেকটি উদাহরণ দেখুন:

loop_response = ‘y’; While loop_response = ‘y’ Output “What is your age?” Input user_age Output “What is your friend’s age?” Input friend_age Output “Together your ages add up to: “ Output user_age + friend_age Output “Do you want to try again? y or n” Input loop_response

এখানে তুলনার (==) বদলে অ্যাসাইনমেন্ট (=) ব্যবহার করা হয়েছে। এর ফলে loop_response-এ ‘y’ বরাবর সেট হয় এবং এটি সবসময় সত্য থাকে। তাই লুপ কখনো থামে না, অর্থাৎ এটি আবারও একটি অসীম লুপ।

গণনা লুপ

[সম্পাদনা]

আগের উদাহরণগুলোতে “event controlled” লুপ ছিল, যেখানে লুপ চলবে কিনা তা নির্ভর করে ব্যবহারকারীর ইনপুট বা কোন একটি ঘটনায়। তবে আরেক ধরনের লুপ আছে—“count controlled loop” যেখানে নির্দিষ্ট সংখ্যক বার লুপটি চলবে। নিচের কোডটি দেখুন:

counter = 0 While counter < 5 Output “I love ice cream!” counter += 1

এখানে counter ভ্যারিয়েবলটি লুপ নিয়ন্ত্রণ করছে। এটি শুরুতে ০ (প্রাথমিককরণ), তারপর যতক্ষণ এটি ৫-এর কম থাকে (শর্ত), ততক্ষণ লুপ চলবে এবং প্রতিবার এক করে বাড়ানো হবে (হালনাগাদ)। লুপটি মোট ৫ বার চলবে। এই লুপে “while” কাঠামোর চারটি গুণাবলীই উপস্থিত:

  • পতাকা প্রাথমিককরণ
  • টেস্ট এক্সপ্রেশন
  • কার্যক্রম
  • পতাকা হালনাগাদ

এই উপাদানগুলোর যেকোনো একটি না থাকলে লুপ ঠিকভাবে কাজ নাও করতে পারে অথবা অনন্ত লুপ তৈরি হতে পারে।

অসীম লুপ

[সম্পাদনা]

ধরুন নিচের কোডটি লিখা হয়েছে:

counter = 0; while counter < 5 Output “I love ice cream!”

এখানে পতাকা হালনাগাদ (counter বাড়ানো) অনুপস্থিত। এর ফলে লুপটি কখনো শেষ হবে না এবং অসীম লুপে পরিণত হবে।

গণনার উপর বৈচিত্র্য

[সম্পাদনা]

এবার ধরুন, একটি ভ্যারিয়েবল age আছে যা পূর্ণসংখ্যা এবং পূর্বেই মান নির্ধারিত হয়েছে:

While 0 < age Output “I love candy!” age -= 1

এখানে age লুপ নিয়ন্ত্রণ করছে। যেহেতু এটি একটি “টেস্ট বিফোর” লুপ, তাই যদি age শুরু থেকেই ০ হয়, তাহলে একবারও লুপ চলবে না।

আরেকটি ভিন্ন রূপে দেখুন:

counter = 0; While counter < age Output “I love corn chips!” counter += 1

এখানে age হলো পূর্ব নির্ধারিত একটি মান। এই লুপের কার্যপ্রণালী আমাদের প্রথম গণনা লুপের মতো হলেও এতে age একটি চলক মান হিসেবে ব্যবহৃত হয়েছে, যা নির্ধারণ করে লুপ কতবার চলবে। যদি age = 0 হয়, তাহলে এই লুপটিও একবারও কার্যকর হবে না।

মূল শব্দসমূহ

[সম্পাদনা]
নিয়ন্ত্রিত গণনা
একটি ভেরিয়েবলের মাধ্যমে লুপকে উপরের দিকে বা নিচের দিকে গুনে নিয়ে নিয়ন্ত্রণ করা হয়।
অনন্ত লুপ
নির্দেশনার একটি ধারাবাহিক অংশ, যা নিরবচ্ছিন্নভাবে লুপ করতে থাকে। এর কারণ হতে পারে—লুপের কোনও শেষ করার শর্ত না থাকা, এমন একটি শর্ত যা কখনও সত্য হয় না, অথবা এমন একটি শর্ত যা বারবার লুপটি পুনরায় শুরু করতে বাধ্য করে।
আরম্ভ আইটেম
এটি একটি পুনরাবৃত্তি নিয়ন্ত্রণ কাঠামোর অংশ, যা শুরুতে নির্ধারিত মান নির্ধারণ করে।
লুপের গুণাবলী
লুপ বা পুনরাবৃত্তি নিয়ন্ত্রণ কাঠামোর সঙ্গে সম্পর্কিত বিভিন্ন উপাদান।
হতে নাও পারে
বোঝায় যে টেস্ট-বিফোর ধরণের লুপগুলো কখনও কোনও কার্যক্রম না চালিয়েই শেষ হয়ে যেতে পারে।
হোয়াইল
এটি একটি টেস্ট-বিফোর ধরনের পুনরাবৃত্তি নিয়ন্ত্রণ কাঠামো, যা শর্ত পূর্ণ হলে তবেই কোড চালায়।

তথ্যসূত্র

[সম্পাদনা]

টেমপ্লেট:Subpage navbar