ফাংশন (Function)

এখন পর্যন্ত সব Program এ আমরা একটা Function বিশেষ ভাবে দেখেছি আরা সেটি হল main() function। প্রতিটি C Program শুরু হয় main function থেকে অর্থাৎ প্রতিটি Command main() function থেকে Execute হয়। তাই আমরা main() function কে Boss ও মনে করতে পারি। আমরা main() function এর মধ্যে সব কাজ করতে পারি। এখন আমরা যদি মনে করি আমাদের Program একটি পরিবার তাহলে main functio হল সেই পরিবার এর কর্তা। যেহেতু কর্তাকে সব কাজ করতে হয় তাই আমাদের main() function ও সব কাজ করতে পারে। কিন্তু এতে কর্তার উপর খুবই চাপ পরে যায়। ঠিক তেমনই আমরা যদি সব কাজ main() function এর মধ্যে করি তাহলে আমাদের main function এ অনেক code এর কারণে হিবিযিবি হয়ে যায়। Computer এর তো কষ্ট হয় না কিন্তু পরে Debug করতে আমাদেরই কষ্ট হবে তখন। তাই কোন নির্দিষ্ট কাজ করার জন্য আমরা আলাদা আলাদা function বানিয়ে ফেলতে পারি। ঠিক পরিবারে একেক সদশ্যের একেক দায়িত্যের মত। ধর আমাদের পরিবারে একজন সদস্যে মফিজের কাজ হল বাজার করে আনা। বাজার করার উদাহরণটি দিয়ে আমরা এখন function এর Basic Syntax এর সাথে পরিচিত হয়ে নেইঃ

return_type function_name (parameter_list){
    body;
}

Function Name: প্রত্যেক সদস্যের যেমন নাম থাকে ঠিক তেমনই Function এর ও নাম থাকতে হবে যে না ধরে ডাক দিলেই Function কাজ করে দিবে।

Parameter List: কাউকে দিয়ে বাজার করানোর সময় অবশ্যই তাকে টাকা দিয়ে দিতে হবে? (ধরে নিচ্ছে যাকে দিয়ে বাজার করাবো তার কাছে কোন টাকা নেই) এখন আমরা আমাদের function কে দিয়ে কাজ করানোর জন্য যেকোন Data Function কে দিতে পারবো Parameter এর মাধ্যমে। Parameter হল এক ধরণের Variable। এই Data নিয়ে আমাদের Function নির্দিষ্ট কোন কাজ করে দিবে। আমরা একাধিক Parameter Delcare করতে পারবো। তাই এই অংশটি হল Parameter List।

Body: Function টি কিভাবে কাজ করবে তা Body অংশ বলে দিতে হবে।

Return Type: বাজার করা শেষে মফিজ নিঃশ্চয় বাজার ফেরত দিবে? ঠিক তেমনই আমাদের Function এর কাজ শেষ হয়ে গেলে Function টি Data Return করতে পারবে।

এখন আমরা একটা Function দিয়ে দু’টি সংখ্যা যোগ করে ব্যপারটা পরিষ্কার করে ফেলিঃ

#include <stdio.h>

int add(int a, int b);

int main(){
    int n1 = 5, n2 = 6;
    printf(“%d\n”, add(n1, n2));
    return 0;
}

int add(int a, int b){
    return a + b;
}

এখানে Function টির নাম হল add যেহেতু আমরা এখানে Addision করবো। আমরা সবসময় function এর নাম function টির কাজের সাথে মিলিয়ে রাখার চেষ্টা করবো। Function টি দু’টি সংখ্যার যোগফল বের করে দিবে তাই সংখ্যা দু’টি Function এ Parameter এর মাধ্যমে Pass করতে হবে। return a + b এর মাধ্যমে function টি a ও b এর value যোগ করে return করে দিচ্ছে। যেহেতু Function টি Integer Type এর Data Return করছে তাই আমরা Function টির Return Type int দিয়েছি।

এখন main() function থেকে আমরা function টিকে call করছি। Call করার জন্য আমরা Function টির নাম লিখে Parentheses এর ভিতর Argument পাঠাচ্ছি। আমরা যে Value টা Function এ পাঠাচ্ছি তাই হল Argument। অর্থাৎ আমরা Function এ যে Value পাঠানো হয় তা হচ্ছে Argument এবং যে ঐ Value টা Receive করে সে হল Parameter। এখানে আমরা n1 ও n2 Variable Function এ পাঠাইনি আমরা শুধু n1 ও n2 এর Value পাঠিয়েছি।

main function থেকে যখন কোন function কে call করা হয় তখন তা প্রথমে main function এর উপরে সেই function টিকে খুঁজে। যদি সে উপরে খুঁজে না পায় তাহলে ERROR দেখায়। কিন্তু আমাদের Function টি আমরা main function এর পরে লিখেছি। তাই main function এর আগে function টির Signature লিখে দিতে হয়েছে। কোন Function এর Signature হল ঐ Function এর Body ব্যাতিত শুধু প্রথম Line টি। এতে main function উপরে Function টির Signature দেখার পর Function টিকে main function এর পরে খুঁজবে। আমরা চাইলে পুরো Function টি main() Function টির উপরেও লিখতে পারতাম। একেক Programmer একেক জায়গায় লিখতে পছন্দ করে। পুরো Function টিকে Function এর Defination বলে।

Void Type: Void মানে কিছুনা। ভাবছো Void এর কোন মানে নেই তো Void নিয়ে কেন কথা বলছি? আসলে Void এর মানেই হল কিছুনা। আমাদের Function যদি কোন কিছু Return না করে তাহলে আমরা Return Type এর জায়গায় void লিখে দিব। অর্থাৎ Function টি কিছুই Return করবে না।

Function ব্যবহার এর সুবিধাঃ

১. Code Debug করতে সুবিধা হয়।

২. একই কাজে জন্য একই Code বারবার লিখার দরকার নেই। একটি Function বানিয়ে যখনই ঐ কাজটি করার দরকার পরবে তখনই Function টি Call করে কাজটি করিয়ে নিতে পারি।

Variable এর Scope: রামু তার এলাকার দাদা ভাই। তার এলাকায় তার অনেক পাওয়ার তাই সে ঐ এলাকার বাঘ। কিন্তু অন্য এলাকায় গেলেই রামু ভিজা বিড়াল হয়ে যায়। অর্থাৎ রামুর পাওয়ার শুধু মাত্র তার এলাকায়। আমরা যে Variable টি যেখানে Declare করি সেটি তার এলাকা বা Scope। Variable টি ঐ জায়গা ছাড়া অন্য কোন জায়গা থেকে ব্যবহার করা যাবে না। যেমনঃ main Function এ Declare করা কোন Variable অন্য কোন Function থেকে ব্যবহার করা যাবে না। ঠিক উল্টাটাও সত্য। অর্থাৎ অন্য Function এ Declare করা Variable বা ঐ Function এর Parameter সমূহ main Function থেকে ব্যবহার করা যাবে না। ঠিক তেমনই এক Block এর Variable অন্য Block এ ব্যবহার করা যাবে না। এই Variable গুলোকে ঐ Function বা Block এর Local Variable বলে। আমরা যদি কোন Variable কে যেকোন Function থেকে ব্যবহার করতে চাই তাহলে আমাদের Variable কে Globaly Declare করতে হবে। Globaly Declare করতে হলে সব Function এর বাইরে সবার উপরে Header File Inclusion এর পর করে Declare করে দিলেই হবে। এতে এটিকে সব Function থেকে ব্যবহার করা যাবে। Global Variable Delcare করার আরেকটি সুবিধা হল Variable টি 0 (শূণ্য) দিয়ে Initialize হয়ে যায়।

Built-in Function: আমরা এতক্ষণ যে Function নিয়ে কাজ করছিলাম সেটা ছিলো User Defined Function অর্থাৎ Function টির নাম, কিভাবে কাজ করবে সবই আমরাই Defined করে দিয়েছি। C Programming Language এ অনেক Built-in Function আছে। এগুলো কিভাবে কাজ করে তা বিভিন্ন Header File এ লিখা আছে। আমরা ইতো মধ্যে stdio.h File এর printf ও scanf Funtion টি অনেকবার ব্যবহার করেছি। আমরা যদি Built-in Function গুলোর সাথে পরিচিত থাকি এবং এদের ব্যবহার জানি তাহলে প্রয়োজন পরলে আমরা ঐ Funtion টির Header File Include করে দিয়ে Function টি ব্যবহার করতে পারি। এতে আমাদের কাজ আরো সহজ হয়ে যাবে। বিভিন্ন Header File ও ঐ File এ লেখা বিভিন্ন Function সম্পর্কে জানতে চাইলে নিচে একটি Refference Website দিয়েছি সেখান থেকে শিখতে পারো সাথে কিছু Important Function এর নামও দিয়ে দিয়েছি Header File সহ। তবে সব Function শিখার দরকার নেই। কারণ Brain এ যত বেশি Data রাখবে Access করতে তত বেশি সময় লাগবে।

Header File

Function

stdio.h

printf(), scanf(), getchar(), gets(), freopen()

math.h

pow(), sqrt(), abs()

ctype.h

tolower(), toupper(), isalpha(), isalnum(),

string.h

strlen(), strcpy(), strcat(), strcmp(), strstr(), strtok(), memset()

String নিয়ে আলোচনা করার সময় String এর বেশ কিছু Built-in Function নিয়ে আলোচনা করবো।

C++.COM

Advertisements
Tagged with: , , , ,
Posted in বেসিক প্রোগ্রামিং

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: