সি ফাংশন একটি ভূমিকা

সি ফাংশন একটি ভূমিকা
আপনার মত পাঠকরা MUO সমর্থন করতে সাহায্য করে। আপনি যখন আমাদের সাইটে লিঙ্ক ব্যবহার করে একটি ক্রয় করেন, আমরা একটি অনুমোদিত কমিশন উপার্জন করতে পারি। আরও পড়ুন

আপনি সাধারণ উদাহরণ সহ বেসিক সি সিনট্যাক্স কভার করেছেন এবং এখন ভাবছেন কীভাবে বড়, বাস্তব-বিশ্বের প্রোগ্রাম তৈরি করা যায়। শুরু করার জন্য, আপনি ন্যূনতম পুনরাবৃত্তি সহ আপনার কোডটিকে দক্ষ অংশে সংগঠিত করতে চাইবেন। সি-তে, বেশিরভাগ ভাষার মতো, আপনার সমস্যার উত্তর হল ফাংশন।





দিনের MUO ভিডিও কন্টেন্টের সাথে চালিয়ে যেতে স্ক্রোল করুন

সি-তে ফাংশন তৈরি করা এবং ব্যবহার করা সহজ এবং অনেক সুবিধা নিয়ে আসে। ফাংশনগুলি আপনাকে জটিল প্রোগ্রামগুলিকে ছোট অংশে ভাঙ্গার অনুমতি দেয়। তারা আপনার মূল প্রোগ্রামের মধ্যে এবং সম্পর্কিত লাইব্রেরি বা অন্যান্য পৃথক প্রোগ্রাম উভয় ক্ষেত্রেই পুনরায় ব্যবহারযোগ্যতা প্রদান করে।





শুরু করার জন্য, আপনাকে ফাংশন ঘোষণা, প্রোটোটাইপ, প্যারামিটার এবং রিটার্ন স্টেটমেন্ট সম্পর্কে জানতে হবে।





সি-তে ফাংশনগুলি কী কী?

  একটি স্ক্রীন একটি প্রোগ্রামিং ভাষায় কোড দেখাচ্ছে

সি প্রোগ্রামিং এ , একটি ফাংশন হল কোডের একটি নামকৃত বিভাগ যা কিছু করে যখন আপনি এটি করতে বলেন। এটি আপনার কোড সংগঠিত রাখতে সাহায্য করে এবং নিজেকে পুনরাবৃত্তি না করে একই ক্রিয়া একাধিকবার ব্যবহার করতে দেয়৷

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



ফাংশন: ঘোষণা করা, সংজ্ঞায়িত করা এবং আহ্বান করা

এই তিনটি দিক ফাংশন ব্যবহারের জন্য মৌলিক।

ফাংশন ঘোষণা

এটি একটি ফাংশনের নাম, রিটার্ন টাইপ এবং প্যারামিটার সম্পর্কে তথ্য প্রদান করে, এটির সম্পূর্ণ সংজ্ঞার আগে এটির ব্যবহার সক্ষম করে। একে ফাংশন প্রোটোটাইপও বলা হয়। এটি এই সহজ সিনট্যাক্স অনুসরণ করে:





 return_type function_name(parameters);

কোথায়:

  • রিটার্ন_টাইপ ফাংশনটি যে মানটি প্রদান করে তার ডেটা প্রকার। এটি যেকোন বৈধ সি ডাটা টাইপ বা হতে পারে অকার্যকর যদি ফাংশন একটি মান ফেরত না দেয়।
  • ফাংশন_নাম আপনি ফাংশন দিতে নাম. আপনি পরে ফাংশন কল করতে এটি ব্যবহার করবেন।
  • পরামিতি ইনপুট পরামিতিগুলির একটি তালিকা যা ফাংশন গ্রহণ করে, যদি থাকে। প্রতিটি প্যারামিটারে একটি ডেটা টাইপ থাকে যার পর একটি প্যারামিটারের নাম কমা দ্বারা পৃথক করা হয়।

উদাহরণস্বরূপ, এখানে একটি সাধারণ ফাংশন ঘোষণা:





 int add(int a, int b);

ফাংশন সংজ্ঞা

আপনি যখন একটি ফাংশন কল করেন, এটি তার সংজ্ঞায় নির্দিষ্ট কোড চালায়। এতে ফাংশনের নাম, রিটার্ন টাইপ, প্যারামিটার তালিকা এবং বিবৃতিগুলি রয়েছে যা এর আচরণকে সংজ্ঞায়িত করে। এখানে সিনট্যাক্স আছে:

 return_type function_name(parameters) { 
    // Function body - code that defines what the function does
    // Return a value if applicable
    return value;
}

চলুন সিনট্যাক্সের অংশগুলি ভেঙে দেওয়া যাক:

ফাংশন বডি : এটি কোঁকড়া ধনুর্বন্ধনীতে আবদ্ধ কোডের ব্লক {} . এটিতে নির্দেশাবলী রয়েছে যা সংজ্ঞায়িত করে যে ফাংশনটি কল করার সময় কী করে।

রিটার্ন স্টেটমেন্ট : ফাংশন ছাড়া অন্য একটি রিটার্ন টাইপ আছে অকার্যকর , দ্য ফিরে বিবৃতি কলারের কাছে একটি মান ফেরত পাঠায়। এই মানটি নির্দিষ্ট রিটার্ন টাইপের সাথে মেলে।

এখানে একটি ফাংশন সংজ্ঞা একটি সহজ উদাহরণ:

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

ফাংশন কল

রান্নার মতোই, আপনার কাছে একটি রেসিপি (ফাংশন সংজ্ঞা) এবং কিছু উপাদান (আর্গুমেন্ট) থাকতে পারে, তবে ফলাফল পেতে আপনাকে এখনও নির্দেশাবলী অনুসরণ করতে হবে। একটি ফাংশন কল প্রদত্ত আর্গুমেন্ট সহ ফাংশন চালাবে; এখানে সিনট্যাক্স:

 return_type result = function_name(arguments);

যুক্তি : এগুলি হল সেই মান বা অভিব্যক্তি যা আপনি ইনপুট হিসাবে ফাংশনে পাস করেন। প্রতিটি আর্গুমেন্টকে কমা দিয়ে আলাদা করুন। আর্গুমেন্টের সংখ্যা, ক্রম এবং ডেটা প্রকারগুলি ফাংশনের প্যারামিটার তালিকার সাথে মেলে।

ফলাফল : ফাংশন ছাড়া অন্য একটি রিটার্ন টাইপ আছে অকার্যকর , আপনি উপযুক্ত ডেটা টাইপের একটি ভেরিয়েবল ব্যবহার করে প্রত্যাবর্তিত মান ক্যাপচার করতে পারেন।

এখানে একটি ফাংশন কলের একটি উদাহরণ:

 #include <stdio.h> 

// Function prototype
int add(int a, int b);

int main() {
    int x = 5, y = 3;

    // Call the function and store the result in 'sum'
    int sum = add(x, y);
    printf("The sum of %d and %d is %d\n", x, y, sum);
    return 0;
}

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

এই তিনটি ধাপ অনুসরণ করে- ফাংশন ঘোষণা করা, এর বাস্তবায়ন প্রদান করা এবং উপযুক্ত আর্গুমেন্ট সহ কল ​​করা- আপনি আপনার প্রোগ্রামে বিভিন্ন কাজ সম্পাদন করতে কার্যকরভাবে ফাংশন ব্যবহার করতে পারেন।

ফাংশন প্যারামিটার এবং রিটার্ন মান

পরামিতি হল ফাংশনের ঘোষণা বা সংজ্ঞায় ঘোষিত ভেরিয়েবল যা কল করার সময় ফাংশনে পাস করা মানগুলির জন্য স্থানধারক হিসাবে কাজ করে। তারা আপনাকে ফাংশনে ডেটা পাস করার অনুমতি দেয়, এটি সেই ডেটার সাথে কাজ করতে এবং ম্যানিপুলেট করতে সক্ষম করে। রিটার্ন মান হল সেই মানগুলি যেগুলি একটি ফাংশন তৈরি করে এবং কলারের কাছে ফেরত পাঠায়।

পরামিতি পাস করার দুটি পদ্ধতি আছে।

মান দ্বারা পাস

এই পদ্ধতির সাহায্যে, একটি ফাংশন কল প্রকৃত আর্গুমেন্টের মানকে ফাংশনের প্যারামিটারে কপি করে। ফাংশনের মধ্যে প্যারামিটারে করা পরিবর্তনগুলি মূল আর্গুমেন্টকে প্রভাবিত করে না।

উদাহরণ স্বরূপ:

কিভাবে কারো সম্পর্কে তথ্য খুঁজে পেতে
 #include <stdio.h> 

int square(int num) {
    num = num * num;
    return num;
}

int main() {
    int x = 5;
    int y = square(x);

    // Output: x and y after function call: 5 25
    printf("x and y after function call: %d %d\n", x, y);

    return 0;
}
  • বর্গ ফাংশন একটি পূর্ণসংখ্যা প্যারামিটার নেয়, একের উপর .
  • বর্গক্ষেত্র ফাংশন সংখ্যার বর্গ গণনা করে, এর মান আপডেট করে এবং এই নতুন মানটি প্রদান করে।
  • প্রধান ফাংশন একটি পূর্ণসংখ্যা পরিবর্তনশীল ঘোষণা করে, এক্স , এবং এটিকে 5 মান নির্ধারণ করে।
  • এটি তখন বর্গাকার ফাংশনকে কল করে, এটি x এর মান পাস করে। এটি একটি দ্বিতীয় পরিবর্তনশীল ফলাফল নির্ধারণ করে, এবং .
  • ফাংশন কলের পরে, প্রধান x এবং y এর মান প্রিন্ট করে। x এর মান একই থাকে কারণ বর্গক্ষেত্রের মধ্যে num প্যারামিটার পরিবর্তন করলে মূল x কে প্রভাবিত করে না।

রেফারেন্স দ্বারা পাস

এই পদ্ধতি ব্যবহার করে, আপনি একটি ফাংশনে একটি মানের মেমরি ঠিকানা (পয়েন্টার) পাস করেন। ফাংশনের ভিতরের প্যারামিটারে করা পরিবর্তনগুলি এর বাইরের মূল মানকে প্রভাবিত করে।

পয়েন্টার, প্যারামিটার হিসাবে তাদের ব্যবহার সহ, এর অন্যতম দিক সি যে এটি পাইথনের মতো একটি ভাষা থেকে আলাদা .

 #include <stdio.h> 

void square(int *num) {
    *num = *num * *num;
}

int main() {
    int x = 5;
    square(&x);

    // Output: x after function call: 25
    printf("x after function call: %d\n", x);
    return 0;
}
  • দ্য বর্গক্ষেত্র ফাংশন একটি পূর্ণসংখ্যা পয়েন্টার নেয় ( int * ) প্যারামিটার, একের উপর . এটি একটি মান ফেরত দেয় না।
  • বর্গ ফাংশন মানের বর্গ গণনা করে যে একের উপর পয়েন্টার ডিরেফারেন্স অপারেটর ব্যবহার করে মান রয়েছে এবং আপডেট করে, * .
  • দ্য প্রধান ফাংশন একটি পূর্ণসংখ্যা পরিবর্তনশীল ঘোষণা করে, এক্স , এবং এটি মান নির্ধারণ করে 5 .
  • এটি তারপর কল বর্গক্ষেত্র একটি পয়েন্টার সঙ্গে ফাংশন এক্স অপারেটরের ঠিকানা ব্যবহার করে: &এক্স .
  • ফাংশন কল করার পরে, প্রধান এর মান প্রিন্ট করে এক্স , যা এখন 25 পরিবর্তনের পর থেকে *একের উপর ভিতরে বর্গক্ষেত্র ফাংশন মূল প্রভাবিত করে এক্স .

সংক্ষেপে, দুটি পদ্ধতির মধ্যে মূল পার্থক্য হল কিভাবে ফাংশনের ভিতরে প্যারামিটারের পরিবর্তনগুলি এর বাইরের মূল মানকে প্রভাবিত করে। মান দ্বারা পাস একটি অনুলিপি তৈরি করে, যখন রেফারেন্স দ্বারা পাস (পয়েন্টার) মূল মানটির সরাসরি হেরফের করার অনুমতি দেয়।