ফাংশন কি?

মনে করুন আপনি দুটি সংখ্যা করার একটি প্রোগ্রাম লিখবেন। তাহলে নিচের মত প্রগ্রামটা লিখুনঃ
এখন প্রোগ্রাম টা রান করলে এরর দেখাবে। কিন্তু দুটি সংখ্যা যোগ করার জন্য যতগুলো স্টেটমেন্ট লেখা দরকার আপনি সব স্টেটমেন্ট ই তো উপরের প্রোগ্রামে লিখেছেন। তারপরও কেন এরর দেখায়? মনে করুন একটা টেবিলের উপর কিছু পরীক্ষার খাতা এবং একটা চিরকুট পড়ে আছে। চিরকুটে লিখা আছে শান্তর বার্ষিক পরীক্ষার ফলাফল হলোঃ বিষয় প্রাপ্ত নম্বর বাংলা ৯৫ ইংরেজি ৮৫ গণিত ৭৯ সমাজ ৬৫ ইসলাম শিক্ষা ৮৯ শান্তর মোট নম্বর = ৯৫ + ৮৫ + ৭৯ + ৬৫ + ৮৫ এখন যদি এই চিরকুট এবং খাতাগুলো কখনো কোন শিক্ষকের চোখে না পড়ে তাহলে কিন্তু শান্তর বার্ষিক পরীক্ষার ফলাফল প্রকাশিত হবে না। লক্ষ্য করুন চিরকুটে সবকিছু থাকার পরও কোন শিক্ষক সেটা না দেখার কারণে বিবেচনা করা হবে: শান্ত বার্ষিক পরীক্ষায় অংশগ্রহণ করে নি। আসলে এটি ভুল (error) একইভাবে উপরের প্রোগ্রামে সব কিছু থাকার পরেও int main() না থাকার কারণে এরর দেখায়। এখানে int main() কে আপনি শান্তর শিক্ষকের সাথে তুলনা করতে পারেন। int কে প্রোগ্রামের ভাষায় ফাংশন বলা হয়। এখন যদি বলি উপরের উদাহরণে শান্তর শিক্ষকের কাজ কি? উত্তর হবে পরীক্ষার ফলাফল তৈরি করে প্রকাশ করা। এখন যদি বলি প্রোগ্রামে ফাংশন এর কাজ কি? উত্তরঃ যেহেতু প্রোগ্রাম হলো কতগুলো স্টেটমেন্টের সমষ্টি। তাই প্রোগ্রামে ফাংশনের কাজ হলো কতগুলো স্টেটমেন্ট এক্সিকিউট করে ফলাফল তৈরি করা এবং ফলাফল প্রকাশ করা। *** কোন লাইন বা স্টেটমেন্ট এক্সিকিউট করা মানে হলো সেই লাইন বা স্টেটমেন্টের যে কাজ সেই কাজটি করা। এখন আপনার মনে যে প্রশ্নটি ঘুরপাক খাচ্ছে, তাহল return 0; লাইনটি কিভাবে কাজ করে? উওর টা একটু ব্যাখ্যা করে বলতে হবে। মনে করুন, শান্তর স্কুলের নিয়ম অনুযায়ী শিক্ষক দপ্তরির কাছে ফলাফল রিটার্ন করতে হবে এবং দপ্তরি সেটি নোটিশ বোর্ডে টানিয়ে দিবে। এর ব্যতিক্রম করা যাবে না। ঠিক একইভাবে প্রোগ্রামে যখন আমরা লেখি- int main() তখন আমরা দুইটি জিনিস উল্লেখ করে দেই। main() হল ফাংশনের নাম এবং main() এর আগে int লেখার অর্থ হল, main() ফাংশনটি সব শেষে int টাইপের মান রিটার্ন করবে। অর্থাৎ int কে আপনি শান্তর স্কুলের নিয়মের সাথে তুলনা করতে পারেন। এখন আপনার মনে আরেকটি প্রশ্ন জাগতে পারে- main() এর আগে int মানে হল main() ফাংশনটি একটি int টাইপের মান রিটার্ন করবে। তাহলে কেন শুধু মাত্র 0 রিটার্ন করা হচ্ছে? কেন অন্য কোন int মান যেমনঃ 10,20 বা -10 রিটার্ন করা হচ্ছে না? আসলে আপনি return 0; না লিখে retun 10; বা return 10; বা return -10; লিখতে পারেন। নিচের প্রোগ্রাম টি রান করেই দেখুনঃ

Code Example

OUTPUT

it works fine

এখন মনেকরুন, main() ফাংশনটি কোন মান রিটার্ন করবে না। তাহলে main() এর আগে void() কীওয়ার্ডটা লিখে দিতে হবে। যেমনঃ

Code Example

OUTPUT

it works fine

উপরের আলোচনা থেকে ফাংশনের দুটি অংশ সম্পর্কে জানলাম-
  • প্রথম অংশটি হলঃ ফাংশনটি কি ধরনের মান রিটার্ন করবে তার ডাটা টাইপের কীওয়ার্ড
  • দ্বিতীয় অংশটি হলঃ ফাংশনের নাম।
এখন মনে করুন, আপনি test() নামে একটি ফাংশন লিখবেন সেটি দশমিক টাইপের মান রিটার্ন করবে। তাহলে ফাংশনটি কে লিখতে হবে নিচের মতঃ
ফাংশন নামটি আপনার ইচ্ছা মত যেকোনভাবেই লিখতে পারেন। কিন্তু ভেরিয়েবল নামের মত নিচের শর্তগুলো মেনে লিখতে হবেঃ
  • a হতে z অথবা A হতে Z পর্যন্ত যেকোন বর্ন ব্যবহার করা যাবে
  • ডিজিট ব্যবহার করতে পারবেন তবে শুরুতে না
  • underscore ব্যবহার করতে পারবেন তবে space ব্যবহার করতে পারবেন না
  • কোন কীওয়ার্ড ব্যবহার করতে পারবেন না
return কীওয়ায়ার্ড টি যেভাবে কাজ করেঃ যেখানে return কীওয়ায়ার্ড থাকবে তারপরের কোন লাইন এক্সিকিউট হবে না। যেমন:
এই প্রোগ্রামটি রান করলে it works লাইনটি প্রিন্ট হবে। it works again লাইনটি প্রিন্ট হবে না। কারন তার আগেই return 0; লাইনটি পাবে। আপনি লক্ষ্য করে দেখবেন প্রোগ্রামে return কীওয়ায়ার্ড টা একটি ফাংশনের শেষ লাইনে লিখা থাকে। কেন থাকে আশা করি উপরের আলোচনা থেকে বুঝতে পেরেছেন