টেকটিউনস এর সবাইকে আন্তরিক শুভেচ্ছা ও অভিনন্দন জানাই। আশা করি আপনারা সবাই ভাল আছেন? আজকে আমি আপনাদের সামনে সি প্রোগ্রামিং এর বিস্তারিত আলোচনা করব! আশা করি আলোচিত বিষয়টি আপনাদের কাজে আসবে!
আর কথা না বাড়িয়ে আমি আমার টিউন শুরু করছি,
C ভাষা হলো স্ট্রাকচার্ড প্রোগ্রামিং মডেল। বর্তমানে মিড লেভেল ল্যাঙ্গুয়েজ হিসেবে এটি বেশ জনপ্রিয়। এই ভাষা ডেনিস রিচি আবিষ্কার করেন! এর মাধ্যমে প্রোগ্রাম রচনা সহজ।
সবার প্রথম যে জিনিসটা লাগবে সেটা হচ্ছে আপনার ইচ্ছা, আগ্রহ। কারন ইচ্ছে না থাকলে আপনি কিছুই করতে পারবেন না। তারপর লাগবে একটি কম্পিউটার বা স্মার্টফোন। আর একটা কম্পাইলার লাগবে।
আমরা সবাই তো জানি কম্পিউটার শুধু 0 আর 1 ছাড়া কিছুই বোঝে না। কিন্তু আমরা 0 আর 1 দিয়ে প্রোগ্রাম লিখতে চাইব না। কারন আমাদের জন্য 0 আর 1 দিয়ে প্রোগ্রাম লেখা অনেক ঝামেলা তাছাড়া আমাদের আছে হাই লেভেল প্রোগ্রামিং ভাষা যেগুলোর সিনট্যাক্স অনেক সহজ। কিন্তু আমরা যা লিখব কম্পিউটার তো সেগুলোর কিছুই বুঝবে না। তো কম্পিউটারকে বোঝাতে হলে আমাদের প্রথমে প্রোগ্রামকে কম্পিউটার এর ভাষায় অর্থাৎ 0 আর 1 এর প্রোগ্রামে রুপান্তর করতে হবে। এই কাজটিই করে দেয় কম্পাইলার।
আমরাে এখানে IDE (Integrated Development Environment) ব্যবহার করব যাতে কম্পাইলার সহ আরও অনেক সুবিধা আছে। IDE এবং কম্পাইলার এর মধ্যে পার্থক্য রয়েছে। কম্পাইলার প্রোগ্রামিং ভাষাকে মেশিন ভাষায় রুপান্তর করে। IDE এ কমপক্ষে একটি কম্পাইলার থাকে। এছাড়া এডিট, সেভ, কপি, পেস্ট, ফ্রেমওয়ার্ক এর ব্যবহার ইত্যাদি থাকে। মোবাইলে প্রোগ্রামিং শেখার জন্য C4Droid উপযুক্ত। আপনি চাইলে এটা ডাউনলোড করতে পারেন। প্লে স্টোর থেকে ডাউনলোড করে নিতে পারেন অথবা গুগলে লিখে সার্চ দিয়ে ডাউনলোড করে নিতে পারেন। আর অন্য কোনো সফটওয়্যার ব্যবহার করতে চাইলে সেটা দিয়েও করতে পারেন।
C4Droid ইনস্টল দেওয়ার পর চিত্রের মতো আসবে এখানে অপেক্ষা করুন,
পিসি দিয়ে প্রোগ্রামিং করলে CodeBlocks অনেক ভালো একটি সফটওয়্যার। CodeBlocks ব্যবহার করতে পারেন।
চলুন এইবার একটু ডিটেইলস এ প্রবেশ করি,
C ল্যাংগুয়েজে চার ধরনের Basic Data Type রয়েছে। এগুলো হল,
আমরা জানি কম্পিউটারে ডেটা সংরক্ষন করা হয় কম্পিউটারের মেমরিতে। প্রতিটা ডেটার জন্য আলাদা আলাদা মেমরি লোকেশন থাকে। ভেরিয়েবল হচ্ছে কম্পিউটারের মেমরি লোকেশনের নাম। সি তে প্রত্যেকটা ভেরিয়েবলের একটা নির্দিষ্ট ডেটা টাইপ থাকে, যা দিয়ে মেমরি সাইজ এবং লে-আউট বুঝা যায়।
ভেরিয়েবলের নামকরনের জন্য আমাদেরকে আইডেন্টিফায়ারস এর নামকরনের নিয়মগুলো মেনে চলতে হবে।
ভেরিয়েবল ডিফাইন করার সাধারন উপায় হচ্ছেঃ
data_type variable_name;
data_type হচ্ছে সি এর যেকোন ডাটা টাইপ যেমন int, char, float, double। আর variable_name হবে যেকোনো একটা নাম। এখন যদি আমরা ইন্টিজার টাইপের একটা ভেরিয়েবল ডিফাইন করতে চাই তাহলে এইভাবে করব।
int num;
এইখানে আমাদের ভেরিয়েবলের নাম হচ্ছে num। আমরা চাইলে একই লাইনে একের অধিক ভেরিয়েবল ডিফাইন করতে পারি এক্ষেত্রে প্রত্যেকটা ভেরিয়েবলের নামের মাঝখানে কমা(, ) দিয়ে আলাদা করতে হবে। তবে একই লাইনে একাদিক টাইপের ভেরিয়েবল ডিফাইন করব নাহ।
int x, y, z;
char grade, letter;
ভেরিয়েবলকে সহজভাবে বুঝার জন্য আমরা একটা বাক্সের উদাহরণ দিতে পারি। সাধারণত একটা বাক্সের ভিতরে আমরা কিছু জিনিস রাখি এবং একটা লেবেল অথবা নাম দেই। এইখানে বাক্সের ভিতরে যেই জিনিস রাখলাম সেটা হচ্ছে কনটেন্টা বা ভ্যালু, বাক্সটা হচ্ছে মেমরি লোকেশন, আর বাক্সের লেবেল (বা নাম) হচ্ছে ভেরিয়েবল।
পাটি গনিতে আমরা যে সকল Operators ব্যবহার করছি তাই হল Arithmetic Operators। যেমন যোগ, গুন, ভাগ ইত্যাদি।
+ (যোগ)
- (বিয়োগ)
* (গুণ)
/ (ভাগ)
% (ভাগশেষ)
Assignment operator: কোন মান বা Value কোন Identifier [ভ্যারিয়েবল] এর মধ্যে assign করা বা একটা মান রাখার জন্য জন্য assignment operator ব্যবহৃত হয়। C তে অনেক রকম Assignment operator রয়েছে। যেমন,
< (Less then)
<= (Less then or equal to)
> (Greater then)
>= (Greater then or equal to)
= (Equal to)
!= (Not Equal to)
&& (And)
প্রোগ্রামিং এর ভাষায় ফাংশন হল একটি নির্দিস্ট ধরনের কাজ করে এমন কতগুলো ইন্সট্রাকশনের সমষ্টি। আমরা সি তে কোন কিছু মনিটরে প্রিন্ট করে দেখাতে চাইলে printf()
ফাংশনটি ব্যবহার করি। printf()
আমাদের দেয়া লিখাটি নিয়ে সেটিকে মনিটরে দেখায়। কিংবা আমরা যদি কোন সংখ্যার বর্গমূল জানতে চাইলে তাহলে math.h
থেকে sqrt()
ফাংশনটি ব্যবহার করে সেটি জানতে পারি। এগুলোর সবগুলোই এক একটি ফাংশন। এই ফাংশনগুলো বিভিন্ন লাইব্রেরিতে দেওয়া আছে আমাাদের কাজকে সহজ করার জন্য। এর বাইরে আমরা যদি চাই আমাদের নির্দিষ্ট কোন কাজের জন্য একটি ফাংশন লিখতে হবে আমরা সেটিও করতে পারি।
প্রশ্ন আসতে পারে আমরা কেন নিজেরা ফাংশন লিখতে যাবো? ধরুন আপনাকে একটি বড় প্রোগ্রাম লিখতে হচ্ছে যেখানে বার বার আপনাকে কয়েকটি সংখ্যার গড় বের করতে হবে। গড় বের করার জন্য প্রদত্ত সংখ্যাগুলোকে যোগ করে মোট যতটি সংখ্যা আছে তা দিয়ে ভাগ করলেই আমরা গড় পাই। কিন্তু প্রোগ্রামের মধ্যে যতবার আপনাকে গড় বের করতে হবে প্রতিবার তার জন্য একই ধরনের কোড বার বার লিখাটা বেশ ঝামেলা। আর এভাবে লিখতে থাকলে প্রোগ্রামটির কোডের গঠন ও বেশ অগোছালো হয়ে যায়।
এই বিষয়টি আমরা সমাধান করতে পারি সহজেই গড় বের করার জন্য একটি ফাংশন লিখে। ফাংশন লিখলে আমরা একবারেই ঠিক করে দেব কিভাবে গড় হিসাব করতে হয় এবং তারপরে আমরা যেখানেই গড় বের করতে যাবো সেখানেই আমরা এই ফাংশনটি কল করতে পারবো এবং সহজেই গড় পেয়ে যাবো। একই সাথে আমাদের প্রগ্রামটির কোডও বেশ গোছানো থাকবে কারণ আমরা বার বার একই ধরনের কোড লিখবো না।
সি তে দুই ধরনের ফাংশন রয়েছে।
লাইব্রেরি ফাংশন pfintf(), sin(), sqrt()
লাইব্রেরি ফাংশন গুলো আমরা সব সময়ই ব্যবহার করি কম বেশি। আমাদের এই অধ্যায়ের মূল আলোচনা হবে ইউজার ডিফাইনড ফাংশন নিয়ে।
ফাংশন চেনার উপায়ঃ যে কি-ওয়ার্ড এর শেষে একজোড়া () থাকবে সাধারণত এরাই ফাংশন।
সি প্রোগ্রামে কোন স্টেটমেন্টকে দুই বা এর অধিক বার সম্পাদনের জন্য যে সকল কন্ট্রোল স্টেটমেন্ট ব্যবহৃত হয় তাকে লুপ কন্ট্রোল স্টেটমেন্ট বলে।
লুপ কন্ট্রোল স্টেটমেন্ট গুলো হচ্ছে,
getchar & putchar
এতক্ষন পর্যন্ত আমরা ডেটা দিয়েছি। কিন্তু আমাদের প্রোগ্রামে আমরা শুধু কিছু মান ইনপুটও নিতে হবে। ইনপুট এবং আউটপুটের জন্য আজকে দুটি Function নিয়ে আলোচনা করব। একটা হচ্ছে “getchar” আরেকটি হচ্ছে “putchar” Function.
scanf & printf
আমরা single character, numerical values এবং string কিভাবে কম্পিউটারে input নিব। single character, numerical values. এবং string যেকোন মান কম্পিউটারে নেওয়ার জন্য “scanf” function ব্যবহার করা হয়। আবার putchar এর মত কোন মান পর্দায় দেখানোর জন্য “printf” function ব্যবহার করি। putchar দিয়ে একটি মাত্র character কম্পিউটারে Output দেখানো হয়, কিন্তু “printf” function দ্বারা একদিক ডাটা যেমন single character, numerical values. এবং string ইত্যাদির যেকোন মান কম্পিউটারে Output দেখানো যায়।
প্রথমে কোডব্লোকস রান করি। তারপর নিচের কোডটুকু লিখি,
প্রোগ্রামটিকে first_program নামে সেভ করি। তারপর কোডব্লোকসের Build মেনু থেকে Build and Run কমান্ডটিতে কিল্ক করি অথবা কিবোর্ড থেকে F9 বাটন চাপি। তাহলে নতুন একটা টার্মিনাল উন্ডোতে নিচের মত অাউটপুট দেখতে পাবো।
Output: Hello Programming
নোট: প্রতিটা সি প্রোগ্রাম main() ফাংশন থেকে এক্সিকিউসন শুরু করে। printf() ফাংশনটি কোটেশনের ভিতরে থাকা কনটেন্ট প্রিন্ট করে।
আশা করি সবাই তার নিজেদের প্রথম প্রোগ্রাম সঠিক ভাবে রান করতে পেরেছেন। আজ এখানেই শেষ করছি। টিউনটি কেমন হয়েছে অবশ্যই জানাবেন। আর ভালো লাগলে অবশ্যই আমার ওয়েবসাইট থেকে ঘুরে আশতে পারেন। ধন্যবাদ।
আমি নজরুল ইসলাম। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 6 বছর 2 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 9 টি টিউন ও 5 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 2 ফলোয়ার আছে এবং আমি টেকটিউনসে 1 টিউনারকে ফলো করি।