ফাংশনের দংশন

ফাংশনের মাধ্যমে তুই একটি কাজ ডিফাইন করতে পারবি। কাজটাকে আরও ডায়নামিক করতে চাইলে প্যারামিটার ব্যবহার করতে পারবি। আবার, কাজটি সম্পন্ন করে যদি কোনো আউটপুট পেতে চাস, তাহলে রিটার্ন স্টেটমেন্ট ব্যবহার করে সেটাকে রিটার্ন করতে পারবি। এটাই হচ্ছে ফাংশনের বেসিক কথাবার্তা। এইগুলা সিম্পল মনে হলেও ফাংশনের প্র্যাকটিকাল কিছু উদাহরণ দেখলেই বুঝবি, এই জিনিসগুলার ওপরেই বড় বড় সফটওয়্যার বানানো হয়।
এখন একটা ফাংশন লিখ, যা তোর দেওয়া string-এর মধ্যে জোড়সংখ্যক উপাদান আছে, না-কি বিজোড়সংখ্যক উপাদান আছে, তা return করবে।
এটাকে আমরা কয়েকটা স্টেপে করব। যাতে তুই বুঝতে পারস, কোনো একটা প্রব্লেম সল্ভ করার জন্য বা কোনো একটা কিছু করার জন্য একজন প্রোগামার কীভাবে একটু একটু করে চিন্তা করে। একটু একটু করে কোড করে। সাথে সাথে আউটপুট চেক করে এবং আউটপুট ঠিক হলে নেক্সট স্টেপে যায়। খুবই সিম্পল একটা উদাহরণ দিয়েই শুরু করি। কী বলিস?
স্টেপ-১: প্রথমে দেখব যে, আমাদের ফাংশনটা ঠিকঠাকমতো কাজ করছে কি না। অর্থাৎ সেটাকে একবার প্রিন্ট করে দেখব যে, এখানে আমাদের ফাংশনটা কাজ করছে কি না।
function evenSizedString(str) {
console.log(str);
}
evenSizedString('Dhaka');
Output: Dhakaআমাদের string টা ঠিকঠাক মতোই কাজ করছে।
স্টেপ-২: আমরা জানি, কীভাবে কোনো string-এর length বের করতে হয়। সেটাই ফাংশনের ভিতরে size নামে একটা ভেরিয়েবলে রাখলাম। তুই চাইলে length বা অন্য কোনো মিনিংফুল নাম দিতে পারস। মিনিংফুল নাম বলতে বুঝায় যে, নাম দিয়ে বুঝা যাবে বা ধারণা করা যাবে, এই ভেরিয়েবলের মধ্যে কী রাখা আছে বা এইটার কাজ কী।
function evenSizedString(str) {
const size = str.length;
console.log(str, size);
}
evenSizedString('Dhaka');
Output: Dhaka 5
স্টেপ-৩: এখন দেখব, যে length আমরা বের করেছি, সেটা জোড়সংখ্যা কি না।
function evenSizedString(str) {
const size = str.length;
if (size % 2 === 0) {
console.log('Even Size');
} else {
console.log('Odd Size');
}
}
evenSizedString('Dhaka');
Output: Odd sizeএর মাধ্যমে আমরা জানতে পারলাম, যেকোনো string-এর সাইজ জোড়সংখ্যা নাকি বিজোড়সংখ্যা। তবে এইসব ক্ষেত্রে console log না করে বরং true অথবা false রিটার্ন করা হয়।
এখন যদি তুই চাস, এটাকে রিটার্ন স্টেটমেন্ট ব্যবহার করে রিটার্ন করতে পারিস।
function evenSizedString(str) {
const size = str.length;
if (size % 2 === 0) {
return true
} else {
return false;
}
}
const isEven = evenSizedString('Human');
console.log(isEven);
Output: falseএখন হালকা একটু ডিফারেন্ট একটা ফাংশন দেখি। এইখানে দুইটা প্যারামিটার। প্রথম প্যারামিটারে একটা সংখ্যা। আর সেকেন্ড প্যারামিটারে একটা বুলিয়ান। যদি সেকেন্ড প্যারামিটারের মান true হয়, তাহলে প্রথম প্যারামিটার হিসেবে যে সংখ্যা আসবে, সেটাকে দ্বিগুণ করে গুণফল রিটার্ন করবি। আর যদি সেকেন্ড প্যারামিটার false হয়, তাহলে প্রথম প্যারামিটারকে তিনগুণ করে রেজাল্টকে রিটার্ন করবি। নিচে এই ফাংশনকে দুইবার কল করা হয়েছে। দুইটা আলাদা প্যারামিটার দিয়ে।
function doubleOrTriple(num, doDouble) {
if (doDouble === true) {
const result = num * 2;
return result;
} else {
const result = num * 3;
return result;
}
}
console.log(doubleOrTriple(5, true));
console.log(doubleOrTriple(5, false));
Output:
10
15এখানে তুই নতুন একটা জিনিস দেখতে পাচ্ছস, সেটা হচ্ছে আমরা প্যারামিটারের মধ্যে কোনো একটা বুলিয়ান ভ্যালু পাস করছি। সুতরাং তুই চাইলে যেকোনো ফাংশনের মধ্যে বুলিয়ান টাইপের ভ্যালু পাস করতে পারিস।
আবার, তুই চাইলে যেকোনো ফাংশনের মধ্যে প্যারামিটার হিসেবে array ও পাস করতে পারিস। নিচে একটা ফাংশন আছে, যেটার প্যারামিটার হিসেবে একটা nums নামক একটা array-কে নেওয়া হচ্ছে। তারপর সেই array-এর মধ্যে উপাদান কয়টা আছে, সেটাকে একটা ভেরিয়েবলে রেখে সেই ভেরিয়েবলকে রিটার্ন করে দিচ্ছে।
function numberOfElement(nums) {
const len = nums.length;
return len;
}
const len = numberOfElement([12, 45, 78, 45, 121254, 4, 5]);
console.log(len);
Output: 7JavaScript Function Practice:
- তোর দেওয়া array-এর মধ্যে যতগুলো উপাদান আছে, উপাদানের সংখ্যা জোড় নাকি বিজোড়, তা চেক কর। ফাংশন লিখে এটা করে দেখ।
- ধর, তোকে এমন একটা ফাংশন বানাতে হবে, যেটাতে একটা নাম পাস করলে সেটার প্রথম অক্ষরটা রিটার্ন করবে। ধর 'Raju' দিলে 'R' রিটার্ন করবে।
- তুই একটা ফাংশন বানাবি, যেটাতে একটা সংখ্যা দিবি। ফাংশনটা চেক করবে, সংখ্যাটা 10-এর বড় কি না। বড় হলে 10 দিয়ে ভাগ করবে। আর 10-এর ছোট হলে 10 দিয়ে গুণ করবে। তারপর রেজাল্ট রিটার্ন করবে।
- একটা ফাংশন বানা, যেটা একটা array নিবে এবং array-এর প্রথম এবং দ্বিতীয় উপাদান যোগ করে যোগফল রিটার্ন করবে।
- একটা ফাংশন বানাবি, যেটা কোনো সংখ্যা n পাবে, আর সেই সংখ্যা দ্বিগুণ করে রিটার্ন করবে, যদি n পজিটিভ হয়। যদি n নেগেটিভ হয়, তাহলে তিনগুণ করে রিটার্ন করবে।
- তুই এমন একটা ফাংশন লিখবি, যা দুইটা নাম নিবে, প্রথম নাম আর দ্বিতীয় নাম। যদি প্রথম নামের দৈর্ঘ্য দ্বিতীয় নামের দৈর্ঘ্যের চেয়ে বেশি হয়, তাহলে true রিটার্ন করবে, না হলে false।
- তুই এমন একটি ফাংশন লিখ, যা দুইটি সংখ্যা নিবে এবং তাদের গুণফল রিটার্ন করবে। তবে, গুণফল 100-এর বেশি হলে শুধু তার অর্ধেক রিটার্ন করবে।