পাতা

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

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

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

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

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

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

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

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

উদোর পিণ্ডি বুধোর ঘাড়ে


তোমার ক্লাস শুরুর বেশ কিছুদিন হয়ে গেছে। এর মধ্যে একদিন ধুপ করে তোমার স্যার তোমাকে একটা অ্যাসাইনমেন্ট দিয়ে বসল। তোমাকে চায়নিজ ভাষার সবগুলো অক্ষর লিখে নিয়ে আসতে পারবে। তুমি মনে মনে ভাবলে এ আর এমন কী! কিন্তু, বাসায় গিয়ে গুগল করতেই তোমার চক্ষু চড়ক গাছ! একেক গবেষকের তথ্য অনুযায়ী চায়নিজ ভাষার অক্ষরের সংখ্যা একেক। সবচেয়ে ছোট লিস্টিতেই আছে প্রায় ২,৬০০ অক্ষর। তুমি একবার মাথা চুলকে চিন্তা করলে, বাংলা ভাষার ৫০টা বর্ণই তোমার ঠিকমত মনে আছে কি’না। কিন্তু, অ্যাসাইমেন্ট তো করতেই হবে। কী করা যায়?
এখানে তুমি দু’টো কাজ করতে পারো। যদি তুমি খুব ব্রিলিয়ান্ট স্টুডেন্ট হও, তাহলে বসে বসে সেই ২,৬০০ অক্ষর পড়তে বসে যাবে (এর মধ্যে তুমি আরও জানতে পারবে, কোন কোন গবেষকের মতে চায়নিজ ভাষার অক্ষরের সংখ্যা লক্ষাধিক) । আর যদি তুমি ফাঁকিবাজ কেউ হও, তাহলে তোমার কোন চায়নিজ বন্ধুকে ধরিয়ে দেবে কাজটা করার জন্য। তুমি জেনে খুশি হবে, পৃথিবীর প্রায় সব প্রোগ্রামারও তোমার মতই ফাঁকিবাজ। তাই তারা একজনের কাজ আরেকজনের ঘাঁড়ে চাপানোর বেশ ভাল একটা পদ্ধতি বের করে রেখেছে। জিনিসটাকে বলে ফাংশন 
মনে কর, তুমি তোমার কোন চায়নিজ বন্ধুকে বলে রাখলে, তাকে তোমার হয়ে চায়নিজ ভাষার অক্ষরগুলো লিখে দিতে হবে। যখন তুমি তাকে কল করবে, তখন সে যেন অ্যাসাইমেন্টটা লিখে ফেলে। এমন বুঝ দিয়ে রাখার পর, যখনই তুমি তোমার বন্ধুকে কল করবে, তখনই সে তোমার কাজ করে দেবে।

সহজ গণিত শিক্ষা

ক্লাসের সবার সাথে তো পরিচিত হওয়া হল। এবার খানিকটা পড়াশোনা শুরু করা যাক।

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