ট্র্যাক
/
JavaScript
JavaScript
/
অনুশীলনী
/
লুসিয়ানের সুস্বাদু লাসাগনা
লুসিয়ানের সুস্বাদু লাসাগনা

লুসিয়ানের সুস্বাদু লাসাগনা

লার্নিং অনুশীলনী

ভূমিকা

JavaScript একটি ডাইনামিক ভাষা, যা অবজেক্ট-ওরিয়েন্টেড, ইম্পারেটিভ ও ডিক্লারেটিভ (যেমন ফাংশনাল প্রোগ্রামিং) স্টাইল সমর্থন করে।

ভ্যারিয়েবল

JavaScript-এ নামের সাথে মান অ্যাসাইন করার কয়েকটি প্রধান উপায় রয়েছে, যেমন ভ্যারিয়েবল বা কনস্ট্যান্ট ব্যবহার করা। Exercism-এ ভ্যারিয়েবল সবসময় camelCase স্টাইলে লেখা হয়; আর কনস্ট্যান্ট লেখা হয় SCREAMING_SNAKE_CASE স্টাইলে। এখানে অনুসরণ করার মতো কোনো অফিসিয়াল গাইড নেই, আর বিভিন্ন কোম্পানি ও প্রতিষ্ঠানের স্টাইল গাইডও আলাদা আলাদা। ভ্যারিয়েবল আপনি যেভাবে খুশি লিখতে পারেন। অনুশীলনীগুলো যেভাবে তৈরি করা হয়েছে, সেভাবে ভ্যারিয়েবল লিখলে একটা সুবিধা আছে: ওয়েব ইন্টারফেস আর বেশিরভাগ IDE-তে সেগুলো ভিন্নভাবে হাইলাইট হয়।

JavaScript-এ ভ্যারিয়েবল const, let বা var কিওয়ার্ড দিয়ে ডিফাইন করা যায়।

let বা var ব্যবহার করলে একটি ভ্যারিয়েবল তার জীবনকাল ধরে ভিন্ন ভিন্ন মান রেফার করতে পারে। যেমন, অ্যাসাইনমেন্ট অপারেটর = দিয়ে myFirstVariable নামটি অনেকবার ডিফাইন ও রিডিফাইন করা যায়:

let myFirstVariable = 1;
myFirstVariable = 'Some string';
myFirstVariable = new SomeComplexClass();

let আর var-এর বিপরীতে, const দিয়ে ডিফাইন করা ভ্যারিয়েবল কেবল একবারই অ্যাসাইন করা যায়। JavaScript-এ কনস্ট্যান্ট ডিফাইন করতে এটাই ব্যবহার করা হয়।

const MY_FIRST_CONSTANT = 10;

// Can not be re-assigned.
MY_FIRST_CONSTANT = 20;
// => TypeError: Assignment to constant variable.
Note

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

ফাংশন ডিক্লারেশন

JavaScript-এ কার্যকারিতার এককগুলো ফাংশনে এনক্যাপসুলেট করা থাকে, আর একসাথে থাকার মতো ফাংশনগুলো সাধারণত একই ফাইলে একত্রে রাখা হয়। এই ফাংশনগুলোর প্যারামিটার থাকে (তাই এরা আর্গুমেন্ট নিতে পারে), আর return কিওয়ার্ড দিয়ে একটি মান রিটার্ন করতে পারে। () সিনট্যাক্স দিয়ে ফাংশন কল করা হয়।

function add(num1, num2) {
  return num1 + num2;
}

add(1, 3);
// => 4

এই উদাহরণে ফাংশনের নাম add। এটির দুটি প্যারামিটার আছে, num1 আর num2। এটি একটি মান রিটার্ন করে: num1 + num2 এক্সপ্রেশনের ফলাফল

এরপর add ফাংশনটিকে দুটি আর্গুমেন্ট দিয়ে কল করা হয়: 1 আর 3। ফাংশনের ফলাফল, অর্থাৎ রিটার্ন ভ্যালুটি, হচ্ছে 4।

Note

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

অন্য ফাইলে এক্সপোজ করা

function, কনস্ট্যান্ট বা ভ্যারিয়েবল অন্য ফাইলেও ব্যবহারের জন্য পাওয়া করতে হলে export কিওয়ার্ড দিয়ে সেগুলো এক্সপোর্ট করতে হয়। এরপর অন্য একটি ফাইল import কিওয়ার্ড দিয়ে এগুলো ইমপোর্ট করতে পারে। এটিকে মডিউল সিস্টেমও বলা হয়।

সব টেস্ট কীভাবে কাজ করে, সেটাই এর একটি ভালো উদাহরণ। প্রতিটি অনুশীলনীতে অন্তত একটি ফাইল থাকে, যেমন lasagna.js, যেটিতে ইমপ্লিমেন্টেশন থাকে। ইমপ্লিমেন্টেশনটি ফাইল থেকে export করা হয়, ফলে অন্য ফাইলে এটি ইমপোর্ট করে ব্যবহার করা যায়। এছাড়া অন্তত আরেকটি ফাইল থাকে, যেমন lasagna.spec.js, যেটিতে টেস্টগুলো থাকে। এই ফাইলটি ইমপ্লিমেন্টেশন টেস্ট করার জন্য পাবলিক (অর্থাৎ export করা) এনটিটিগুলো import করে:

// file.js
export const MY_VALUE = 10;

export function add(num1, num2) {
  return num1 + num2;
}

// file.spec.js
import { MY_VALUE, add } from './file';

add(MY_VALUE, 5);
// => 15

নির্দেশনা

Lucian-এর বান্ধবী এখন বাড়ির পথে, অথচ তিনি তাদের বিবাহবার্ষিকীর রাতের খাবার এখনও রান্না করেননি!

এই অনুশীলনীতে আপনি কিছু কোড লিখবেন, যাতে Lucian তার প্রিয় রান্নার বই দেখে একটি চমৎকার লাসাগনা রান্না করতে পারেন।

লাসাগনা রান্না করতে যে সময় লাগে, তার সঙ্গে সম্পর্কিত চারটি কাজ আপনার সামনে আছে।

1. মিনিটে প্রত্যাশিত ওভেনের সময় নির্ধারণ করুন

EXPECTED_MINUTES_IN_OVEN কনস্ট্যান্টটি ডিফাইন করুন, যেটি বোঝায় লাসাগনাটি কত মিনিট ওভেনে থাকা উচিত। এটি এক্সপোর্ট করা আবশ্যক। রান্নার বই অনুযায়ী, মিনিটে প্রত্যাশিত ওভেনের সময় হলো 40।

2. মিনিটে বাকি ওভেনের সময় হিসাব করুন

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

remainingMinutesInOven(30);
// => 10

3. মিনিটে প্রস্তুতির সময় হিসাব করুন

preparationTimeInMinutes ফাংশনটি ইমপ্লিমেন্ট করুন, যেটি প্যারামিটার হিসেবে নেয় আপনি লাসাগনায় কতগুলো স্তর যোগ করেছেন, আর রিটার্ন করে লাসাগনা প্রস্তুত করতে আপনার কত মিনিট লেগেছে। ধরে নিন, প্রতিটি স্তর প্রস্তুত করতে আপনার ২ মিনিট লাগে।

preparationTimeInMinutes(2);
// => 4

4. মিনিটে মোট কাজের সময় হিসাব করুন

totalTimeInMinutes ফাংশনটি ইমপ্লিমেন্ট করুন, যেটি দুটি প্যারামিটার নেয়: numberOfLayers প্যারামিটারটি হলো আপনি লাসাগনায় যোগ করা স্তরের সংখ্যা, আর actualMinutesInOven প্যারামিটারটি হলো লাসাগনাটি কত মিনিট ওভেনে আছে তার সংখ্যা। ফাংশনটি রিটার্ন করবে লাসাগনা রান্না করতে আপনি মোট কত মিনিট কাজ করেছেন, যা হলো প্রস্তুতির সময় মিনিটে এবং এই মুহূর্তে লাসাগনাটি ওভেনে যত মিনিট কাটিয়েছে তার যোগফল।

totalTimeInMinutes(3, 20);
// => 26
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
JavaScript Exercism

লুসিয়ানের সুস্বাদু লাসাগনা শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, JavaScript ট্র্যাকের 37টি কনসেপ্ট159টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।