ডাটা টাইপ

নিচের ছকটি লক্ষ্য করুনঃ
Name

Beginning letter of the name

Age (year)

Height

Santo

S

13

4.4

Robin

R

15

5.5

Iyar Hossain

I

16

5.4

এখানে “santo”কে আপনি word টাইপের ডাটা বলতে পারেন।একইভাবে শান্তর বয়সকে(১৩)আপনি  পূর্ণ সংখ্যা type এর ডাটা বলতে পারেন এবং শান্তর উচ্চতা (৪.৪)কে আপনি float বা দশমিক টাইপের ডাটা বলতে পারেন।আর সবগুলো নামের প্রথম বর্ন (S,R,R,I,S)কে আপনি character বা বর্ণ টাইপের ডাটা বলতে পারেন।এ বিভিন্ন ধরনের ডাটাগুলোর ধরনকেই ডাটা টাইপ বলে।সহজ কথায় ডাটা টাইপ মানে হলো কোন ধরনের বা কোন টাইপের ডাটা। কম্পাইলার কে বিভিন্ন ডাটা টাইপ  কিভাবে বুঝবেন:প্রোগ্রাম এ যখন আপনি বিভিন্ন ডাটা টাইপ  লিখবেন তখন কীওয়ার্ড ব্যবহার করতে হবে।যেমনঃ প্রোগ্রাম এর কোথাও যদি আপনি পূর্ন সংখ্যা টাইপের ডাটা ব্যবহার করতে চান তাহলে পূর্ন সংখ্যার ইংরেজি integer ব্যবহার না করে ‘int’ কীওয়ার্ড টা ব্যবহার করতে হবে।একইভাবে বর্ণ বুঝাতে character না লিখে ‘char’লিখতে হবে। সি প্রোগ্রামিং এর গরুত্বপূর্ণ ডাটা টাইপঃ আপনি জানেন, ডাটা টাইপ ও কীওয়ার্ড কি। সি প্রোগ্রামিং করতে গিয়ে আপনাকে বিভিন্ন ধরনের ডাটা টাইপ নিয়ে কাজ করতে হবে। যেমন কখনো পূর্ণ সংখ্যা ,কখনো বর্ণ নিয়ে আপনাকে কাজ করতে হবে। মনে করুন  আপনি কীবোর্ড থেকে দুটি পূর্ন সংখ্যা দিবেন এবং সংখ্যা দুটি যোগ করে দেখাবেন, এই কাজটা আপনি সি প্রোগ্রামিং দিয়ে করতে চান। এখন আপনি যে পুর্ন সংখ্যা ইনপূট দিবেন এবং পূর্ন সংখ্যা নিয়ে কাজ করবেন সেটি সি প্রোগ্রামে কিভাবে লিখবেন?। এজন্য কিছু কীওয়ার্ড ব্যবহার করতে হয়, যেমন পূর্ণ সংখ্যা টাইপের ডাটা বুঝাতে ‘int’ কীওয়ার্ড,দশমিক সংখ্যা টাইপের ডাটা বুঝাতে ‘float’  কীওয়ার্ড,  বর্ণ টাইপের ডাটা বুঝাতে ‘char’ কীওয়ার্ড ব্যবহার করা হয়। ইতিমধ্যে আপনি জানেন,কীওয়ার্ড কে কোন রকম পরিবর্তন না করে লিখতে হয়। যেমন ‘char ’ কীওয়ার্ড টাকে ‘char’ ছাড়া অন্য কোনভাবে (যেমন Char বা CHAR) লেখা যাবে না। এই  কীওয়ার্ড কে রসায়ন শাস্রের রাসায়নিক সংকেতক এর সাথে চিন্তা করুন।রসায়ন শিখতে যেমন আপনাকে বিভিন্ন রাসায়নিক সংকেত মনে রাখা লাগে,তেমনি সি প্রোগ্রামিং করার জন্য কিছু কীওয়ার্ড আপনাকে মনে রাখতে হবে। তবে আপনাকে এ কীওয়ার্ড গুলো মুখস্ত করতে হবে না। কারন সি প্রোগ্রামিং এ যেসব ডাটা টাইপ ব্যবহৃত হয় তার সংখ্যা খুবই কম।তাছাড়া কয়েকদিন প্রোগ্রামিং করার পর এমনিতেই সব ডাটা টাইপ আপনার মুখস্ত হয়ে যাবে।এখন নিছের ছকটি শুধু একনজরে দেখে জান। এ ছকটি দেখে আপনার মনে যেসব প্রশ্ন জাগতে পারে সেগুলো একটু পরেই আলোচনা করা হবে।
Main data        type Division of    main  Data  type কীওয়ার্ড কি ধরনের ডাটা ইনপুট দেওয়া যাবে?
Integer(পূর্ণ সংখ্যা) Integer   int ধনাত্মক বা ঋনাত্মক পূর্ন সংখ্যা
Unsigned  integer unsigned  int ধনাত্মক  পূর্ন সংখ্যা
Signed integer signed  int ধনাত্মক বা ঋনাত্মক পূর্ন সংখ্যা
Short integer short  int ধনাত্মক বা ঋনাত্মক পূর্ন সংখ্যা
Unsigned short     integer unsigned  short int ধনাত্মক  পূর্ন সংখ্যা
Signed  short   integer signed  short int ধনাত্মক বা ঋনাত্মক পূর্ন সংখ্যা
Long  integer long  int ধনাত্মক বা ঋনাত্মক পূর্ন সংখ্যা
signed  long         Integer signed  long   int ধনাত্মক বা ঋনাত্মক পূর্ন সংখ্যা
Unsigned long Integer unsigned  long  int ধনাত্মক পূর্ন সংখ্যা
float float ধনাত্মক বা ঋনাত্মক পূর্ন  সংখ্যা বা ভগ্নাংশ
Double (ভগ্নাংশ) double double ধনাত্মক বা ঋনাত্মক পূর্ন  সংখ্যা বা ভগ্নাংশ
Long  double       long   double ধনাত্মক বা ঋনাত্মক পূর্ন  সংখ্যা বা ভগ্নাংশ
Character (বর্ণ) Character char বড় হাতের বা ছোট হাতের বর্ণ
লক্ষ্য করুন “int” কীওয়ার্ড এর আগে কখনো “signed”কখনো “unsigned”কখনো “short”কখনো “long ”modifier ব্যবহার করা হয়েছে।আপনার প্রশ্ন হতে পারে modifier কি এবং signed ,unsigned,short,long-এ গুলোকে কেন modifier বলা হয়? উত্তরঃ modifier হলো যা কোন কিছুকে modify করে। যেমনঃঘোড়া দ্রুত দৌড়ায় –এই বাক্যে ‘দ্রত’শব্দটা ঘোড়ার দৌড়ানোর ধরনটা modify করে।তাই আপনি ‘দ্রত’কে modifier বলতে পারেন (যদি ও ব্যাকরণের ভাষায় adverb বলতে হবে)।একইভাবে “int”এর আগে যদি “unsigned”লিখেন তাহলে int টাইপের ডাটাটা অবশ্যই ধনাত্মক হতে হবে। অর্থাৎ int টাইপ টা শুধুমাত্র ধনাত্মক হবে এটা modify করে “unsigned” শব্দটা।তাই “unsgned”একটা modifier ***একমাত্র “unsigned ”modifier  লিখলে আপনি শুধু ধনাত্মক ডাটা ইনপুট দিতে পারবেন।বাকি যে কোন modifier লিখলে ধনাত্মক ও ঋণাত্মক যে কোন ডাটা ইনপুট দিতে পারবেন। ****উপরের ছক থেকে দেখা যায় “int” কীওয়ার্ড লিখলেও পূর্ণ সংখ্যা ইনপুট দেওয়া যায় আবার “long int” লিখলেও পূর্ণ সংখ্যা ইনপুট দেওয়া যায়। তাহলে কখন “int”আর কখন “long int”ব্যবহার করব? সংক্ষেপে উত্তর হলো -৩২৭৬৮ থেকে ছোট অথবা ৩২৭৬৭ থেকে বড় মান ইনপুট দেওয়ার জন্য int ব্যবহার না করে long int ব্যবহার করা হয়। আরও বিস্তারিত ব্যাখ্যা নিচে দেওয়া হলঃ কম্পিউটার এর মেমরী কে আপনি নিচের মত পাশাপাশি সাজানো ছোট ছোট বক্স হিসেবে চিন্তা করতে পারেন।
1 2 3 4 5 6 7 8
লক্ষ করুন, এখানে ৮ টি ছোট ছোট বক্স আছে।এই ছোট একটি বক্সকে আপনি একটি বিট চিন্তা করুন।বিট হলো মেমরীর একক।৮ টি বিট মিলে হয় একটি বাইট।অর্থাৎ, ১ বাইট=৮ বিট। int টাইপের ডাটার জন্য ২ বাইট জায়গা নির্ধারিত হবে। উপরের সম্পর্ক থেকে আমরা লিখতে পারি, ২বাইট=৮*২=১৬ বিট। অর্থাৎ int টাইপের ডাটার জন্য ১৬ টি ছোট ছোট ঘর সৃষ্টি হবে।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
এই ১৬ টি ঘরের মধ্যে সবচেয়ে বামের ঘরটা হলো সাইন বিট।সংখ্যাটি ধনাত্মক হবে না ঋণাত্মক হবে তা নির্ধারণ করে সাইন বিট। সাইন বিট টি ০ হলে সংখ্যাটি হবে ধনাত্মক আর সাইন বিট 1 হলে সংখ্যাটি হবে ঋনাত্মক।এখন বাকি থাকে ১৫টি ঘর। এখন আপনাকে যদি বলি ১৫টি খালি ঘর আছে।ঘরগুলোকে এমন ১৫ টি ডিজিট দিয়ে পূরন করুন যেন ১৫টি ডিজিট দিয়ে গঠিত সংখ্যাটা সবচেয়ে বড় হয়। এখন আপনি যে ডাটাই ইনপুট দেন না কেন কম্পিউটা্রের মেমরীতে শুধু ০ এবং ১ কে স্টোর (সংরক্ষণ)করে রাখা যায়। অর্থাৎ আপনার অপশনে দুটি ডিজিট আছে- 0 এবং 1. তাহলে আপনি নিশ্চয়ই সবগুলো ঘরকে “1” দিয়ে পূরণ করবেন এবং আপনার উত্তর হবে-0111111111111111 এখানে সাইন বিট = 0.মানে সংখ্যাটি ধনাত্মক। এখন 0111111111111111 কে decimal এ প্রকাশ করলে পাব,
0 * 2 15 + 1 * 2 14 + 1*2 13 + 1*2 12 + 1*2 11 + 1*2 10 + 1*2 9 + 1*2 8 +1*2 7+ 1*2 6+1*2 5+1*2 4 +1*2 3 + 1*2 2+1*2 1 +1*2 0
=0 + 16384 + 8192 + 4096 + 2048 + 1024 + 512 + 256 + 128 + 64 + 32 + 16 + 8 + 4 + 2 +1 =32767 অর্থাৎ “int” ডাটা টাইপের সর্বোচ্চ ধনাত্মক মান ৩২৭৬৭। এখান আপনার যদি ৩২৭৬৭ থেকে বড় মান নিয়ে কাজ করতে চান, তাহলে আপনাকে অব্যশই এমন একটি ডাটা টাইপ বেছে নিতে হবে যার জন্য ২ বাইটের চেয়ে বেশি মেমরী সৃষ্টি হয়। long int এর জন্য ৪ বাইট = ৪*৮ বিট =৩২ বিট মেমরী তৈরি হয়।তাই ছোট মানের জন্য int আর বড় মানের জন্য long int ব্যবহার করা হয়।