| গোলাম সারোয়ার চৌধুরী |
প্রোগ্রামিং শুরুর আগে
প্রোগ্রামিং শেখাটা যেমন মজার তেমনি প্রয়োজন লেগে থাকার মতো ধৈর্য ও মন-মানসিকতা। তুমি যে কোন প্রোগ্রাম নিয়ে ততক্ষণ পর্যন্ত চেষ্টায় রত থাকবে যতক্ষণ না তুমি তোমার কাক্সিক্ষত ফলাফল পাবে। আসলে প্রোগ্রামিং শেখার সাথে সাধারণ পড়ালেখার অনেক পার্থক্য আছে। প্রোগ্রামিংটা আসলে চর্চার বিষয়। সেজন্য তোমাকে বুঝতে হবে প্রোগ্রামিং এর প্রতিটি শব্দ ও প্রতিটি বাক্য এবং নিজেকে প্রশ্ন করতে হবে কি/কেন বলে। যদি সকল কি/কেন এর উত্তর তুমি পেয়ে যাও তখন তুমি সামনের দিকে এগোতে থাক। অনুশীলন করতে থাক কম্পিউটারের মাধ্যমে প্রতিটি প্রোগ্রাম। আর পরিবর্তন করে কম্পিউটারে করতে থাক প্রোগ্রামগুলো। দেখ আউটপুটে কোথায় কী পরিবর্তন হচ্ছে। সাবধান!! না বুঝে কিন্তু সামনে এক পৃষ্ঠাও এগোবে না। তাহলে তুমি কিন্তু প্রোগ্রামিং না শেখার ফাঁদে পড়ে যাবে!! অর্থাৎ, যে যোগ করতে পারে না তাকে সরল অংক করতে দিলেতো সে বলবেই, আমার অংক করতে ভাল লাগে না, আমি অংক বুঝি না ইত্যাদি। তদ্রƒপ প্রোগ্রামিং শিখতে গেলেও তুমি ধাপে ধাপে এগোবে। এভাবে বুঝে বুঝে সামনের দিকে এগোতে থাকলে প্রোগ্রামিংয়ে তোমার “passion” (আগ্রহ) তৈরী হবে; সে ব্যাপারে আমি নিশ্চিত। আর যদি আগের গুলো না বুঝে, নিজেকে ফাঁকি দিয়ে, প্রতারণা করতে থাক নিজের সাথে; তাহলে হয়তো তুমি প্রোগ্রামিং না শেখার ফাঁদে পরে “infinite loop” এ পড়ে যেতে পারো।
প্রোগ্রামিং শুরুর আগেই তোমার থাকতে হবে- পর্যাপ্ত সময়, ইন্টারনেট সংযোগসহ একটি কম্পিউটার ও সি ল্যাংগুয়েজের কম্পাইলার।
কম্পাইলার পরিচিতি ও ইনস্টলেশন প্রক্রিয়া
তোমরা ইতঃপূর্বে জেনেছ কম্পাইলার কী ও কেন প্রোগ্রামিং করতে কম্পাইলার প্রয়োজন। আসলে আমরা যে প্রোগ্রাম লিখে (source code) কম্পিউটারকে দেই তা কম্পিউটারের ভাষায় রূপান্তরের জন্যই মূলত কম্পাইলার প্রয়োজন। তাছাড়া আমাদের লিখিত প্রোগ্রামে কোন ভুল (error) থাকলে তাও কম্পাইলার জানিয়ে দেয় এবং সোর্স কোড থেকে এক্সিকিউটেবল (executable) ফাইল তৈরি করে। কম্পাইলার মূলত একটি বিশেষ ধরনের সফটওয়্যার।
সি প্রোগ্রামিং করার জন্য বেশ কিছু কম্পাইলার আছে। এদের মধ্যে সবচেয়ে জনপ্রিয় হলো- মপপ কম্পাইলার। যা উইন্ডোজ, লিনাক্স ও ম্যাক সহ প্রায় সকল অপারেটিং সিস্টেমেই চলে। সাধারণত লিনাক্স ও ম্যাকে এটি আগে থেকেই ইনস্টল করা থাকে। যদি তুমি উইন্ডোজ ব্যবহার করে থাক তাহলে তোমাকে এই (http://sourceforge.net /projects /codeblocks/files/Binaries/13.12/Windows/codeblocks-13.12mingw-setup.exe/download) লিংক থেকে Codeblocks ডাউনলোড করে ইনস্টল করতে হবে।
ইনস্টল করার প্রক্রিয়াটি জানার জন্য তুমি এই লিংক থেকে ভিডিওটির সহায়তা নিতে পার। Codeblocks শুধু মাত্র একটি কম্পাইলার নয়, এটি আসলে একটি IDE (Integrated Development Environment)। এতে কম্পাইলার ছাড়াও টেক্স এডিটর ও প্রোগ্রাম রান (run) করানো সহ অনেক ধরনের সুবিধা থাকে।
সি প্রোগ্রাম ও এর ব্যাখ্যা
তুমি যদি ঠিকমত codeblocks ইনস্টল করে থাকো তাহলে তোমার উইন্ডোজের Start মেনু থেকে All Programs- এ গিয়ে codeblocks-এ ক্লিক করলেই codeblocks চালু হয়ে নিচের ছবির মতো একটি উইন্ডো আসবে।
এবার তুমি codeblocks – এর file মেনু থেকে New – তে গিয়ে Empty file- এ ক্লিক করলে নতুন একটি blank file আসবে।
এই ফাইলেই তুমি প্রোগ্রাম লিখবে।
এখন তুমি তোমার কম্পিউটারের ভেতরে একটি ফোল্ডার তৈরি করে এর মধ্যে এই ফাইটি সেভ (save) করে রাখ। সেভ করে রাখার সময় অবশ্যই .c এক্সটেনশন দিয়ে ফাইল সেভ করতে ভুলে যাবে না কিন্তু। কারণ সি প্রোগ্রামিংয়ের ফাইল এক্সটেনশন হল- .c। যেমন- first.c । এখানে first- হল আমার দেয়া প্রোগ্রামটির নাম। তুমি চাইলে যে কোন নাম দিয়ে সেভ করতে পার। এই ফাইলকে বলা হয় সোর্স ফাইল।
এবার তুমি নিচের কোডটি টাইপ করে প্রোগ্রাম লিখে ফেল।
আমি যা করছি হ্যামিলনের বাঁশি ওয়ালার মতো আমাকে ফলো করতে থাক। অন্য কোন চিন্তা এখন মাথায় না আনাই বুদ্ধিমানের কাজ। পরে বলছি সব কিছু। একটু তো ধৈর্য তোমাকে ধরতেই হবে, তাই না?
এবার নিচের ছবির মতো করে Compile current file- এ ক্লিক করো।
তুমি যদি ঠিকমতো প্রোগ্রামটি লিখে থাক তাহলে কম্পাইলার তোমাকে 0 errors, 0 warnings দেখাবে। 0 errors -এর অর্থ হল- তুমি সি প্রোগ্রামিং এর সব গ্রামাটিকেল পদ্ধতি অনুসারে প্রোগ্রামটি লিখেছ, তাই এতে কোন syntax error (ব্যাকরণগত ভুল) নেই। আর 0 warnings – এর মানে হল, তোমার প্রোগ্রামে কোন সন্দেহ সতর্ক বার্তা নেই যার ফলে প্রোগ্রামে কোন ক্র্যাশ বা অন্য কোন সমস্যা ঘটতে পারে (যেমন-কাক্সিক্ষত আউটপুট না পাওয়া)। আমরা সর্বদাই চেষ্টা কবর error ও warning মুক্ত প্রোগ্রাম লিখতে।
এবার প্রোগ্রামটি নিচের ছবির মতো করে রান করাও।
রান করানোর সাথে সাথে তুমি নিচের ছবির মতো একটি কাল পর্দা (screen) দেখতে পাবে।
এখানে “Hello! C Programmer” এই লাইনটি হলো তোমার প্রোগ্রামের আউটপুট। আর “execution time : 0.010s”- এর মানে হল, তোমার প্রোগ্রামটি রান করতে যতটুকু সময় নিয়েছে ঐ সময়টি নির্দেশ করছে। “Press any key to continue”-এর মানে হলো তুমি এখন তোমার keyboard -এর যে কোন বাটন প্রেস করলে এই কাল উইন্ডোটি চলে যাবে।
তুমি যদি এ পর্যন্ত ঠিকমত করতে পার তাহলে তোমাকে স্বাগতম। অর্থাৎ তুমি প্রোগাম করার জন্য যে মৌলিক বিষয়টি দরকার তা তুমি করে ফেলেছ। আর যদি এতটুকু পর্যন্ত না করতে পার তাহলে হতাশ হওয়ার কোন কারণ নেই। নিজে নিজে আবার চেষ্টা কর।
প্রথম প্রোগ্রামের ব্যাখ্যা
প্রথম লাইনে আছে “#include <stdio.h”- এটি আসলে একটি হেডার ফাইল (header file)। stdio- মানে হল standard input output । আর .h দ্বারা হেডার ফাইল বুঝাচ্ছে। এই হেডার ফাইলের মধ্যে অনেক ইনপুট আউটপুট লাইব্রেরি ফাংশন (library or built in function) আছে। ফাংশন কি-তা এখন না বুঝলেও চলবে। ফাংশন নিয়ে আলোচনা করার সময় এ ব্যাপারে বিস্তারিত বলা যাবে। আমরা যদি এই (stdio.h) হেডার ফাইলের অন্তর্ভুক্ত যে কোন ফাংশন প্রোগ্রামে ব্যবহার করতে চাই, তাহলে এই হেডার ফাইল প্রোগ্রামে সংযুক্ত করতে হবে। যেমন- ৫ম লাইনে (printf) ফাংশন ব্যবহার করেছি। এটি stdio.h হেডার ফাইলের অন্তর্ভুক্ত একটি ফাংশন। যার সম্পর্কে বিস্তারিত বলা আছে stdio.h হেডার ফাইলে। এ জন্যই আমাদেরকে #include < stdio.h > এই হেডার ফাইলটি ব্যবহার করতে হয়েছে। অনুরূপ হেডার ফাইল আছে অনেক এবং প্রতি হেডার ফাইলের আছে অনেক লাইব্রেরি ফাংশন। তোমরা সামনের দিকে এ সম্পর্কে জানতে পারবে।
দ্বিতীয় লাইন ফাঁকা। আসলে এই ফাঁকা লাইন না রাখলেও প্রোগ্রামে কোনরূপ সমস্যা হতো না। প্রোগ্রামটি যাতে দেখতে সুন্দর লাগে শুধু তার জন্যই এই ফাঁকা লাইন রাখা হয়েছে। অনুরূপভাবে ষষ্ঠ লাইনের ফাঁকাটিও এ জন্যই।
তৃতীয় লাইন আছে- int main()। এটি একটি ফাংশন। একে বলা হয় মেইন main ফাংশন। সি প্রোগ্রামের এক্সিকিউশন (execution) এই মেইন ফাংশন থেকেই শুরু হয়। প্রত্যেক সি প্রোগ্রামে অবশ্যই একটি এবং কেবল মাত্র একটিই মেইন ফাংশন থাকবে। int কি এখন তা নিয়ে চিন্তা করার প্রয়োজন নেই। তবে এতোটুকু জেনে রাখো এটি সি প্রোগ্রামিং ল্যাংগুয়েজের একটি key word । সি প্রোগ্রামিং ল্যাংগুয়েজে তদ্রƒপ অনেক key word আছে। একটি কথা বলে রাখি এই main() ফাংশন ও লাইব্রেরি ফাংশনগুলো যে লেটার কেসে (letter case) আছে ঠিক সেই কেসেই লিখতে হবে। যেমন- main() ফাংশন ছোট হাতের অক্ষরে (lower case letter) লিখা আছে। তোমাকে ঠিক এভাবেই লিখতে হবে। তুমি যদি লিখ- গধরহ() তাহলে হবে না। এর জন্য কম্পাইলার ভুল বার্তা দেবে।
চতুর্থ লাইনে আছে- একটি দ্বিতীয় বন্ধনী (left base, { )। এখান থেকেই মেইন ফাংশন শুরু। অর্থাৎ এর পর থেকেই সি প্রোগ্রামিংয়ের এক্সিকিউশন শুরু হয়।
পঞ্চম লাইনে- (“Hello! C Programmer); এখানে (printf)-একটি লাইব্রেরি ফাংশন। এটি একটি আউটপুট ফাংশন। এই ফাংশনের ডবল কোটেশন (” ” ) এর মধ্যে তুমি যা লিখবে, তাই আউটপুটে দেখাবে। যেমন- আমি লিখেছি “Hello! C Programmer”। তুমি নিশ্চয়ই লক্ষ্য করেছ- আমাদের প্রথম প্রোগ্রামের আউটপুট কিন্তু “Hello! C Programmer”। তুমি যদি এর মধ্যে তোমার নাম লিখে দাও, তাহলে তাই দেখাবে। কি মজা তাই না? নিজের নাম প্রোগ্রামের আউটপুট!! লক্ষ্য কর, এই লাইনটির সর্বশেষে আছে একটি সেমিকোলন (;)। এই সেমিকোলন দ্বারা সি প্রোগ্রামের স্টেটমেন্ট বুঝানো হয়। প্রত্যেক সি প্রোগ্রামের স্টেটমেন্ট অবশ্যই সেমিকোলন দ্বারা শেষ হবে। অর্থাৎ printf (“Hello! C Programmer “); মূলত সি প্রোগ্রামের একটি স্টেটমেন্ট।
সপ্তম লাইনে আছে- return 0 ; এটি একটি স্টেটমেন্ট। এর কাজ কী বা কেন এটি ব্যবহার করা হয় তা এখন তুমি না জানলেও চলবে। ফাংশন আলোচনা করার সময় বিস্তারিত বলা হবে। তবে এটুকু জেনে রাখো-এই স্টেটমেন্টটি প্রোগ্রামের সর্বশেষে এক্সিকিউট হবে। অর্থাৎ এটি হল সি প্রোগ্রামের সর্বশেষ এক্সিকিউটেবল স্টেটমেন্ট।
অষ্টম লাইনে আছে- একটি দ্বিতীয় বন্ধনী (right brace, } )। এটি মেইন ফাংশনের শেষ নির্দেশ করে।
এবার আমরা একটি প্রোগ্রাম লিখব যার আউটপুট হবে- Hello! C Programmer, I am here.
আগের মতো করে এই প্রোগ্রামটি লিখে তুমি তোমার ফোল্ডারে second.c নামে সেভ করে রান করালে নিচের উইন্ডোর মতো আউটপুট পাবে। তুমি চাইলে অন্য যে কোন নামে ফাইলটির নাম সেভ করতে পারো।
আচ্ছা, চলো এবার এই আউটপুটটি একলাইন এর পরিবর্তে দুই লাইনে নিয়ে আসি। অনেকটা এ রকম করে।
“Hello! C Programmer
I am here.
এর জন্য প্রোগ্রামটি হবে নিম্নরূপ-
এখানে পঞ্চম লাইনের শেষে একটি নিউ লাইন (new line) ক্যারেক্টার (charecter) ( \n ) যুক্ত করা হয়েছে। এই নিউ লাইন যেখানে থাকবে তার পরবর্তী আউটপুট নতুন একটি লাইন দ্বারা শুরু হবে। তুমি দেখছ এখানে দুটি প্রিন্টেফ লাইন ব্যবহার করা হয়েছে। আসলে এই দুটি লাইন আলাদা ভাবে লিখেছি এর জন্য আউটপুট দুই লাইনে আসছে, ব্যাপারটি এমন নয়। তুমি যদি নিউ লাইন কেরেক্টারটি উঠিয়ে দিয়ে প্রিন্টেফ লাইন দুটি লিখ তবুও আউটপুট দুই লাইনে আসবে না। নতুন লাইনে আউটপুট লিখতে হলে তোমাকে নিউ লাইন ক্যারেক্টার ব্যবহার করতেই হবে। প্রিন্টেফ লাইন একটি বা দুটি হোক এটা কোন বিষয় নয়।
তুমি চাইলে নিচের ছবির মতো করে এক লাইনে লিখলেও আউটপুট দুই লাইনেই আসবে।
এবার তুমি ঝটপট একটি প্রোগ্রাম লিখে ফেল যার আউটপুট হবে নিচের ছবির মতো।
আগামী সংখ্যায় আরো নতুন নতুন প্রোগ্রাম নিয়ে হাজির হবো। আশা করি তত দিনে তোমরা এই প্রোগ্রামগুলো চর্চা করে একটু পটু হয়ে যাবে। প্রোগ্রামিং ইজ ফান!!! (চলবে…)
I don’t get it! 🙁 :'(