কম্পিউটার টিউটোরিয়াল

সি প্রোগ্রামিং-এ ফাংশন (Functions)


ফাংশন কী?

একটি ফাংশন হলো কিছু স্টেটমেন্টের গ্রুপ যা একসাথে একটি টাস্ক সম্পন্ন করে। প্রতিটি সি প্রোগ্রামে কমপক্ষে একটি ফাংশন থাকে, যেটি হলো main(), এবং সবচেয়ে সাধারণ প্রোগ্রামগুলোর জন্যও অতিরিক্ত ফাংশন সংজ্ঞায়িত করা যেতে পারে।

আপনি আপনার কোডকে আলাদা আলাদা ফাংশনে ভাগ করতে পারেন। আপনি কীভাবে কোড ভাগ করবেন তা আপনার ইচ্ছা, কিন্তু যৌক্তিকভাবে ভাগ করা উচিত যাতে প্রতিটি ফাংশন একটি নির্দিষ্ট টাস্ক সম্পন্ন করে।

একটি ফাংশন ঘোষণা (declaration) কম্পাইলারকে ফাংশনের নাম, রিটার্ন টাইপ এবং প্যারামিটার সম্পর্কে জানায়। একটি ফাংশন সংজ্ঞায়ন (definition) ফাংশনের প্রকৃত বডি প্রদান করে।

সি স্ট্যান্ডার্ড লাইব্রেরি আপনার প্রোগ্রাম যেগুলো কল করতে পারে এমন অনেক বিল্ট-ইন ফাংশন প্রদান করে। উদাহরণস্বরূপ, দুটি স্ট্রিং ক্যাটেনেট করার জন্য strcat(), একটি মেমরি লোকেশন থেকে অন্য লোকেশনে কপি করার জন্য memcpy(), এবং আরও অনেক ফাংশন।

একটি ফাংশনকে মেথড বা সাব-রুটিন বা প্রসিডিউর ও বলা যায়।

ফাংশন সংজ্ঞায়ন (Defining Function)

সি প্রোগ্রামিং ভাষায় একটি ফাংশন সংজ্ঞায়নের সাধারণ ফর্ম নিচের মতো:

return_type function_name(parameter list) {
    body of the function
}

একটি ফাংশন সংজ্ঞায়নে একটি ফাংশন হেডার এবং একটি ফাংশন বডি থাকে। একটি ফাংশনের সব অংশ নিচে দেওয়া হলো:

  • রিটার্ন টাইপ (Return Type): একটি ফাংশন মান রিটার্ন করতে পারে। return_type হলো ফাংশন যা মান রিটার্ন করে তার ডেটা টাইপ। কিছু ফাংশন কোনো মান রিটার্ন ছাড়া望ましい অপারেশন সম্পন্ন করে। সেক্ষেত্রে return_type হলো void কিওয়ার্ড।
  • ফাংশন নাম (Function Name): এটি ফাংশনের আসল নাম। ফাংশন নাম এবং প্যারামিটার লিস্ট মিলে ফাংশন সিগনেচার গঠন করে।
  • প্যারামিটার (Parameters): একটি প্যারামিটার হলো একটি প্লেসহোল্ডার। যখন একটি ফাংশন আহ্বান করা হয়, আপনি প্যারামিটরে একটি মান পাস করেন। এই মানকে আসল প্যারামিটার বা আর্গুমেন্ট বলা হয়। প্যারামিটার লিস্ট ফাংশনের প্যারামিটারগুলোর টাইপ, ক্রম এবং সংখ্যা বোঝায়। প্যারামিটার অপশনাল; অর্থাৎ একটি ফাংশনে কোনো প্যারামিটার নাও থাকতে পারে।
  • ফাংশন বডি (Function Body): ফাংশন বডিতে স্টেটমেন্টের একটি সংগ্রহ থাকে যা ফাংশনটি কী করে তা নির্ধারণ করে।

উদাহরণ কোড

/* দুই সংখ্যার মধ্যে সর্বোচ্চ মান রিটার্ন করার ফাংশন */
int max(int num1, int num2) {
    /* লোকাল ভেরিয়েবল ঘোষণা */
    int result;
    if (num1 > num2)
        result = num1;
    else
        result = num2;
    return result;
}

ফাংশন ঘোষণা (Function Declaration)

একটি ফাংশন ঘোষণা কম্পাইলারকে ফাংশনের নাম এবং কীভাবে ফাংশনটি কল করতে হয় তা জানায়। ফাংশনের আসল বডি আলাদাভাবে সংজ্ঞায়িত করা যেতে পারে।

একটি ফাংশন ঘোষণার নিচের অংশগুলো থাকে:

return_type function_name(parameter list);

উপরে সংজ্ঞায়িত max() ফাংশনের জন্য, ফাংশন ঘোষণা নিচের মতো:

int max(int num1, int num2);

ফাংশন ঘোষণায় প্যারামিটার নাম গুরুত্বপূর্ণ নয়, শুধু তাদের টাইপই প্রয়োজন, তাই নিচেরটিও একটি বৈধ ঘোষণা:

int max(int, int);

ফাংশন কল (Function Calling)

একটি সি ফাংশন তৈরি করার সময়, আপনি ফাংশনটির কী করতে হবে তার সংজ্ঞায়ন দেন। একটি ফাংশন ব্যবহার করতে, আপনাকে সেই ফাংশনটি কল করতে হবে যাতে সংজ্ঞায়িত টাস্কটি সম্পন্ন হয়।

যখন একটি প্রোগ্রাম একটি ফাংশন কল করে, প্রোগ্রাম কন্ট্রোল কল করা ফাংশনে ট্রান্সফার হয়। কল করা ফাংশন একটি সংজ্ঞায়িত টাস্ক সম্পন্ন করে এবং যখন এর রিটার্ন স্টেটমেন্ট এক্সিকিউট হয় বা এর ফাংশন-এন্ডিং ক্লোজিং ব্রেস পর্যন্ত পৌঁছায়, তখন এটি প্রোগ্রাম কন্ট্রোল মূল প্রোগ্রামে ফেরত দেয়।

একটি ফাংশন কল করতে, আপনাকে সادenges পাস করতে হবে প্রয়োজনীয় প্যারামিটারগুলো ফাংশন নামের সাথে, এবং যদি ফাংশন কোনো মান রিটার্ন করে, তবে আপনি রিটার্ন করা মানটি সংরক্ষণ করতে পারেন। উদাহরণস্বরূপ:

উদাহরণ কোড

#include <stdio.h>

/* ফাংশন ঘোষণা */
int max(int num1, int num2);

int main() {
    /* লোকাল ভেরিয়েবল সংজ্ঞায়ন */
    int a = 100;
    int b = 200;
    int ret;

    /* ফাংশন কল করে সর্বোচ্চ মান পাওয়া */
    ret = max(a, b);
    printf("Max value is : %d\n", ret);
    return 0;
}

/* দুই সংখ্যার মধ্যে সর্বোচ্চ মান রিটার্ন করার ফাংশন */
int max(int num1, int num2) {
    /* লোকাল ভেরিয়েবল ঘোষণা */
    int result;
    if (num1 > num2)
        result = num1;
    else
        result = num2;
    return result;
}

আউটপুট

Max value is : 200
  1. জাভাস্ক্রিপ্ট কলব্যাক ফাংশন

  2. সি প্রোগ্রামিং-এ ফাংশনের বিভাগ (Categories of Functions)

  3. C/C++-তে ফাংশন: সম্পূর্ণ গাইড

  4. C গ্রাফিক্স-এ bar() ফাংশন