5.7.3 ডেটা টাইপ (Types of Data)

আমরা জানি কম্পিউটার প্রসেসর বিভিন্ন হিসাব-নিকাশ করে। এই হিসাব-নিকাশগুলো বিভিন্ন ডেটার উপরে করা হয়। সি প্রোগ্রামিং ভাষায় বেশ কিছু ডেটা টাইপ রয়েছে, অর্থাৎ বিভিন্ন ধরনের ডেটা নিয়ে কাজ করার ব্যবস্থা রয়েছে। এর মধ্যে উল্লেখযোগ্য হচ্ছে- char, int, float ও double। নিচে ডেটা টাইপগুলো নিয়ে সংক্ষিপ্ত আলোচনা করা হলো।-

Char
এটি হচ্ছে character-এর প্রথম চারটি অক্ষর। এ ধরনের ডেটা টাইপ একটিমাত্র অক্ষর (বর্ণ, অংক, যতিচিহ্ন ইত্যাদি) ধারণ করতে পারে, যেমন- ‘a’, ‘D’, ‘5’, ‘!’ ইত্যাদি। এটি কম্পিউটারের মেমোরিতে সাধারণত এক বাইট (অর্থাৎ, আট বিট ) জায়গা দখল করে। তাহলে এ ধরনের ডেটা টাইপে 28 বা 256টি পৃথক ডেটা রাখা যায়। 256টি জিনিস কিন্তু একটি ভ্যারিয়েবলে একসঙ্গে রাখা যায় না, একটি ভ্যারিয়েবলে একই সময়ে কেবল একটি ডেটা রাখা যায়, আর Char টাইপের ডেটার ক্ষেত্রে সম্ভাব্য 256টি মানের যে কোনো একটি রাখা যায়।

একটি বিটে যে কোনো সময়ে রাখা যায় 0 অথবা, 1। অর্থাৎ একটি বিট দিয়ে দুটি ভিন্ন জিনিস প্রকাশ করা যায়। আবার দুইটি বিট দিয়ে প্রকাশ করা যায় চারটি ভিন্ন জিনিস- 00, 01, 10, এবং 11। একইভাবে তিনটি বিট দিয়ে প্রকাশ করা যায় আটটি ভিন্ন জিনিস- 000, 001, 010, 011, 100, 101, 110, এবং 111 । তাহলে n-সংখ্যক বিট দিয়ে প্রকাশ করা যায়, 2n -সংখ্যক ভিন্ন জিনিস।

int
Integer শব্দের অর্থ পূর্ণসংখ্যা। এই শব্দের প্রথম তিনটি অক্ষর নিয়ে int ডেটা টাইপের নামকরণ করা হয়েছে। এ ধরনের ডেটা টাইপে পূর্ণসংখ্যা রাখা যায়। একটি int টাইপের ডেটা সাধারণত কম্পিউটারের মেমোরিতে চার বাইট (অর্থাৎ, 32 বিট জায়গা দখল করে। যেহেতু এর সাইজ 32 বিট, তাই এতে সম্ভাব্য 232 বা 4294967296 রকমের সংখ্যা রাখা যায়। আর সংখ্যা যেহেতু ধনাত্মক ও ঋণাত্মক উভয় জাতীয় হতে পারে, তাই -2147483648 থেকে 2147483647 সীমার মধ্যে যে কোনো সংখ্যা (int) টাইপের ডেটাতে ধারণা করা যায়।

float
দশমিকযুক্ত সংখ্যা অর্থাৎ, floating point number রাখার জন্য float ডেটা টাইপ ব্যবহার করা হয়। এটি মেমোরিতে সাধারণত চার বাইট জায়গা দখল করে।

double
এটিও দশমিক যুক্ত সংখ্যা রাখার জন্য ব্যবহার করা হয়। তবে এটি সাধারণত কম্পিউটারের মেমোরিতে আট বাইট জায়গা নেয়।

কয়েকটি প্রোগ্রাম লিখে উল্লিখিত ডেটা টাইপের ব্যবহার দেখানো হলো-

উদাহরণ ১

#include <stdio.h>
int main ()
{
	char ch;
	ch = 'X';
	printf ("The character is %C", ch);
	return 0;
}

প্রোগ্রামঃ ৫.২

প্রোগ্রামটি রান করলে আউটপুট আসবে The character is X।
এই প্রোগ্রামে char ch লিখে char টাইপের একটি ভ্যারিয়েবল variable তৈরি করা হয়েছে, যার নাম দেওয়া হয়েছে ch। এখানে ch-এর বদলে অন্য নামও ব্যবহার করা যেত। একে ভ্যারিয়েবল বলা হয়। ক্যারেক্টার টাইপের ডেটা প্রিন্ট করার জন্য %c ব্যবহার করা হয়। একে বলা হয় ফরম্যাট স্পেসিফায়ার (format specifier)। নিচের টেবিলে বিভিন্ন ডেটা টাইপের ফরম্যাট স্পেসিফায়ার দেখানো হলো-

ডেটা টাইপফরম্যাট স্পেসিফায়ার
char%c
int%d
float%f
double%lf(এখানে l হচ্ছে ছোট হাতের ইংরেজি L অক্ষর)

সি প্রোগ্রামে ভ্যারিয়েবলের নাম লেখার ক্ষেত্রে কিছু নিয়মকানুন রয়েছে। ভ্যারিয়েবলের নামে কেবল বর্ণ, অংক এবং আন্ডারস্কোর চিহ্ন (_) ব্যবহার করা যাবে। তবে নামের প্রথম অক্ষরটি কোনো অংক হতে পারবে না।

সঠিক ভ্যারিয়েবল নামের উদাহরণভুল ভ্যারিয়েবল নামের উদাহরণ
age
final_result
student_1_marks
student0
__current_date
0student
final result
greetings!
my, name

উদাহরণ ২

কটি ক্যারেক্টার টাইপের ভ্যারিয়েবল char টাইপের যে কোনো ডেটা ধারণ করতে পারে। বিষয়টি একটি প্রোগ্রাম লিখে দেখা যাক।

#include <stdio.h>

int main ()
{
 char ch;
 ch = 'x';
 printf("Value stored in ch is %c\n", ch);
 ch = 'y';
 printf("Value stored in ch is %c\n", ch);
 return 0;
}

প্রোগ্রামঃ ৫.৩

উপরের প্রোগ্রামটি রান করলে নিচের মতো আউটপুট পাওয়া যাবে।

Value stored in ch is x
Value stored in ch is y

আউটপুট দেখে বোঝার চেষ্টা করতে হবে যে প্রোগ্রামটিতে কী কাজ হচ্ছে। এখানে Printf() ফাংশনের ভেতরে \n ব্যবহার করা হয়েছে। \n-এর মানে হচ্ছে নিউ লাউন (new line), অর্থাৎ এটি প্রিন্ট করলে আউটপুটের পরবর্তী অংশ স্ক্রিনে নতুন লাইনে চলবে যাবে। যদি printf() ফাংশনের ভেতরে \n ব্যবহার করা না হতো, তবে আউটপুট হতো এরকম-

Value stored in ch is x Value stored in ch is y

একটি ভ্যারিয়েবলে যখন কোনো মান রাখা হয় (যেমন- ch = ‘x’;), একে বলা হয় ch-এর মধ্যে ‘x’ অ্যাসাইন করা এবং অপারেশনটির নাম হচ্ছে অ্যাসাইনমেন্ট অপারেশন। একটি ভ্যারিয়েবলে একই সময়ে কেবল একটি মান অ্যাসাইন করা যায়। (তবে প্রয়োজন অনুসারে পরে সেই মান পরিবর্তন করা যেতে পারে। )

উদাহরণ ৩

এখন একটি প্রোগ্রাম দেখানো হবে, যার কাজ হচ্ছে দুটি সংখ্যার যোগফল, বিয়োগফল, গুণফল ও ভাগফল প্রকাশ করা-

#include <stdio.h>
int main()
{
	int number1, number2;
	number1 = 12;
	number2 = 4;
	printf ("number1 + number2 = %d\n", number1 + number2);
	printf ("number1 - number2 = %d\n", number1 - number2);
	printf ("number1 * number2 = %d\n", number1 * number2);
	printf ("number1 / number2 = %d\n", number1 / number2);
	return 0;
}

প্রোগ্রামঃ ৫.৪

উপরের প্রোগ্রামটি রান করলে নিচের মতো আউটপুট পাওয়া যাবে।

number1 + number2 = 16
number1 – number2 = 8
number1 * number2 = 48
number1 / number2 = 3

ইন্টিজার টাইপের ডেটা প্রিন্ট করার জন্য (%d) ব্যবহার করা হয়। আর গুণচিহ্ন ও ভাগচিহ্ন হচ্ছে, যথাক্রমে * ও / । উপরের প্রোগ্রামটিতে চাইলে আরেকটি ভ্যারিয়েবল তৈরি করা যায়, যেখানে বিভিন্ন গাণিতিক অপারেশনের ফলাফল রাখা হবে।

#include <stdio.h>
int main()
{
	int number1, number2, result;
	number1 = 12;
	number2 = 4;
	result =  number1 + number2;
	printf ("number1 + number2 = %d\n", result);
	result = number1 - number2;
	printf ("number1 - number2 = %d\n", result);
	result = number1 * number2;
	printf ("number1 * number2 = %d\n", result);
	result = number1 / number2;
	printf ("number1 / number2 = %d\n", result);
	return 0;
}

উল্লেখ্য যে, (number1 + number2) হচ্ছে একটি এক্সপ্রেশন (expression)। সি প্রোগ্রামিংয়ে এক্সপ্রেশন বলতে বোঝানো হয় কিছু কোড যা একটি মান প্রকাশ করে। আবার number2 = 4; হচ্ছে একটি স্টেটমেন্ট (statement)। একটি স্টেটমেন্ট দিয়ে একটি কাজ বোঝানো হয়। এখানে কাজটি হচ্ছে (number2) নামক ভ্যারিয়েবলে 4 রাখা। আবার, result = number1 + number2; একটি স্টেটমেন্ট। এটি দ্বারা বোঝানো হচ্ছে number1 + number2 এক্সপ্রেশনটি এক্সিকিউট করে যে মান পাওয়া যাবে, সেটি result নামক ভ্যারিয়েবলে রাখা। printf(“number1 / number2 = %d\n”, result); – এটিও একটি স্টেটমেন্ট। প্রতিটি স্টেটমেন্টের শেষে একটি সেমিকোলন চিহ্ন দেওয়া হয়।