C এর উপাদান সমূহঃ ক্যারেকটার সেট ও ডেটা টাইপ

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

C ভাষায় প্রোগ্রাম লিখতে হলে a থেকে z পর্যন্ত অক্ষর, 0 থেকে 9 পর্যন্ত অংক আর সচরাচর ব্যবহৃত যতিচিহ্ন সমূহকে ব্যবহার করা যায়। তবে অক্ষরের চেয়ে ব্যাকরণই বিভিন্ন ভাষার মধ্যে পার্থক্য তৈরী করে। কাজেই ইংরেজিতে ব্যবহৃত অক্ষর ও সংখ্যা C ভাষায় ব্যবহৃত হলেও তাদের প্রয়োগ আলাদা এবং C ভাষার নিজস্ব।

C তে প্রোগ্রামিং করার জন্য ৩ ধরনের ক্যারেকটার ব্যবহার করা যায়। ১) আলফা-নিউমেরিক ২) স্পেশাল ক্যারেক্টার বা যতিচিহ্নাদি ও ৩) ফাকা স্থান। আলফা-নিউমেরিক ক্যারেকটার আবার দুই ধরনের। a) alphabet বা বর্ণমালা ও b) ডিজিট বা অংক। তাহলে আমরা C ভাষায় ব্যবহারের জন্য ৪ ধরনের ক্যারেকটার পেলাম।

¢ Alphabet: a-z ও A-Z পর্যন্ত
¢ Digits: 0-9 পর্যন্ত
¢ Special Characters : .,! " ' : ;? % & () {} []= ইত্যাদি
¢ white space: space, TAB, new line (\n) ইত্যাদি

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

একটি C প্রোগ্রাম, প্রোগ্রামারের লক্ষ্য অনুযায়ী কম্পিউটার কে বিভিন্ন কাজ করার নির্দেশনা দেয়। আর এতে প্রোগ্রামার ও কম্পিউটার এর মধ্যে তথ্যের আদান প্রদান হয়। তথ্যের ক্ষুদ্র ক্ষুদ্র অংশকে ডেটা বলা হয়।

কাজেই দেখতে পাচ্ছি যে C প্রোগ্রামিং এর অর্থই হচ্ছে ডেটা নিয়ে কাজ করা। C প্রোগ্রামে ডেটাকে তিন উপায়ে শ্রেণীবদ্ধ করা হয়।

১। মৌলিক বা Fundamental শ্রেণীকরণঃ এই শ্রেনীতে 5 ধরনের ডেটা আছে। এই ধরনগুলোকে মৌলিক ডেটা টাইপ বলে। এরা হচ্ছেঃ

** ক্যারেকটার ডেটা: একে কিওয়র্ড char দ্বারা নির্দেশ করা হয়। C ভাষার ব্যবহৃত সকল ক্যারেকটারই char শ্রেনীর অন্তর্ভূক্ত।

** ইন্টিজার ডেটাঃ একে কিওয়র্ড int দ্বারা নির্দেশ করা হয়। শুন্য সহ সকল ধনাত্মক ও ঋণাত্মক পূর্ণসংখ্যা এই শ্রেণীভুক্ত।

** ফ্লোটিং পয়েন্ট ডেটাঃ একে কিওয়র্ড float দ্বারা নির্দেশ করা হয়। ৬ দশমিক স্থান পর্যন্ত সকল ধনাত্মক ও ঋণাত্মক সংখ্যা এই শ্রেনী ভুক্ত।

** ডাবল প্রিসিশান ফ্লোটিং পয়েন্ট ডেটাঃ একে কিওয়র্ড double দ্বারা নির্দেশ করা হয়। ১৪ দশমিক স্থান পর্যন্ত সকল ধনাত্মক ও ঋণাত্মক সংখ্যা সঠিক ভাবে হিসাব করার জন্য এই শ্রেনী।

** ভয়েড (void) ডেটাঃ একে কিওয়র্ড void দ্বারা নির্দেশ করা হয়। যে ধরনের ডেটা উপরের কোন শ্রেনীতেই পড়ে না, তারা এই শ্রেণীভুক্ত। মূলতঃ ফাংশনের রিটার্ন টাইপ ছাড়া এই ডেটা টাইপ ব্যবহৃত হয় না।

২। উদ্ভূত বা লব্ধ বা derived শ্রেণীকরণঃ মৌলিক ডেটা টাইপ গুলো থেকেই এই শ্রেনীর ডেটা টাইপের উৎপত্তি। কাজেই এদের নাম ও কাজ মৌলিক ডেটা টাইপ হতে আলাদা হলেও এরা মূলত তাদেরই পরিবর্তিত রূপ। যেমনঃ

** Array
** String বা NULL terminated Character Array
** Pointer
** Function ইত্যাদি

৩। প্রোগ্রামারের নিজের তৈরী বা user-defined শ্রেণী: এই শ্রেনীতে সেই সব ডেটা টাইপ রয়েছে যাদেরকে প্রোগ্রামার নিজের প্রয়োজনে মৌলিক ও লব্ধ ডেটা টাইপের উপর ভিত্তি করে নিজেই তৈরী করেছেন। কাজেই দেখা যাচ্ছে এরাও আসলে মৌলিক ডেটা টাইপেরই পরিবর্তিত রূপ মাত্র। যেমনঃ

** Structure
** union
** enumerations ইত্যাদি।

Data type যে কোন প্রোগ্রামিং ল্যাংগুয়েজ এর অত্যন্ত গুরুত্বপূর্ণ একটি বিষয়।

ভয়েড ছাড়া বাকি চারটি মৌলিক data type দ্বারাই variable 'declare' করা যায়। Variable ডিক্লেয়ারেশন এর সাথে সাথে কম্পাইলার কম্পিউটার এর মেমোরিতে variable এর জন্য জায়গা নির্ধারণ করে।

Data type এখানেই গুরুত্বটা বহন করে। এক এক ডেটা টাইপের ডেটা মেমরিতে রাখতে এক এক রকম জায়গা লাগে। Data type ই কম্পাইলারকে বলে দেয় যে কোন variable এর জন্য ঠিক কতটুকু জায়গা মেমোরিতে নির্দিষ্ট করে রাখা হবে।

যেমন ১ টি ক্যারেকটার রাখতে যতটুকু জায়গা লাগে, ১ টি ইন্টিজারের জন্য তার থেকে বেশি পরিমান জায়গা লাগে। আবার ফ্লোটিং পয়েন্ট ডেটার জন্য আরো বেশি জায়গা লাগে।

ANSI স্ট্যান্ডার্ড অনুযায়ী যে কোন কম্পাইলারকে
কমপক্ষে
char এর জন্য 8 bit বা 1 byte,
int এর জন্য 16 bit বা 2 byte,
float এর জন্য 32 bit বা 4 byte,
এবং
double এর জন্য 64 bit বা 8 byte

জায়গা মেমোরিতে নির্দিষ্ট করে রাখতে হবে। এইটা কমপক্ষে রাখতে হবে, তার মানে যদি কোন অপারেটিং সিস্টেম অনুমতি দেয় তাহলে কম্পাইলার ইচ্ছা করলে একটা নির্দিষ্ট data type এর জন্য ANSI স্ট্যান্ডার্ড এর চেয়ে বেশি জায়গাও বায়না করতে পারে।

যেমন 32-bit ও 64-bit অপারেটিং সিস্টেমে কম্পাইলার int type এর variable এর জন্য 32 bit বা 4 byte জায়গা রাখে।

কাজেই আমরা দেখতে পাচ্ছি যে, একই data type এর অবস্থা একেক অপারেটিং সিস্টেম বা কম্পাইলার এ একেক রকম। এই জন্য আমরা যে প্রোগ্রামিং এনভায়রনমেন্ট এ কাজ করব সেই এনভায়রনমেন্ট এ কোন Data type এর size কত তা জানাটা জরুরী হয়ে পরে।

এই জন্য sizeof অপারেটর ব্যবহার করা হয়।

sizeof অপারেটর একটি কম্পাইল টাইম অপারেটর। এটি প্রোগ্রাম কম্পাইল করার সময়ই কাজ করে ঐ এনভায়রনমেন্ট এ কোন ডেটা টাইপের সাইজ কত তা বের করে। যেমন নিচের কোডটি আপনার সিস্টেমে কম্পাইল করে সহজেই আপনি জেনে নিতে পারেন যে আপনার সিস্টেমে কোন ডেটা টাইপের সাইজ কতঃ

#include<stdio.h>

int main()
{

 printf("Size of Different data types in this system:\n\n");
 printf("Data Type\tSize\n\n");
 printf("char\t\t%d-bits/%d byte\n", 8*sizeof(char), sizeof(char));
 printf("int\t\t%d-bits/%d byte\n", 8*sizeof(int), sizeof(int));
 printf("float\t\t%d-bits/%d byte\n", 8*sizeof(float), sizeof(float));
 printf("double\t\t%d-bits/%d byte", 8*sizeof(double), sizeof(double));
 return 0;
}

0 comments:

Post a Comment