ফাংশন C++ উদাহরণ

Phansana C Udaharana



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

উদাহরণ 1:

'iostream' হল হেডার ফাইল যা আমরা এখানে অন্তর্ভুক্ত করেছি কারণ আমাদের এই হেডার ফাইলে ঘোষিত ফাংশনগুলি ব্যবহার করতে হবে। 'iostream' হেডার ফাইলে একটি ফাংশন ঘোষণা রয়েছে। 'std' নামস্থানটিও এখানে যোগ করা হয়েছে। তারপর, আমরা 'FunctorClass' নামে একটি ক্লাস তৈরি করি। এর নিচে, আমরা টাইপ করি 'public' যা এখানে পাবলিক কনস্ট্রাক্টর এবং 'operator()' ফাংশন রাখি। তারপর, আমরা একটি বাক্য রাখি যা আমরা পর্দায় 'cout' বিবৃতিতে রেন্ডার করতে চাই।

এর পরে, আমরা 'main()' ফাংশনকে কল করি এবং তারপর 'my_functor' নাম দিয়ে 'FunctorClass' এর অবজেক্ট তৈরি করি। এখানে, আমরা 'my_functor()' ফাংশনকে কল করি যাতে এটি 'অপারেটর()' ফাংশনের নীচে যোগ করা বিবৃতিটি প্রদর্শন করে।







কোড 1:



# অন্তর্ভুক্ত করুন
ব্যবহার নামস্থান std ;
ক্লাস ফাংশনক্লাস {
সর্বজনীন :
অকার্যকর অপারেটর ( ) ( ) {
cout << 'অপারেশন এখানে বলা হয়েছে' ;
}
} ;
int প্রধান ( ) {
FunctorClass my_functor ;
my_functor ( ) ;

ফিরে 0 ;
}

আউটপুট:



'FunctorClass' এর 'operator()' ফাংশনে যে লাইনটি যোগ করেছি সেটি এখানে 'my_functor' ফাংশন অবজেক্ট ব্যবহার করে প্রদর্শিত হয়েছে।





উদাহরণ 2:

আমরা এখানে 'iostream' হেডার ফাইলটি অন্তর্ভুক্ত করেছি কারণ কিছু ফাংশন ঘোষণা 'iostream' হেডার ফাইলে রয়েছে। 'std' নামস্থানটিও সন্নিবেশ করা হয়েছে৷ এর পরে, আমরা 'SquareClass' নামে একটি ক্লাস তৈরি করি।



এর নীচে, আমরা 'পাবলিক' টাইপ করি যা পাবলিক কনস্ট্রাক্টর এবং এটির নীচে 'int' ডেটা টাইপের 'অপারেটর()' ফাংশনটি অবস্থান করি। আমরা এই 'অপারেটর()' ফাংশনে 'int' ডেটা টাইপের 'val' ভেরিয়েবল পাস করি। এই ফাংশনটি গুণনের ফলাফল প্রদান করে কারণ আমরা 'অপারেটর()' ফাংশনের নীচে 'রিটার্ন()' ফাংশনে 'val * val' সন্নিবেশিত করেছি।

এখন, 'main()' ফাংশনটি এখানে বলা হয়েছে। তারপর, এখানে 'SquareFunctor' ক্লাসের 's_functor' নাম দিয়ে অবজেক্ট তৈরি করা হয়েছে। তারপর, আমরা 'cout' ব্যবহার করি যা তথ্য রেন্ডার করতে সাহায্য করে। এর পরে, আমরা এখানে 'my_functor()' অবজেক্টটিকে একটি ফাংশনের মতো কল করি এবং এটি '5 * 5' এর গুণিতক ফলাফল প্রদান করে কারণ আমরা এটিকে কল করার সময় প্যারামিটার হিসাবে '5' যোগ করেছি।

কোড 2:

# অন্তর্ভুক্ত করুন
ব্যবহার নামস্থান std ;
ক্লাস স্কয়ারক্লাস {
সর্বজনীন :
int অপারেটর ( ) ( int ভাল ) {
ফিরে ( ভাল * ভাল ) ;
}
} ;
int প্রধান ( ) {
SquareClass s_functor ;
cout << 'প্রদত্ত মানের বর্গ হল ' << endl ;
cout << s_ফাংশন ( 5 ) ;

ফিরে 0 ;
}

আউটপুট:

আমরা 'my_functor()' ফাংশনের মত 'SqaureClass' ক্লাসের 'my_functor' অবজেক্টকে কল করার পরে এবং তারপর '5' পাস করার পরে আউটপুট পাই। আমরা '5' সংখ্যার বর্গ হিসাবে '25' পাই।

উদাহরণ 3:

'iostream' শিরোনাম ফাইলটি এখানে অন্তর্ভুক্ত করা হয়েছে কারণ এতে একটি ফাংশন ঘোষণা রয়েছে, এবং 'std' নামস্থান পরে চালু করা হয়েছে। তারপর 'ProductFunctor' ক্লাস তৈরি করা হয়। পাবলিক কনস্ট্রাক্টর, 'পাবলিক', এটির নীচে টাইপ করা হয়েছে এবং 'int' ডাটা টাইপের 'অপারেটর()' ফাংশনটি এটির নীচে অবস্থিত। আমরা এখানে এই ফাংশনটিকে ওভাররাইড করি এবং এতে দুটি প্যারামিটার পাস করি: 'int var1' এবং 'int var2'।

তারপর, আমরা এর নীচে 'রিটার্ন' ব্যবহার করি এবং উভয় ভেরিয়েবলকে গুণ করি যা 'var1 * var2' উভয় সংখ্যার গুণনের ফলাফল প্রদান করে। 'main()' ফাংশনটি এখানে বলা হয় এবং আমরা 'ProductFunctor' ক্লাসের 'P_functor' নাম দিয়ে ক্লাস অবজেক্ট তৈরি করি। তারপর, আমরা 'pro_result' নামে একটি নতুন ভেরিয়েবল শুরু করি এবং 'P_functor' অবজেক্টটিকে কল করার পরে 'P_functor()' ফাংশন হিসাবে বরাদ্দ করি।

আমরা প্যারামিটার হিসাবে '28' এবং '63' পাস করি। এটি উভয় মানকে গুন করবে এবং ফলাফলটিকে 'pro_result' ভেরিয়েবলে সংরক্ষণ করবে যা আমরা এর নিচে 'cout' ব্যবহার করে প্রিন্ট করি এবং 'pro_result' পাস করি।

কোড 3:

# অন্তর্ভুক্ত করুন
ব্যবহার নামস্থান std ;
ক্লাস পণ্য ফাংশন {
সর্বজনীন :
int অপারেটর ( ) ( int var1, int var2 ) {
ফিরে var1 * var2 ;
}
} ;
int প্রধান ( ) {
প্রোডাক্ট ফাঙ্কর P_functor ;
int prod_result = পি_ফাংশন ( 28 , 63 ) ;
cout << 'পণ্যটি হল:' << prod_result << endl ;
ফিরে 0 ;
}

আউটপুট:

আমরা 'P_functor' অবজেক্টটিকে 'P_functor()' ফাংশন হিসাবে কল করার পরে এবং এটিতে মানগুলি পাস করার পরে পণ্যটি পাই। এই মানগুলির গুণফল হল '1764'।

উদাহরণ 4:

এই উদাহরণে 'GreetingFunctorClass' তৈরি করা হয়েছে। তারপর, আমরা 'পাবলিক' কনস্ট্রাক্টর সন্নিবেশ করি এবং এই 'পাবলিক' কনস্ট্রাক্টরে 'অপারেটর()' ফাংশনটি ওভাররাইড করি। আমরা টাইপ করি 'হ্যালো! 'অপারেটর()' ফাংশনের নীচে 'cout' রাখার পরে আমি এখানে একজন C++ প্রোগ্রামার।

এখন আমরা 'main()' কে কল করি। আমরা এখানে 'G_functor' কে 'GreetingFunctorClass' এর অবজেক্ট হিসাবে তৈরি করি এবং তারপর এই 'g_functor' অবজেক্টটিকে 'g_functor()' ফাংশন হিসাবে কল করি। এটি ওভাররাইড করার সময় 'অপারেটর()' ফাংশনে যোগ করা ফলাফল দেয়।

কোড 4:

# অন্তর্ভুক্ত করুন
ব্যবহার নামস্থান std ;
ব্যবহার নামস্থান std ;
ক্লাস শুভেচ্ছা ফানক্টর ক্লাস {
সর্বজনীন :
অকার্যকর অপারেটর ( ) ( ) {
cout << 'হ্যালো! আমি এখানে একজন C++ প্রোগ্রামার' ;
}
} ;
int প্রধান ( ) {
শুভেচ্ছা ফানক্টরক্লাস g_functor ;
g_ফাংশন ( ) ;
ফিরে 0 ;
}

আউটপুট:

এখানে, আমরা লক্ষ্য করতে পারি যে আমরা আমাদের কোডে “অপারেটর()” ফাংশনকে ওভাররড করার সময় যে স্টেটমেন্টটি যুক্ত করেছি তা এখানে প্রদর্শিত হয়েছে কারণ আমরা ক্লাস অবজেক্টকে ফাংশনের মতো বলি।

উদাহরণ 5:

“bits/stdc++.h” এইবার অন্তর্ভুক্ত করা হয়েছে কারণ এতে সমস্ত প্রয়োজনীয় ফাংশন ঘোষণা রয়েছে। তারপর, 'std' নামস্থান এখানে স্থাপন করা হয়েছে। আমরা এখানে যে ক্লাসটি তৈরি করি সেটি হল 'ইনক্রিমেন্ট ফাংশন' ক্লাস। তারপর, আমরা একটি 'প্রাইভেট' কনস্ট্রাক্টর তৈরি করি এবং 'int_num' ভেরিয়েবলটিকে 'int' ডেটা টাইপ দিয়ে আরম্ভ করি।

এর নীচে, 'পাবলিক' কনস্ট্রাক্টর, আমরা 'ইনক্রিমেন্ট ফাংশন' রাখি এবং এর ভিতরে 'int n1' পাস করি। তারপর, আমরা “:” বসানোর পর “int_num(n1)” টাইপ করি। তারপর, আমরা 'int' ডাটা টাইপের 'অপারেটর()' ফাংশনটিকে ওভাররাইড করি এবং এখানে 'int arrOfNum' ঘোষণা করি। তারপরে আমরা 'রিটার্ন' ব্যবহার করি এবং 'int_num + arrOfNum' সন্নিবেশ করি। এখন, এটি 'arrOfNum' এর মান বৃদ্ধি করে, তাদের মধ্যে 'int_num' মান যোগ করে এবং সেগুলি এখানে ফেরত দেয়।

'main()' চালু করার পর, আমরা 'arrOfNum' শুরু করি এবং এখানে বিভিন্ন পূর্ণসংখ্যার মান নির্ধারণ করি। তারপর, 'n1' ভেরিয়েবলটি আরম্ভ করা হয় যেখানে আমরা 'sizeof(arrOfNum)/sizeof(arrOfNum[0])' এর মতো 'sizeof' ফাংশন যোগ করি। এর পরে, 'অ্যাডিশন নম্বর' তারপর '3' দিয়ে আরম্ভ করা হয়। এখন, আমরা 'ট্রান্সফর্ম()' ফাংশনটি ব্যবহার করি। এই 'ট্রান্সফর্ম()' হল 'ইনক্রিমেন্টফঙ্কর' ক্লাসের অবজেক্ট তৈরি করা এবং তারপরে এটির অবজেক্টকে কল করার মতো। এর পরে, আমরা 'for' লুপ ব্যবহার করি এবং তারপর 'arrOfNum[i]' কে 'cout' করি।

কোড 5:

#include
ব্যবহার নামস্থান std ;
ক্লাস incrementFunctor
{
ব্যক্তিগত :
int int_num ;
সর্বজনীন :
incrementFunctor ( int n1 ) : int_num ( n1 ) { }
int অপারেটর ( ) ( int arrOfNum ) const {
ফিরে int_num + arrOfNum ;
}
} ;
int প্রধান ( )
{
int arrOfNum [ ] = { 6 , 3 , 2 , 1 , 9 , 0 , 8 } ;
int n1 = আকার ( arrOfNum ) / আকার ( arrOfNum [ 0 ] ) ;
int সংযোজন সংখ্যা = 3 ;
রূপান্তর ( arrOfNum, arrOfNum + n1, arrOfNum, incrementFunctor ( সংযোজন সংখ্যা ) ) ;

জন্য ( int i = 0 ; i < n1 ; i ++ )
cout << arrOfNum [ i ] << '' ;
}

আউটপুট:

কোডের ফলাফল এখানে দেখানো হয়েছে যেখানে 'incrementFunctor' হল 'Functor' যা ফাংশন হিসাবে ব্যবহার করা হয়।

উদাহরণ 6:

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

যখন আমরা এই ফাংশনটি ব্যবহার করি, তখন এটি মানগুলিকে আরোহী ক্রমে সাজায়। কিন্তু আমরা এখানে 'বৃহত্তর' ব্যবহার করি যা C++ এর পূর্বনির্ধারিত ফাংশন যা একটি অবরোহ পদ্ধতিতে সাজানোর ফলাফল দেয়। এর পরে, আমরা 'for' লুপ এবং তারপর 'cout' এর সাহায্যে সাজানো মানগুলি প্রদর্শন করি।

কোড 6:

# অন্তর্ভুক্ত করুন
# অন্তর্ভুক্ত <অ্যালগরিদম>
# অন্তর্ভুক্ত <ভেক্টর>
#include
ব্যবহার নামস্থান std ;

int প্রধান ( ) {
ভেক্টর < int > myIntegerVector = { 13 , একুশ , 19 , 44 , 32 , 42 , 9 , 6 } ;
সাজান ( myIntegerVector. শুরু ( ) , myIntegerVector. শেষ ( ) , বৃহত্তর < int > ( ) ) ;
জন্য ( int vec_num : myIntegerVector ) {
cout << vec_num << '' ;
}
ফিরে 0 ;
}

আউটপুট:

ভেক্টরের সমস্ত মান সি++-এ পূর্বনির্ধারিত ফাংশনের সাহায্যে একটি অবরোহ পদ্ধতিতে সাজানো হয়েছে যা 'বৃহত্তর' ফাংশন, এবং এর সংজ্ঞা 'কার্যকর' হেডার ফাইলে পাওয়া যায়।

উপসংহার

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