ভ্যারিয়েবল ও ডাটা টাইপ (Variable & Data Type)

Variable: একটু বীজগণিত করা যাক কি বল?

Given,
    x = 1;
    y = 2;
Calculate, x + y.

ভাবছো ধুর! এটা কোন সমস্যা হল। একদম Easy। উত্তর হবে 3। বীজগণিতে আমরা x এবং y কে চলক বলতাম। Programming এ আমাদের বিভিন্ন সমস্যা সমাধান করার সময় বিভিন্ন Data রাখার (Store করতে) জন্য এই চলকরাশি বা Variable এর সাহায্য নিতে হবে।

Variable কে তুমি বাক্সের মত চিন্তা করতে পারো। একটা বাক্সে যেমন তুমি বিভিন্ন ধরণের জিনিস রাখতে পারবে ঠিক Variable এও বিভিন্ন ধরণের Data রাখতে (Store করতে) পারবে। Variable এর বেপারে কিছু Rules আছে C তে। সেগুলো হলঃ

১. প্রত্যেকটি Variable ব্যবহার এর পূর্বে Declare করতে হবে।

২. Declare সাধারণত Program এর শুরুতে অর্থাৎ int main(){ এর পরেই করা হয় তবে যেকোন Code এর Block শুরু হওয়ার সময়ও করা যায়।

৩. Variable এর নাম এর ক্ষেত্রে কিছু শর্ত আছে।

i. Variable এর নাম কোন সংখ্যা দিয়ে শুরু হতে পারবে না। যেমনঃ আমরা int 1x Declare করতে পারবো না তবে int x1 Declare করতে পারবো।

ii. Variable এর নাম এ কোন Space হতে পারবে না। Variable এর নাম শুধু মাত্র A-Z, a-z, 0-9 ও _ (Underscore) character দিয়েই রাখতে হবে।

এখন আমাদের বীজগাণিতিক সমস্যাটির Program এ করে ফেলা যাকঃ

#include <stdio.h>

int main(){
	int x = 1, y = 2;
	printf(“%d”, x + y);
	return 0;
}

Data Type: একটা বাক্সে তুমি বিভিন্ন জিনিস রাখতে পারবে তখনই যখন সেই বাক্সটি ঐ জিনিস গুলো রাখার উপযোগী হবে। ছিদ্র বিশিষ্ট বাক্সে নিশ্চয়ই পানি রাখতে পারবে না, তাই না?

Variable যদি বাক্স হয়ে থাকে তবে আমাদের অবশ্যই বলে দিতে হবে যে বাক্সটা কি ধরণের Data রাখতে পারবে। সেই কাজটা আমরা করি Variable Declare করার সময়। Variable Declare করার সময় আমরা Variable টির Data Type বলে দেই। যেমনঃ

int a;
float b;
char c;

এখানে আমরা তিনটি আলাদা আলাদা Data Type এর Variable Declare করেছি। C Program এ সাধারণত তিন ধরণের Data Type আছে।

Integer: আমরা আমাদের বাক্সে যদি পূর্ণ সংখ্যা রাখতে চাই তাহলে আমারা Integer Type এর Variable Declare করবো। এটি Declare করার সময় Variable এর নাম এর আগে int লিখলেই হয়ে যায়।

Floating Point: আমরা এখন যদি ভগ্নাংশ নিয়ে কাজ করতে চাই অর্থাৎ পূর্ণ সংখ্যার পাশাপাশি আমরা যদি দশমিক অংশও (Floating Point) রাখতে চাই তাহলে আমাদের Floating Point Type এর Variable Declare করবো। এটি Declare করার সময় আমরা Variable এর নাম এর পূর্বে float লিখে দিব।

Character: সংখ্যার পাশাপাশি আমাদের অক্ষর (Character) ও প্রয়োজন পরতে পারে। সেক্ষেত্রে আমাদের Character Type এর Variable দরকার পরবে। এই Type এর Variable Declare করার জন্য Variable এর নাম এর পূর্বে char লিখে দিলেই চলবে।

Data Type এর Size: আমরা জানলাম যে Variable হল অনেকটা বাক্সের মত যাতে আমরা বিভিন্ন ধরণের Data রাখতে পারবো। কিন্তু আমরা কি 20 inch3 Size এর বাক্সে 30 inch3 Size এর জিনিস রাখতে পারবো? উত্তরটা তোমরা জানো, যে বাক্সের Size এর চাইতে বড় Size এর বস্তু ঐ বাক্সে রাখা যাবে না। ঠিক তেমনই আমাদের Variable গুলো বিভিন্ন Size এর হয়ে থাকে এবং আমরা ঐ Size এর চাইতে বড় সংখ্যা/Data ঐ Type এর Variable এ রাখতে পারবো না।

আমরা জানি যে Computer বাংলা, ইংরেজি, হিন্দি কোন ভাষাই জানে না। সুনীল গঙ্গোপাধ্যায় এর মিশর রহশ্যের হানি আলকাদি যেখানে ১৭টি ভাষা সেখানে Computer মাত্র একটি ভাষাই জানে। আর সেটি হল Binary। Binary তে 1 দিয়ে On Bit (কোন কিছু On হওয়া) এবং 0 দিয়ে Off Bit (কোন কিছু Off হওয়া) বোঝানো হয়। তাই Computer এর যেকোন হিসাব এর ক্ষুদ্রতম একক হল Bit। তাই বিভিন্ন Data Type এর Size কেও আমরা Bit দিয়ে প্রকাশ করবো। C Programing এ int হল 32 Bit, float ও 32 Bit ও char হল 8 Bit। তবে আমরা চাইলে Integer এবং Float কে প্রয়োজন পরলে কমাতে বা বাড়াতে পারি। একদম নিচে একটি Table দিয়েছি, C তে বিভিন্ন ধরণের Data Type Declaration, তার Size Bit ও Byte এ (1 Byte = 8 Bit) এবং Range সহ.

Data Type এর Range: প্রত্যেকটা Data Type এর একটা Range আছে। যেমন Character এর Range হল -27 থেকে 27-1 পর্যন্ত। জিনিসটাকে একটু সংখ্যা রেখায় দেখি (যদিও আমি সবগুলো দাগ একই দূরুত্তে এঁকেছি, সংখ্যা রেখাটি আসলে Logarithmic হবে, অর্থাৎ শুন্য থেকে প্রত্যেকটি দাগের দূরুত্ত তার পূর্ববর্তি দাগের দ্বিগুণ হতে থাকবে)।

Data Type Range

অর্থাৎ আমরা Negative ও Positive উভয় সংখ্যাই রাখতে পারছি। আমরা একটি Variable এ 2n সংখ্যক সংখ্যা রাখতে পারবো। এখানে n হল Data Type এর Size (Bit এ)। Character এর ক্ষেত্রে 28 = 256 টি সংখ্যা রাখতে পারবো। সংখ্যা রেখার বামে 2n-1 = 27 = 128 টি এবং সংখ্যা রেখার ডানে 2n-1-1 =27-1 = 127 টি। প্রশ্ন হচ্ছে বামে 27 কিন্তু ডানে 27-1 কেনো? কারণ হচ্ছে বাম থেকে ডানে আসার সময় মাঝ পথে ০ (শুন্য) পরবে এবং শুন্যও একটি সংখ্যা এবং আমরা এটি বাদ দিতে পারবো না। তাই আমরা শুন্যকেও গুনছি। তাই, বামের 128 + মাঝের শুন্য 1 +  ডানের 127 = মোট 28 = 256 টি।

Signed: আমরা যখন কোন Variable Declare করবো তখন তা Computer এর Memory তে নির্দ্ধিষ্ট পরিমাণ জায়গা দখল করে নেয়। যেমন int declare করলে 32 Bit জায়গা দখল করে। এখন প্রশ্ন হচ্ছে 32 Bit এর একটা সংখ্যা Positive ও হতে পারে আবার Negative ও হতে পারে, Computer বুঝবে কি করে আমরা কোনটা চাচ্ছি? আসলে আমরা যখন int type এর Variable Declare করবো তখন আমরা 31 Bit এর সংখ্যা রাখতে পারবো এবং অবশিষ্ট 1 Bit ব্যবহার করবে Sign Bit হিসেবে। 32 টি Bit এর মধ্যে সর্ব বামের Bit টি কে Sign Bit বলে এর কাজ হল সংখ্যাটি Positive নাকি Negative তা বুঝানো। Sign Bit যদি 1 হয় তার মানে হল Sign আছে অর্থাৎ আমাদের সংখ্যাটির আগে একটি – (Minus) Sign বসবে আর যদি Sign Bit 0 হয় তার মানে হল Sign নেই। অর্থাৎ আমাদের সংখ্যাটির আগে কোন Sign বসবে না। সাধারণত আমরা Positive সংখ্যার আগে + (Plus) চিহ্ন লিখি না। যেসব Data Type এ Sign Bit আছে সেগুলো হল Signed Data Type। C তে Default এ সব Data Type ই Signed থাকে।

Unsigned: আমরা যদি আগে থেকেই বুঝতে পারি যে আমাদের Program এ কোন Negative সংখ্যা থাকবে না তাহলে আমরা Sign Bit এর জন্য শুধু শুধু একটি Bit Waste না করে আমরা সবগুলো Bit কেই কাজে লাগাতে পারি এর ফলে আমরা Negative সংখ্যা রাখতে না পারলেও আরো বড় Range এর Positive সংখ্যা রাখতে পারবো। এক্ষেত্রে আমাদের সংখ্যা রেখাটি ০ (শুন্য) থেকে শুরু হবে। Unsigned use করার জন্য আমাদের যা করতে হবে তা হল Variable Declare করার সময় Data Type এর আগে unsigned লিখে দিতে হবে। Floating Point Data Type সমূহ কে Unsigned করা যায় না।

Table of Data Type

এক সময় int এর Size ছিলো 16 Bit তখন short int ছিলো না। তখন 32 Bit এর Integer বোঝানোর জন্য long int ব্যবহার করা হত। কিন্তু এখন যেহেতু int এর Size ই 32 Bit তাই উপরের List এ long int দেখানো হয়নি।

এখানে যে Data গুলো দেওয়া হয়েছে তার সত্যতা যাচাইয়ের জন্য একটা Program দিলাম নিচে। Run করে দেখতে পারো। যেহেতু Signed এবং Unsigned এর Size একই তাই Program টিতে শুধু Signed ই দেখানো হয়েছে।

#include<stdio.h>

int main(){
    char a;
    short int b;
    int c;
    long int d;
    float e;
    long long f;
    double g;
    long double h;

    printf("Size of Character\t   :\t%2d Bit\n", sizeof(a)*8);
    printf("Size of Short Integer\t   :\t%2d Bit\n", sizeof(b)*8);
    printf("Size of Integer\t\t   :\t%2d Bit\n", sizeof(c)*8);
    printf("Size of Long Integer\t   :\t%2d Bit\n", sizeof(d)*8);
    printf("Size of Floating Point\t   :\t%2d Bit\n", sizeof(e)*8);
    printf("Size of Long Long Integer  :\t%2d Bit\n", sizeof(f)*8);
    printf("Size of Double\t\t   :\t%2d Bit\n", sizeof(g)*8);
    printf("Size of Long Double\t   :\t%2d Bit\n", sizeof(h)*8);

    return 0;
}

Program টিতে sizeof নামের একটি Function Call করে বিভিন্ন Data Type এর Size Check করা হচ্ছে। Sizeof একটি Built-in Function। Sizeof Function টি Byte হিসেবে Size দেখায় তাই আমি ৮ দিয়ে গুন দিয়ে দিয়েছি যাতে Size Bit হিসেবে Show করে।

Advertisements
Tagged with: , , , , ,
Posted in বেসিক প্রোগ্রামিং

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: