Saturday 1 September 2012

learning c programming variable


 সহজে শিখুন সি প্রোগ্রামিং-২য় পর্ব-ভেরিয়বল-২

পড়ালেখা অনেক হল চলো আজ একটু মজা করি।
মনে কর, তোমার নতুন ভাবী মিষ্টি হাসিমুখে একটা চাউলের বস্তা ভাঁজ করে তোমার হাতে দিয়ে বলল, যাও বাজার থেকে ২কেজি চাউল নিয়ে আসো, আর তুমি সেই মিষ্টি হাসিতে ম্লান হয়ে বস্তা নিয়ে নাচতে নাচতে বাজারে চলে গেলে আর দোকানীর সামনে বস্তাটা ঢিল দিয়ে বললে, ২কেজি ভাল চাউল দেন। দোকানী সেই বস্তার ভাঁজ খুলেই তার চোখ ছানাবড়া,কারন এটাযে ৮০কেজি চাউলের বস্তা আর তুমি তাতে ২ কেজি চাউল নিতে এসেছ।
আর তা দেখে তোমার মুখের হাসি গায়েব হয়ে যাবে। ইচ্ছে হবে, যদি ভাবী এখন কাছে থাকত তবে তাহলে নির্ঘাত একটা চড় দিতে না পারলেও চোখ বন্ধ করে অন্তত একটা চিমটি কেটে দিতাম।

২কেজি চাউলের জন্য ৫ কেজি চাউলের বস্তা নিতে পারি, তাই বলে ৮০ কেজি চাউলের বস্তা- নিশ্চয় না। কিংবা ৫০ লিটার বালতিতে ২৫০গ্রাম দুধ নেব না।

         প্রোগ্রামিং এর বেলায়ও আমরা এরকম  করব না।আমাদের যখন যে রকম পাত্র দরকার, সে রকম পাত্র ব্যবহার করব অর্থাৎ সে রকম variable ব্যবহার করব।
এজন্য সি তে কত গুলো আলাদা আলাদা বস্তা রয়েছে। আমাদের যখন যে রকম বস্তা দরকার সেটা ব্যবহার করব।
তাহলে এবার চলো সেই বস্তা গুলো একবার দেখি-
                   short int, unsigned short int, int, unsingned int, long int, long long, float, double, long double.

                 আমি জানি তোমরা এখন একটা প্রশ্ন করবে, কি প্রশ্ন? সেটা হচ্ছে আমরা একটা বস্তা দেখে বুঝতে পারব, সেটাতে কত কেজি চাউল ধরতে পারে, কিন্তু প্রোগ্রামিং এর বেলায় কিভাবে বুঝব কোন বস্তাটা দরকার বা কোন ধরণের variable দরকার ?

               ভয় পাওয়ার কোন কারন নেই। আমি ফাঁকি দিব না, এক্ষুনি  তোমাদের সেটা বলে দিচ্ছি।
মনে কর, আমাদের একটা সংখ্যার প্রয়োজন,(-৩২৭৬৮ থেকে +৩২৭৬৭)এর মধ্যে তবে, আমাদের ব্যবহার করতে হবে, short int.

আবার এটাকে যদি লিখি, unsigned short a, তবে variable a এর রেঞ্জ হবে (০ থেকে ৬৫,৫৩৬)

এভাবে বিভিন্ন রেঞ্জের বস্তা বা ভেরিয়েবল বের করার একটা সূত্র গোপন আছে, এবার সবাইকে সেটা কানে কানে সেটা বলে দিচ্ছি।

                                   int বা signed int হচ্ছে 2 bytes মানে 16 kb (8*2) তাহলে এটা দ্বারা আমরা দেখাতে পারব [-2^15 থেকে (2^15)-1  ] অর্থাৎ -32768 থেকে +32767 পর্যন্ত।
    
আর যদি এটা unsigned int হতো তখনো এর size হতো 2 bytes কিন্তু এর রেঞ্জ
হতো [ 0 থেকে (2^16)-1] অর্থাৎ ০ থেকে 65535 পর্যন্ত।

অনেক পড়া হলো চলো এবার একটু গল্প করি। মনে কর,তোমার বন্ধু ফাহিমকে তুমি ৫০০ শত টাকা ধার দিয়েছ। অনেক দিন হয়ে গেলো,ফাহিম তোমাকে দিচ্ছি দিচ্ছি করে দিচ্ছে না। তারপর তুমি জানলে ও একটা আস্ত কাইস্টা ওর ঘাড় না ধরলে টাকা দিবে না। তখন তুমি রেগে গিয়ে ওর সাথে ঝগড়া করলে আর ওকে unfriend করে বলে দিলে তোর সাথে আমার আর কোন বন্ধুত্ব নেই এবার পাই পাই করে আমার টাকা গুনে দিবি। ফাহিম কাইস্টা হলেও কিন্তু এই কথা শুনে তোমার ৫০০টাকা দিয়ে দিল আবার এই অবস্থায় কিন্তু এই টাকা মার খাওয়ার সম্ভাবনাও ছিল কারন ফাহিম মনে করতে পারত ওর সাথে যেহেতু আমার সম্পর্কই থাকল না তাই টাকাও দিব না।

প্রোগ্রামিং এর বেলায়ও ঠিক কারো সামনে unsigned লিখলে, মনে কর সে খুব রেগে যায়       
তাই সে [0 থেকে (2^size)-1)]  পর্যন্ত দেখায়।

আরেকটি কথা কারো সাথে যদি কিছু না থাকে তার মানে তার সাথে signed আছে মনে করবে। যেমন উপরের int বা signed int একই জিনিস.
এভাবে তোমরা শুধু যে কোন ভেরিয়বল টাইপের বিট সংখ্যা মনে রেখে তার রেঞ্জ বের করতে পারবে।
       
প্রয়োজনে এই ছকটা দেখতে পার। 
ডেটা টাইপ
বাইট সংখ্যা
বিট সংখ্যা
রেঞ্জ পাওয়ারে

রেঞ্জ সংখ্যায়
char, signed char
1
8
-2^7 to (2^7)-1
-128 থেকে 127
unsigned char
1
8
0 to (2^8)-1
0 থেকে 255
int, signed int
2
16
-2^15 to  (2^15)-1
-32768 থেকে 32767
unsigned int
2
16
0 to (2^16)-1
0 থেকে 65535
long int,long
4
32
-2^31 to (2^31)-1
-2147483648 থেকে 2147483647
unsigned long int
4
32
0 to (2^32)-1
0 থেকে 4294967295
unsigned long
4
32


float
4
32
-3.4*E^-38 to
3.4*E^+38

double
8
64
-1.7*E^-308 to
1.7*E+308

long double
10
80
-3.4*E^-4932 to
1.1*E^+4932


আজ এই পর্যন্তই সবাই ভাল থাকুন।

1 comment:

  1. বেচে থাকো বাবা তুমি?

    ReplyDelete