জাভাস্ক্রিপ্ট টিউটোরিয়াল-শিখুন গল্পে গল্পে সাথে 1100+ Exercise

  • জাভাস্ক্রিপ্ট পরিচিতি-Introduction to JavaScript
  • প্রোগ্রামিং শুরু করতে কতটুকু গণিত লাগে?
  • প্রোগ্রামিং শুরু করতে কতটুকু ইংরেজি জানা লাগে?
  • ভালো প্রোগ্রামার কিভাবে হবো? [+৭টি গুরুত্বপূর্ণ টিপস]
  • function নো টেনশন
  • এক লিটার parameter
  • return করো: ফাংশনের প্রেম
  • ফাংশনের দংশন
  • ধাপে ধাপে ফাংশনের জংশন
  • শেষ মিশন: রিভিশন

ধাপে ধাপে ফাংশনের জংশন


Function-কে যখন আমরা কল করি, তখন বিভিন্ন ধরনের প্যারামিটার ব্যবহার করে function-কে কল করতে পারি। আমরা সংখ্যা দিতে পারি, চাইলেই ভেরিয়েবল দিতে পারি, যেকোনো ধরনের string দিয়েও কল করতে পারি, আবার array দিয়েও সেটাকে কল করতে পারি।


এখন আমরা array সম্পর্কিত কিছু অপারেশন শিখব।


ধর, তোকে একটা array-এর সমস্ত এলিমেন্টের যোগফল আউটপুটে দেখাতে হবে।


একজন প্রোগ্রামার হিসেবে তোকে ধাপে ধাপে চিন্তা করতে হবে। প্রথমেই আমরা আমাদের basic ফাংশনটা তৈরি করার চেষ্টা করব। এসব কিছু তুই চাইলে step by step করে দেখতে পারিস। যেমন:


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


  function sumOfNumbers() {
  
  }
  const result= sumOfNumbers();
  console.log( result);

Output: undefined


এখানে আমরা কোনো প্যারামিটার পাস করিনি, শুধু একটা basic function তৈরি করেছি। এখানে আমরা result নামে একটা ভেরিয়েবল ডিক্লেয়ার করেছি, যেখানে আমরা আমাদের ফাংশন থেকে রিটার্ন করা স্টেটমেন্টটি স্টোর করব। যদিও ফাংশনের ভিতর থেকে আমরা এখনও কিছু রিটার্ন করিনি। তাই সে রিটার্ন হিসেবে undefined দেখাবে অর্থাৎ রিটার্ন ডিফাইন করা হয়নি বা রিটার্ন কিছু দেয়া হয়নি।


স্টেপ-২: একটা প্যারামিটার হিসেবে array পাঠাব। দেখব, সেই array ফাংশনের ভিতরে যাচ্ছে কি না। যদি ঠিকমতো যায়, তাহলে ফাংশনের ভিতরে console.log করলে সেটাকে আউটপুট হিসেবে দেখাবে।


  function sumOfNumbers(numbers) {
     console.log(numbers);
  }

  const result= sumOfNumbers([12, 45, 6, 8, 14]);
  console.log( result);

Output: 
[12, 45, 6, 8, 14]
undefined


স্টেপ-৩: যদি ফাংশনের ভিতরে array-টাকে পাওয়া যায়, তাহলে ফাংশনের ভিতরে লুপ করে দেখব, array-এর প্রতিটা উপাদান আলাদা আলাদাভাবে আউটপুট হিসেবে পাচ্ছি কি না।


  function sumOfNumbers(numbers) {
    for (const number of numbers) {
      console.log(number);
    }
  }

  const result= sumOfNumbers([12, 45, 6, 8, 14]);
  console.log( result);

Output: 
2
45
6
8
14
undefined 


স্টেপ-৪: এখন তোর কাজ হবে ফাংশনের ভিতরে লুপের বাইরে sum নামে একটা ভেরিয়েবল ডিক্লেয়ার করা। তারপর sum ভেরিয়েবলকে যোগফলের একটা স্টোরেজ হিসেবে ব্যবহার কর। যাতে লুপ করে প্রত্যেকবার যে উপাদানটা পাবি, সেটা sum-এর এক্সিস্টিং ভ্যালুর সাথে যোগ করে আবার sum ভ্যারিয়েবলেই স্টোর করবি। আর আমরা যেহেতু যোগ-বিয়োগের কাজ করছি, সেজন্য sum-এর ইনিশিয়াল ভ্যালু 0 রাখবি। আর এইখানে sum ভেরিয়েবলের মান চেইঞ্জ হবে, তাই এটাকে let দিয়ে ডিক্লেয়ার করতে হবে।


  function sumOfNumbers(numbers) {
    let sum = 0;
    for (const number of numbers) {
      sum = sum + number;
      console.log(sum);
    }
  }
  const nums = [54, 62, 12, 6];
  const sum = sumOfNumbers(nums);

Output:  
54
116
128
134



স্টেপ-৫: ভালোভাবে চেক করে দেখবি, sum-এর মান ঠিকমতো আসতেছে কি না। যদি আসে, তাহলে বুঝতে হবে, তোর যোগ ঠিকঠাক হচ্ছে। তাহলে sum-কে রিটার্ন করতে হবে। তবে একটা জিনিস খেয়াল রাখতে হবে— রিটার্ন কিন্তু for লুপের ভিতর থেকে করা যাবে না; বরং লুপের বাইর থেকে করতে হবে। লুপের ভিতরে যেখানে sum-এর মান সেট করা হচ্ছে, সেখানে করলে জাস্ট প্রথমবার sum-এর মান রিটার্ন করে লুপ শেষে হয়ে যাবে। ফাইনাল রেজাল্ট দিবে না। 


এখন চাইলে তুই এই ফাংশনকে বিভিন্নভাবে কল করে দেখতে পারিস, যে এটি ঠিকঠাক কাজ করছে কি না।


  function sumOfNumbers(numbers) {
    let sum = 0;
    for (const number of numbers) {
      sum = sum + number;
    }
    return sum;
  }
  const nums = [54, 62, 12, 6];
  const total = sumOfNumbers(nums);
  console.log('Sum of Numbers is', total);

Output: Sum of Numbers is 54


ওপরের কোডের নিচের দিকে তুই দেখবি, আমি nums নামে array ডিক্লেয়ার করে সেটাকে প্যারামিটার হিসেবে পাঠাচ্ছি sumOfNumbers নামক ফাংশনের মধ্যে। তারপর sumOfNumbers ফাংশন থেকে যেটা রিটার্ন আসবে, সেটাকে আমি total নামক একটা ভেরিয়েবলে রাখছি। তারপর সেই total ভেরিয়েবলকে console.log করতেছি, আরও কিছু টেক্সটসহ।


পুরা কোড এবং থিংকিং প্রসেস দেখে মাথা আউলায় যেতেই পারে। তাই এই কোড তুই তিনবার ভালো করে খেয়াল করে দেখবি।


Advanced: 

এইবার হালকা একটু ঘুরিয়ে দিই, তোকে সব সংখ্যার যোগ করতে হবে, এমন না; বরং শুধু জোড় সংখ্যাগুলোর যোগফল বের করতে হবে। তাহলে কি করবি? একটু চিন্তা কর, নিজে নিজে ট্রাই কর। না হলে নিচের কোডটুকু দেখে বুঝার চেষ্টা কর।


  function evenNumbersSum(numbers) {
     let sum = 0;
     for (const number of numbers) {
      if(number % 2 === 0){
         sum = sum + number;
       }
     }     
     return sum;
  }   
  const nums = [54, 13, 1, 6];   
  const total = evenNumbersSum(nums);
  console.log('Sum of even Numbers is', total);

Output: Sum of even Numbers is 60


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


JavaScript Function Practice:

  1. তোর এক বন্ধুর কাছে কিছু নম্বর আছে: [5, 15, 8, 7]। ওর চাওয়া অনুযায়ী, শুধু বিজোড় সংখ্যাগুলার যোগফল বের করে দে। এই কাজের জন্য একটা ফাংশন লিখে ফলাফলটা রিটার্ন কর।
  2. একটা ফাংশন লিখে দেখ, যেটা array-এর প্রথম দুইটা উপাদানের মধ্যে যেটা ছোট সেটাকে রিটার্ন করবে। উদাহরণস্বরূপ, তুই যদি [20, 45, 78] পাঠাস, ফাংশন 20 রিটার্ন করবে।
  3. তুই তোর বয়স একটু লুকিয়ে-চুপিয়ে দেখাতে চাস। ধর, তোর বয়স 18-এর কম হলে তুই রিটার্ন 18, আবার 45-এর বেশি হলে তুই বলবি 45, আর এই দুইটার মাঝখানে কোনো সংখ্যা হলে সরাসরি সেই সংখ্যাটা রিটার্ন করে পাঠিয়ে দিবি। এমন একটা ফাংশন লিখ।
  4. তোর এক বন্ধুর কাছে একটা array আছে, যেমন: [2, 4, 5, 7, 8, 32, 45]। এখন এমন একটা ফাংশন তৈরি কর, যেটা শুধু array-এর 4 দিয়ে ভাগ যায়, এমন সংখ্যাগুলোর যোগফল দেখাবে।
  5. একটা ফাংশন লিখ, যা একটি নাম্বার নিবে এবং সেটি যদি 20-এর কম হয়, তবে নাম্বারটিকে দ্বিগুণ করবে, না হলে 20 দিয়ে ভাগ করবে।
  6. এমন একটা ফাংশন লিখ, যা array-এর মধ্যে শুধু নেগেটিভ সংখ্যাগুলোর যোগফল রিটার্ন করবে।
  7. একটা ফাংশন লিখ, যা একটি array নিবে এবং array-এর মধ্যে যে সংখ্যাগুলা 3 দিয়ে ভাগ যায়, তাদের গুণফল রিটার্ন করবি।


Previous PageNext Page