26/06/2017
প্রোগ্রামিং এ নতুন, এমন অনেকেই প্রশ্ন করে, void main() ও int main () ফাংশন দুটির মধ্যে পার্থক্য কী?তারা মূলত কিভাবে কাজ করে?
➡ তাদের জন্য প্রথমেই বলে নেই, void main() ও int main () দুইটা আসলে আলাদা ফাংশন না, বরং দুইটাই main() ফাংশন। আমরা জানি যে একটা function এর basic syntax হচ্ছে: return_type function_name(parameter list) {function body}. তো main() এর ক্ষেত্রেও একই শর্ত খাটে, এখানে void অথবা int হচ্ছে main() এর return type, এটা indicate করে ফাংশনটা কোন ধরণের value return করছে। void মানে হচ্ছে "কিছুই না", তার মানে void main() ফাংশনটা কিছুই রিটার্ন করে না। অন্যদিকে int মানে হচ্ছে integer বা পূর্ণসংখ্যা, অর্থাৎ int main() লিখলে সেটা একটা পূর্ণ সংখ্যা return করবে (বা করা উচিত)।
কোন ফাংশন থেকে কোন value return করাতে হলে আমাদেরকে return keyword টা ব্যবহার করতে হয়। উদাহরণস্বরূপ বলা যায়, যদি x এ value টা আমরা return করাতে চাই ,তাহলে return x; লিখতে হয়। void main() লিখলে এই ফাংশনের শেষে return statement ব্যবহার করার প্রয়োজনই পড়ে না, কারণ আমরা আগেই বলে দিচ্ছি যে এই ফাংশনটা কোন কিছু return করবে না। অন্যদিকে int main() লিখলে return statement ব্যবহার করা mandatory, কারণ আমরা আগেই বলে দিয়েছি main() ফাংশনটা int type এর value return করবে, অথচ return statement টা না দেয়া মানে compiler এর সাথে প্রতারণা করা, যেটা compiler মোটেও ভালোভাবে নিবে না।
এবার আসি কেন return 0, কেন 1 বা 47 বা 100 না। যেকোন একটা প্রোগ্রাম যখন রান করে, তখন operating system আশা করে প্রোগ্রামটা রান করা শেষে একটা status report জমা দিবে operating system এর কাছে, যে report এ লেখা থাকবে প্রোগ্রামটা ঠিকঠাকমত রান করেছে কি না, মেমরি ঠিকমত পেয়েছে কি না, সঠিক সময়ের মধ্যে রান করেছে কি না, রান করতে গিয়ে কোন error হয়েছে কি না ইত্যাদি। এই status গুলো একেকটা নির্দিষ্ট সংখ্যা দ্বারা প্রকাশ করা হয়ে থাকে। যেমন 124 মানে প্রোগ্রামটা চলতে চলতে তাকে জোর করে বন্ধ করে দেয়া হয়েছিলো, 87 মানে পর্যাপ্ত মেমরি পায় নি অথবা এমন কোন মেমরি লোকেশন access করার চেষ্টা করেছিলো যেটা valid ছিলো না। এরকম অনেক অনেক status code আছে। 0 (zero) কোডের মানে হচ্ছে প্রোগ্রামটা ঠিকঠাকমত রান করেছে, কোন সমস্যা হয় নি। আমাদের প্রোগ্রামটার main() ফাংশনের শেষ প্রান্ত পর্যন্ত যদি পৌঁছানো যায়, তাহলে আমরা বুঝবো প্রোগ্রামটা ঠিকমত রান করেছে, কিন্তু যতই ঠিকঠাক থাকুক, 0 return না করলে operating system সেটা বুঝবে না। operating system কে বুঝানোর জন্য তাই return 0; লেখাটা অত্যাবশ্যকীয়। আর 0 যেহেতু একটা পূর্ণসংখ্যা, তাই main() এর আগে int দিতে হয়।
আশা করি পুরোটা বুঝতে পেরেছেন। কোন প্রশ্ন থাকলে করতে পারেন।
* পরবর্তি কোন লেখায় ইনশাআল্লাহ status code গুলো নিয়ে লেখার চেষ্টা করবো।