আজ আমি আপনাদের সামনে বাংলায় সি প্রোগ্রামিং শিখার ধারাবাহিক টিউটরিয়ালের ৪র্থ পর্ব নিয়ে হাজির হলাম। তো চলুন শুরু করা যাক।
- ডাটা টাইপ কি?
নিচের ছকটি লক্ষ্য করুনঃName Beginning letter of the nameAge (year)HeightMinarul M134.4Benzir B155.5Sahos S165.4এখানে “minarul”কে আপনি word টাইপের ডাটা বলতে পারেন।একইভাবে শান্তর বয়সকে(১৩)আপনি পূর্ণ সংখ্যা type এর ডাটা বলতে পারেন এবং শান্তর উচ্চতা (৪.৪)কে আপনি float বা দশমিক টাইপের ডাটা বলতে পারেন।আর সবগুলো নামের প্রথম বর্ন (M,B,B,S,M)কে আপনি 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
উত্তরঃ 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*213+1*212+ 1*211 + 1*210+ 1*29 + 1*28 +1*27+ 1*2 6+1*2 5+1*2 4 +1*2 31*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 ব্যবহার করা হয়।
তো বন্ধুরা আজ এই পর্যন্তই। উপকৃত হলে ধন্যবাদ দি