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

  • জাভাস্ক্রিপ্ট পরিচিতি-Introduction to JavaScript
  • প্রোগ্রামিং শুরু করতে কতটুকু গণিত লাগে?
  • প্রোগ্রামিং শুরু করতে কতটুকু ইংরেজি জানা লাগে?
  • ভালো প্রোগ্রামার কিভাবে হবো? [+৭টি গুরুত্বপূর্ণ টিপস]
  • উচ্চতার উষ্ণতা
  • লিপি আপার লিপ ইয়ার
  • বিজোড় সংখ্যার আজিব গড়
  • যমজ বিরিয়ানি
  • অদলবদল ভোম্বল

বিজোড় সংখ্যার আজিব গড়


এইবার তোর কাজ হলো, একটি অ্যারের বিজোড় সংখ্যাগুলোর গড় বা এভারেজ বের করা।


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


১. তুই জানস, একটি অ্যারেতে লুপ চালিয়ে প্রতিটি উপাদানকে পাওয়া যায়। 

২. তুই এইটাও জানস, একটি সংখ্যা জোড় নাকি বিজোড়, সেটা চেক করা যায়। 

৩. লুপ চালিয়ে কীভাবে একাধিক সংখ্যার সমষ্টি বা যোগফল বের করা যায়, সেটাও তুই জানস। 

৪. এমনকি ভাগ কীভাবে করতে হয়, সেটাও জানস। 


অর্থাৎ এই সমস্যা সমাধান করার জন্য যা যা দরকার, তার সবই তুই জানস। শুধু ধৈর্য ধরে ধাপে ধাপে ঠান্ডা মাথায় একটার পর একটা কাজ করতে পারলেই সব কাজ হয়ে যাবে। 


স্টেপ-১: একটা বেসিক ফাংশন লিখে ফেল

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


  function oddAverage() {
   
  }


স্টেপ-২: প্যারামিটার হিসেবে একটা array পাঠিয়ে দে

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


এই কাজ তুই আগেও করছস। এমনকি সেই লুপের ভিতরে তুই অ্যারের প্রতিটা উপাদান কনসোল লগ করতে পারবি। জাস্ট সিম্পলভাবে নিচের মতো করে। 


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

  const nums = [ 12, 13, 65, 11, 24, 31];
  oddAverage(nums);

Output: 12 13 65 11 24 31


এইবার দেখ, একটু একটু করে খেলা জমতে শুরু করছে। এখন জাস্ট ধাপে ধাপে মোমেন্টাম ধরে এগুতে থাক। ঠিকই শেষ পর্যন্ত চলে যেতে পারবি।


স্টেপ-৩: বিজোড়সংখ্যা রাখার জন্য একটা array ডিক্লেয়ার কর

এখন লুপের ভিতরে চেক কর কোনো কোনো উপাদান বিজোড় কিনা। যদি বিজোড় হয়, তাহলে সেই উপাদানকে array-এর মধ্যে পুশ করে দে।


  function oddAverage(numbers) {
    const odds = [ ];
    for (const number of numbers) {
      if (number % 2 === 1) {
        odds.push(number);
      }
    }
  }


স্টেপ-৪: বিজোড়সংখ্যাগুলোর array দেখ

আগের স্টেপে তুই বিজোড়সংখ্যাগুলোর একটা array নিয়েছিস। সেটাকে লুপের বাইরে console log করে আউটপুট দেখ। মনে রাখবি, console কিন্তু for লুপের বাইরে করতে হবে।


function oddAverage(numbers) {
    const odds = [ ];
    for (const number of numbers) {
      if (number % 2 === 1) {
        odds.push(number);
      }
    }
    console.log(odds);
  }

  const nums = [ 12, 13, 65, 11, 24, 31];
  const oddNumberAvg = oddAverage(nums);

Output: [13, 65, 11, 31]


স্টেপ-৫: বিজোড় সংখ্যাগুলোর যোগফল বের কর

এখন যেহেতু বিজোড়সংখ্যার একটা array পেয়ে গেছিস, কাজ হচ্ছে গড় বের করা। তবে গড় বের করতে হলে আগে সবগুলা বিজোড়সংখ্যার উপাদানের যোগফল বের করতে হবে।


  function oddAverage(numbers) {
    const odds = [ ];
    for (const number of numbers) {
      if (number % 2 === 1) {
        odds.push(number);
      }
    }

    let sum = 0;
    for (const number of odds) {
      sum += number;
    }

    console.log(sum);
  }

  const numbers = [42, 13, 58, 65, 81, 96, 7];
  const avg = oddAverage(numbers);

Output: 166 


স্টেপ-৬: গড় বের করার জন্য বিজোড়সংখ্যাগুলো বের কর

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


  function oddAverage(numbers) {
    const odds = [ ];
    for (const number of numbers) {
      if (number % 2 === 1) {
        odds.push(number);
      }
    }

    let sum = 0;
    for (const number of odds) {
      sum += number;
    }
    const count = odds.length;
    const avg = sum / count;
    return avg;
  }

  const numbers = [42, 13, 58, 65, 81, 96, 7];
  const avg = oddAverage(numbers);
  console.log('Average of the odd numbers is: ', avg);

Output: Average of the odd numbers is: 41.5


স্টেপ-৭: বিভিন্ন array দিয়ে টেস্ট কর

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


  const numbers = [ 7];
  const avg = oddAverage(numbers);
  console.log('Average of the odd numbers is: ', avg);

Output: Average of the odd numbers is: 7

স্টেপ-৮: কোনো বিজোড়সংখ্যা না থাকলে NaN দেখাচ্ছে কেন?
ওপরের কোড বিভিন্নভাবে টেস্ট করতে করতে দেখবি, যদি ইনপুট array-এর মধ্যে কোনো বিজোড় সংখ্যা না থাকে, তাহলে আউটপুটে NaN দেখায়। কেন এমন হচ্ছে?

  const numbers = [ 72, 14, 84, 116];
  const avg = oddAverage(numbers);
  console.log('Average of the odd numbers is: ', avg);

Output: Average of the odd numbers is: NaN


স্টেপ-৯: NaN সমস্যা সমাধান

প্রথমে বুঝতে হবে, এইটা কেন হচ্ছে। এইটা হওয়ার কারণ হচ্ছে, যদি কোনো কারণে ইনপুট array-এর মধ্যে কোনো বিজোড় উপাদান না থাকে, তাহলে সেই array-এর length শূন্য (0) হয়ে যায়। অর্থাৎ odds.length-এর মান শূন্য হয়। সে কারণে count ভেরিয়েবলের মান 0 হয়ে যায়। তারপর তুই যখন কোনো কিছুকে 0 দিয়ে ভাগ করবি, সেটা অসীম হয়ে যায়। এইটাকে জাভাস্ক্রিপ্ট NaN দিয়ে প্রকাশ করে। অর্থাৎ Not A Number-এর সংক্ষিপ্ত রূপ NaN হয়। 


এই সমস্যা তুই একাধিকভাবে সল্ভ করতে পারবি। একটা সিম্পল সিস্টেম হবে। যদি বিজোড়সংখ্যার array-এর উপাদানের সংখ্যার মান শূন্য হয়, সেটা একটা if দিয়ে চেক করে তুই গড়কে 0 হিসেবে রিটার্ন করে দিতে পারিস। 


  function oddAverage(numbers) {
    const odds = [ ];
    for (const number of numbers) {
      if (number % 2 !== 0) {
        odds.push(number);
      }
    }

    if (odds.length === 0) {
      return 0; // or another appropriate value
    }

    let sum = 0;
    for (const number of odds) {
      sum += number;
    }
    const avg = sum / odds.length;
    return avg;
  }

  const numbers1 = [2, 4, 6, 8, 10];
  const avg1 = oddAverage(numbers1);
  console.log('Average of the odd numbers is: ', avg1);

Output: Average of the odd numbers is: 0


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


Practice: 

  1. একটি অ্যারের জোড়সংখ্যাগুলোর গড় বা এভারেজ বের করার একটা ফাংশন লিখ এবং বিভিন্ন মান দিয়ে সেই ফাংশনকে চেক করবি, ঠিক রেজাল্ট দিচ্ছে কি না।
  2. একটা অ্যারের বিজোড় সংখ্যাগুলাকে 2 দিয়ে গুণ করে একটি নতুন অ্যারে বানিয়ে নতুন অ্যারে রিটার্ন কর।
  3. একটি অ্যারেতে যদি বিজোড়সংখ্যা না থাকে, তবে "No odd numbers found" দেখানোর ব্যবস্থা কর। আর যদি বিজোড়সংখ্যা থাকে, তাহলে "Odd numbers found" রিটার্ন কর।
  4. একটি অ্যারেতে বিজোড়সংখ্যাগুলোর গড় বের করে দশমিকের পরে দুই ঘর পর্যন্ত মান রিটার্ন কর। 
  5. অ্যারেতে প্রতিটি বিজোড় সংখ্যা থেকে 1 বিয়োগ করে একটি নতুন অ্যারে বানিয়ে ফেল।


Previous PageNext Page