ফাংশনগুলি একটি মেশিনের মতো কারণ তারা কিছু কার্যকারিতা সম্পাদন করে এবং কিছু ধরণের ফলাফল তৈরি করে। যেমন, মেশিন কিছু ইনপুট নেয়, একইভাবে ইনপুট প্রক্রিয়া করে এবং আউটপুট তৈরি করে, ফাংশন কিছু মান নেয়, সেই মানগুলির উপর কাজ করে এবং আউটপুট তৈরি করে। ম্যানুয়ালি একজন ব্যক্তি মেশিনে ইনপুট পাঠান তখনই মেশিনটি একই পদ্ধতিতে তার কার্যকারিতা শুরু করবে যখন প্রোগ্রামার ফাংশনটিকে কল করবে তখন এটি কার্যকর করা শুরু করবে।
বিভিন্ন ভাষায় ফাংশন নাম অনুসারে ভিন্ন হতে পারে, তবে তারা দুটি সাধারণ বৈশিষ্ট্য যেমন −
ভাগ করে-
এগুলিতে নির্দেশাবলীর ক্রম রয়েছে যা প্রক্রিয়া করা দরকার
-
এই নির্দেশগুলি একটি নাম দ্বারা চিহ্নিত করা হয়, যা ফাংশনকে বোঝায়
কেন ফাংশন ব্যবহার করা হয়?
-
পুনঃব্যবহারযোগ্যতা - যখন একাধিক জায়গায় একই কার্যকারিতা প্রয়োজন হয় তখন সর্বোত্তম পদ্ধতিটি একবার ফাংশন তৈরি করা হবে এবং বারবার একই কার্যকারিতা প্রদানকারী ফাংশনটি ঘোষণা করার পরিবর্তে এটিকে একাধিকবার কল করা হবে। পুনঃব্যবহারযোগ্যতা হল সবচেয়ে বড় বৈশিষ্ট্য বা সুবিধা যা একটি ফাংশন প্রদান করে।
-
কোডের মডুলারিটি − ফাংশনটি আপনার কোডিংকে ঝরঝরে এবং পরিষ্কার করে তোলে কারণ main() ফাংশনে কোডের একাধিক লাইন লেখার পরিবর্তে, ফাংশনগুলিকে আরও পরিষ্কার এবং সহজে পঠন এবং কোড করার জন্য ঘোষণা করুন৷
-
পরিবর্তনে সহজ৷ − যদি কোডে ভবিষ্যতে কোনো পরিবর্তন হয় তাহলে একাধিক জায়গায় পরিবর্তন না করে প্রোগ্রামার শুধুমাত্র ফাংশনে পরিবর্তন আনবে। অতএব, আমরা বলতে পারি যে ফাংশনটি ডেটার অপ্রয়োজনীয়তাও হ্রাস করে৷৷
-
বিমূর্ততা প্রদান করে - ফাংশনের প্রাসঙ্গিক নামের সাথে এটি নির্ধারণ করতে পারে যে ফাংশনটি কীভাবে তা করছে তা প্রকাশ করার পরিবর্তে সেই ফাংশনটি কী করবে। উদাহরণস্বরূপ, সি-তে আমাদের "maths.h" হেডার ফাইল রয়েছে যাতে pow() ফাংশন সহ একাধিক ফাংশন রয়েছে। এই ফাংশনটি কীভাবে সংজ্ঞায় এটি গণনা করছে তা জানার পরিবর্তে আমরা পাওয়ার মান গণনা করতে এই ফাংশনটি সরাসরি ব্যবহার করতে পারি।
ফাংশন ঘোষণা এবং সংজ্ঞা
ফাংশন ঘোষণা হল কম্পাইলারকে রিটার্ন টাইপ এবং ফাংশনের নাম বলার প্রক্রিয়া।
সিনট্যাক্স
শরীর ছাড়া
Return_type function_name(parameter list which is optional);
শরীরের সাথে
Return_type function_name(parameter list which is optional) { //body of the function }
ব্যাখ্যা
-
রিটার্ন_টাইপ − এটি কম্পাইলারকে বলে যে ফাংশন কিছু রিটার্ন করবে কি না এবং যদি কোন ডাটা রিটার্ন করে তাহলে কোন ধরনের ডাটা রিটার্ন করবে।
void dummy(){ //since the return type of function is void it willn’t return anything to the caller and hence it willn’t contain return statement. } Int dummy(){ //since the return type of function is int it will return integer value to the caller and it is mandatory that it will contain return statement as it is returning integer value. return integer_value; } float dummy(){ //since the return type of function is float it will return floating value to the caller and it is mandatory that it will contain return statement as it is returning floating value. return float_value; }
-
ফাংশনের নাম − ফাংশনের নাম হতে পারে যে কোনো নাম প্রোগ্রামার ফাংশনে দিতে চায়। উপরের উদাহরণের মত, আমরা ফাংশনটিকে ডামি হিসাবে নাম দিয়েছি
-
প্যারামিটার তালিকা (ঐচ্ছিক) − যখনই ফাংশনটি ফাংশনের কলারের দ্বারা পাস করা মানগুলির উপর কাজ করবে, তখন আমাদের প্যারামিটার তৈরি করতে হবে৷
ফাংশনের সংজ্ঞা ফাংশনটি যখনই কল করা হয় তখনই এটি করতে অনুমিত কার্যকারিতা ধারণ করে৷
উদাহরণ
#include<iostream> using namespace std; //function that calculates the greatest //value amongst two parameters int greatest(int val_1, int val_2) //return type of function is integer value{ //body of the function(Definition) if(val_1>val_2){ return val_1; } else{ return val_2; } } int main(){ int val_1=10, val_2=20; //calling the function and storing the integer value //returned by a function in the integer variable int highest = greatest(val_1,val_2); //printing the greatest value cout<<"The greatest value is : "<<highest; //as the return type of main is int, //it must have return statement for the compiler return 0; }
আউটপুট
উপরের কোডের আউটপুট হবে −
The greatest value is : 20
ফাংশন প্যারামিটার
-
পরামিতিগুলি ঐচ্ছিক, যদি কোনও প্যারামিটার না থাকে তবে ফাংশনও তার কার্যকারিতা সম্পাদন করবে
-
ফাংশনের কলারের দ্বারা পাস করা মানগুলি ধরতে ফাংশনের সংজ্ঞায় ঘোষিত ভেরিয়েবলগুলিকে পরামিতি বলা হয়। int greatest(int val_1, int val_2)
int greatest(int val_1, int val_2)
-
ফাংশনের কলার দ্বারা পাস করা ভেরিয়েবলকে আর্গুমেন্ট বলা হয়।
int highest = greatest(val_1,val_2);
-
প্রকৃত পরামিতি বনাম আনুষ্ঠানিক পরামিতি-
প্রকৃত পরামিতি উপরের উদাহরণের মতো ফাংশনে ডেটা পাস করা হয়, 10 এবং 20 হল প্রকৃত পরামিতি
আনুষ্ঠানিক পরামিতি উপরের উদাহরণের মত ফাংশন দ্বারা প্রাপ্ত ডেটা, val_1 এবং val_2 হল আনুষ্ঠানিক পরামিতি৷
ফাংশন প্রধান() সম্পর্কে গুরুত্বপূর্ণ পয়েন্ট
-
প্রতিটি প্রোগ্রামের একটি এন্ট্রি পয়েন্ট থাকে যেখান থেকে এক্সিকিউশন শুরু হয়, যেমন C এবং C++ এ আমাদের ফাংশন main() আছে।
-
যদি main() ফাংশন রিটার্ন টাইপ ভ্যায়েড হয় তাহলে এর মানে হল যে ফাংশন কম্পাইলারে কিছু রিটার্ন করছে না যেখানে ফাংশন main() এর রিটার্ন টাইপ int হিসাবে থাকে তবে এটি কম্পাইলারের কাছে মান ফেরত দিচ্ছে। যেমন, আমাদের প্রধান() তে "রিটার্ন 0" আছে যা একটি প্রোগ্রামের সমাপ্তি নির্দেশ করে।
-
C-তে main() ফাংশনের রিটার্ন টাইপ void হতে পারে এবং শুধুমাত্র main() ফাংশন হিসাবে int হতে পারে কম্পাইলারে পূর্ণসংখ্যার মান ফেরত দিতে পারে বা এটি কিছু ফেরত দেবে না।
-
C++-এ main() ফাংশনের রিটার্ন টাইপ শুধুমাত্র main() ফাংশন হিসাবে int হতে পারে কম্পাইলারে পূর্ণসংখ্যার মান প্রদান করে।