Programming-for-Bioscience

অধ্যায় ৫: ফাংশন (Function)

ব্লগের লেখাগুলোতে আপনারা ধাপে ধাপে R প্রোগ্রামিংয়ের বেশ কিছু মৌলিক বিষয় সম্পর্কে জেনেছেন। আমরা ভেরিয়েবল ব্যবহার করেছি, ভেক্টর বানিয়েছি, কন্ডিশনাল স্টেটমেন্ট লিখেছি এবং লুপ চালিয়েছি। এখন স্বাভাবিকভাবেই একটি প্রশ্ন আপনারা চিন্তা করতে পারেন। “আমি যদি একই কাজ বারবার করতে থাকি, তাহলে কি একই কোড বারবার নতুন করে লিখতে হবে?” এই প্রশ্নের উত্তরই হলো ফাংশন (Function)।

৬.১ ফাংশন কী? (What are Functions?)

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

ফাংশনকে আপনি একটি যন্ত্র বা টুল হিসেবে ভাবতে পারেন। যেমন, একবার আপনি যদি একটি যন্ত্র বানিয়ে ফেলেন যেটা B cell এবং T cell এর ratio বের করে, তাহলে ভবিষ্যতে যতবারই এই হিসাব দরকার হোক না কেন, আপনাকে নতুন করে হিসাব লিখতে হবে না। আপনি শুধুমাত্র শুধু যন্ত্রটি ব্যবহার করলেই হবে। ব্যাপারটি অনেকটা এমন যে আপনাকে আর যন্ত্রটি কিভাবে কাজ করে সেটাও জানতে হবে না। আপনি জানবেন যে এরকম একটা যন্ত্র আছে আর যন্ত্রটি এই কাজ করে।

ফাংশনকে রান্নার রেসিপির সাথে তুলনা করা যায়।

• আপনি একবার রেসিপি লিখে রাখলেন

• পরে শুধু উপকরণ বদলালেই রান্না করা যাবে

• প্রতিবার নতুন করে পুরো রেসিপি লিখতে হবে না

প্রোগ্রামিংয়েও ঠিক তাই। ফাংশন হলো সেই “রেসিপি”, আর ইনপুট ডেটা হলো উপকরণ।

R-এ আমরা আগেই ফাংশন ব্যবহার করেছি। R এ দুইরকম ফাংশন আছে। একটি হল built-in function অন্যটি user-defined function। বাস্তবে আমরা শুরু থেকেই ফাংশন ব্যবহার করে আসছি। যেমন:

• mean() → গড় বের করে

• sum() → যোগফল বের করে

• length() → কতগুলো মান আছে বলে

• print() → আউটপুট দেখায়

এগুলো সবই R-এর built-in function। ব্যাপারটি নিয়ে যদি একটু চিন্তা করে তাহলে দেখবেন যে এই ফাংশন গুলো কিছু কাজ করছে। ধরুন mean()। বাংলায় গড়। আমরা কি করি সাধারণত? ধরুন ৩ টা সংখ্যা আছে। ১,২,৩। এর গড় কত? আমরা ৩ টা সংখ্যা যোগ করে যতগুলো সংখ্যা আছে টা দিয়ে ভাগ করি। ১+২+৩ = ৬। ৬ কে ৩ দিয়ে ভাগ করলে দাঁড়ায় ২। সুতরাং গড় হল দুই। আমরা এই কাজটি সহজেই একটি ফাংশন দিয়ে করে পারি এবং আমাদের ভেতরে কি কাজ হচ্ছে সেটা জানা লাগে না।

number <- c(1,2,3)
mean(number)

Output

[1] 2

এক্ষেত্রে দেখতে পাচ্ছেন আমরা mean() ব্যবহার করে কাজ করে ফেলছি কিন্তু mean() এর ভেতরে কি হচ্ছে সেটা আমাদের জানার দরকার হচ্ছে না। এটি হল R-এর built-in function। এখন আমরা শিখব, নিজেদের প্রয়োজন অনুযায়ী ফাংশন কিভাবে বানাতে হয়।

৬.২ কিভাবে ফাংশন তৈরি করা হয় (How to Create Functions)

R-এ ফাংশন তৈরি করতে আমরা function() ব্যবহার করি। একটি ফাংশনের সাধারণ কাঠামো হলো:

function_name <- function(input) {
  # code
  return(output)
}

এখানে প্রতিটি অংশের আলাদা অর্থ আছে।

ফাংশনের প্রতিটি অংশ বোঝা

• function_name

এটি ফাংশনের নাম। এই নাম ব্যবহার করেই আমরা পরে ফাংশনটি চালাব।

• input

যেই ডেটা বা মান আমরা ফাংশনের ভেতরে পাঠাব।

• #code ফাংশনের ভেতরের কোড

এখানে আসল কাজটি করা হয়। এই অংশেই মূলত কাজ হয়।

• return()

ফাংশনের ফলাফল বাইরে পাঠানোর জন্য ব্যবহার করা হয়।

ধাপে ধাপে একটি বাস্তব উদাহরণ

ধরুন, আমরা খুবই সাধারণ একটি কাজ করি— B cell এবং T cell এর ratio বের করা। প্রতিবার নিচের মতো কোড লেখা ঝামেলার:

ratio <- b_cells / t_cells

তাই আমরা এটাকে একটি ফাংশনে রূপ দিই।

উদাহরণ ১: B cell এবং T cell ratio বের করার ফাংশন

bt_ratio <- function(b_cells, t_cells) {
  ratio <- b_cells / t_cells
  return(ratio)
}

এখন এই ফাংশনটি তৈরি হয়ে গেছে।

ফাংশন ব্যবহার করা

bt_ratio(500, 250)

Output

[1] 2

এখানে কী ঘটছে? • 500 গেছে b_cells এর জায়গায় • 250 গেছে t_cells এর জায়গায় • ফাংশনের ভেতরে division হয়েছে • ফলাফল return() দিয়ে বেরিয়ে এসেছে এই ফাংশনটি এখন একটি সাধারণ টুল, যেটা যেকোনো ল্যাবের জন্য ব্যবহার করা যাবে। একাধিক মানের উপর ফাংশন ব্যবহার

b_cells <- c(500, 700, 400)
t_cells <- c(250, 350, 200)

bt_ratio(b_cells, t_cells)

এতে প্রতিটি ল্যাবের ratio একসাথে পাওয়া যাবে। এটি R-এর vectorised কাজ করার ক্ষমতার একটি সুন্দর উদাহরণ।

ফাংশন কেন কোডকে শক্তিশালী করে?

একটি ফাংশন ব্যবহার করলে:

• একই লজিক এক জায়গায় থাকে

• ভবিষ্যতে পরিবর্তন করা সহজ হয়

• বড় প্রজেক্টে কাজ করা সহজ হয়

ধরুন, পরে আপনি ratio হিসাবের নিয়ম বদলাতে চান। ফাংশন থাকলে আপনাকে শুধু এক জায়গায় পরিবর্তন করলেই হবে।

পরিশেষে নিজের কিছু মত।

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

আপডেট পাওয়ার জন্য নিবন্ধন করুন (Register for Updates)

আপনি যদি এই ব্লগের নিয়মিত আপডেট পেতে চান, তাহলে নিচের ফর্মটি পূরণ করুন। আমি নতুন কোনো কন্টেন্ট যোগ করার সাথে সাথেই আপনাকে ইমেইলের মাধ্যমে জানিয়ে দেব।

ফর্ম পূরণ করতে এখানে ক্লিক করুন