সি এর কার্যকারিতা সম্পর্কে আপনার যা কিছু জানা দরকার?



এই নিবন্ধটি আপনাকে একটি সাধারণ তবুও একটি মৌলিক এবং গুরুত্বপূর্ণ ধারণাটি প্রবর্তন করবে যা ফাংশন সি-এ এবং এটি একটি বিক্ষোভের সাথে অনুসরণ করবে।

এই নিবন্ধটি আপনাকে একটি সাধারণ এমনকি একটি খুব মৌলিক এবং গুরুত্বপূর্ণ পরিচয় করিয়ে দেবে ধারণাটি হ'ল সিতে ফাংশন এবং এটি একটি বিক্ষোভের সাথে অনুসরণ করুন। নিম্নলিখিত পয়েন্টারগুলি এই নিবন্ধে কভার করা হবে,

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





আসুন আমরা সবচেয়ে মৌলিক প্রশ্ন দিয়ে শুরু করি।

সি এর কাজগুলি কি কি?

অন্য যে কোনও প্রোগ্রামিং ভাষার মতো ফাংশনগুলি সি তে একই। নির্দিষ্ট কোড সম্পাদন করার জন্য এটি কোড বাইন্ডের একটি সেট। সম্পাদনযোগ্য কোডের সেটটি কোঁকড়া ধনুর্বন্ধনীগুলিতে নির্দিষ্ট করা আছে, অর্থাৎ ‘{}’।



সি তে কোনও ফাংশন কীভাবে লিখতে হবে তা শিখার আগে প্রথমে সুবিধাগুলি কী তা বুঝতে পারি।

গ মধ্যে কার্যকারিতা সুবিধা

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

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



ফাংশন বিমূর্ততাও সরবরাহ করে, যেখানে আমরা কোনও ফাংশন কল করতে পারি এবং অভ্যন্তরীণ বাস্তবায়ন না জেনে আউটপুট পেতে পারি।

ফাংশন সি এর ধরণের সাথে চলমান

সি তে কাজের ধরণ

দুটি ধরণের ক্রিয়া রয়েছে:
গ্রন্থাগার ফাংশন
ব্যবহারকারী-সংজ্ঞায়িত ফাংশন

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

এখন যেহেতু আমরা একটি ফাংশন তৈরির সুবিধাগুলি জানি সেগুলিতে কীভাবে কোনও ফাংশন ঘোষণা করবেন তা বুঝতে দিন understand

ফাংশন ঘোষণা এবং সংজ্ঞা

কার্য ঘোষণা:

ফাংশন ঘোষণার সিনট্যাক্স:

রিটার্ন_ টাইপ ফাংশন_নাম (ডাটা_ টাইপ আরজি 1, ডাটা_ টাইপ আরজি 2) ইনট অ্যাড (ইনট এক্স, ইন্টি ওয়াই) // ফাংশন ডিক্লেয়ারেশন

ফাংশন ঘোষণাপত্রে, আমরা ফাংশনের নাম, ইনপুট প্যারামিটারের সংখ্যা, তাদের ডেটাটাইপগুলি এবং ফাংশনের রিটার্নের ধরণ উল্লেখ করি। ফাংশন ঘোষণাপত্র ফাংশনটি তাদের ডেটা ধরণের এবং ফাংশনের রিটার্ন টাইপের সাথে প্রত্যাশা করে যে আর্গুমেন্টের তালিকা প্রত্যাশা করে তার তালিকা সম্পর্কে সংকলককে বলে।

ফাংশন ঘোষণায়, পরামিতিগুলির নাম উল্লেখ করা alচ্ছিক, তবে তাদের ডেটা ধরণের নির্দিষ্ট করা বাধ্যতামূলক।

int add (int, int) // ফাংশন ঘোষণা

উপরের নির্দিষ্ট ফাংশনটি দুটি পূর্ণসংখ্যার পরামিতি নেবে।

ফাংশন সংজ্ঞা

 চিত্র- সি- এডুরেকাতে ফাংশন
int add (int, int) // ফাংশন ডিক্লেয়ারেশন রিটার্ন_ টাইপ ফাংশন_নাম (পরামিতি) {ফাংশন বডি}

উপরের চিত্রটিতে প্রদর্শিত হিসাবে একটি ফাংশন সংজ্ঞা দুটি অংশ অর্থাত্ ফাংশন শিরোনাম এবং ফাংশন বডি নিয়ে গঠিত

ফাংশন শিরোনাম: ফাংশন শিরোনামটি সেমিকোলন ছাড়াই ফাংশন ঘোষণার সমান। ফাংশন শিরোনামে ফাংশনের নাম, প্যারামিটার এবং রিটার্নের ধরণ রয়েছে।

  • রিটার্ন প্রকার: রিটার্ন টাইপ হ'ল মানের ডেটা টাইপ যা ফাংশন দিয়ে ফিরে আসবে। ফাংশন হতে পারে বা একটি মান ফিরে না। এটি যদি করে তবে retuning মানের ডেটা ধরণের নির্দিষ্ট করা উচিত, অন্যথায় রিটার্নের ধরণটি বাতিল হওয়া দরকার।

  • ফাংশন নাম: এটি ফাংশনের নাম যা ব্যবহার করে আমরা যখন যেখানে প্রয়োজন প্রয়োজন ফাংশনটি কল করতে পারি where

  • পরামিতি: পরামিতিগুলি হ'ল ইনপুট মান যা ফাংশনে পাস হবে। এটি আর্গুমেন্টের ডেটা ধরণের, তাদের ক্রম এবং ফাংশনে পাস হওয়া আর্গুমেন্টের সংখ্যা সম্পর্কে বলে। পরামিতিগুলি alচ্ছিক। আপনি পরামিতি ছাড়া ফাংশন করতে পারেন।

ফাংশন বডি: ফাংশন বডি হ'ল স্টেটমেন্টের সেট যা একটি নির্দিষ্ট কাজ সম্পাদন করে। এটি ফাংশনটি কী করে তা সংজ্ঞায়িত করে।

উদাহরণ:

ইনট অ্যাড (ইনট এক্স, ইনট y) sum ইন্ট যোগ = এক্স + ওয়াই রিটার্ন (যোগফল)}

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

উদাহরণ:

# অন্তর্ভুক্ত ইন্ট অ্যাড (ইনট, ইনট) // ফাংশন ডিক্লেয়ারেশন // ফাংশন ডেফিনেশন ইন্ট অ্যাড (ইন্ট এক্স, ইনট ওয়াই) // ফাংশন শিরোনাম {// ফাংশন বডি ইনট সমষ্টি = এক্স + ই রিটার্ন (যোগ)} // মূল ফাংশন int main () {int sum = add (23, 31) printf ('% d', যোগফল) 0 return

আমরা উপরের উদাহরণে দেখতে পাচ্ছি যে আমরা int যোগ = যোগ (23, 31) বিবৃতি ব্যবহার করে ফাংশনটি কল করছি। ফাংশন থেকে প্রত্যাবর্তিত মান যোগফলে ভেরিয়েবলে সংরক্ষণ করা হয়।

আমরা এগিয়ে যাওয়ার আগে প্যারামেন্টটি সম্পর্কে আরও একটি গুরুত্বপূর্ণ ধারণা রয়েছে। দুটি ধরণের প্যারামিটার রয়েছে:

আসল প্যারামিটার : কল করার সময় যে সমস্ত পরামিতি ফাংশনে পাস হয় তারা প্রকৃত প্যারামিটার হিসাবে পরিচিত। উদাহরণস্বরূপ, উপরের উদাহরণে 23 এবং 31 হ'ল আসল পরামিতি।

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

আসুন দ্রুত এগিয়ে যান এবং সি তে একটি ফাংশন কল করার বিভিন্ন উপায়গুলি বুঝতে পারি Let

একটি ফাংশন কলিং

দুটি উপায় রয়েছে যার মাধ্যমে আমরা কোনও ফাংশন বলতে পারি:

  • মান দ্বারা কল করুন
  • রেফারেন্স দিয়ে কল করুন

মান দ্বারা কল করুন

কল পদ্ধতিতে মান পদ্ধতিতে, প্রকৃত প্যারামিটারের মানটি ফাংশনের আর্গুমেন্ট হিসাবে পাস করা হয়। প্রকৃত প্যারামিটারের মানটি আনুষ্ঠানিক পরামিতিগুলি দ্বারা পরিবর্তন করা যায় না।

কল হতে হবে মান পদ্ধতিতে, বিভিন্ন মেমরি ঠিকানা আনুষ্ঠানিক ও আসল পরামিতিগুলিতে বরাদ্দ করা হয়। কেবল প্রকৃত প্যারামিটারের মানটি আনুষ্ঠানিক প্যারামিটারে অনুলিপি করা হয়।

উদাহরণ:

# অকার্যকর কল_বায়_ভ্যালু (অন্তর্নির্মিত সংখ্যা 1) {num1 = 42 মুদ্রণ ('nIside ফাংশন, সংখ্যা% d', num1)} প্রধান প্রধান () {সংখ্যার নাম = 24 প্রিন্টফ ('n ফাংশন, সংখ্যাটি% d', সংখ্যা ) কল_বাই_ভ্যালু (নাম্বার) প্রিন্টফ ('n এর পরে ফাংশন, নম্বরটি% dn', নাম্বার) ফিরে আসুন 0

আউটপুট

উপরের উদাহরণে, মান দ্বারা ফাংশন কল করার আগে, নাম্বার মান 24 হয় Then তারপরে, একবার আমরা ফাংশনটি কল করে মানটি পাস করে ফাংশনের ভিতরে পরিবর্তন করি, তখন এটি 42 হয়ে যায় we আমরা যখন ফিরে আসি এবং আবার মানটি মুদ্রণ করি মূল ফাংশনে সংখ্যাটি, এটি 24 হয়।

রেফারেন্স দিয়ে কল করুন

রেফারেন্স অনুসারে কল করে, প্রকৃত প্যারামিটারের মেমরি ঠিকানা যুক্তি হিসাবে ফাংশনে প্রেরণ করা হয়। এখানে, প্রকৃত প্যারামিটারের মানটি আনুষ্ঠানিক পরামিতি দ্বারা পরিবর্তন করা যেতে পারে।

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

সি তে আমরা রেফারেন্স দ্বারা কল প্রয়োগ করতে পয়েন্টার ব্যবহার করি। যেমন আপনি নীচের উদাহরণে দেখতে পাচ্ছেন, ফাংশন কল_বাই_রেফারেন্সটি একটি পূর্ণসংখ্যার জন্য একটি পয়েন্টার আশা করে।

এখন, এই নাম্বার ভেরিয়েবলটি আসল প্যারামিটারের মেমরি ঠিকানা সঞ্চয় করবে। সুতরাং, num1 দ্বারা নির্দেশিত মেমরি ঠিকানায় সংরক্ষণ করা মানটি মুদ্রণের জন্য আমাদের ডেরিফারেন্স অপারেটর ব্যবহার করা দরকার অর্থাত্ *। সুতরাং, * num1 এর মান 42 হয়।

ঠিকানা অপারেটর এবং যে কোনও ডেটা টাইপের ভেরিয়েবলের ঠিকানা পেতে ব্যবহৃত হয়। সুতরাং ফাংশন কল বিবৃতিতে ‘কল_বাই_সংশ্লিষ্ট (এবং সংখ্যা)’ এ, নাম্বার ঠিকানাটি পাস হয়ে যায় যাতে নামটির ঠিকানা ব্যবহার করে সংশোধন করা যায়।

উদাহরণ

# অন্তর্ভুক্ত // ফাংশন সংজ্ঞা অকার্যকর কল_বায়_সূত্র (int * num1) {* num1 = 42 প্রিন্টফ ('nIside ফাংশন, সংখ্যা% d', * num1)} // প্রধান ফাংশন int প্রধান () {int নাম্বার = 24 প্রিন্টফ ( 'n পূর্বে ফাংশন, সংখ্যাটি% d', নাম্বার) কল_বাই_সংশ্লিষ্ট (এবং সংখ্যা) প্রিন্টফ ('n ফাংশন পরে, নম্বর% dn', সংখ্যা) 0 return ফেরত

আউটপুট

এই উদাহরণে, মূল ফাংশনের অভ্যন্তরে, প্রাথমিকভাবে নাম্বারের মান 24 হয়। একবার এটি কল_বাই_আরফারেন্স ফাংশনে পাস হয়ে গেলে এবং মানটি আনুষ্ঠানিক প্যারামিটার দ্বারা সংশোধন করা হয়, এটি আসল প্যারামিটারের জন্যও পরিবর্তিত হয়ে যায়। এই কারণেই যখন আমরা ফাংশনের পরে নমের মান মুদ্রণ করি তখন এটি 42 টি মুদ্রণ করা হয়।

সি-তে ব্যবহারকারী-সংজ্ঞায়িত ফাংশনগুলির সাথে চলছে

ব্যবহারকারী-সংজ্ঞায়িত প্রকার ফাংশন সি তে

রিটার্ন টাইপ এবং আর্গুমেন্টগুলির উপর ভিত্তি করে বিভিন্ন ধরণের ব্যবহারকারী-সংজ্ঞায়িত ফাংশন রয়েছে।

কোনও আর্গুমেন্ট পাস হয়নি এবং কোনও রিটার্নের মান সহ চলতে থাকবে

1. কোন আর্গুমেন্ট পাস এবং কোন ফেরতের মূল্য

বাক্য গঠন:

কিভাবে জাভা যোগ করতে

ফাংশন ঘোষণা:

শূন্য ফাংশন () ফাংশন কল: ফাংশন () ফাংশন সংজ্ঞা: শূন্য ফাংশন () {বিবরণ}

উদাহরণ

# অন্তর্ভুক্ত শূন্য যোগ () শূন্যস্থান যোগ () x অন্তিম x = 20 ইনট y = 30 ইনট যোগ = x + y প্রিন্টফ ('যোগফল% ডি', যোগফল)} ইনট মেইন () {অ্যাড () রিটার্ন 0}

কোনও আর্গুমেন্ট পাস না করে এগিয়ে চলেছে তবে একটি ফেরতের মান

2 কোনও আর্গুমেন্ট পাস হয়নি তবে একটি রিটার্ন মান

বাক্য গঠন:

ফাংশন ঘোষণা:

int ফাংশন () ফাংশন কল: ফাংশন () ফাংশন সংজ্ঞা: int ফাংশন () {বিবৃতি একটি a

উদাহরণ:

# অন্তর্ভুক্ত অন্তর্ভুক্ত () int যোগ () অন্তর্ভুক্ত x = 20 ইনট y = 30 ইনট যোগ = x + y রিটার্ন (যোগ) main ইন্ট মেইন () {ইন্ট যোগ যোগ = যোগ () প্রিন্টফ ('যোগফল% d', যোগফল 0 return

আর্গুমেন্টগুলি নিয়ে চলতে চলেছে তবে কোনও ফেরতের মান নেই value

3 তর্কটি পাস হয়েছে তবে কোনও ফেরতের মূল্য নেই

বাক্য গঠন:

ফাংশন ঘোষণা:

অকার্যকর ফাংশন (int) ফাংশন কল: ফাংশন (ক) ফাংশন সংজ্ঞা: শূন্য ফাংশন (int a) {বিবরণী}

উদাহরণ:

# অন্তর্ভুক্ত শূন্য যোগ (ইনট, ইনট) শূন্য যোগ (ইনট এক্স, ইনট y) {সমষ্টি = এক্স + ওয়াই রিটার্ন (যোগ)} ইন্ট মেইন () {অ্যাড (23, 31) রিটার্ন 0}

আর্গুমেন্ট পাস এবং একটি রিটার্ন মান সহ চলন্ত

4 তর্কটি পাস হয়েছে এবং একটি ফেরতের মান return

বাক্য গঠন:

ফাংশন ঘোষণা:

int ফাংশন (int) ফাংশন কল: ফাংশন (ক) ফাংশন সংজ্ঞা: int ফাংশন (int a) {বিবৃতি একটি a

উদাহরণ

# অন্তর্ভুক্ত অন্তর্ভুক্ত (অন্তর্নির্মিত, অন্তর্গত) অন্তর্ভুক্ত (অন্তর্নির্মিত x, ইন্টি y) sum অন্তর্ভুক্ত = x + y রিটার্ন (যোগ)} মেইন মেইন () {সমষ্টি = যোগ (23, 31) প্রিন্টফ ('% d') , যোগফল) 0 return

এখন আসুন দ্রুত সি লাইব্রেরির ফাংশনগুলি দেখুন যা একটি প্রোগ্রাম লেখার জন্য গুরুত্বপূর্ণ।

সি লাইব্রেরি ফাংশন

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

উদাহরণস্বরূপ, প্রিন্টফ / স্ক্যানফ ফাংশনগুলি ব্যবহার করতে আমাদের আমাদের প্রোগ্রামে stdio.h অন্তর্ভুক্ত করতে হবে, যা স্ট্যান্ডার্ড ইনপুট / আউটপুট সম্পর্কিত কার্যকারিতা সরবরাহ করে।

নীচে হেডার ফাইলগুলির তালিকা রয়েছে।

একstdio.hস্ট্যান্ডার্ড ইনপুট / আউটপুট শিরোনাম ফাইল
মিন্টিংকনসোল ইনপুট / আউটপুট শিরোনাম ফাইল
স্ট্রিংস্ট্রিং সম্পর্কিত লাইব্রেরি ফাংশন যেমন গেটস (), পুটস () ইত্যাদি।
stdlib.hসাধারণ গ্রন্থাগার ফাংশন যেমন malloc (), কলোক (), প্রস্থান (), ইত্যাদি।
গণিতগণিত অপারেশন সম্পর্কিত ফাংশন যেমন স্কয়ার্ট (), পাও () ইত্যাদি
সময়সময় সম্পর্কিত ফাংশন
7ctype.hক্যারেক্টার হ্যান্ডলিং ফাংশন
8stdarg.hপরিবর্তনশীল যুক্তি ফাংশন
9সংকেতসিগন্যাল হ্যান্ডলিং ফাংশন
10setjmp.hজাম্প ফাংশন
এগারলোকালেস্থানীয় ফাংশন
12errno.hফাংশন পরিচালনার ক্ষেত্রে ত্রুটি
13assert.hডায়াগনস্টিক্স ফাংশন

উপরের সি কার্যক্রমে যাওয়ার পরে আপনি প্রতিটি ফাংশন এবং প্রতিটি ভাষা কীভাবে সি ভাষায় এটি প্রয়োগ করবেন তা বুঝতে পারতেন। আমি আশা করি এই ব্লগটি তথ্যবহুল এবং আপনার কাছে মূল্য সংযোজনযোগ্য।

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

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই ব্লগের মন্তব্য বিভাগে এটি উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।