Variable (চলক)


Q. চলক কাকে বলে?

Ans: C programming এ কোনো ডেটা save করার জন্য মেমরির একটি নাম দিতে হয় এই নামকে variable (চলক) বলে।

Q. চলক ঘোষণার সিনটেক্স বা গঠন দেখাও।

চলক ঘোষণায় দুটি প্রধান অংশ থাকে। প্রথমটি হলঃ data_type এবং দ্বিতীয়টি হল var_name অর্থাৎ চলকের নাম। একটি সেমিকলনের (;) মাধ্যমে চলক ঘোষণা শেষ হবে। চলক ঘোষণার সিনটেক্স-1: data_type var_name;

কিন্তু প্রোগ্রামে বেশিরভাগ সময় একাধিক চলক ব্যবহার করতে হয় বলে একাধিক চলক ঘোষণার প্রয়োজন হয়। একাধিক চলক একসাথে নিম্নরূপে ঘোষণা করা যায়।

চলক ঘোষণার সিনটেক্স-2: data_type var_1, var_2, var_3, … , var_n;

সিনটেক্স-3: data_type var_name [value];

এখানে, data_type দিয়ে ডাটার ধরণ যেমন integer, float, char ইত্যাদি নির্দেশ করে। var_name অথবা var_1, var_2, var_3, … , var_n ইত্যাদির পরিবর্তে চলকের নাম দিতে হবে। কয়েকটি উদাহরণের মাধ্যমে উপরের সিনটেক্স তিনটির ব্যাখ্যা করা হল।

Ex-1: int roll; (সিনটেক্স-1)

এখানে int দিয়ে data type অর্থাৎ ডাটার ধরণ এবং roll হল ভেরিয়েবল নেম বা চলকের নাম বুঝায়।

Ex-2: float num_1, num_2; (সিনটেক্স-2)

এখানে float দিয়ে data type অর্থাৎ ডাটার ধরণ এবং num_1, num_2 হল দুটি চলকের নাম বুঝায়।

Ex-3: int x, s=0; (সিনটেক্স-3)

উপরের উদাহরণটিতে x, s নামক দুটি চলক যা integer type data অর্থাৎ পূর্ণসংখ্যার ডাটা সেভ করতে পারবে এবং s=0 দিয়ে s নামক চলকে 0 সেভ করা হয়েছে।

Q. চলকের নাম লিখার পাঁচটি নিয়ম লিখ।

১। চলকের নামে যেকোনো ক্যারাকটার বা অক্ষর ব্যবহার করা যায়, তবে প্রথম অক্ষর অবশ্যই সংখ্যা হতে পারবে না।

যেমনঃ ভুল উদাহরণ int 5reg; /* এখানে reg এর পূর্বে 5 ব্যবহার করা হয়েছে যা স্বতঃসিদ্ধ নয়। */

সঠিক উদাহরণ হল int reg5;   অথবা int reg5;

২। চলকের নামে বিশেষ ক্যারাক্টার যেমন (#, @, &, +, _, <, >, ? ইত্যাদি) এবং punctuation character বা যতি চিহ্ন (, . ইত্যাদি) ব্যবহার করা যাবে না। তবে underscore ( _ ) এবং ডলার সাইন ( $ ) ব্যবহার করা যায়।

যেমনঃ ভুল উদাহরণ int 5reg; /* এখানে reg এর পূর্বে 5 ব্যবহার করা হয়েছে যা স্বতঃসিদ্ধ নয়। */

সঠিক উদাহরণ হল int reg5;   অথবা int reg5;

৩। চলকের নামের মধ্যে কোনো খালি যায়গা বা স্পেস ব্যবহার করা যাবে না। তবে একাধিক শব্দকে underscore ( _ ) দিয়ে যুক্ত করা যায়।

যেমন- int reg number;      

/* এভাবে ভেরিয়েবল ডিক্লেয়ার করলে ভুল হবে কারণ ‘reg number’ কে একটি ভেরিয়েবল হিসবে ডিক্লেয়ার করলে reg এবং number শব্দদ্বয়ের মাঝে কোনো স্পেস ব্যবহার করা যায় না।

তাই সঠিক নিয়মটি হলঃ  int regnumber; অথবা int reg_number;

আবার reg এবং number কে দুটি ভিন্ন ভিন্ন ভেরিয়েবল হিসাবে ডিক্লেয়ার করলে অবশ্যই তাদের মাঝে কমা দিতে হবে। সঠিক নিয়মঃ int reg, number; */

৪। চলকের নামে কোনো keyword যেমন (integer, do, while, for, continue, break, auto, if, else ইত্যাদি) ব্যবহার করা যাবে না। তবে কীওয়ার্ডের সাথে underscore ( _ ) ব্যবহার করে যেকোনো কীওয়ার্ডকে ভেরিয়েবলের নাম হিসাবে ব্যবহার করা যায়।

উদাহরণ হিসাবে float break; অথবা double do; এভাবে ভেরিয়েবলের নাম ব্যবহার করা যাবে না কারণ break এবং do শব্দদ্বয় C-ল্যাংগুয়েজে keyword হিসাবে ব্যভৃহত হয়। তবে float break_; অথবা double d_o; এভাবে ভেরিয়েবল ডিক্লেয়ার করা যাবে কারণ কীওয়ার্ডের সাথে underscore ( _ ) ব্যবহার করলে সেটি আর কীওয়ার্ড থাকে না।

৫। চলকের নামে যেকোনো সংখ্যক ক্যারাকটার ব্যবহার করা যায়। তবে ANSI’র নিয়মানুযায়ী প্রথম 31 টি ক্যারাকটার অবশ্যই ভিন্ন হতে হবে। সেকারণে ভেরিয়বলের নামে ৩১ টি ক্যারাক্টার এর বেশি ব্যবহার না করাই ভাল।

int _this_is_a_long_variable_for_you;

float _this_is_a_long_variable_for_your_program; এখানে দুটো ভেরিয়বলকে ভিন্ন ভিন্ন মনে হলেও কম্পাইলার এরর দেখাবে, কেননা উভয় ভেরিয়বলেরই প্রথম 31 টি ক্যারাকটার একরকম।

ভেরিয়েবলের নাম লিখার শুদ্ধ এবং ভুল উদাহরণের তালিকাঃ

Q. বিভিন্ন প্রকার চলক উদাহরণসহ আলোচনা কর।

উত্তরঃ চলক প্রধানত দুই প্রকার যথা – ১। সংখ্যাসূচক চলক ২। স্ট্রিং চলক

১। সংখ্যাসূচক চলকঃ এই ধরণের চলকের সাহায্যে মেমরিতে বিভিন্ন ধরণের সংখ্যা প্রেরণ করা হয়ে থাকে। এর মান প্রোগ্রাম চালানোর সময় পরিবর্তন করা যায়।

২। স্ট্রিং চলকঃ এই ধরণের চলকের সাহায্যে মেমরিতে বিভিন্ন ধরণের স্ট্রিং অর্থাৎ অক্ষরমালা (a group of letter or a group or word is called string) প্রেরণ করা হয়ে থাকে।

অবস্থানের ভিত্তিতে চলক দুই প্রকার। যথা- (ক) লোকাল ভেরিয়েবল বা লোকাল চলক (খ) গ্লোবাল ভেরিয়েবল বা গ্লোবাল চলক

(ক) লোকাল ভেরিয়েবল বা লোকাল চলকঃ যে সকল চলকের ব্যবহার একটি ফাংশনের ভিতরে সীমাবদ্ধ থাকে তাকে লোকাল চলক বলা হয়। এই ধরণের চলকের ঘোষণা ফাংশনের ভিতরেই হতে হয়। যেমন-

void main ()

{

int x,y;

}

এখানে x, y হচ্ছে লোকাল চলক কারণ এদের ব্যবহার কেবলমাত্র main () ফাংশনের মধ্যে সীমাবদ্ধ।

(খ) গ্লোবাল ভেরিয়েবল বা গ্লোবাল চলকঃ যে সকল চলকের ব্যবহার একটি নির্দিষ্ট ফাংশানে না থেকে যেকোনো ফাংশনেই হতে পারে তাকে গ্লোবাল চলক বলা হয়। এ ধরণের চলকের ঘোষণা main () ফাংশনের পূর্বেই হতে হয়।

int x;

void main ()

{ int a,b;

} এখানে x হচ্ছে গ্লোবাল চলক এবং a, b হচ্ছে লোকাল চলক। কারণ x চলকটি যেকোনো ফাংশনেই ব্যবহার করা যাবে অপরদিকে a, b চলকদ্বয়ের ব্যবহার কেবলমাত্র main () ফাংশনেই সীমাবদ্ধ।

Q. বিভিন্ন টাইপের ডাটা মেমরীতে যেভাবে থাকে তা আলোচনা কর।

উত্তরঃ চলকে ঘোষণার একটি গুরুত্বপূর্ণ অংশ হল ডাটা টাইপ (data type) যা প্রোগ্রামে কোন ধরণের ডাটা ব্যবহার করা হবে তার উপর নির্ভর করে। ভেরিয়েবল ডিক্লেয়ার বা চলক ঘোষণার পর সেই ভেরিয়েবলের জন্য ডাটা নির্ধারণ করে কাজ করতে হয়। কোন ধরণের ডাটার জন্য কোন ধরণের ডাটা টাইপ দরকার এবং সেই টাইপের ভেরিয়েবলের জন্য মেমরীতে কিভাবে জায়গা নির্ধারিত হয় তা নিচে বিস্তারিতভাবে আলোচনা করা হল।

১। int টাইপ ভেরিয়েবল

প্রোগ্রামে যদি আমাদের পূর্ণ সংখ্যা, যেমন, 0, 150, 300 ইত্যাদি নিয়ে কাজ করতে হয় তাহলে, আমরা int টাইপের ভেরিয়েবল ডিক্লেয়ার করতে পারি। যেমন প্রোগ্রামে যদি লেখা হয়,

int delowar;

তাহলে কম্পাইলার প্রোগ্রাম চলাকালীন সময় মেমরিতে delowar নামে 2 বাইট বা 16 বিট জায়গা রাখবে। পূর্ণ সংখ্যা রাখার জন্য C-programming এ কিভাবে এই 16 বিট ব্যবহার করে তা নিচের চিত্রে দেখানো হল,

যদি     int delowar=10;  ঘোষণা করা হয় তবে প্রোগ্রাম মেমরিতে নিম্নরূপ পরিবর্তন ঘটবে,

২। char টাইপ ভেরিয়েবলঃ প্রোগ্রামে বিভিন্ন প্রয়োজনে আমাদেরকে বিভিন্ন ক্যারেকটার নিয়ে কাজ করতে হয়। যেমন ধরা যাক কোনো string এ কয়বার n বা অন্য কোনো ক্যারাকটার আছে তা আমাদের বের করতে হবে। এ ধরণের কাজে প্রোগ্রামে আমরা char টাইপ ভেরিয়েবল ডিক্লেয়ার করতে পারি। প্রোগ্রামে যদি লেখা হয়-

        char roll; তাহলে প্রোগ্রাম চলার সময় মেমোরীতে 1 বাইট বা 8 বিট জায়গা roll এর জন্য নির্ধারিত হবে। প্রোগ্রামে roll এর জন্য কোনো ডাটা নির্ধারণ করা হলে প্রোগ্রাম চলার সময় তা রাখার জন্য এই 8 বিটা জায়গা ব্যবহৃত হবে। তবে এই 8 বিট জায়গা কিভাবে ব্যবহৃত হয় তা নিচের চিত্রে দেখানো হল,

এখানে ডানদিক থেকে প্রথম 7 বিট ডাটা রাখার জন্য এবং শেষ বিটটি sign বিট হিসাবে ব্যবহার করা হয়। শেষ বিটটি যদি 0 (শূন্য) হয় তাহলে ডাটা হবে ধনাত্বক, আর যদি 1 হয় তবে তাহলে ডাটা হবে ঋণাত্বক। যেহেতু ডাটা রাখার জন্য 7 টি বিট ব্যবহার করা হয়, তাই প্রোগ্রামে char টাইপ ভেরিয়েবলের জন্য -128 থেকে +128 এর মধ্যবর্তী যেকোনো সংখ্যা নির্ধারণ করা যায়। তবে এধরণের ভেরিয়েবল মূলত ASCII character রাখার জন্য ব্যবহার করা হয় এবং প্রোগ্রেমে এ ধরণের ভেরিয়বলে দু’ভাবে ডাটা রাখা যায়। হয়ত কোনো ক্যারাকটারের ASCII মান ব্যবহার করে,

        char roll= 65; /* এখানে roll ভেরিয়েবলের জন্য A অক্ষরটি নির্ধারিত হবে। কেননা A এর ASCII মান 65 */

অথবা সরাসরি কোনো ক্যারাকটারকে। তবে এক্ষেত্রে ক্যারাকটারটি একক কোটেশনের মধ্যে রাখতে হয়,

char roll= ‘A’ ; /* এক্ষেত্রেও roll ভেরিয়বলে A অক্ষরটি সংরক্ষিত হবে। তবে এখানে char roll= A; লিখলে ভূল হবে। কেননা A কে কোটেশনের মধ্যে রাখতে হবে। */

৩। float টাইপ ভেরিয়েবলঃ float টাইপ ভেরিয়েবলের সাইজ হল 4 বাইট বা 32 বিট। প্রোগ্রামে floating point ডাটা তথা ভগ্নাংশ টাপের সংখ্যা যেমন, 10.5, 0.001, 15.005 নিয়ে কাজ করতে হলে, float টাইপের ভেরিয়েবল ডিক্লেয়ার করতে হয়। প্রোগ্রামে যদি লেখা হয়,

        float n; তাহলে প্রোগ্রাম চলার সময় n ভেরিয়েবলের জন্য মেমোরীতে 4 বাইট বা 32 বিট জায়গা ব্যবহৃত হবে। C ল্যাংগুয়েজে এই বিটগুলোতে ডাটা রাখার জন্য IEEE 754 standard অনুসরণ করা হয়। অর্থাৎ, প্রথম 23 বিট mantissa, পরবর্তী 8 বিট exponent এবং শেষ বিটটি sign হিসাবে ব্যবহার করা হয়, যা নীচের চিত্রে দেখানো হল।

এখানে ডান দিকে থেকে প্রথম 23 বিট ডাটার জন্য এবং পরবর্তী 8 বিট দশমিকের পরের সংখ্যার জন্য ব্যবহার করা হয়। শেষ বিটটি যথারীতি সাইন বিট হিসাবে ব্যবহার করা হয়। এই টাইপের ভেরিয়েবলের জন্য 3.4*10-38 থেকে 3.4*10+38 এর মধ্যবর্তী যেকোনো সংখ্যা নির্ধারণ করা যায়। এছাড়া এ ধরণের ভেরিয়েবলে দশমিকের পর সর্বোচ্চ 6 ঘর পর্যন্ত সংখ্যা রাখা যায়।

৪। double টাইপ ভেরিয়েবলঃ double টাইপ ভেরিয়েবলের সাইজ হল 8 বাইট বা 64 বিট। C ল্যাংগুয়েজে এই বিটগুলোতে ডাটা রাখার জন্য IEEE 754 standard অনুসরণ করা হয়। অর্থাৎ, প্রথম 52 বিট mantissa, পরবর্তী 11 বিট exponent এবং শেষ বিটটি sign হিসাবে ব্যবহার করা হয়, যা নীচের চিত্রে দেখানো হল।

এখানে ডান দিকে থেকে প্রথম 52 বিট ডাটার জন্য এবং পরবর্তী 11 বিট দশমিকের পরের সংখ্যার জন্য ব্যবহার করা হয়। শেষ বিটটি যথারীতি সাইন বিট হিসাবে ব্যবহার করা হয়। এই টাইপের ভেরিয়েবলের জন্য 1.7*10-308 থেকে 1.7*10+308 এর মধ্যবর্তী যেকোনো সংখ্যা নির্ধারণ করা যায়। এছাড়া এ ধরণের ভেরিয়েবলে দশমিকের পর সর্বোচ্চ 15 ঘর পর্যন্ত সংখ্যা রাখা যায়।

নিম্নে ছকের মাধ্যমে ডাটা টাইপ এবং ডাটার ব্যাপ্তি উল্লেখ করা হল।

3 responses to “Variable (চলক)”

  1. Md. Mayen Uddin says:

    Thank you , Delower vi

  2. Salma says:

    Very Useful post

Leave a Reply

Your email address will not be published. Required fields are marked *