Loading AI tools
উইকিপিডিয়া থেকে, বিনামূল্যে একটি বিশ্বকোষ
কম্পিউটার বিজ্ঞানে একটি সাবরুটিন হলো কোডের একটি অংশ যা একটি নির্দিষ্ট কাজ সম্পাদনা করে এবং কোডের অন্যান্য অংশ অপেক্ষা স্বাধীন। একে ফাংশন,রুটিন,মেথড ইত্যাদিও বলা হয়ে থাকে। সাবরুটিনের সাহায্য জটিল প্রোগ্রামকে ছোট ছোট অংশে বিভক্ত করা যায়।[1]
মরিস উইলকস,ডেভিড হুইলার এবং স্ট্যানলি গিল প্রথম সাবরুটিনের ধারণা সৃষ্টি করেন। তারা এটার নাম দিয়েছিলেন "বদ্ধ সাবরুটিন" (closed subroutine)।[2]
সাবরুটিন একটি শক্তিশালি হাতিয়ার। সাবরুটিনের ব্যবহার বড় প্রোগ্রামে তৈরি এবং রক্ষণাবেক্ষন সহজ করে দেয় এবং নির্ভরযোগ্যতা ও মান বৃদ্ধি করে। বেশ কিছু সাবরুটিন নিয়ে লাইব্রেরি তৈরি করা হয় যেটা সফটওয়্যার তৈরিতে খুবই গুরুত্বপূর্ণ।
অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এ ক্লাসের সাথে সম্পর্কযুক্ত সাবরুটিনকে মেথড বলা হয়।
প্রায় প্রতিটি প্রোগ্রামিং ভাষায় লেখা কোডে একটি মূল অংশ থাকে যাকে বলা হয় মেইন রুটিন বা মেইন ফাংশন। প্রোগ্রাম চালু করলে মেইন রুটিন প্রথমে চালু হয়। একটি সাবরুটিন হলো মেইন রুটিনের বাইরে কোডের একটি বিশেষ অংশ যেখানে কোনো একটি নির্দিষ্ট কাজ করার জন্য কিছু নির্দেশনা থাকে।
ফাংশনঃ long integer factorial(integer n)
রিটার্ণটাইপ=লং ইন্টিজার
নাম=factorial
প্যারামিটার=ইন্টিজার
সি/সি++ এর পরিভাষায় সাবরুটিনকে ফাংশন বলা হয়। নিচের সি/সি++ কোডে কোনো সংখ্যার ফ্যাক্টরিয়াল নির্ণয়ের জন্য একটি সাবরুটিন/ফাংশন লেখা হয়েছে। সাবরুটিন ব্যবহার করে কোডের যেকোনো জায়গায় কোনো সংখ্যার ফ্যাক্টরিয়াল নির্ণয় করা সম্ভব,বারবার একই কোড লেখার প্রয়োজন নেই।[3]
int factorial(int n)
{
int fact=1;
for(int i=1;i<=n;i++)
fact=fact*i;
return fact;
}
int main()
{
printf("%d\n",factorial(5));
return 0;
}
একটি সাবরুটিনের মধ্যে যেসব ভ্যারিয়েবল ডিক্লেয়ার করা হয় সেগুলো ওই সাবরুটিনের লোকাল ভ্যারিয়েবল,এদের কোডের অন্যান্য অংশে ব্যবহার করা যায়না। সাবরুটিনের কাজ শেষ হয়ে গেলে ভ্যারিয়েবলগুলোর কাজও শেষ হয়ে যায়। সাবরুটিন যখন ইনভোক করা হয় তখন এদের তৈরি করা হয়। নিচের কোডে পাই একটি লোকাল ভ্যারিয়েবলঃ
double area(int r)
{
const double pi=3.14;
return pi*r*r;
}
int main()
{
printf("%lf\n",area(6));
printf("%lf\n",pi); //this line will give compile error
return 0;
}
কোডটি ইরোর প্রদর্শন করবে কারণ pi হলো এরিয়া সাবরুটিনের লোকাল ভ্যারিয়েবল একে মেইন সাবরুটিনে ব্যবহার করা যাবেনা।
গ্লোবাল ভ্যারিয়েবলকে কোডের যেকোনো অংশে ব্যবহার করা যায়। এদের প্রোগ্রাম প্রথমবার চালু করার সময় তৈরি করা হয়। নিচের সি/সি++ কোডে pi একটি গ্লোবাল ভ্যারিয়েবল।[4]
const double pi=3.14;
double area(int r)
{
return pi*r*r;
}
int main()
{
printf("%lf\n",area(6));
printf("%lf\n",pi);
return 0;
}
একই নামে একাধিক সাবরুটিন তৈরি করা যায়। তবে একই নামের যেকোনো দুটি মেথডের সবগুলো প্যারামিটার ও রিটার্ণটাইপ একই হতে পারবেনা। সাবরুটিন কল করার সময় প্যারামিটার আর রিটার্ণ টাইপ দেখে বুঝে নেয়া হয় কোন মেথডটিকে কল করা হয়ছে। একে ওভারলোডেড সাবরুটিন বা সাবরুটিন ওভারলোডিং বা ফাংশন ওভারলোডিং বলা হয়। নিচের সি++ কোডে দুটি এরিয়া সাবরুটিন তৈরি করা হয়েছে কিন্তু দুটির প্যারামিটার ভিন্নঃ
#include<iostream>
using namespace std;
double area(double h,double w){
return h*w;
}
double area(double r){
return r*r*3.14;
}
int main(){
double rectangle_area=area(3,4);
double circle_area=area(5);
cout<<rectangle_area<<endl;
cout<<circle_area<<endl;
return 0;
}
একটি সাবরুটিন নিজেই নিজেকে ইনভোক করলে সেটাকে রিকার্সিভ সাবরুটিন বলা হয়। প্রথমবার অন্য কোনো রুটিন থেকে ইনভোক করার পর এটা নিজে নিজেকে বারবার ব্যবহার করতে পারে। ফিবোনাচ্চি সংখ্যা বের করার জন্য রিকার্সিভ সাবরুটিন এরকমঃ
int fib(int n)
{
if(n<=1) return n;
return fib(n-1)+fib(n-2);
}
যখন সাবরুটিন নিজে নিজেকে ইনভোক করে তখন স্ট্যাক এ আগেরটা তথ্য রেখে দিয়ে নতুন করে সাবরুটিনের ভ্যারিয়েবল তৈরি করে কাজ করা হয়।
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.