সালাম ও শুভেচ্ছা নিয়ে শুরু করছি আজকের পর্ব। গত পর্বে আমরা দেখেছি for loop এর কাজ। এ পর্বে শিখব,
এবার শুরু করি, আমাদের প্রথম আলোচনাঃ
আমরা while লুপ এর কাজ জানি। while loop কোন বিশেষ শর্তাধীনে এর বডিতে লেখা কোড এক্সিকিউট করে। do..while অনেকটা while লুপ এর মত হলেও একটি পার্থক্য রয়েছে। সেটি হল, while loop প্রথমেই condition পরীক্ষা করে দেখে, যদি while loop এর condition TRUE হয় তাহলেই কেবল মাত্র কোড এক্সিকিউট করবে, নতুবা নয়। কিন্তু do…while loop প্রথমেই শর্ত পরীক্ষা না করে একবার কাজ করবে এবং এরপর থেকে প্রতিবার শর্ত পরীক্ষা করে কাজ করবে অর্থাৎ এরপর while লুপ এর মত কাজ করবে। এর অর্থ হল, do..while, while লুপ এর চেয়ে একবার বেশি কাজ করে।
লেখ্যরূপঃ
do
{
//Tasks to be executed;
}
while(condition statement);
উদাহরন স্বরুপ মনে করুনঃ
আপনি একটি প্রোগ্রাম তৈরী করবেন যা index এর একটি নির্দিষ্ট শর্তের জন্য index value print করবে। এখানে index হল global variable
এখানে দেখুন প্রোগ্রামে, while এর শর্তে উল্লেখ করেছি যে এই লুপ কাজ করবে index এর value 0(শূন্য) থেকে বড় অর্থাৎ ১ থেকে এবং ১০ থেকে ছোট অর্থাৎ ৯ পর্যন্ত। তাই আমাদের while loop এর অভিজ্ঞতা থেকে বলতে পারি যে ১ থেকে ৯ পর্যন্ত value এর জন্য print করার কথা। কিন্তু আসলেই কি তাই হচ্ছে। কোড রান করে দেখি কি হয়ঃ
এখানে লক্ষ করুন, index value 0 এর জন্য কোড এক্সিকিউট করেছে (লাল কালি চিহ্নিত)। কিন্তু শর্তানুসারে তা করার কথা নয়। এখানেই do..while লুপ এর সাথে while loop এর পার্থক্য। while loop এক্ষেত্রে index value 1 থেকেই শুরু করত। কিন্তু do…while এর শুরুতেই বলেছিলাম যে এই লুপ প্রথমে কোন শর্ত পরীক্ষা না করেই একবার কোড এক্সিকিউট করবে এবং এরপর থেকে শর্ত পরীক্ষা করা শুরু করবে মানে while এর মত কাজ করবে। একারনেই, index value 0 condition এ না থাকলেও এক্সিকিউট করেছে কিন্তু ১০ এর জন্য এক্সিকিউট করেনি কারন, শর্ত এ বলা ছিল, ১০ এর ছোট value পর্যন্ত মানে ৯ পর্যন্ত কাজ করবে।
switch statement কিছুটা ভিন্ন অন্য সকল কন্ট্রোল স্ট্রাকচারের থেকে। প্রথমে বলে নেই, আপনারা নিশ্চই কোন কোন সময় এমন দেখেছেন যে আপনার কাছে কিছু কাজ করার জন্য অপশন দেয়া হয়। যেমন বলা হয়-
উদাহরন-১
Press 1 to write
Press 2 to read
Press 3 to print
Press 4 to show
এই ধরনের কাজ গুলো করার জন্য দরকার switch structure.
Switch structure এর লেখার ধরণঃ
switch(index)
{
case index_value1:
//your code
break;
case index_value2:
//your code
break;
default:
//your code
break;
}
এখানে index_value বলতে আপনি যে যে case এর জন্য প্রোগ্রাম করছেন তার মান বসবে। যেমন আমাদের উদাহরনে ব্যবহারকারী কিবোর্ড থেকে 1,2,3,4 যেকোনটি প্রেস করতে পারে। অর্থাৎ এখানে index_value 1,2,3,4.
এখন প্রশ্ন হল, সুইচ স্টেটমেন্ট এই মান পাবে কিভাবে। খেয়াল করে দেখুন আমি index নামে একটি ভ্যারিয়েবেল switch এর ভিতরে লিখেছি। এই ভ্যারিয়েবেলের মাধ্যমে switch তার মান পাবে। এই মান যে সবসময় integer হতে হবে এমন নয়। আপনি string ব্যবহার করতে পারেন।
আসুন আমাদের উদাহরন এর প্রোগ্রামটি করি
এখানে দেখুন, প্রথমে ইউজার কে কিভাবে অপশন দেয়া হবে। index ইউজার এর কিপ্রেস এর ভ্যালু নিবে এবং switch কে দিবে।
এখন দেখুন switch এর ভিতরের কোড। এখানে default case তখন চলবে যখন ইউজার ১,২,৩,৪ এর কোন একটি প্রেস করবে না। ধরুন যদি ৫ প্রেস করে অথবা অন্য কোন ‘কি’ প্রেস করে।
এই কোড রান করে দেখুন কাজ করবে।
এবার আপনারা যদি নিজে থেকে কাজ করতে চান, তার জন্য আরেকটি উদাহরন দিলাম।
উদাহরন-২
ধরুন আপনি আপনার ব্যাবহারকারীকে একটি যোগ বিয়োগের কাজ করতে বলছেন। প্রথমে তার কাছ থেকে দুইটি সংখ্যা ইনপুট নিয়ে নিবেন। এখন যদি ব্যাবহারকারী
ADD লিখে তাহলে বুঝতে হবে যোগ এর কাজ করতে হবে।
আর যদি SUB লিখে তাহলে বিয়োগের কাজ করবে।
অথবা যদি INPUT লিখে তাহলে নতুন দুইটি সংখ্যা ইনপুট নিবে
অথবা যদি QUIT লিখে তাহলে প্রোগ্রাম বন্ধ হয়ে যাবে।
এবার কিছু প্রয়োজনীয় বিষয় নিয়ে আলোচনা করব।
এই প্রোগ্রামে goto L নামে যে ইন্সট্রাকশন লেখা হয়েছে তার সাপেক্ষে আলোচনা করব। goto সাধারনত প্রোগ্রামের বিশেষ কোন অংশে সরাসরি যাবার জন্য (অর্থাৎ Jump করার জন্য) ব্যাবহার করা হয়। এর জন্য প্রথমেই কোডের বিশেষ কোন অংশে একটি লেবেল (Label) নিতে হবে এবং এরপর goto দিয়ে সেই লেবেলে জাম্প করতে হবে।
goto L অর্থ হল কোডের L নামে যে লেবেল আছে সেই অংশের কোডে জাম্প করতে হবে।
আমাদের এই কোডে প্রত্যেকবার একটি ইনপুট এর সাপেক্ষে ফলাফল দেখাবার পর আবার ইউজার কে ইনপুট দিতে বলা হবে এই কারনেই প্রত্যেকবার goto L ব্যাবহার করেছি।
break হল একটি বিশেষ keyword যা কোন লুপ থেকে বার হবার জন্য অর্থাৎ লুপ এর কাজ চলাকালীন সময়ে বেরিয়ে আসবার জন্য ব্যাবহার করা হয়।
continue ব্যাবহার করা হয় for loop অথবা while loop এর ভিতর কোন নির্দিষ্ট শর্তের জন্য কোড এক্সিকিউট না করে পুনরায় লুপ কে ঘুরানোর জন্য।
আজকের মত এখানেই শেষ করছি। ধন্যবাদ।
আমি জ্যোতি। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 বছর 11 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 17 টি টিউন ও 98 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 2 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
আমি জ্যোতি চৌধুরী। কম্পিউটার সাইন্স এন্ড ইঞ্জিনিয়ারিং এর ছাত্র। মিলিটারি ইন্সটিটিউট অফ সাইন্স এন্ড টেকনোলজি, মিরপুর ক্যান্টনমেন্ট এ পড়াশোনা করছি। ভাল লাগে বন্ধুদের সাথে আড্ডা দিতে, কম্পিউটার প্রযুক্তি সম্পর্কে জানতে। আগ্রহ আছে সফটওয়্যার ডেভেলপমেন্ট, প্রোগ্রামিং ও ওয়েব ডেভেলপমেন্টের প্রতি। স্বপ্ন দেখতে ভালবাসি। স্বপ্ন কে বাস্তবে রুপায়ন করতে পছন্দ করি।
সুন্দর………চালিয়ে যান। আমরা পাশে আছি।