Variable Ranges

ভেরিয়েবল

আমরা সাধারনত প্রগ্রাম এ দুইটা কাজ করে থাকি এর মধ্যে একটি হচ্ছে কোনকিছুপ্রিন্ট করি আর একটা কাজ করি যেটা , সেটা হচ্ছে বিভিন্ন লজিক ব্যাবহার করে হিসার সংক্রান্ত কাজ করি আর এই হিসার সংক্রান্ত কাজ করার জন্যেই আমাদের ভ্যারিয়েবলের প্রয়োজন হই। কিভাবে দরকার হয়?সেটা আমরা এখন দেখব মনে করি আমাদেরকে এক ছাত্রের ছয়টা বিষয়ের ফলাফল দেওয়া হয়েছে এবং তা যোগ করার জন্যে একটি প্রগ্রাম তৈরি করতে বলা হয়েছে।তাহলে আমরা এখন কি করতে পারি প্রথমে আমরা ছয়টা ভ্যারিয়েবল ডিক্লেয়ার করে তার মধ্যে আমরা তার ফলাফল গুলা assign করতে পারি।আসলে ভ্যারিয়েবলকে আমরা বীজগানিতীক চলক হিসেবে কল্পনা করতে পারি কিন্তু কখনোই বীজগানিতী রাশির সাথে তুলনা করবনা। আর একটি কথা সি ল্যাংগুয়েজ এ আমদের একটি প্রগ্রামে যতটি ভ্যারিয়েবল এর দরকারহবে তার সব কয়টি আমাদের ফাংশনের শুরুতে ডিক্লেয়ার করে দিতে হবে সেটা মেইন(main) ফাংশন অথবা ব্যাবহার কারি দ্বারা তৈরী ফাংশন যেটাই হোক না কেন একি শর্ত প্রযোয্য হবে। ভ্যারিয়েবল ডিক্লেয়ার করার নিয়ম হচ্ছে প্রথমে ভ্যারিয়েবল টাইপ(type)তার পর ভ্যারিয়েবলের নাম।ভ্যারিয়েবল টাইপ বলতে আমরা কি বুঝি?ভ্যারিয়েবল টাইপ এটা বুঝার জন্যে আমরা যেটা করতে পারি তা হল ধরি


10 + 10 = 20;
12.12 + 12.30 = 24.50;
1223322.20 + 1232323321.30 = 12333546643.50;
'a' , 'b' , 'c';
"mirza momin";

এখানে আমরা প্রথমে 10 + 10 = 20; এই কাজটি করছি ।এই স্ট্যা্টমেন্টে আমরা দুই টা সংখ্যা কে যোগ করেছি।দুইটি সংখ্যাই আসলে পূর্ন সংখ্যা।অর্থাৎ বলা যেতে পারে আমরা দুইটা পুর্ন সংখ্যাটাইপের সংখ্যা কে যোগ করেছি এবং তার রেজাল্ট ও পুর্ন সংখ্যা।আর এর ইংরেজি রুপ হচ্ছে integer। integer থেকেই int নেওয়া হয়েছে।তাহলে এখানে int টা হচ্ছে পুর্ন সংখ্যার টাইপ। আবার দ্বিতীয় স্ট্যা্টমেন্টে এ বাস্তব সংখ্যা নিয়ে কাজ করেছি বাস্তব সংখ্যার মধ্যে যেসব সংখ্যা দশমিক চিনহ দিয়ে প্রকাশ করতে হয় ঐ সকল নাম্বার গুলো এই টাইপের রেঞ্জের মধ্যে পরে। আর এই রেঞ্জের আওতাভুক্ত সংখ্যার টাইপটির keyword নির্ধারন করা হয়েছে float। অর্থাৎ float একটা ডাটা টাইপ আর এটা দশমিক সংখ্যার ডাটা টাইপ। আবার float টাইপ ডাটার একটা নির্দিশট রেঞ্জ আছে এই রেঞ্জের দিগুন সংখ্যা নিয়ে কাজ করার জন্যে double keyword ব্যাবহার করা হয়।অর্থাৎ double হচ্ছে দশমিক সংখ্যারি একটি ডাটা টাইপ যেটা float রেঞ্জের দ্বিগুন রেঞ্জের ডাটা নিয়ে কাজ করতে পারে। শেষ স্ট্যাটম্যান্ট এ আমরা character টাইপ ডাটা দেখিয়েছি ।এই ডাটার আওতাভুক্ত হচ্ছে ,আমরা বিভিন্ন কাজে যত প্রকার চিনহ ব্যাবহার করি তার প্রতিটাই এক একটা character। আর এই character কে সংক্ষিপ্ত করে char অংশ নিয়ে এই ডাটা টাইপ এর নাম রাখা হয়েছে char। অর্থাৎ char keyword টি দ্বারা আমরা character টাইপ এর ডাটা বুঝব।আর এই টাইপের ডাটা সিংগেল কোটেশন এর মধ্যে লিখতে হয়। শেষ স্ট্যাটম্যান্ট এ যেটা ("")ডাবল কোটেশন এর মধ্যে লিখেছি সেটা হচ্ছে স্ট্রিং । স্ট্রিং সম্পর্কে পরে কোন এক পর্বে আলোচনা করা হবে।যেমন


int sagor;float kajol;
double sahabub;
char alamin;

পুর্নসংখ্যা( int )ভেরিয়েবলের রেঞ্জ

পূর্নসংখ্যা বা (int) টাইপ এর ভেরিয়েবলের রেঞ্জ কিভাবে নির্ধারিত হয়?

আমরা যখন int টাইপ এর একটা int ভেরিয়েবল ডিক্লেয়ার করি তখন ঐ ভেরিয়েবলের জন্যে কম্পিউটারের মেমোরিতে চার বাইট জাইগা নির্ধারিত হয়।এখন আমরা জানি এক বাইট সমান আট বিট।আর আমরা জানি যে বাইনারি সংখ্যাকেই বিট বলা হয় আর এও জানি বাইনারি সংখ্যা ব্যাতিত আমাদের কম্পিউটার কোন কিছুই বুঝতে পারেনা।অতএব আমরা যা কিছুই করিনা কেন কম্পিউটার তা কম্পাইলের সাহায্যে তা মেশিন ল্যাঙ্গুয়েজ বা বাইনারি ডিজিট এ রুপান্তরিত করে কম্পিউটার তার কর্জ সম্পাদন করে। আমরা যেই কোড গুলো লিখব তা কি বাইনারি ডিজিট এ রুপান্তরিত হবে তা নির্ধারিত হবে ASCII 7 অথবা ASCII 8 অথবা UNICODE দ্বারা। আমরা যখন সি তে কোডগুলো লিখি আসলে সি আমার জানা মতে ASCII 8 দ্বারা নির্ধারিত কোডিং এর মান অনুসারে আমরা যেই কোড গুলো লিখি তা বাইনারি ডিজিট বা মেশিন ল্যাঙ্গুয়েজ এ রুপান্তরিত করে।আর জাভাতে UNICODE সাপোর্ট করে।তাহলে এখন মূল কথাই আশা যাক ধরালাম int এর প্রতিটি ভেরিয়েবলের জন্যে কম্পিউটার তার মেমোরিতে চার বাইট জায়গা নির্ধারন করে চার বাইট সমান তাহলে কত বিট হবে নিশ্চয় বত্রিশ বিট?যেহেতু এক বাইট সমান আট বিট। আর বাইনারিতে যেহেত দুইটিই মাত্র ডিজিট আছে তাই প্রতি বিটে কেবল দুইটি ডিজিটের মধ্যে যেকোন একটি ডিজিট থাকবে অতএব বত্রিশটি বিটে 2^32 ভাবে দুইটি বাইনারি সংখ্যা থাকতে পারে।আর বত্রিশটি বিটে বাইনারি ডিজিট নিচের মত করে সাজলেই কেবল সর্বচ্চ মান হবে । 11111111111111111111111111111111 আর এই বাইনারি সংখাকে দশমিকে convert করলে যেই মানটি পাওয়া যাবে সেই মানটিই হবে int টাইপের সর্বচ্চ রেঞ্জ।আর এই মানটি 2^32 এর সমান বা 4294967296।আর আমরা জানি বাইনারি সংখ্যার যে ডিজিট টি থাকে তাকে বলা হয় চিনহ বিট চিনহ বিট যদি শুন্য হয় তাহলে সংখ্যাটি পজিটিভ আর এক(১) হলে নেগেটিভ।আর এই চিনহ বিটের জন্যে একটি বিট রাখলে মোট বিট হয় ৩২-১=৩১।অর্থাৎ প্রথম বিটে শুন্য অথবা এক থাকলে বাকি ৩১ বিটে একত্রিশটিএক(১) রাখলে স্ররবচ্চ মান হবে (+-) ২^৩১ বা (+২১৪৭৪৮৩৬৪৮) অথবা (-২১৪৭৪৮৩৬৪৮)। এইজন্যেই যখন আমরা unsigned int ডিক্লেয়ার করি তখন চিনহ বিট টি থাকেনা তখন সর্বচ্চ 4294967296 পজিটিভ সংখ্যা নিয়ে কাজ করতে পারি।