সি টিউটোরিয়াল, পর্ব ৯ – (ডাটা টাইপ)

এই সিরিজের পূর্বের টিউটোরিয়াল গুল।

  1. সি টিউটোরিয়াল, পর্ব ১ - (প্রোগ্রামিং ল্যাংগুয়েজের ইতিহাস)
  2. সি টিউটোরিয়াল, পর্ব ২ – (প্রোগ্রামিং ল্যংগুয়েজের সূচনা লগ্ন)
  3. সি টিউটোরিয়াল, পর্ব ৩- (সি ল্যাংগুয়েজের ইতিহাস)
  4. সি টিউটোরিয়াল, পর্ব ৪– (C প্রোগ্রাম এর ফরম্যাট)
  5. সি টিউটোরিয়াল, পর্ব ৫ – (ভেরিয়েবল ডিক্লেয়ার/ঘোষনা করা)
  6. সি টিউটোরিয়াল, পর্ব ৬ – (‘printf()’ ফাংশন ও ‘backslash character’)
  7. সি টিউটোরিয়াল, পর্ব ৭ – (Formate Specifier ও "scanf()" ফাংশন)
  8. সি টিউটোরিয়াল, পর্ব ৮ – (ডাটা টাইপ ও character ডাটা টাইপ)

কেমন আছেন সবাই? আশা করছি সবাই ভাল আছেন ও সুস্থ আছেন।  গত পর্ব থেকে আমরা character ডাটা টাইপ নিয়ে আলোচনা করেছিলাম। এই পর্বে বাকী ডাটা টাইপ নিয়ে আলোচনা করা করব।

Integer: পূর্ন সংখ্যা নিয়ে কাজ করার জন্য Integer ডাটা আইপ ব্যবহার করা হয়। প্রোগ্রামে Integer কে ছোট করে int লিখা হয়। প্রোগ্রামে যদি Integer ডাটা টাইপের ভ্যালু হিসাবে কোন দশমিক যুক্ত সংখ্যাও নির্বাচন করা হয়, প্রোগ্রাম এক্সিকিউট এর সময় এর উক্ত ভ্যালু এর দশমিকের পূর্বের সংখ্যা গুল কেই Integer এর ভ্যালু হিসাবে ধরে নিবে। ধরা যাক num1 নামের একটি Integer ডাটা টাইপের ভেরিয়েবল ডিক্লেয়ার করা হয়েছে এবং এর ভ্যালু ১৬.২৫ নির্ধারন করা হয়েছে। কিন্তু প্রোগ্রাম উক্ত num1 ভেরিয়েবলের মান ১৬.২৫ না ধরে শুধু মাত্র ১৬ ধরে নিবে। কারন Integer পূর্ন সংখ্যা নিয়ে কাজ করে।

নিচের কোড গুল codeblock এ লিখে রান করুন তাহলে সকল কনফিউশন দূর হয়ে যাবে।

void main (){

int num1;  // Declare num1 variable which is integer type variable

num1 = 16.25;  // insert a value for num1

printf("Your Number is: %d", num1); // Display num1

getchar(); // wait until press any key

}

কোড বিশ্লেষনঃ

( int num1; ): num1 নামের একটি Integer ডাটা টাইপের ভেরিয়েবল ডিক্লেয়ার করা হয়েছে।

( num1 = 16.25; ): num1 নামের Integer ভেরিয়েবলের মান নির্ধারন করা হয়েছে। মান হিসেবে ১৬.২৫ দেওয়া হয়েছে।

( printf("Your Number is: %d", num1); ): num1 ভেরিয়েবলের মান প্রদর্শন করানো হয়েছে।

( getchar(); ): বরাবরের মত করে কী প্রেস পর্যন্ত অপেক্ষা করবে এ জন্য এই লাইন।

ফলাফলঃ উপরের কোডের ৩য় লাইন “ num1 = 16.25” এখানে num1 ভেরিয়েবলের জন্য ১৬.২৫ ভ্যালু সেট করা হয়েছে এবং পরবর্তিতে printf() ফাংশনের মাধ্যমে উক্ত num1 ভেরিয়েবলের ভ্যালু প্রদর্শন করা হয়েছে। কিন্তু আউটপুটে দেখা যাচ্ছে যে শুধু মাত্র ১৬ দেখাচ্ছে অবশিষ্ট দশমিক এবং ২৫ প্রদর্শন করছেনা। প্রকাশ করছে না কারন Integer ডাটা টাইপে শুধু মাত্র পূর্ন সংখ্য প্রদর্শন করে। যেহেতু num1 এ পূর্ন সংখ্যা জমা রাখা হয় নি তাই এই অপ্রতাশিত ফলাফল দেখা যাচ্ছে।

1

একটি Integer ভেরিয়েবলের জন্য মেমরিতে ২ বাইট জায়গা নির্ধারন করা হয়। অর্থৎ একটি Integer ডাটা টাইপের ভেরিয়েবলের জন্য মেমরি স্পেস হচ্ছে ১৬ বিট।  এই স্পেস নির্ধারন ANSI অনুযায়ী। কম্পাইলার এর উপর নির্ভর করবে কোন ডাটা টাইপের জন্য কতটুক মেমেরি স্পেস হবে।

মেমরিতে Integer ডাটা টাইপের গঠন হচ্ছে।

5

গঠন থেকে দেখা যাচ্ছে বাক থেকে প্রথম ১৫ টি বিট হচ্ছে ডাটা বিট। এই ১৫ টি বিটে আপনার নিদিষ্ট ভ্যালু জমা রাখা হবে। সর্বশেষ বিট হচ্ছে Sign Bit. এই Sign Bit নির্দেশ করবে অন্য ১৫ বিটে যে ডাটা জমে করে করা হয়েছে তা কি পজেটিভ না নেগেটিভ ভ্যালু। এক কথায় বলা যায়, যে ভ্যালু একটি Integer ডাটা টাইপের ভেরিয়েবলে জমা করে রাখা হবে তা ধনাত্মক অথবা ঋনাত্মক তা নির্দেশ করার জন্য Sign Bit. যদি sign Bit এর ভ্যালু ‘0’ হয় তাহলে ডাটা এর মান হবে ধনাত্মক কিংবা যদি Sign Bit এর ভ্যালু ‘1’ হয় তাহলে ডাটা এর মান হবে ঋনাত্মক।

একটি Integer ভ্যালুতে কত সংখ্যা জমা করে রাখা যাবে তা দেখে নেয়া যাক।

8

যখন Integer ডাটা টাইপের ভেরিয়েবলে ‘4’ জমা করে রাখা হবে তখন উক্ত Integer ডাটা টাইপের জন্য যে মেমরি স্পেস রাখা হয় তার চিত্র হবে এই রকম।

এভাবে যখন Sign Bit  ‘0’ হয় এবং বাকী 15 Bit যখন 1 হবে তখন উক্ত 15 টি Bit এর ডেসিমেল ভ্যালু হবে 32767 । কিন্তু যদি Sign Bit ‘1’ হয় এবং বাকী 15 Bit যখন 1 হবে তখন উক্ত 15 টি Bit এর ডেসিমেল ভ্যালু হবে -32768 . তাই  Integer ডাটা টাইপের ভেরিয়েবলের ভ্যালু হিসেবে 32767 থেকে -32768 পর্যন্ত যে কোন সংখ্যা নির্ধারন করা যাবে। কিন্তু  32767 থেকে -32768 এর বেশি অথবা কম অথবা দশমিক যুক্ত সংখ্যা Integer ডাটা টাইপের ভ্যালু হিসাবে নির্ধারন করে দিলে ফলাফল ভুল আসবে।

একটি বিষয় উল্লেখ্য থাকে আমরা বাস্তব জীবনে সংখ্যা লিখার জন্য হয়ত শতক, সহস্র এর পর কমা (,) ব্যবহার করে থাকি কিন্তু প্রোগ্রামের ক্ষেত্রে সংখ্যার মধ্যে (,) ব্যবহার করলে প্রোগ্রাম কম্পাইলার Error দেখাবে।

Float: প্রকৃত সংখ্যা নিয়ে কাজ করার ক্ষেত্রে Float ডাটা টাইপের ভেরিয়েবল ব্যবহার করা হয়। Float কে প্রোগ্রামে ছোট করে Float লিখা হয়।

Float ভেরিয়েবল ডিক্লেয়ার করে উক্ত Float ভেরিয়েবলে মান পূর্ন সংখ্যা নির্ধারন করে দেওয়া হলেও কম্পাইলার উক্ত পূর্ন সংখ্যা কে প্রকৃত সংখ্যায় রুপান্তর করে নেয়। একটি উদাহরন দেখা যাক।

নিচের কোডটুক codeblock এ লিখে রান করুন।

void main (){

float num1;  // Declare num1 variable which is float type variable

num1 = 16; //  insert a value into num1 float type variable

printf("Your Number is: %f", num1); // print num1 float data type variable

getchar();

}

কোড বিশ্লেষনঃ

(Float num1): ২য় লাইনে Float ডাটা টাইপের একটি ভেরিয়েবল ডিক্লেয়ার করা হয়েছে। যার নাম দেওয়া হয়েছে num1

(num1 = 16): উক্ত num1 নামের ভ্যালু হিসেবে একটি পূর্ন সংখ্যা নির্ধারন করা হয়েছে।

(printf("Your Number is: %f", num1)): এই লাইনে printf() ফাংশনের মাধ্যে %f format specifier ব্যবহার করে উক্ত num1 ভেরিয়েবলের মান প্রদর্শন করা হয়েছে।

(getchar()):  যে কোন কী প্রেস পর্যন্ত অপেক্ষা করার জন্য এই কোডটুক ব্যবহার করা হয়েছে।

2

ফলাফলঃ যেহেতু আমরা উক্ত num1 ভেরিয়েবলের ভ্যালু হিসেবে 16 পূর্ন সংখ্যা নির্ধারন করে দিয়েছে সেহেতু ফলাফলেও তাই দেখার কথা। কিন্তু আমরা ফলাফলে দেখছি 16.000000 । কারন আমরা Float টাইপের ভেরিয়েবল ডিক্লেয়ার করেছে।  মেমরি স্পেসের চিত্র দেখলে বিষয়টি আরো পরিষ্কার হয়ে যাবে।

6

Float টাইপ ভেরিয়েবলের জন্য মেমরিতে ৪ বাইট অথবা ৩২ বিট পরিমান স্পেস নির্ধারিত হয়। এর মধ্যে প্রথম 23 টি Bit হচ্ছে পূর্ন সংখ্যা রাখার জন্য এর পরের 8 টি Bit হচ্ছে দশমিক সংখ্যা রাখার জন্য এবং অবশিষ্ট 1 টি Bit হচ্ছে বরাবরের মত Sign Bit.
C ল্যাংগুয়েজে IEEE 754 Standard অনুযায়ী বিটগুলতে ডাটা রাখা হয়। Float ডাটা টাইপে দশমিকের জন্য সর্বচ্চ ৬ ঘর ব্যবহার করা যাবে। এই ডাটা টাইপের মাধ্যেমে 3.4x10-38 থেকে - 3.4x10-38  পর্যন্ত যে কোন সংখ্যা জমা রাখা যাবে।
চলুন একটি উদাহরন দেখা যাক. নিচের কোডটুক codeblock এ লিখে রান করুন

void main (){

float num1;  // Declare num1 variable which is float type variable

num1 = 17.2546; //  insert a value into num1 float type variable

printf("Your Number is: %f", num1); // print num1 float data type variable

getchar();

}

3

Double: এই ডাটা টাইপের জন্য মেমরিতে 8 Bit অথবা 64 Byte জায়গা রাখা হয়। এই ডাটা টাইপের প্রথম 52 টি Bit পূর্ন সংখ্যা রাখার জন্য পরের 11 টি Bit দশমিক সংখ্যার জন্য এবং অবশিষ্ট 1 টি Bit Sign Bit. Double ডাটা টাইপের ভেরিয়েবলের সর্বচ্চ ১৫ ঘর পর্যন্ত দশমিক মান রাখা যায়। এই ধরনের ভেরিয়েবলে -1.7x10308 থেকে 1.7x10308 পর্যন্ত যে কোন সংখ্যা রাখা যায়।

7

চলুন একটি উদাহরন দেখা যাক। নিচের কোডটুক codeblock এ লিখে রান করুন।

void main (){

double num1;  // Declare num1 variable which is float type variable

num1 = 17.2546; //  insert a value into num1 float type variable

printf("Your Number is: %f", num1); // print num1 float data type variable

getchar();

}

4

এই পর্যন্ত হচ্ছে C এর ডাটা টাইপ। এই ডাটা টাইপ গুল বিগেইনার লেভেলের প্রোগ্রাম তোইরি করার জন্য খুবিই গুরুত্বপূর্ন। একটি বিষয় প্রোগ্রামিং শিখতে হলে আপনাকে প্রচুর পরিমান প্রকাটিস ও ধৈর্য্য থাকতে হবে। প্রতটি উদাহরন কপি না করে নিজের লিখার চেষ্টা করুন।

সবাই ভাল থাকুন ও সুস্থ থাকুন এবং অবশ্যই টিউটোরিয়ালবিডির সাথেই থাকুন।

Leave a Comment