লেখক পরিচিতি
লেখকের নাম:
আহমেদ ওয়াহিদ মাসুদ
মোট লেখা:৯৮
লেখা সম্পর্কিত
সহজ ভাষায় প্রোগ্রামিং সি/সি++
প্রোগ্রামিংয়ের জন্য সি হলো একটি পরিপূর্ণ ল্যাঙ্গুয়েজ। এই ল্যাঙ্গুয়েজের রয়েছে কিছু নির্দিষ্ট নিয়মকানুন। এ লেখায় সেসব নিয়মকানুন নিয়ে আলোচনা করা হয়েছে।
টোকেন :
যেকোনো ল্যাঙ্গুয়েজের জন্য নির্দিষ্ট কিছু গ্রামার/ব্যাকরণ থাকে। টোকেনকে সি ল্যাঙ্গুয়েজের গ্রামার বলা যায়। এ ভাষায় যে কোড লেখা হয় কম্পাইলার সেই কোডকে রূপান্তরিত করে প্রসেসরের বোধগম্য মেশিনকোডে রূপ দেয়। একটি ইংরেজি বাক্য যেমন কতগুলো অক্ষর, সংখ্যা, যতিচিহ্নের সমষ্টি, তেমনি সি প্রোগ্রামও কতগুলো ক্যারেক্টারের সমষ্টি। আর কোনো কোড যখন কম্পাইল করা হয়, তখন কম্পাইলার বুঝতে পারে, কোন ক্যারেক্টারের মানে কী। মূলত টোকেন হলো কতগুলো নিয়মকানুনের সমষ্টি এবং কম্পাইলার এ টোকেনের মাধ্যমেই বুঝতে পারে কোন ক্যারেক্টার কী অর্থ বহন করে।
টোকেনকে কয়েকটি ভাগে ভাগ করা যায়। যেমন- কিওয়ার্ড (do, if ইত্যাদি), আইডেন্টিফায়ার (যেকোনো নাম), কনস্ট্যান্ট (কোনো অপরিবর্তনীয় মান), স্ট্রিং কনস্ট্যান্ট (যেকোনো স্ট্রিং), অপারেটর এবং এক্সপ্রেশন (a = b + c), পাংচুয়েটর (; , . ইত্যাদি)।
কিওয়ার্ড :
সি-তে কিছু সংরক্ষিত শব্দ আছে যাদেরকে বলে কিওয়ার্ড। এসব শব্দ ব্যবহার করলে কম্পাইলার কিছু নির্দিষ্ট কাজ সম্পাদন করে। এসব সংরক্ষিত শব্দগুলোকে এদের নির্দিষ্ট কাজ ছাড়া অন্য কোনো কাজে (যেমন- কোনো কিছুর নাম হিসেবে) ব্যবহার করলে কম্পাইলার এরর দেখাবে। ANSI-এর মান অনুযায়ী সি-তে ৩২টি কিওয়ার্ড আছে। যেমন- auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, sized, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while। এ ছাড়া টার্বো সি-এর কিছু নিজস্ব কিওয়ার্ড আছে। যেমন- asm, cdecl, far, huge, interrupt, near, pascal, _cs, _ds, _es, _ss। এসব কিওয়ার্ডের প্রত্যেকেরই কিছু বিশেষ বিশেষ কাজ আছে। যেমন- int কিওয়ার্ড দিয়ে কোনো ভ্যারিয়েবলের ডাটা টাইপ নির্ধারণ করা যায়। এখানে উল্লেখ্য, ওপরের বর্ণিত সব কিওয়ার্ডই কিন্তু ছোট হাতের অক্ষরে লেখা। তাই যদি প্রোগ্রামের মাঝে কোনো কিছুর নাম হিসেবে iNt বা inT ব্যবহার হয় তাহলে কোনো এরর দেখাবে না। এজন্য সি-কে কেস সেনসিটিভ বলা হয়। আরও একটা কথা বলে রাখা ভালো, main শব্দটি কোনো কিওয়ার্ড না হলেও এটি এমন একটি শব্দ যা প্রতিটি প্রোগ্রামে অবশ্যই থাকতে হবে। কারণ, কম্পাইলার সবসময় main() ফাংশন থেকে কম্পাইল করা শুরু করে। তা ছাড়া main-কে কখনও কোনো কিছুর নাম হিসেবেও ব্যবহার করা যায় না। এটি একটি ব্যতিক্রম।
আইডেন্টিফায়ার :
প্রোগ্রামে কোনো কিছুকে (ভ্যারিয়েবল, ফাংশন, অ্যারে ইত্যাদি) দেয়া যেকোনো ধরনের নামকে আইডেন্টিফায়ার বলে। একটি প্রোগ্রাম মূলত বিভিন্ন ধরনের ডাটা নিয়ে কাজ করে। কাজ করার সময় সব ডাটাই মেমরিতে রাখা হয় যেকোনো সময় ব্যবহারের উদ্দেশ্যে। কিন্তু এতসব ডাটা মেমরিতে পরপর সাজানো থাকে না। মেমরির যেখানে ফাঁকা স্থান পাওয়া যায় সেখানেই ডাটা রাখা হয়। তাই প্রতিটি ডাটা মেমরির কোথায় অবস্থান করছে সেটা জানা প্রয়োজন। আর এ অবস্থান জানার জন্যই মেমরির অ্যাড্রেস ব্যবহার করা হয়। হাই লেভেল ল্যাঙ্গুয়েজের একটি অন্যতম বৈশিষ্ট্য হলো তা সরাসরি মেমরি অ্যাড্রেস ব্যবহার না করে অ্যাড্রেসের একটি নাম দেয়। এই নামেই প্রতিটি ডাটা ব্যবহার করা হয়। প্রোগ্রামে ব্যবহার করা কোনো ডাটার নামকেই আইডেন্টিফায়ার বলে। আইডেন্টিফায়ার ব্যবহার করতে হলে কিছু নির্দিষ্ট নিয়ম মেনে চলতে হবে। যেমন- ০১. কোনো আইডেন্টিফায়ারের প্রথম অক্ষর কখনও কোনো সংখ্যা হতে পারবে না। ০২. আইডেন্টিফায়ারে underscore(_) এবং dollar sign($) ছাড়া অন্য কোনো special sign ব্যবহার করা যাবে না। ০৩. আইডেন্টিফায়ারের মাঝে কোনো ফাঁকা জায়গা থাকতে পারবে না, অর্থাৎ আইডেন্টিফায়ারটি সবসময় একটি শব্দ হতে হবে। ০৪. সি-তে কোনো keyword (এবং ব্যতিক্রম হিসেবে main)-এর নাম আইডেন্টিফায়ার হিসেবে ব্যবহার করা যাবে না।
কনস্ট্যান্ট :
সাধারণভাবে কনস্ট্যান্টকে বলা যায় স্থির বা ধ্রুবক। সি-তেও কনস্ট্যান্ট একই অর্থে ব্যবহার করা হয়। প্রোগ্রামে বিভিন্ন ডাটা নিয়ে কাজ করার সময় বিভিন্ন ভ্যারিয়েবল ব্যবহার করা হয় এবং প্রোগ্রামের একেক সময় প্রয়োজনানুসারে এসব ভ্যারিয়েবলের মান পরিবর্তন করা হয়। কিন্তু প্রোগ্রামে যদি এমন কোনো ডাটা ব্যবহার করার প্রয়োজন পড়ে যাতে প্রোগ্রামের শুরু থেকে শেষ পর্যন্ত ওই ভ্যারিয়েবলের মান অপরিবর্তনীয় থাকবে তাহলে সেক্ষেত্রে কনস্ট্যান্ট ব্যবহার করা যায়। ভ্যারিয়েবলের মতো কনস্ট্যান্টও একটি নাম এবং যেকোনো টাইপের ডাটাকে কনস্ট্যান্ট হিসেবে ব্যবহার করা যায়। প্রোগ্রামে দুভাবে কনস্ট্যান্ট ডিক্লেয়ার করা যায়। ০১. #define ব্যবহার করে এবং ০২. const কিওয়ার্ড ব্যবহার করে।
#define-এর মাধ্যমে : প্রথমে #define লিখতে হবে। এরপর কনস্ট্যান্টের নাম লিখতে হবে এবং সবশেষে অপরিবর্তনীয় ডাটাটি লিখতে হবে। শেষে সেমিকোলন দিতে হবে না। যেমন-
#define true 0
#define false 1
ওপরে true এবং false নামে দুটি কনস্ট্যান্ট ভেরিয়েবল ডিক্লেয়ার করা হয়েছে, যাদের মান যথাক্রমে ১ এবং ০ নির্ধারণ করা হয়েছে। প্রোগ্রামের শুরু থেকে শেষ পর্যন্ত এ দুটি কনস্ট্যান্টের মান অপরিবর্তনীয় থাকবে। এখানে কনস্ট্যান্ট হিসেবে যেকোনো ধরনের ডাটা মেমরিতে রাখা যাবে। তবে এ ক্ষেত্রে ডাটা টাইপ ডিক্লেয়ার করতে হয় না। কেননা, ভ্যারিয়েবলে রাখা মানটা পরিবর্তনশীল এবং একটি নির্দিষ্ট সীমানা পর্যন্ত তার মান পরিবর্তন করা যায়। তাই ভ্যারিয়েবল ডিক্লেয়ার করার সময় কম্পাইলারকে ডাটা টাইপ বলে দিতে হয়, যাতে কম্পাইলার সংশ্লিষ্ট ভ্যারিয়েবলের জন্য নির্দিষ্ট সীমানা অনুযায়ী মেমরিতে জায়গা বরাদ্দ করতে পারে। কিন্তু কনস্ট্যান্টের মান যেহেতু নির্দিষ্ট থাকে তাই এ ক্ষেত্রে কম্পাইলারের মেমরিতে বাড়তি জায়গা রাখার প্রয়োজন হয় না। উল্লেখ্য, #define-কে সবসময় main() ফাংশনের বাইরে প্রোগ্রামের শুরুতে ব্যবহার করা হয়।
const কিওয়ার্ডের মাধ্যমে :
এ ক্ষেত্রে ভ্যারিয়েবল ডিক্লেয়ার করার আগে const কিওয়ার্ড ব্যবহার করা হয়। যেমন- const int id_no=42; const float cgpa=3.89; ইত্যাদি।
অপারেটর এবং এক্সপ্রেশন
অপারেটর :
সাধারণভাবে অপারেটর বলতে কোনো কিছুর নিয়ন্ত্রক বোঝানো হয়। সি-তেও একই অর্থে অপারেটর শব্দটি ব্যবহার করা হয়। কিবোর্ডের কিছু ক্যারেক্টারকে যেমন : +,-,*,/,>,<,= ইত্যাদি প্রোগ্রামে গাণিতিক, যৌক্তিক বা সম্পর্ক সূচক কাজ করতে অথবা এ ধরনের কাজ নিয়ন্ত্রণ করতে ব্যবহার করা হয়। এ ধরনের ক্যারেক্টারকে অপারেটর বলে এবং কম্পাইলার এদেরকে টোকেন হিসেবে নেয়।
এক্সপ্রেশন :
অপারেটর, কনস্ট্যান্ট এবং ভ্যারিয়েবলের সঠিকভাবে প্রোগ্রামে উপস্থাপনের মাধ্যমে এক্সপ্রেশন তৈরি করা হয়। যেমন- int a, b=10; a=b; এখানে প্রথম লাইনে দুটি ভ্যারিয়েবল a এবং b ডিক্লেয়ার করা হয়েছে যেখানে b-এর মান ১০ নির্ধারণ করে দেয়া হয়েছে। দ্বিতীয় লাইনে b-এর মান a-এর জন্য নির্ধারণ করা হয়েছে। এখানে দ্বিতীয় লাইনটি একটি এক্সপ্রেশন।
পাংচুয়েটর :
সি-তে বিভিন্ন বন্ধনী, সেমিকোলন, সিঙ্গেল কোটেশন, ডাবল কোটেশন ইত্যাদিকে পাংচুয়েটর বলে এবং কম্পাইলার এদেরকে টোকেন হিসেবে নেয়। সি-তে পাংচুয়েটর ব্যবহারের বিশেষ নিয়ম আছে এবং কম্পাইলার এ ব্যাপারে অত্যন্ত সতর্ক থাকে। যেমন- কোনো বন্ধনীর এক অংশ ব্যবহার করলে অপর অংশ অবশ্যই ব্যবহার করতে হবে, অন্যথায় কম্পাইলার এরর দেখাবে। বিভিন্ন পাংচুয়েটরের মধ্যে সেমিকোলনের বিশেষ গুরুত্ব আছে এবং একে বিশেষ কাজে ব্যবহার করা হয়। যেমন- সি-তে সাধারণত কোনো স্টেটমেন্টের শেষ বোঝাতে অর্থাৎ দাঁড়ি বোঝাতে সেমিকোলন ব্যবহার করা হয়। তাই কোনো লাইনের শেষে যদি সেমিকোলন না দেয়া হয় তাহলে এরর দেখাবে। যেহেতু সেমিকোলনের কাজ হচ্ছে একটা স্টেটমেন্টকে অপর স্টেটমেন্ট থেকে আলাদা করা, তাই একই লাইনে যদি সেমিকোলন ব্যবহার করে কয়েকটি স্টেটমেন্ট ব্যবহার করা হয় তাহলে কম্পাইলার কোনো এরর দেখাবে না। যেমন- int a; int b; char c; এভাবে কোড লিখলে কম্পাইলার কোনো এরর দেখাবে না। কারণ, একই লাইনে তিনটি স্টেটমেন্ট লিখলেও তাদেরকে নিয়মানুযায়ী সেমিকোলন দিয়ে আলাদা করা হয়েছে।
সি-তে টোকেনকে মূল ব্যাকরণ হিসেবে গণ্য করা হয়। তাই কোড লেখার সময় অবশ্যই খেয়াল রাখা দরকার, যেনো কোনো টোকেনের ভুল ব্যবহার না হয়।
কজ ওয়েব
ফিডব্যাক : wahid_cseaust@yahoo.com