«

»

Oct ২৩

প্রোগ্রামিং (C) টিউটোরিয়াল (পর্ব – ২) : বাইনারি ও হেক্সাডেসিমাল

আমার আজকের পর্ব শুরু করছি C ল্যাঙ্গুয়েজের প্রতিষ্ঠাতা ডেনিস রিচির প্রতি শ্রদ্ধা জানিয়ে, যিনি গত ১২ অক্টোবর মারা যান। তার কয়েক দিন আগে ৫ অক্টোবর মারা যান অ্যাপল কোম্পানির অন্যতম প্রতিষ্ঠাতা ও সিইও স্টিভ জবস। দ্বিতীয় জনের মৃত্যুতে অনেক আলোচনা হলেও প্রথম জন এক প্রকার নীরবেই এই পৃথিবী ছেড়ে চলে যান। অথচ, কম্পিউটারের অগ্রগতিতে কার অবদান বেশি, তা নিয়ে হয়তো একটা বিতর্কই হয়ে যেতে পারে। যারা রিচি সম্পর্কে জানেন, তারা তাঁর অবদান সম্পর্কে ভালোই অবগত। রিচি আবিষ্কার করেন C ও Unix, যা থেকে আমরা আরো পেয়েছি Java, .Net, C# এমনকি আমাদের বহুল ব্যবহৃত অপারেটিং সিস্টেম Windows। আর বাণিজ্যিকভাবে বিভিন্ন সার্ভারে Unix তো আজো ব্যবহৃত হচ্ছে। যাই হোক, দুজনের কারো অবদানই কম না। কাজেই, দুজনের প্রতিই রইলো আমার আন্তরিক শ্রদ্ধা।

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

কম্পিউটার ১ ও ০ ছাড়া আর কোন ডিজিট চিনে না এবং যোগ ছাড়া আর কিছু করতে পারে না। এই ১ ও ০ এর আবার বিভিন্ন রূপ আছে। কোন কোন জায়গায় তারা সংখ্যা ১ ও ০, কোন জায়গায় তারা যথাক্রমে সত্য-মিথ্যা (True-False), কোন জায়গায় তারা হ্যাঁ-না (Yes-No)। মোদ্দা কথা, কম্পিউটার যা করে, তা এই দুই ডিজিটের মাধ্যমেই করে। এখন প্রশ্ন আসতে পারে, তাহলে আমরা যে কম্পিউটারে যোগ করি, ৫ + ৭ = ১২, সেটা সে কীভাবে করে? কম্পিউটার প্রথমে এই সংখ্যাগুলোকে ১ আর ০ এর সাহায্যে প্রকাশ করে, তারপর তাদের যোগ করে, তারপর সেই যোগফলকে আবার আমাদের পরিচিত সংখ্যায় প্রকাশ করে। এই যে ১ ও ০ এর সাহায্যে বানানো সংখ্যা পদ্ধতি, এর নাম বাইনারি বা দ্বিমিক সংখ্যা পদ্ধতি। আর আমরা যে পদ্ধতির সাহায্যে গণনা করি, তার নাম ডেসিমাল বা দশমিক বা দশভিত্তিক সংখ্যা পদ্ধতি। এছাড়াও, আরো দুটি সংখ্যা পদ্ধতি প্রচলিত আছে, তারা হলো অক্টালহেক্সাডেসিমাল সংখ্যা পদ্ধতি।

কোন সংখ্যা পদ্ধতির নাম দেয়া হয় তার ডিজিট সংখ্যার উপর ভিত্তি করে। কোন সংখ্যা পদ্ধতির ডিজিট হলো ঐ সংখ্যা পদ্ধতিতে ব্যবহৃত ক্ষুদ্রতম এক অংকের সংখ্যা, বাংলায় যাকে আমরা একক বলি। উপরে বলা এই সংখ্যা পদ্ধতিগুলোর ডিজিট সংখ্যা এরকম:
ডেসিমাল — ১০
বাইনারি — ২
অক্টাল — ৮
হেক্সাডেসিমাল — ১৬

এখানে আমরা প্রধানত ডেসিমাল, বাইনারি ও হেক্সাডেসিমাল সংখ্যা পদ্ধতি নিয়ে আলোচনা করবো। ডেসিমাল সংখ্যা পদ্ধতির ডিজিটগুলো হচ্ছে ০, ১, ২, ৩, ৪, ৫, ৬, ৭, ৮ ও ৯। আর বাইনারি সংখ্যা পদ্ধতির ডিজিটগুলো হচ্ছে ০ ও ১। কোন সংখ্যা পদ্ধতি সম্পর্কে জানার প্রথম ধাপ হলো ঐ পদ্ধতিতে গুনতে শেখা। আমরা ডেসিমাল সংখ্যা পদ্ধতিতে অভ্যস্ত বলে সাধারণত অন্য কোন পদ্ধতিতে গুনতে স্বাচ্ছন্দ্য বোধ করি না। এর মূল কারণ, একদম ছোটবেলায় যখন আমরা গুনতে শিখি, তখন আসলে মুখস্ত করি, কিন্তু ভেবে দেখি না আসলে কীভাবে গুনছি। অবশ্য ঐ বয়সের জন্য সেটাই স্বাভাবিক, কারণ তখন গণনার পেছনের জটিল তত্ত্ব শিখতে গেলে আসলে কিছুই শেখা হতো না। তবে বড় বয়সে যদি আমরা ডেসিমাল বা দশমিক বাদে অন্যান্য সংখ্যা পদ্ধতিতে গণনা করা শিখতে চাই (যেটা প্রোগ্রামিং শেখার জন্য খুবই জরুরি), তাহলে অবশ্যই গণনার পেছনের তত্ত্ব শিখে আসতে হবে। চলেন, তাহলে আমাদের চির পরিচিত ডেসিমাল দিয়েই শুরু করা যাক।

শুরু করতে হবে ডিজিট বা একক থেকে। আমরা সবাই একক তথা এক অংকের সংখ্যাগুলো গুনতে পারি। অর্থাৎ, ০ থেকে ৯। তারপর আসে দুই অংকের সংখ্যা ১০। কথা হলো, ৯ এর পরে কেন ১০ আসে? ২০ আসে না কেন? বা ১০০ আসে না কেন? কারণ, গণনার নিয়ম অনুযায়ী এক অংকের সংখ্যা গুনে শেষ করার পর এক অংকের প্রথম অর্থবহ সংখ্যা নেয়া হয়, আর তার পরে এক অংকের সবচেয়ে ছোট সংখ্যাটা বসিয়ে দুই অংকের সংখ্যা বানানো হয়। তারপর যেভাবে আমরা এক অংকের সংখ্যা গুনেছিলাম, ঠিক সেভাবে দুই অংকের সংখ্যার একক স্থানীয় অংকের মান গুনতে হবে। এখন, এক অংকের সবচেয়ে ছোট সংখ্যা হচ্ছে ০। কিন্তু, ০ এর পর যাই বসাই না কেন, তা আসলে এক অংকের সংখ্যাই হবে, দুই অংকের হবে না। যেমন ০১, ০২, ০৭ ইত্যাদি এক অংকের সংখ্যা। কাজেই, ০ দিয়ে দুই অংকের সংখ্যা শুরু করাটা অর্থহীন (এজন্যই উপরে ‘অর্থবহ’ শব্দটার উপর জোর দেয়া হয়েছে)। ০ এর পর সবচেয়ে ছোট এক অংকের সংখ্যা ১। কাজেই, ১ দিয়েই আমাদের দুই অংকের সংখ্যা গোনা শুরু হয়। এক অংকের সংখ্যা গোনার সময় আমরা যেভাবে ০ থেকে ৯ পর্যন্ত গুনেছি, দুই অংকের সংখ্যার ক্ষেত্রেও ঠিক একইভাবে ১ এর পরে ০ থেকে ৯ পর্যন্ত বসিয়ে গুনতে হবে। অর্থাৎ, দুই অংকের প্রথম দশটা সংখ্যা হবে ১০ থেকে ১৯। এবার, একক স্থানীয় অংকে বসানোর মতো সংখ্যা ফুরিয়ে যাওয়ায় (১৯ এর একক স্থানীয় অংকে আছে ৯, যা এক অংকের সবচেয়ে বড় সংখ্যা) আমরা দশক স্থানীয় অংকের মান এক গুনবো (বা এক বাড়াবো), অর্থাৎ দশক স্থানীয় অংকের মান ১ এর পরে হবে ২ এবং এর জন্য একক স্থানীয় অংকে আবার ০ থেকে ৯ পর্যন্ত গুনবো। কাজেই, দুই অংকের দ্বিতীয় দশটা সংখ্যা হবে ২০ থেকে ২৯। এভাবে এগুতে থাকলে একসময় আমরা ৯৯ এ পৌঁছে যাবো, যা আসলে দুই অংকের সবচেয়ে বড় সংখ্যা।

এখন, ৯৯ এর পরে কী হবে? যেহেতু দুই অংকের সংখ্যা শেষ, কাজেই আমাদের তিন অংকে যেতে হবে। এখানেও সেই একই পদ্ধতি। অর্থাৎ, প্রথম অর্থবহ এক অংকের সংখ্যা ১ নেবো। এরপর দুইবার এক অংকের সবচেয়ে ছোট সংখ্যা ০ বসিয়ে গোনা শুরু করবো। সেক্ষেত্রে তিন অংকের প্রথম সংখ্যা হবে ১০০। এখন, আমরা যদি এই সংখ্যার শুধু দশক ও একক স্থানীয় অংকের দিকে তাকাই, তাহলে পাবো একটা দুই অংকের সংখ্যা। আর আমরা যেহেতু দুই অংকের সংখ্যা গুনতে শিখে গেছি, কাজেই খুব সহজেই ঐ দুই অংকের সংখ্যা গুনে আমরা পেয়ে যাবো তিন অংকের প্রথম একশো সংখ্যা ১০০ থেকে ১৯৯। এক্ষেত্রে হিসাবের সুবিধার জন্য ০ থেকে ৯৯ পর্যন্ত সব সংখ্যাকেই দুই অংকের সংখ্যা (০০ থেকে ৯৯) বলে ধরে নেয়া যায়। আপনাদের নিশ্চয়ই মনে আছে, আমরা কীভাবে ১৯ থেকে ২০ পেয়েছিলাম? যেহেতু একক স্থানীয় অংকে সবচেয়ে বড় সংখ্যা ৯ এর পরে আর কিছু বসানো সম্ভব ছিলো না, তাই আমরা দশক স্থানীয় সংখ্যা এক বাড়িয়ে একক স্থানীয় অংকে আবার নতুন করে গোনা শুরু করেছিলাম। এখানেও আমরা ঠিক একই কাজ করবো। যেহেতু ১ এর ডানপাশে দুই অংকের সবচেয়ে বড় সংখ্যা ৯৯ পেয়ে গেছি, কাজেই এবার ১ এর মান বাড়িয়ে ২ বানাবো এবং এর পরের দুই অংকে আবার গোনা শুরু করবো ০ থেকে, যা শেষ হবে ৯৯ এ গিয়ে। এভাবে পাওয়া যাবে তিন অংকের দ্বিতীয় একশো সংখ্যা ২০০ থেকে ২৯৯। এভাবে গুনতে থাকলে আমরা একসময় পাবো তিন অংকের সবচেয়ে বড় সংখ্যা ৯৯৯। আশা করি এবার পাঠকরা বুঝতে পারছেন, এভাবে আমরা চার, পাঁচ ইত্যাদি যেকোনো অংকের সংখ্যাই গুনতে পারবো। আসলে এভাবে শুধু দশমিক পদ্ধতিতেই না, অন্য যেকোনো পদ্ধতিতে যেকোনো সংখ্যা গণনা করা যাবে। নিচে চিত্রের মাধ্যমে ডেসিমাল পদ্ধতির সংখ্যা গণনা প্রক্রিয়া দেখানো হলো:

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

এই প্রক্রিয়ায় আপনি যেকোনো অংকের বাইনারি সংখ্যা গুনতে পারবেন। পদ্ধতিটা শুরুতে একটু জটিল লাগতে পারে। একটু প্র্যাকটিস করলেই সহজ মনে হবে আশা করি।

এই পদ্ধতিতে শুধু যে ডেসিমাল বা বাইনারি সংখ্যা গুনতে পারবেন, তা না। বরং যেকোনো ভিত্তির সংখ্যা পদ্ধতিতেই এই নিয়মে সহজেই গোনা সম্ভব। এই নিয়মে হেক্সাডেসিমাল পদ্ধতিতে সংখ্যা গণনার প্রক্রিয়া সংক্ষেপে দেখে নেয়া যাক। হেক্সাডেসিমাল সংখ্যা পদ্ধতির ভিত্তি ১৬। অর্থাৎ, এই পদ্ধতিতে মোট ১৬ টা ডিজিট বা একক তথা এক অংকের সংখ্যা আছে। এগুলো হচ্ছে ০, ১, ২, ৩, ৪, ৫, ৬, ৭, ৮, ৯, A, B, C, D, E ও F। এখানে প্রথম দশটা একক আমাদের বহুল ব্যবহৃত ডেসিমাল পদ্ধতির মতোই। বাকি ছয়টা একক হচ্ছে A থেকে F পর্যন্ত। এগুলোকে কিন্তু ইংরেজি বর্ণ বলে ভাবলে ভুল করবেন। হেক্সাডেসিমাল পদ্ধতিতে এগুলো আসলে সংখ্যা বা একক হিসাবে ব্যবহৃত হয়। নিচের চিত্রের মাধ্যমে হেক্সাডেসিমাল পদ্ধতির গণনা সম্পর্কে ধারণা দেয়া হলো:

আগামী পর্বে আমরা বাইনারি ও হেক্সাডেসিমাল সম্পর্কে আরও জানবো। আপাতত এই গণনার সাথে প্রোগ্রামিংয়ের সম্পর্ক কী, তা এখন বুঝতে না পারলেও পরবর্তীতে আমরা যখন কম্পিউটার সম্পর্কে আরো জানবো, তখন এই গণনা পদ্ধতির কার্যকারিতা সম্পর্কেও বুঝতে পারবো।

গত পর্বের কুইজের উত্তর:
গত পর্বে মোট চারটা কুইজ দিয়েছিলাম। প্রথম তিনটা কুইজ অনেক সহজ ছিল, তাই সেগুলো সম্পর্কে আর আলোচনা করবো না। সরাসরি চলে যাচ্ছি বোনাস কুইজের উত্তরে। তার আগে প্রশ্নটা আরেকবার দেখে নেই:

ধরেন, একটা রাস্তার পাশে n সংখ্যক লাইট আছে, আর প্রত্যেক লাইটের সামনে একজন করে লোক দাঁড়ানো আছে। ধরলাম n = 10। অর্থাৎ, ১০ জন লোক ১০ টা লাইটের সামনে দাঁড়িয়ে আছে। আমরা লোকদের নাম্বারিং করলাম ১ থেকে ১০, আবার লাইটেরও নাম্বারিং করলাম ১ থেকে ১০। এবার সবাইকে একটা কাজ দিলাম, আর তা হলো, প্রত্যেকে প্রত্যেকের ক্রমের গুণিতক ক্রমের বাতিগুলো ‘টগল’ করবে, অর্থাৎ অন থাকলে অফ করবে, অফ থাকলে অন করবে। এক্ষেত্রে ধরে নিলাম, লাইটগুলো শুরুতে অফ ছিলো। যেমন, ১ নং ব্যক্তি ১ থেকে ১০ পর্যন্ত সবগুলো লাইট অন করে দিবে (কারণ ১ থেকে ১০, সবগুলোই ১ এর গুণিতক)। এরপর ২ নং ব্যক্তি শুধু ২, ৪, ৬, ৮ ও ১০ নং লাইট অফ করে দিবে (কারণ ১০ এর মধ্যে ২ এর গুণিতক ২, ৪, ৬, ৮, ও ১০ এবং ১ নং ব্যক্তি সবগুলো লাইটই অন করে রেখেছিলো)। এভাবে,
৩ নং ব্যক্তি: ৩ নং লাইট অফ করবে (কারণ ১ নং তা অলরেডি অন করে রেখেছে), ৬ নং লাইট অন করবে (কারণ ২ নং ব্যক্তি তা অফ করে রেখেছে) ও ৯ নং লাইট অফ করবে।
৪ নং ব্যক্তি: ৪ নং ও ৮ নং লাইট অন করবে।
৫ নং ব্যক্তি: ৫ নং লাইট অফ করবে ও ১০ নং লাইট অন করবে।
৬ নং ব্যক্তি: ৬ নং লাইট অফ করবে।
৭ নং ব্যক্তি: ৭ নং লাইট অফ করবে।
৮ নং ব্যক্তি: ৮ নং লাইট অফ করবে।
৯ নং ব্যক্তি: ৯ নং লাইট অন করবে।
১০ নং ব্যক্তি: ১০ নং লাইট অফ করবে।
কাজেই, পুরো প্রসেস শেষে ১০ নং লাইট অর্থাৎ n-তম লাইট অফ থাকবে। কুইজের প্রশ্নটা হলো, n এর মান কীরকম হলে n-তম লাইটটা অন থাকবে?

উত্তর হচ্ছে, n এর মান পূর্ণবর্গ হলে n-তম লাইটটা অন থাকবে। অনেকভাবেই এটা বের করা যায়। প্রথমেই মাথায় রাখতে হবে, আমাদের মূল লক্ষ্য n-তম লাইটটা, বাকি লাইটগুলোর অবস্থা নিয়ে আমাদের মাথা ঘামানোর দরকার নাই। এখন, এই n-তম লাইট কোন কোন ব্যাক্তি ‘টগল’ করবে? উত্তর হচ্ছে, n এর গুণনীয়ক বা উৎপাদক ক্রমের ব্যাক্তিগণ। যেমন, উপরের উদাহরণে খেয়াল করেন, ১০ নং লাইট টগল করছে ১ (অন), ২ (অফ), ৫ (অন) ও ১০ (অফ) নং ব্যাক্তি। যদি n এর মান ১২ হতো, অর্থাৎ ১২ জন ব্যাক্তি ও ১২ টা লাইট থাকতো, তাহলে ১২ নং লাইট টগল করতো ১ (অন), ২ (অফ), ৩ (অন), ৪ (অফ), ৬ (অন) ও ১২ (অফ) নং ব্যাক্তি। কাজেই, n এর জোড় সংখ্যক গুণনীয়ক থাকলে n তম লাইট অফ থাকবে, আর বেজোড় সংখ্যক গুণনীয়ক থাকলে n তম লাইট অন থাকবে। তাহলে আমাদের সমস্যা অনেকটাই ছোট হয়ে এলো। এখন শুধু যেসব সংখ্যার বেজোড় সংখ্যক গুণনীয়ক আছে, সেসব সংখ্যা বের করে তাদের প্যাটার্নটা দেখলেই চলবে। এই কাজটা বেশ কয়েকটা সংখ্যা নিয়ে করে দেখা যায়। n এর মান ১ থেকে শুরু করে ৩০ পর্যন্ত সংখ্যাগুলো নিয়ে প্রশ্নে বর্ণিত প্রক্রিয়ায় একটু নেড়ে-চেড়ে দেখলেই দেখা যাবে, n এর মান ১, ৪, ৯, ১৬, ২৫ ইত্যাদির জন্য n তম লাইট অন থাকছে। এটাকে বলে ট্রায়াল অ্যান্ড এরর প্রক্রিয়া, যা অনেক আদিকাল থেকে বিভিন্ন বৈজ্ঞানিক ও গাণিতিক গবেষণায় স্বীকৃত একটা পন্থা। যারা এই প্রক্রিয়ায় যেতে চান না, তাদের আরেকটু চিন্তা করতে হবে। এর জন্য কোন সংখ্যার গুণনীয়ক বা উৎপাদক বের করার পদ্ধতির দিকে একটু দৃষ্টি দেয়া যাক। কোন সংখ্যার উৎপাদক সবসময় জোড়ায় জোড়ায় থাকে। উৎপাদক বের করার পদ্ধতির একটু তাকালেই ব্যাপারটা আরো ভালো বোঝা যাবে। যেমন, ১০ এর উৎপাদকগুলো বের করা যায় এভাবে:

১০ = ১ x ১০
= ২ x ৫
কাজেই, ১০ এর উৎপাদক ১, ২, ৫ ও ১০, মোট চারটা (জোড় সংখ্যক)।
১২ এর উৎপাদকগুলো হলো:
১২ = ১ x ১২
= ২ x ৬
= ৩ x ৪
কাজেই, ১২ এর উৎপাদক ১, ২, ৩, ৪, ৬ ও ১২, মোট ছয়টা (জোড় সংখ্যক)।
অর্থাৎ বোঝা যাচ্ছে, উৎপাদক সবসময় জোড়ায় জোড়ায় থাকে। ১০ এর একটা উৎপাদক ২ মানেই আরেকটা উৎপাদক ৫। ১২ এর একটা উৎপাদক ৩ মানেই আরেকটা উৎপাদক ৪। গাণিতিকভাবে বলতে গেলে, n এর একটা উৎপাদক যদি p হয়, তাহলে আরেকটা উৎপাদক হবে n/p। তাহলে কোন ক্ষেত্রে n এর বেজোড় সংখ্যক উৎপাদক থাকবে? যখন কোন একটা উৎপাদক তার জোড়ার সমান হবে। যেমন, ১৬ এর উৎপাদকগুলো হলো:
১৬ = ১ x ১৬
= ২ x ৮
= ৪ x ৪
কাজেই, ১৬ এর উৎপাদক ১, ২, ৪, ৮ ও ১৬, মোট পাঁচটা (বেজোড় সংখ্যক)।
খেয়াল করেন, ৪ দুইবার আসায় কিন্তু একে দুটো উৎপাদক না, বরং একটা উৎপাদক হিসাবেই ধরা হয়েছে। আর কেবল পূর্ণবর্গ সংখ্যার ক্ষেত্রেই এটা হয়। গাণিতিকভাবে, n এর উৎপাদক p ও তার জোড়া n/p সমান হলে,
p = n / p
অতএব, n = p2; তথা n একটা পূর্ণবর্গ সংখ্যা।

এই পর্বের কুইজ:
এই পর্বে দুটো কুইজ থাকবে, দুটোই সহজ প্রশ্ন।
১। অক্টাল (আটভিত্তিক) পদ্ধতির তিন অংকের সংখ্যাগুলো কত হবে? সবগুলো সংখ্যা লেখার দরকার নাই। কেবল রেঞ্জ বললেই হবে।
২। ২০ ভিত্তিক সংখ্যা পদ্ধতিতে চার অংকের সবচেয়ে ছোট (অর্থবহ) ও চার অংকের সবচেয়ে বড় সংখ্যা কত হবে? ২০ ভিত্তিক সংখ্যা পদ্ধতির ডিজিট নিজের ইচ্ছা মতো ধরতে পারেন। তবে সংখ্যা গণনার আগে কোন কোন ডিজিট ধরেছেন, তা উল্লেখ করে নিতে হবে।

পরের পর্বে আবার দেখে হবে ইনশাল্লাহ! সে পর্যন্ত ভালো থাকবেন।

প্রোগ্রামিং (C) টিউটোরিয়াল (পর্ব – ১) : শুরুর কথা

৩৬ comments

Skip to comment form

  1. 12
    আব্দুল্লাহ আল মামুন

    প্রোগ্রামিং (C) টিউটোরিয়াল। পরেরটা কবে লিখবেন?

  2. 11
    ahsan ahmed

    ভাই ,সংখ্যাতত্ত্ব যদি লিখতেন,আমি বাইনারি “অংক লিখে” সার্চ দিয়ে আপনার এত সুন্দর লেখাটা পেতাম না । যত পারেন এসইও (SEO)গুলো সহজ সরল ভাবে লিখলে ভাল হত ।

  3. 10
    শামস

    @বুড়ো শালিক,

    প্রোগ্রামিং (C) টিউটোরিয়াল (পর্ব – ২) : বাইনারি ও হেক্সাডেসিমাল

    শিরোনামটা “প্রোগ্রামিং (C) টিউটোরিয়াল (পর্ব – ২) : সংখ্যাতত্ত্ব” হলেই মনে হয় ভাল মানাতো!

    1. 10.1
      বুড়ো শালিক

      @শামস: আসলে এটাকে সংখ্যাতত্ত্ব বললে সংখ্যাতত্ত্বের বিশালতাকে খাটো করে দেখা হবে বলে মনে হয়। এটা সংখ্যাতত্ত্বের একটা অতি ক্ষুদ্র অংশ, যা শুধুই ডেসিমাল, বাইনারি ও হেক্সাডেসিমাল সংখ্যা গোনার জন্যই প্রযোজ্য।

  4. 9
    ভানু ভাস্কর

    কুইজ ১ এর উত্তরঃ ০০০ থেকে ৭৭৭
    কুইজ ২ এর উত্তরঃ ১০০০ থেকে J J J J, যেখানে ২০ ভিত্তিক সঙ্খ্যার অংকগুলো হল ০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯ A B C D E F G H I J.

    1. 9.1
      সাদাত

      @ভানু ভাস্কর:
      তিন অংকের সবচেয়ে ছোট (অর্থবহ) সংখ্যা ০০০ হলে
      চার অংকের সবচেয়ে ছোট (অর্থবহ) সংখ্যা ১০০০ হয় কেমনে?
      হয় ০০০ এবং ০০০০ হবে, না হলে ১০০ এবং ১০০০ হবে। আপনার লজিকটা বুঝলাম না।

      1. 9.1.1
        ভানু ভাস্কর

        @সাদাত: ধন্যবাদ। মিস্টার লেখক ১ নং প্রশ্নে অর্থবহ সংখ্যা বলে কিছু বলেননি। by default ওটার মানে যদি অর্থবহ হয়, তো ১০০-৭৭৭ ই হবে সঠিক উত্তর।

      2. বুড়ো শালিক

        @ভানু ভাস্কর: তিন অংকের সংখ্যা মানেই তিন অংকের অর্থবহ সংখ্যা… 🙂

      3. ভানু ভাস্কর

        @বুড়ো শালিক: ও ও ও ও ও, আচ্ছা ভাই। তাহলে তো উতর হবে ১০০-৭৭৭, তাই না ভাই? আমি একটু কনফিউজড হয়েছিলাম কারন প্রথম প্রশ্নে আপনি অর্থবহ লিখেন নি, কিন্তু দ্বিতীয় প্রশ্নে ঘটা করে অর্থবহ লিখেছেন। সে যা হোক, ০০০ আসলে ০ ই।

      4. ভানু ভাস্কর

        @বুড়ো শালিক: দুঃখিত, শব্দটা “উত্তর” হবে, ভুল করে উতর লিখে ফেলেছি।

  5. 8
    ভানু ভাস্কর

    এত কষ্ট করতে জানেন? আপনার এ শ্রম সার্থক হোক।

    1. 8.1
      বুড়ো শালিক

      @ভানু ভাস্কর: ঘরের খেয়ে বনের মোষ তাড়াচ্ছি আর কি! 😛

  6. 7
    শামস

    @বুড়ো শালিক,
    খুব দারুণ বাখ্যা করলেন.

    1. 7.1
      বুড়ো শালিক

      @শামস: ধন্যবাদ। 🙂

  7. 6
    শাহবাজ নজরুল

    আপনার লেখায় কেবল পূর্ণ সংখ্যা নিয়ে লিখেছেন ভগ্নাংশ নিয়ে কি লিখবেন?

    নাম্বার সিস্টেম আমার অতি প্রিয় বিষয়ের একটি। USC তে একবার একটা ক্লাস নিয়েছিলাম linear transformation উপর। ক্লাস নিয়েছিলেন বর্তমান বিশ্বের অন্যতম শ্রেষ্ঠ গণিতজ্ঞ Dr. Solomon Golomb (http://en.wikipedia.org/wiki/Solomon_W._Golomb)

    ওই ক্লাসটিতে বেশ মজা পেয়েছিলাম। সংখ্যা তত্ত্বের উপর অনেক মজার আর চিন্তার খোরাক যোগায় এমন element পেয়েছিলাম। গণিতকে কেবল অংক হিসেবে না দেখে Dr. Golomb সবাইকে উদ্ভুদ্ধ করতেন গণিতের পেছনের সৌন্দর্য দেখতে। উদ্বুদ্ধ করতেন গণিত নিয়ে মৌলিক ধরনের প্রশ্ন করতে। দেখি ইচ্ছে আছে এ নিয়ে সামনে লেখার। যদিও কাজের চাপে আজকাল লেখারই সময় পাচ্ছিনা।

    1. 6.1
      সাদাত

      @শাহবাজ নজরুল:
      লিখুন। গণিতিক সৌন্দর্য আমার খুবই ভালো লাগে।

    2. 6.2
      বুড়ো শালিক

      @শাহবাজ নজরুল: আমার মূল লক্ষ্য ছিলো প্রোগ্রামিংয়ের সাথে সম্পর্কিত গণিত নিয়ে আলোচনা করা। এ কারণেই ভগ্নাংশ (আপনি যে দশমিক না বলে ভগ্নাংশ বলেছেন, এতেই প্রমাণ হয় আপনি এ বিষয়ে লিখলে তা দারুণ হবে!) নিয়ে কিছু লিখি নাই।

      আপনি লিখুন প্লিজ! এসব বিষয় আমার খুবই ভালো লাগে…

  8. 5
    সাদাত

    ১। অক্টাল (আটভিত্তিক) পদ্ধতির তিন অংকের সংখ্যাগুলো কত হবে? সবগুলো সংখ্যা লেখার দরকার নাই। কেবল রেঞ্জ বললেই হবে।

    100-777

    ২। ২০ ভিত্তিক সংখ্যা পদ্ধতির সবচেয়ে ছোট (অর্থবহ) ও সবচেয়ে বড় চার অংকের সংখ্যা কত হবে? ২০ ভিত্তিক সংখ্যা পদ্ধতির ডিজিট নিজের ইচ্ছা মতো ধরতে পারেন। তবে সংখ্যা গণনার আগে কোন কোন ডিজিট ধরেছেন, তা উল্লেখ করে নিতে হবে।
    ধরি, 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J

    সবচেয়ে ছোট (অর্থবহ) সংখ্যা: 1 (আপনার সূত্র মতে)
    সবচেয়ে বড় চার অংকের সংখ্যা:JJJJ

    1. 5.1
      শাহবাজ নজরুল

      @সাদাত:

      সাদাত ভাই সঠিক বলেছেন। দ্বিতীয় উত্তরের সাথে যোগ করা যেতে পারে, সংখ্যার রেঞ্জ দশমিক সিস্টেমে হবে ০ থেকে ১৫৯৯৯৯ পর্যন্ত।

    2. 5.2
      শামস

      @সাদাত:
      তিন অঙ্কের সংখ্যার রেঞ্জ কি ১০০ -- ১৭৭ হবার কথা না!

      1. 5.2.1
        সাদাত

        @শামস:
        কেন ২০০ থেকে ৭৭৭ পর্যন্ত সংখ্যাগুলো কি ৩ অঙ্কবিশিষ্ট নয়?

      2. শামস

        @সাদাত:
        হুম ঠিক আছে, খেয়াল করি নাই।

    3. 5.3
      বুড়ো শালিক

      @সাদাত ভাই: আমি আসলে বলতে চেয়েছি, ২০ ভিত্তিক সংখ্যা পদ্ধতিতে চার অংকের সবচেয়ে ছোট (অর্থবহ) ও চার অংকের সবচেয়ে বড় সংখ্যা কত হবে?

      1. 5.3.1
        সাদাত

        @বুড়ো শালিক:
        প্রোগ্রামিং ক্লাসে আমি মনের কথা বুঝতে যাবো কেন?
        যেমন কমান্ড, তেমন আউটপুট।
        কমান্ড ভুল, তো আউটপুট ভুল।

      2. বুড়ো শালিক

        @সাদাত: হে হে! ঠিক! আমারই ভুল হইছিলো। ঠিক করে দিছি… 🙂

      3. 5.3.2
        সাদাত

        @বুড়ো শালিক: ২০ ভিত্তিক সংখ্যা পদ্ধতিতে চার অংকের সবচেয়ে ছোট (অর্থবহ) সংখ্যা:
        1000 (আপনার সূত্র অনুসারে)

        এখানে ভিত্তির আসলে কোন ভিত্তি নাই। ভিত্তি যাই হোক চার অংকের সবচেয়ে ছোট (অর্থবহ) সংখ্যা:
        1000 (আপনার সূত্র অনুসারে)

  9. 4
    এস. এম. রায়হান

    খুব সহজ-সরল ভাষায় নাম্বার সিস্টেম ব্যাখ্যা করেছেন। চলুক…

    1. 4.1
      বুড়ো শালিক

      @এস. এম. রায়হান: হুম, সহজ ভাষায় ব্যাখ্যা দেয়ার চেষ্টা করেছি। কতটুকু সহজ হয়েছে কে জানে!
      কুইজে অংশ নেন…

  10. 3
    সরোয়ার

    আপনার ধৈর্য্যকে তারিফ করতে হয়। ফেসবুকে শেয়ার দিলাম।

    1. 3.1
      বুড়ো শালিক

      @সরোয়ার: প্রশংসার জন্য ধন্যবাদ। পোস্টের মূল বক্তব্যের ব্যাপারে কিছু বললে ভালো লাগতো।
      কুইজে অংশ নেন…

      1. 3.1.1
        সরোয়ার

        @বুড়ো শালিক:

        বিপদে ফেলে দিলেন। বায়োলজি দিয়ে জীবিকা নির্বাহের কারণে মাথায় এসব আর ঢুকেও না!

      2. বুড়ো শালিক

        @সরোয়ার: আমি আবার বায়োলজি ভয় পাই! ক্লাস সেভেন-এইটে সাধারণ বিজ্ঞানে বায়োলজি সংক্রান্ত ২০-২৫ নাম্বারের প্রশ্ন আসতো। আমি ওগুলো অ্যানসারই করতাম না! আর পরে ম্যাট্রিক, ইন্টারে বায়োলজি নেই নাই! 🙂

  11. 2
    শাহবাজ নজরুল

    শালিক ভাই,

    আপনার ধৈর্য আছে বটে। অনেক সময় নিয়ে লিখেছেন। কিছুটা পড়লাম। বাকীটুকু পড়ে মন্তব্যে আসছি।

    --শাহবাজ

    1. 2.1
      বুড়ো শালিক

      @শাহবাজ নজরুল: হুম, ঘরের খেয়ে বনের মোষ তাড়াচ্ছি আর কি!
      আপনার পরের মন্তব্যের অপেক্ষায় থাকলাম।
      কুইজে অংশ নেন।

  12. 1
    আহমেদ শরীফ

    সুন্দর ও সহজ ভাষায় লেখা প্রোগ্রামিং বিষয়ক ক্লাসের পেছনের বেঞ্চে বসে গেলাম।
    এ বিষয়ে আগ্রহ থাকা সত্বেও আলসেমি করে শেখা হয়নি।

    1. 1.1
      বুড়ো শালিক

      @আহমেদ শরীফ: পেছনে কেন? সামনে আসেন… 🙂
      ইচ্ছা থাকলে যেকোনো সময় শিখতে পারবেন। অনেক কাজ তো এর মাধ্যমে করতে পারবেনই, যদি কোন কাজে নাও লাগে, তাহলেও অনেক চিন্তার খোরাক পাবেন।
      কুইজে অংশ নিবেন না?

Leave a Reply