«

»

জানু. 13

যন্ত্রের ভাষায় কথা বলা (C++) — পর্ব ৬ — পৌনঃপুনিক

[কোর্সের মূল পাতা | নিবন্ধনের লিংক]

 

সবাইকে আবারও স্বাগত জানাচ্ছি বাংলা ভাষায় প্রোগ্রামিং শেখার এই কোর্সে। এই পর্বে আমরা শিখবো যন্ত্রকে দিয়ে কীভাবে একই কাজ বারবার করাতে হয়, অর্থাৎ কোনো একটি নির্দেশনাকে কীভাবে পৌনঃপুনিকভাবে সম্পন্ন করা যায়। পৌনঃপুনিক বা “Loop” ব্যবহারের মাধ্যমে আমরা যন্ত্রের অপরিমেয় গণনাক্ষমতার সুযোগ নিতে পারি, কারণ যেই কাজ মানুষ কয়েকবার করবার পর ক্লান্ত হয়ে যাবে তা যন্ত্রের জন্য বারবার সম্পন্ন করা কোনো সমস্যাই না।

লুপ ব্যবহারের কিছু মৌলিক উপকরণ আছে যেগুলোর অনুপস্থিতিতে লুপটি যথাযথ ভাবে কাজ করবে না। উপকরণ ৩টি হলো — (১) Initiation বা সূচনা, (২) Update বা হালনাগাদকরণ, (৩) Termination বা সমাপ্তি। অর্থাৎ যন্ত্রকে কোনো কাজ পৌনঃপুনিকভাবে করতে বললে আপনাকে স্পষ্ট ভাবে বলে দিতে হবে কোথায় শুরু, কতবার করতে হবে, এবং কী শর্তে কাজটি সমাপ্ত হবে। নয়তো বিভিন্ন রকম অনাহূত সমস্যার মুখোমুখি হতে হবে।

লুপ লিখবার বিভিন্ন রকম পদ্ধতি আছে। শেখার সুবিধার্থে খুব সহজ এবং সুপ্রচলিত দুইটি পদ্ধতির উপর আলোকপাত করছি। প্রথমটি হলো do…while লুপ, যেখানে ৩টি মৌলিক উপকরণ পৃথক ও স্পষ্টভাবে নির্দেশ করা থাকে।

[sourcecode language=”cpp”]
int count = 1;
do {
// some instruction
cout << “hello!” << endl;
// update count
count = count + 1; }
while (count < 10);
[/sourcecode]
 

এখানে লক্ষ করুন লুপটি শুরু করার আগেই একটি গণক বা counter তৈরি করেছি, যা প্রতি ধাপের পর নিজের মান হালনাগাদ করবে। শুধু তাই না, আমরা গণকের মান ১০-এর কম থাকা পর্যন্ত লুপটি চালিয় যাবো। এই লুপে “হ্যালো” শব্দটি ১ থেকে ৯ পর্যন্ত, অর্থাৎ ৯ বার প্রিন্ট করা হবে। খেয়াল করুন যে আমরা গণকের মানের সাথে প্রতি ধাপে ১ যোগ করে সমাপ্তির শর্তের দিকে এগিয়ে যাচ্ছে। যদি এই হালনাগাদকরণ করা না হতো, তাহলে লুপটি অনির্দিষ্টকালের জন্য চলতে থাকতো।

দ্বিতীয় পদ্ধতিটি হলো for লুপ। এই লুপের ধারণাও খুবই সহজ, তবে এটি বুঝার জন্য do…while লুপ সম্পর্কে স্পষ্ট ধারণা থাকা প্রয়োজন। প্রথম পদ্ধতিতে একের পর এক লুপ লিখতে থাকতে এক পর্যায়ে আপনার মনে হবে, “একটু যদি সংক্ষিপ্ত কোনো পদ্ধতি থাকতো? বারবার সূচনা-হালনাগাদ-সমাপ্তি আলাদা ভাবে লিখতে লিখতে ক্লান্ত হয়ে গেলাম!” এই সুবিধাটিই পাবেন for লুপের পদ্ধতিতে। পূর্বের সব শর্ত এখানেও প্রযোজ্য, শুধু তফাৎ বলতে এটুকুই যে একই লাইনে পুরোটা লিখে ফেলা যায়।

[sourcecode language=”cpp”]
for (int count = 1; count < 10; count = count + 1) {
cout << “hello!” << endl;
}
[/sourcecode]

এই সহজ পদ্ধতিগুলো ব্যবহার করে আপনি যন্ত্রকে দিয়ে যেকোনো কাজ (বা কাজের সমষ্টি) বহুবার করে সম্পন্ন করাতে পারেন। কী কাজ করাবেন, কতবার করাবেন, সেই সক্ষমতা ব্যবহার করে কী ধরনের বৃহৎ উদ্দেশ্য সাধন করবেন, ইত্যাদি সম্পূর্ণই আপনার চিন্তাশক্তির উপর নির্ভর করে। আপাতত কিছু সহজ উদাহরণ দিচ্ছি —

১ থেকে ১০০ পর্যন্ত পূর্ণ সংখ্যাগুলো কী কী?
১ থেকে ১০০ পর্যন্ত পূর্ণ সংখ্যাগুলোর যোগফল কত?
২৫ থেকে ৪৩ পর্যন্ত পূর্ণ সংখ্যাগুলোর যোগফল কত?
১ থেকে ১৫ পর্যন্ত বিজোড় সংখ্যাগুলো কী কী?
১ থেকে ১৬ পর্যন্ত বিজোড় সংখ্যাগুলো কী কী?
১ থেকে ১৬ পর্যন্ত কয়টি বিজোড় সংখ্যা আছে?
১+২+৪+৮+১৬+… ধারাটির প্রথম ২০ পদের সমষ্টি কত?

এই কাজগুলোর যেকোনোটি আপনারা খুব সহজেই করতে পারবেন লুপ ব্যবহার করে।

এই লেকচারটির ভিডিও ৪ খণ্ডে বিভক্ত। লেকচারের উদাহরণে ব্যবহৃত কোড ভিডিওর শেষে সংযুক্ত আছে।

পর্ব ৬

অংশ ১

অংশ ২

অংশ ৩

অংশ ৪

উদাহরণে ব্যবহৃত কোডঃ

[sourcecode language=”cpp”]
#include
using namespace std;

int main() {
cout << "This program will demonstrate the use of loops.n" << endl;

// do-while loop
int count1 = 1;
do {
cout << "count1 = " << count1 << endl;
count1 = count1 + 1;
} while (count1 < 10);
cout << "Did you notice how many iterations were there?n" << endl;

// for loop
for (int count2 = 0; count2 < 10; count2 = count2 + 1) {
cout << "count2 = " << count2 << endl;
}
cout << "Did you notice any change in the number of iterations?n" << endl;

// sum of an arithmetic series
// 1+3+5+…+10th-element = ?
int count = 1;
int element = 1;
int sum = 0;
do {
sum = sum + element;
element = element + 2;
count = count + 1;
} while (count < 11);
cout << "1+3+5+…+10th-element = " << sum << endl;

// sum of 1+2+4+8+…+10th-element: simply use "element = element * 2"
// get comfortable with do-while loop, then convert to for loop
}
[/sourcecode]
 

Comments

comments

About the author

ইশতিয়াক রউফ

তথ্যপ্রকৌশলী হিসাবে যুক্তরাষ্ট্রে কর্মরত। শিক্ষাগত জীবনে ইলেক্ট্রিকাল (ব্যাচেলর্স -- লুইজিয়ানা স্টেট ইউনিভার্সিটি, মাস্টার্স -- ভার্জিনিয়া টেক) ও কম্পিউটার (মাস্টার্স -- ইউনিভার্সিটি অফ সাউথ ক্যারোলাইনা) বিজ্ঞানে প্রাতিষ্ঠানিক ভাবে শিক্ষিত। আগ্রহের বিষয়ঃ খেলাধূলা, ব্লগিং, আলস্য।

Leave a Reply