আপনি ১ কেজি আলু কেনার জন্য দোকানে গেলেন।
দোকানে গিয়ে বলতে হবে, “আলু দেন এক কেজি! পচাঁ যেন না থাকে”। তারপর টাকাটা দিলেন। দোকানদার ১ কেজি আলু মেপে আপনাকে দিলে আপনি সেটা নিয়ে বাসায় চলে আসলেন।
এরপর ঐ আলু আপনি কাটবেন না ভর্তা করবেন সেটা আমাদের মাথা ব্যাথার বিষয় না।
আমাদের চিন্তার বিষয় প্রোগ্রামিং।
ধরুন, আমরা এমন একটা প্রোগ্রাম লিখতে চাই, যার কাজ হলো ৩ টি সংখ্যা যোগ করা।
এখন, আপনি যে প্রোগ্রামটি লিখবেন সেটার কার্যপদ্ধতির সাথে কিন্তু ঐ আলু কেনার বেশ মিল আছে। কেমন সেটা??
দোকানদের আপনার যেমন টাকা দেয়া লাগবে, সাথে কোন জিনিসটি কিনবেন সেটাও বলে দেওয়া লাগবে।
আপনার প্রোগ্রামেও আপনাকে সেই তিনটি সংখ্যা দেওয়ার পাশাপাশি বলে দিতে হবে, সেই তিনটি সংখ্যা আপনি যোগ করতে চাচ্ছেন।
প্রোগ্রামিং এর ভাষায় এটা হলো ইনপুট (input)।
১ কেজি আলু মাপা যেমন দোকানীর কাজ, তেমনি সংখ্যাগুলো যোগ করা হলো প্রোগ্রামের কাজ।
প্রোগ্রামিং এর ভাষায় এটা হলো প্রসেসিং (Processing )
দোকানদার আপনার হাতে যে আলুর ব্যাগ ধরিয়ে দেবে, সেটা হলো আপনার টাকা দেওয়া আর আলু চাওয়ার ফলাফল।
তেমনি ভাবে, প্রোগ্রাম যখন আপনাকে ঐ সংখ্যা গুলোর যোগফল দেখাবে সেটা হলো, আপনার কাঙ্খিত ফলাফল।
প্রোগ্রামিং এর ভাষায় এটা হলো আউটপুট (Output)
এত কথা বলার কারণ কি??
উপরের উদাহরণ গুলো খেয়াল করুন। প্রসেসিং ছাড়া বাকি সব কাজ কিন্তু আপনাকেই করতে হচ্ছে!
তার মানে হলো, আপনি কি করতে যাচ্ছেন সেটা সম্পর্কে সম্পূর্ণ স্বচ্ছ ধারণা থাকতে হবে।
এমনকি আউটপুট সম্পর্কেও।
যেমন,
৯৮৫+৩২১৩২ = কত?
আপনি এটা তৎক্ষনাৎ বলতে না পারলেও অন্তত এ ব্যাপারে নিশ্চিত এটার যোগফল অবশ্যই একটা পজেটিভ নাম্বার হবে!
এই টিউটোরিয়াল এর প্রাথমিক পর্যায়ে আমরা যে সব প্রোগ্রামিং করবো, সেগুলো হলো খুবই সাধারণ কিছু গাণিতিক সমস্যার সমাধান। যেমন: যোগ-বিয়োগ, গুন-ভাগ, বড়-ছোট নির্ণয়, কিছু মজার ধাঁধা ইত্যাদি ইত্যাদি।
আমি যদি এখানে কোড লিখে দেই, আর আপনি সেটা কপি-পেস্ট করে নিজেই চালিয়ে নেন, তাহলে কাজের কাজ কিছুই হবে না!
তাহলে আপনার কাজ কী হবে??
একটা ছোট বাচ্চাকে অংক শেখানোর মত মনোভাব নিয়ে বসতে হবে।
দুইটি সংখ্যা কিভাবে যোগ করতে হয় – এই ব্যাপারটি ধীরে ধীরে বুঝাতে হবে।
অ্যালগরিদমের কথা মনে আছে?? ঐ যে…………….. প্ল্যান করার কথা বলেছিলাম!
দুইটি সংখ্যা যোগ করার অ্যালগরিদম কেমন হতে পারে?? ভাবুন।
……….
আপনি যখন কোন কিছু কিনতে যান, তখন কিভাবে দাম পরিশোধ করেন?
নগদ টাকা দিয়ে, ব্যাংকের চেক দিয়ে, ক্রেডিট কার্ড দিয়ে ইত্যাদি ইত্যাদি। আসলে এগুলো সব কিছুই টাকারই এক একটি রূপ!
আপনি হয়তো বলবেন, ছোট বেলায় কটকটিওয়ালাকে ভাঙাচোরা লোহা দিয়ে কত কটকটি খেয়েছেন!! টাকা দেওয়া তো লাগে নি!!
আপনার জন্য দু:সংবাদ হলো, আমাদের মূল আলোচনা যাকে নিয়ে, সে কম্পিউটারের প্রোগ্রাম আপনার কাছ থেকে যখন কোন তথ্য বা ডাটা নিবে, তখন কোন হেলাফেলা করবে না!
সুতরাং আপনাকে জানতে হবে সে কোন কোন টাইপের ডাটা গ্রহণ করে।
চলুন দেখি।
ও! ভালো কথা Data’র এই type গুলো কে বলে Data type।
আচ্ছা! ইংরেজীতে আপনি কোন কোন ধরনের অক্ষর ব্যবহার করে?
প্রধানত দুই ধরনের।
A-Z এক ধরনের, আর 0,1,2…9 আরেক ধরনের।
A-Z হলো character বা বর্ণ। প্রোগ্রামিং এর ভাষায় আমরা একে আদর করে বলি char.
আর 0,1,2…9 হলো number বা সংখ্যা।
এখন, যে সব সংখ্যা আবার পূর্ণ সংখ্যা মানে কোন দশমিক সাথে নিয়ে ঘুরে না, সে গুলোকে বলে integer।
আমরা বলবো int
আর যে সব সংখ্যা একা একা থাকে না, সাথে দশমিক নিয়ে থাকে সে গুলো হলো floating number। যেমন ১০.৩
এগুলোকে আমরা বলবো, float.
অর্থ্যাৎ, Data type পাওয়া গেলো আপাতত তিন রকম।
১. character বা বর্ণ (char)
২. integer বা পূর্ণ সংখ্যা ( int)
৩. floating number বা দশমিক সংখ্যা (float)
এগুলোও ছাড়াও আরো কয়েক ধরনের Data type আছে। সেগুলো যখন সময় আসবে তখন এমনিতেই জানতে পারবেন।
………………..
এখন আরেকটা গুরুত্বপূর্ণ বিষয় আমরা জানবো। তার আগে বাস্তব জীবন থেকে একটু ঘুরে আসি।
আপনার বাসায় আমি যদি গিয়ে বলি, “পানি খাবো”।
তাহলে আশা করা যাচ্ছে আপনি একটা গ্লাসে করে সে পানি নিয়ে আসবেন।
এখন যদি আপনার ইচ্ছা হয় আমাকে চা খাওয়ানোর, তাহলে কিন্তু তখন আর গ্লাসে করে সেটা নিয়ে আসবেন না! কাপ-পিরিচে করে আনবেন।
এই যে, আপনি আমাকে একবার গ্লাসে করে, আরেকবার কাপে করে চা-কফি দিচ্ছেন, (এখানে গ্লাস-কাপ এগুলো হলো পাত্র) তেমনি ভাবে, কম্পিউটারকে যখন আপনি কোন Data দিবেন, তখন সেটা একটা পাত্রে করে দিতে হবে।
আর এর নাম হলো Variable।
গ্লাস-কাপ এগুলো যেমন চা-পানি ধরে রাখে তেমনি, এই Variable এর কাজ হলো Data ধরে রাখা।
……………….
এখন Data type এবং Variable এর মধ্যে একটা সম্পর্ক আছে।
Variable এ Data রাখার আগে আপনাকে বলে দিতে হবে, কোন ধরনের Data আপনি রাখতে চান!
কেননা, এক ধরণের ডাটা চাহিদা এক এক রকম।
চাহিদা ব্যপারটা একটু পরিষ্কার করি।
আপনি যখন, কোন একদিনের আপনার খরচের পরিমাণ হিসাব করতে যান, তখন খাতার একটি পৃষ্ঠাই যথেষ্ট।
আর যদি, পুরো একমাসের খরচের হিসাব করতে যান, তখন কিন্তু একটা খাতার দরকার হবে।
একই ব্যাপার ঘটে কম্পিউটারের ক্ষেত্রে। সে যখন কোন কিছু হিসাব-নিকাশ করতে যায়, তখন তারও কিছু জায়গার দরকার হয়। ডাটা রাখা, যোগফল সংরক্ষন করা ইত্যাদি কাজের জন্য। এই জায়গাটুকু তাকে দেয় RAM।
এক এক ধরনের ডাটার জন্য RAM থেকে সে এক এক রকম জায়গা বরাদ্দ পায়।
যেমন: character এর জন্য ৮ বিট, floating number এর জন্য ৩২ বিট ইত্যাদি।
পানি খাওয়ার কথা বললে, আপনি বুঝে যান, গ্লাস ব্যবহার করতে হবে। আবার, চায়ের জন্য ঠিকই কাপ তৈরী!
আপনি যখন কম্পিউটারকে বলবেন, “আমি একটা character রাখবো।”
সে তখন RAM কে বলবে, “character সাহেব আসবেন, ৮ বিট জায়গা রেডি করো”
………………..
পড়তে পড়তে গলা শুকিয়ে গেছে? এক গ্লাস ঠান্ডা পানি খেয়ে আসতে পারেন।
যাওয়ার আগে, ঠান্ডা পানির রেসিপি বলে দেই।
১. প্রথমে একটা খালি গ্লাস যোগাড় করুন।
২. গ্লাসের অর্ধেক পরিমাণ নরমাল পানি নিন।
৩. ফ্রিজ থেকে দু-চার টুকরা বরফ নিয়ে ঐ গ্লাসে যোগ করুন
৪. অল্প কিছু সময় নিন, বরফ গলাবার জন্য।
৫. তৈরী হয়ে গেলো ঠান্ডা পানি!
পোস্ট শেষ করার আগে, একটা কথা! উপরের রেসিপিতে, গ্লাসের জায়গায় variable, পানি ও বরফের জায়গায় দুটি integer দিলে কি ঠান্ডা পানির জায়গায় আপনি ঐ দুটি integer এর যোগফল পাবেন না??
………..
আগেই বলেছি, আমরা প্রাথমিক পর্যায়ে যে সব প্রোগ্রামিং করবো, সেগুলো হলো খুবই সাধারণ কিছু গাণিতিক সমস্যার সমাধান।
গত পোস্টে বিভিন্ন ডাটাটাইপ নিয়ে আলোচনা করেছি। সেগুলো বুঝে থাকলে তো ভালোই, না বুঝলে আরো ভালো। কারণ, প্রতিটি ডাটা টাইপ নিয়ে আরো বিস্তারিত আলোচনা করা হবে।
আপনার হয়তো মনে হবে, ধুর! এগুলো তো আগে থেকেই জানি। আবার পড়ার দরকার কি!
এজন্যই দরকার যেনো, প্রাথমিক ব্যাপার গুলোতে দুই পক্ষের মধ্যে যেন স্বচ্ছ্তা থাকে। একপক্ষ হলাম আমি, আরেক পক্ষ আপনি।
ছোট বাচ্চাদের আগে বড়দের পায়ে পা রেখে হাঁটতে শেখানো হয়। এখানেও অনেকটা সে রকম ভাবে পথচলা শুরু হয়েছে।
*****************************
বাংলা, ইংরেজি, আরবি, জার্মান, ফ্রেঞ্চ………. আপনি যে ভাষাই শিখতে যান, আপনাকে কিন্তু একটা নির্দিষ্ট কাঠামো অনুসরণ করতে হবে।
যেমন: প্রথমে ঐ ভাষার বর্ণমালা গুলো আপনাকে চিনতে হবে। পরে জানতে হবে শব্দ গঠন। তারপর ব্যাকরণ যেনো আপনি বাক্যগঠন করতে পারেন। তারপর অনেকগুলো বাক্য মিলিয়ে কাব্য লিখবেন নাকি মহাকাব্য লিখবেন সেটা আপনার ব্যাপার।
এখানে, C এটি ভাষা। এই ভাষাতেও আপনি কাব্য-মহাকাব্য লিখতে পারবেন, যদিও তখন সেটাকে আমরা প্রোগ্রাম নামে ডাকবো।
তার আগে কিন্তু আপনাকে অন্যান্য ভাষার মত “C” এর বর্ণমালা, ব্যাকরণ, বাক্যগঠন এই ব্যাপার গুলো জানতে হবে।
আগের পর্বে যে ধরনের ডাটা টাইপ নিয়ে কথা বলেছিলাম, তার একটি ছিলো, integer বা পূর্ণ সংখ্যা। যেমন ১, ২, ৩, ৪, ৫।
এই সংখ্যাগুলো ব্যবহার আমরা অনেক ছোটবেলা থেকেই জানি। তবু, সেসব আমাদের নতুন ভাবে আরেকবার দেখে নিলে ভালোই হয়। কেননা, আমরা শীঘ্রই নির্বোধ কম্পিউটারকে এগুলো শেখাবো।
ঠান্ডা পানির রেসিপির কথা মনে আছে?
যে রেসিপি দিয়ে আমরা দুইটা সংখ্যাও যোগ করে ফেলেছিলাম।
এই ব্যাপারটা আরো সহজ ভাবে দেখা যাক।
পিচ্চি কালে আমরা যোগ-বিয়োগ করেছি কিভাবে খাতায়?
২
+৩
??
“??” স্থানে আমরা যা লিখবো সেটাও একটা সংখ্যা! এই ছোট্ট ব্যাপারটা না বুঝার কিচ্ছু নেই!
এমনকি, এই দুইটা সংখ্যার যোগফল বের করার জন্য আপনার এত কিছুর আয়োজনও করতে হবে না। ঠুস করে বলে ফেলবেন, ৫!
এবার একটু বড় ধরনের যোগ দেখা যাক,
৫৮৯৭৯৪৫
+ ৪৫৬৩২১৭
? ? ? ? ? ? ?
এখন, “??” স্হানে যোগফল বসানোর জন্য, আপনার খাতায় একটা জায়গার দরকার হবে।
দেখা যাচ্ছে এই যোগের কাজটি সম্পন্ন করতে মোট তিনটি জায়গা বরাদ্দ করতে হচ্ছে।
এখানে, “”??” স্থানে আমরা যা লিখবো সেটাও একটা সংখ্যা!””
এই ব্যাপারটা আমরা বুঝতে পারছি, আমাদের স্বাভাবিক বুদ্ধিমত্তা থেকে।
কষ্টের কথা, কম্পিউটারের এই স্বাভাবিক বুদ্ধিমত্তা টুকু নেই।
আর তাই, দুইটি সংখ্যা যোগ করার পর যে যোগফল আসবে সেটা একটা সংখ্যাই হবে, এই সামান্য ব্যাপারটুকুও আপনাকে বলে দিতে হবে। কেন??
আপনার যেমন এই যোগ করতে তিনটি জায়গার দরকার হয়েছে, তেমনি কম্পিউটারের দরকার হবে তিনটি জায়গার/পাত্রের। [গত পর্বে, যাকে আমরা variable বলেছিলাম।] সেই variable এর ধরণটা আপনাকে বলতে হবে।
এতক্ষণ, এত কথা না বলে, আমি বলতে পারতাম, ” “variable” এর “data type” declare করা অনেক জরুরী”
কেন বলিনি?
শিশুদের মধ্যে অনেকে এমন রূঢ় কথা শুনে মন খারাপ করতে পারে।
প্রোগ্রামে আপনি এই কথা গুলো কিভাবে বলবেন?
খুবই সোজা!
আমরা প্রাথমিক ভাবে যোগ করার একটা প্রোগ্রামে কি ধরনের ভাষায় ব্যবহার করা যায় সেটা দেখবো।
তার আগে, আমরা আমাদের ভাষায় কিভাবে যোগ করি সেটা দেখি।
১ম সংখ্যা + ২য় সংখ্যা = যোগফল
প্রোগ্রামে আমাদের কাজ গুলো কেমন হবে?
প্রথমেই তিনটা variable এর নাম বলে দিবো। যেহেতু সব গুলোতেই সংখ্যা থাকবে, তাই আমরা এই কথাটাও বলে দিবো।
int first;
int second;
int sum;
integar কে সংক্ষেপে int লেখা হয়, এটা আগের পোস্টেই বলেছি, এই পোস্টেও আবার বললাম। সুতরাং কেউ যেন, এই তিন অক্ষরের মর্ম উদ্ধার করতে গিয়ে মাথা না চুলকান!
first, second, sum এই গুলো হলো variable এর নাম। এই variable গুলো তে আমরা যথাক্রমে ১ম, ২য় সংখ্যা এবং sum এ তাদের যোগফলকে জমা রাখবো।
শেষে ফুলস্টপ বা দাড়ি না দিয়ে সেমিকোলন কেন দিলাম!!
এইটা দিয়ে একটি লাইনের শেষ নির্দেশ করা হয়।
আমরা আস্তে আস্তে প্রোগ্রামিং এর কিছু আইন-কানুন শিখছি।
এখন আমরা variable এর মধ্যে কিছু সংখ্যা দিবো। এটাও সহজ কাজ!
শুধু লিখবেন,
first= 10;
second= 15;
যোগ করার জন্য যা লিখবো,
sum=first+second;
কাজ শেষ। “sum” নামক variable এ এখন 25 জমা আছে।
আপনি একটি প্রোগ্রাম এর মূল অংশ শিখে ফেলেছেন, যে প্রোগ্রাম দিয়ে দুইটি সংখ্যার যোগফল বের করা যায়
কিন্তু একটি পূর্ণাঙ্গ প্রোগ্রাম লেখা আমরা এখনও শিখিনি। সেটা খুব একটা কঠিন না। আর ২-১ পর্ব পরেই সেটা পারবেন।
যোগ করার আনুষ্ঠনিক নিয়ম কানুন যখন জানেন, তখন বিয়োগ, গুন, ভাগ এগুলো তো কোন ব্যাপারই না!
দুইটি সংখ্যার মাঝখানে +, -, X , ÷ এগুলো বসিয়ে নিবেন ইচ্ছামত।
[যেমন,
sum=first – second;
এইটা বিয়োগফল দিবে। ]
**************************************
আমার শিশু গুলা যোগ-বিয়োগ করা শিখলে, এই টিউটোরিয়াল দিয়ে বসায় দিবো! 😀
ভালু প্ল্যান!! 😛
চমৎকার! একটা ছোট্ট মিস্টেক হইছে!
২ টা পর্ব একসাথে দিছো বলে মাঝখানে আগের পর্ব কথাটা আসছে!
[আগামীর দিনগুলিতে সাধারণ পাঠক কিছু হারাবা, আর সিরিয়াস কিছু পাঠক পাবা! কারণ আমাদের এই টিউটোরিয়াল কঠিন দিকে যাচ্ছে!]
ভালো লাগলো লেখাটা পড়ে। আমি নিজে একজন ছোট প্রকৌশলী। তবে আপনার লেখাটা পড়ে শিশু আর সি প্লাসের সংগা মিলাতে পারছিনা। কত বছর প্রর্যন্ত আপনি শিশু ধরেছেন? আপনি কি মনে করেন আপনি যা লিখলেন তাতে সি প্লাস সম্পর্কে জানা সম্ভব? আমি ভালোই বুঝতছি আপনি সি প্লাসের সম্পর্কে যখন লিখছেন তখন ভালোই জানেন, হয়তো বুয়েটেই পড়েন ! তবে আমরা সি প্লাস পড়েছিলাম ৩য় বর্ষে। তাই শিশুদের জন্য লেখা কথাটা খুব একটা মেনে নিতে পারছিনা। তবে আমার ভুলো হতে পারে!
C এর জন্য আমার ভালবাসা পুনরায় জাগ্রত করে দিলে যে….অনেক অনেক অনেক ভালো হয়েছে…. :clappinghands:
C কে ভালোবাসা, C এর জন্য ভালোবাসা। :beshikhushi:
আমি অপার হয়ে বসে আছি পরের পর্বের আশায়। 😐