বিষয়: The Secret of the C Program
টপিক্স: ডেটা টাইপ [পর্ব-১]
৭.১ প্রয়োজনীয় শব্দার্থ (word-meanings)
বাইনারি সংখ্যা পদ্ধতি = গটফ্রেড লিবনিজ ১৬৭৯ সালে ২ টি ডিজিট বা সংখ্যা যথা ০ ও ১ দিয়ে যে সংখ্যা পদ্ধতির আবিষ্কার করেছিলেন তাকে বাইনারি সংখ্যা পদ্ধতি বলে।
বাইনারি ডিজিট বা বিট = বাইনারি সংখ্যা পদ্ধতির 0 ও 1 কে বাইনারি ডিজিট বা বিট বলে (Binary = Bi, Digit = t, Bit)
বেইজ বা ভিত্তি = বাইনারি সংখ্যা পদ্ধতিতে শুধুমাত্র দুটি অংক থাকার জন্য ২ কে বাইনারি সংখ্যা পদ্ধতির বেইজ বা ভিত্তি বলে।
কোড = ৮ টি বাইনারি বিটকে আলাদা আলাদাভাবে সাজিয়ে আলাদা আলাদা বর্ণ বা অংক বা প্রতীকেকে কম্পিউটারের সিপিইউকে বোঝাতে যে অদ্বিতীয় সংকেত তৈরি করা হয় তাকেই কোড বলে।
ASCII কোড = প্রতিটি আলফনিউমেরিক বর্ণকে আলাদা আলাদাভাবে শনাক্ত করার জন্য American Standard Code for Information Interchange কর্তৃক ৮ বাইনারি বিট দিয়ে যে অদ্বিতীয় সংকেত তৈরি করা হয় তাকেই ASCII কোড বলে।
মেমোরি সেল = প্রতিটি আলফা নিউমেরিক বর্ণের অ্যাসকি কোডের এক একটি বাইনারি বিটকে সংরক্ষণের জন্য মেমোরি তথা কম্পিউটারের RAM এর অভ্যন্তরে লজিক গেইট দিয়ে যে ল্যাচ তৈরি করা হয় তাকেই মেমোরির সেল বলে।
Indentify (verb) = শনাক্ত করা; চিহ্নিত করা।
Indentifier (noun) = যে নিজেই শনাক্ত বা চিহ্নিত করে।
৭.২ ডেটা (Data)
প্রোগ্রামিং কোন করে সমস্যা সমাধানের জন্য প্রোগ্রামে আমরা যেসকল সংখ্যা বা মান বা বর্ণ ব্যবহার করি তারাই ডেটা।
সাধারণত, কম্পিউটার দ্বারা প্রোগ্রামিং করে কোন সমস্যা সমাধানের উদ্দেশ্যে প্রোগ্রামিং ভাষার বিভিন্ন উপাদানের পাশাপাশি প্রোগ্রামে ইনপুট ডিভাইস থেকে যেসকল বর্ণ বা বর্ণমালা, মান বা ০-৯ পর্যন্ত অংক বা যেকোনো সংখ্যা ইনপুট করা হয় তাদেরকে ডেটা বলে। অন্যভাবে বলা যায়, প্রোগ্রামে যেসকল মান ও বর্ণ নিয়ে কাজ করা হবে বা যাদেরকে প্রসেংসিং করে কোন ফলাফল পাওয়া যাবে তারাই ডেটা। তাহলে বোঝা গেল যে, আমরা যেকোনো প্রোগ্রামে ডেটা নিয়েই কাজ করি বা করব।
কোন সমস্যা সমাধানের জন্য সি ভাষায় প্রোগ্রাম রচনার সময় শুধুমাত্র কী-ওয়ার্ড, ভেরিয়েবল, অপারেটর, কন্ট্রোল স্টেটমেন্ট, ফাংশন ইত্যাদি ব্যবহার করলেও সেটা স্বার্থক প্রোগ্রাম হবে না। একটি যথাযথ বা স্বার্থক প্রোগ্রাম তখনই হবে যখন কী-ওয়ার্ড, ভেরিয়েবল, অপারেটর, কন্ট্রোল স্টেটমেন্ট, ফাংশন এর সাথে অবশ্যই ডেটা ব্যবহার করা হবে।
আশাকরি, ১ম ও ৩য় অধ্যায়ে জেনেছেন যে, কী-বোর্ডের প্রতিটি বোতামে চাপ দিলে ৮ বিটের একটি করে অ্যাসিক কোড (যেমন: কী-বোর্ড থেকে A ক্যারেক্টারে বা বোতামে বা ডেটায় চাপ দিলে অ্যাসকি কোড সৃষ্টি হয়, 01000001) সৃষ্টি হয়। এবং এটাও জেনেছে যে, প্রোগ্রামে আমরা যেসকল ডেটা ইনপুট করায় তারা প্রাথমিকভাবে কম্পিউটারের মেমোরি (RAM) তথা মেমোরির সেলে গিয়ে জমা হয়। অন্যদিকে, RAM এর ভিতর থাকে কোটি কোটি সেল (যেমন: 2GB র একটি SRAM মেমোরিতে ১৬, ০০০, ০০০, ০০০ টি সেল) থাকে যারা আবার ফ্লিপ-ফ্লপ বা ন্যান্ড গেইট বা নর গেইট দ্বারা তৈরি হয় এবং প্রতিটি সেলেরই একটি করে আলাদা আলাদা অ্যাড্রেস থাকে যাকে সেল অ্যাড্রেস বলে।
আমরাজানি, RAM এর একটি সেল একটি করে বিটকে ধরে রাখেতে পারে এবং কী-বোর্ড থেকে A ক্যারেক্টারে বা বোতামে বা ডেটায় চাপ দিলে ৮ বিটের যে অ্যাসকি কোড সৃষ্টি হয়(01000001) তার জন্য মেমোরিতে ৮টি সেল (সেলগুলো মেমোরির অভ্যন্তরে বিভিন্ন জায়গায় হতে পারে) বরাদ্দ হয়। আর A এর 01000001 এই ৮ টি বিট RAM এর যে ৮টি সেলে গিয়ে জমা হয় ঐসকল সেলদের আবার অ্যাড্রেস থাকায় প্রোগ্রাম রচনার সময় আমরা যখন মেমোরির সেলে জমাকৃত ডেটা তথা ডেটার বিট প্রোগ্রামে ব্যবহার করতে যাই তখন সেলের অ্যাড্রেস ব্যবহার করা কষ্টকর হয়ে দাঁড়ায়। কারণ মেমোরিতে লক্ষ্ লক্ষ বিটের জন্য লক্ষ লক্ষ সেল অ্যাড্রেস মনে রাখা সম্ভব না যেমন: আপনি কি বলতে পারবেন বাংলাদেশে বসবাসরত প্রতিটি মানুষের ঠিকানা বা অ্যাড্রেস? উত্তর হবে অবশ্যই না। তাই এ অসুবিধা দূর করার জন্য কোন ডেটার বিটগুলো মেমোরির যেসকল সেলে গিয়ে জমা হয় প্রোগ্রাম রচনার সময় ঐসকল সেলদের বোঝাতে প্রোগ্রামে একটি প্রতীকি নাম দেওয়া হয়। যেমন ধরুন, কী-বোর্ডের কোন ক্যারেক্টারে বা বোতামে বা ডেটাতে চাপদিলেন, ফলে ৮ টি বিট তৈরি হল এবং তা RAM এর কোন ৮ টি সেলে গিয়ে জমা হল। এখন, কোন কোন সেলে গিয়ে উক্ত ডেটার বিটগুলো জমা হল তাদের অ্যাড্রেস কি বলতে পারবেন? উত্তর হবে, পারবেন না। সহজ কারণটা হল আপনিতো মেমোরি সেলদেরই দেখতে পারবেন না, তাও আবার তাদের অ্যাড্রেস!
তাই প্রোগ্রামে ঐসকল সেলদের বোঝাতে প্রতিকী নাম হিসেবে a, b, c, d, e, ….x, y, z অথবা, কতগুলো বর্ণ দ্বারা গঠিত একটি শব্দ যেমন: amount, number, account23, myroll13 ইত্যাদি ব্যবহার করা হয়। আর এইসকল প্রতীকি নাম বা বর্ণকে ডেটার ধারক বা ডেটা আইডেন্টিফায়ার বলে (অর্থাৎ, যে নাম দ্বারা মেমোরির কোন কোন সেলে ডেটা তথা ডেটার বিট জমা আছে তা শনাক্ত বা আইডেন্টিফাই করা হয় তাদেরকে ডেটা আইডেন্টিফায়ার বলে। )
এখন আসা যাক আসল কথায়, আমরা প্রোগ্রাম রচনার সময় প্রয়োজন অনুসারে বিভিন্ন ধরনের ডেটা ব্যবহার করে থাকি। আর বিভিন্ন ধরনের ডেটার জন্য RAM এ বিভিন্ন সংখ্যক সেল বরাদ্দ থাকে। নিচে একটি SRAM ও সেলের গঠন দেখানো হলো।
SRAM এর ভৌত বা বাহ্যিক গঠন
[পরবর্তী অংশ পরের টিউনস্ এ প্রকাশ করা হবে। ]
অপেক্ষায় থাকুন।
আমি নাজিম উদ্দিন। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 3 বছর 1 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 2 টি টিউন ও 6 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
আমি মো. নাজিম উদ্দিন। আম এই বছর গণিতে বি.এস.সি অনার্স সম্পন্ন করেছি। পাশাপাশি, আমি ২০১৮ থেকে ২০২১ আগস্ট পর্যন্ত কম্পিউটারের সি প্রোগ্রামিং ভাষার উপর দীর্ঘ গবেষণা, অনুসন্ধান, অনুশিলন এবং প্রোগ্রাম রচনার মাধ্যমে অর্জিত জ্ঞান দ্বারা বাংলাদেশের সবচেয়ে বৃহৎ প্রোগ্রামিং বই (৫০০ পেইজ, গোপন তথ্য, রহস্য, অজস্র প্রোগ্রাম, ব্যাখ্যা, বিশ্লেষণ, উদাহরণ)...