পাতা

ভ্যারিয়েবলের স্তুপ

দিনকে দিন তোমার ক্লাস পারফর্মেন্সের গ্রাফের উন্নতির সাথে সাথে তুমি ক্রমাগত স্যারের আরও প্রিয়পাত্র হচ্ছ। এখন স্যার তোমাকে এতটা পছন্দ করে যে, ক্লাসের রেজাল্ট বানানোর কাজেও তোমার সাহায্য নিতে শুরু করেছে। ক'দিন আগে তোমাদের একটা ক্লাসটেস্ট হয়ে গেল মনে আছে নিশ্চয়। তোমার স্যার তোমাকে দায়িত্ব দিল, এর মধ্যে থেকে সর্বোচ্চ নাম্বার, সর্বনিম্ন নাম্বার আর সব নাম্বারের গড় খুঁজে বের করতে হবে। তোমার ক্লাসে মোট শিক্ষার্থী আছে ১২০ জন। তোমার তো এবার মাথায় হাত। ১২০ জনের রেজাল্ট থেকে সর্বোচ্চ, সর্বনিম্ন আর গড় বের করতে হলে সবার আগে তোমাকে ১২০টা ভ্যারিয়েবল নিতে হবে। সেগুলো ১২০ বার স্ক্যান করে ইনপুট নিতে হবে। ১২০টা সংখ্যার মধ্যে তুলনা করে সর্বোচ্চ নাম্বার বের করতে হবে। ১২০টা সংখ্যার মধ্যে তুলনা করে সর্বনিন্ম নাম্বার বের করতে হবে। তারপর ১২০টা সংখ্যা যোগ করে তাকে ১২০ দিয়ে ভাগ করে গড় নাম্বার বের করতে হবে। এ কি মুখের কথা! তুমি মনে মনে চিন্তা করতে থাকলে, যদি এমন কোন পদ্ধতি থাকত, যেখানে একবারেই ১২০টা ভ্যারিয়েবল ডিক্লেয়ার করে দেয়া যায়। একবার ইনপুট নিয়েই সেটাকে ১২০বার কাজে লাগানো যায়। একই ব্যাপার সর্বোচ্চ, সর্বনিম্ন আর গড় নাম্বারের ব্যাপারেও। 

গরুর গাড়ির দুই চাক্কা ঘুরঘুরাইয়া চলে

একটা ক্লাসটেস্ট তো হয়ে গেলে। এবার নেক্সট ক্লাসটেস্টের জন্য পড়াশোনা। স্বভাবতই স্যার আগের চেয়ে কঠিন কঠিন কাজ করতে দেবে। এবার ধপ করে তোমাকে কাজ দিয়ে বসল, তোমাকে নামতা লিখতে হবে। তুমি ভাবলে, সেটা আর এমন কী! কিন্তু, খানিকবাদেই স্যার আবারও সেটার সাথে শর্ত জুড়ে দিলেন। প্রতি নামতায় তোমাকে ১ থেকে ১০ নয় বরং ১০০ পর্যন্ত গুণফল লিখতে হবে। একই সাথে নামতা লিখতে হবে ৩১ থেকে ৪০ এর। অর্থাৎ ১০০ X ১০ মোট এক হাজারটা লাইন লিখতে হবে। শুনেই তোমার মাথায় হাত! এতকিছু কিভাবে লিখলে। একই সাথে তুমি খানিকটা বিরক্তও হলে। পুরো এক হাজার লাইনেই তোমাকে মোটামুটি একই কাজ করতে হচ্ছে। একটা নির্দিষ্ট সংখ্যাকে ক্রমান্বয়ে ১ থেকে ১০০ দিয়ে গুণ করিয়ে সমান চিহ্ন দিয়ে গুণফলটা লিখতে হচ্ছে। এই একই কাজ বারবার, বারবার, বারবার। তুমি ভাবতে থাকলে, যদি এমনটা করা যেত যে, আমি কাউকে বুঝিয়ে দিলাম, আমাকে এই গুণ করার কাজটা এভাবে প্রতিবার একটু একটু করে পরিবর্তন করে একশো বার লিখতে হবে, আর কাজটা সেভাবে হয়ে যেত!

*শর্ত প্রযোজ্য

ক্লাস তো অনেকদিন করলে। এরই মাঝে একদিন ক্লাস শুরু হতেই স্যার বলল, যেহেতু তোমাদের অনেকদিন ধরেই ক্লাস চলছে, তাই একটা ক্লাসটেস্ট নেয়া দরকার। কিন্তু, সামনের সপ্তাহেই তাকে একটা সেমিনারে জয়েন করতে গুয়াংঝৌ যেতে হবে। কিন্তু, তার জন্য ক্লাসটেস্ট বাদ যাবে না। যদি স্যার সেদিন ক্লাসে আসতে পারে, তাহলে বোর্ডে চারটা সংখ্যা লিখে দেবে। তোমাদের তার যোগফল আর গুণফল বের করতে হবে। আর যদি স্যার ক্লাসে আসতে না পারে, তাহলে তোমাদের ২৫৬ এর নামতা লিখতে হবে। অর্থাৎ, ব্যাপারটা এরকম - যদি একটা ঘটনা সত্যি হয় (স্যারের ক্লাসে আসা) তাহলে একটা ঘটনা ঘটবে। আর যদি সেটা মিথ্যে হয়, তাহলে অন্য একটা ঘটনা ঘটবে। প্রোগ্রামিংয়ে এই জিনিসটাকে if আর else নামের দু'টো শব্দ দিয়েই সামলে নেয়া যায়। তাহলে আমরা এই প্রোগ্রামটা লিখে ফেলি -

এবার নিজে পড়তে শেখো

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