লগ লেভেল

লগ লেভেল

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

ভূমিকা

ইনক্লুড

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

ইনক্লুড ডিরেক্টিভ

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

স্ট্যান্ডার্ড লাইব্রেরি

স্ট্যান্ডার্ড লাইব্রেরি অনেক কমন ফাংশন, অ্যালগরিদম ও ডেটা স্ট্রাকচার দেয়। স্ট্যান্ডার্ড লাইব্রেরি std নেমস্পেস ব্যবহার করে।

একটি উদাহরণ হলো C-এর নিউমেরিক লাইব্রেরি cmath। এটি অনেক কমন গাণিতিক অপারেশন সরবরাহ করে।

#include <cmath>

int cube_me(int a) {
    // raise `a` to the third power
    return std::pow(a, 3);
}
Note

স্ট্যান্ডার্ড লাইব্রেরিগুলো ডাবল কোট "-এর বদলে অ্যাঙ্গেল ব্র্যাকেট <> দিয়ে ইনক্লুড করা হয়। পার্থক্যটা লোকেশনেই, অর্থাৎ কম্পাইলার সংশ্লিষ্ট ফাইলগুলো কোথায় খোঁজে সেখানে। অ্যাঙ্গেল ব্র্যাকেটের ক্ষেত্রে বর্তমান প্রজেক্টে খোঁজা বাদ দেওয়া হয়, আর সরাসরি সিস্টেমের ইনক্লুড ডিরেক্টরিগুলোতে খোঁজা শুরু হয়। আপনি যদি লোকাল ফাইল ইনক্লুড করতে চান, তাহলে ডাবল কোট ব্যবহার করবেন: #include "myfile"

স্ট্রিং

C++-এ string হলো একটি মিউটেবল অবজেক্ট, যা টেক্সটকে ক্যারেক্টারের (বর্ণ, সংখ্যা, যতিচিহ্ন ইত্যাদি) একটি ক্রম হিসেবে প্রকাশ করে। স্ট্রিংয়ের মেথডগুলো কল করে স্ট্রিং নিয়ে কাজ করা হয়।

স্ট্রিংস লাইব্রেরি

C++-এ স্ট্রিং টাইপ ও তার সঙ্গে সম্পর্কিত ফাংশনগুলো ব্যবহারের আগে স্ট্রিংস লাইব্রেরি থেকে ইনক্লুড করতে হয়। আপনি ফাইলের একেবারে উপরে #include <string> যোগ করে তা করতে পারেন। এরপর সেগুলো std নেমস্পেসে যুক্ত হবে। স্ট্রিং টাইপের পুরো নামটি হলো std::string। স্ট্রিং লিটারেল ডাবল কোট ক্যারেক্টার ব্যবহার করে: "।

#include <string>
std::string w_berry_quote{"A well-made sentence, I think, is a thing of beauty."};

কমন স্ট্রিং অপারেশন

স্ট্রিং কনক্যাটেনেট করতে আপনি + অপারেটর ব্যবহার করতে পারেন:

std::string original_title{"The School of Rock"};
std::string sequel_indicator{"Electric Boogaloo"};
std::string next_movie_title = original_title + " 2: " + sequel_indicator;

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

std::string qualification{"awesome"};
// 1st argument: from the index to the end of the string:
std::string who_is_awesome = qualification.substr(5);
// => "me"

// 2nd optional argument for the length:
std::string material{"haunted books"};
std::string ghost = material.substr(8, 3);
// => "boo"

find ফাংশনটিও খুব কাজের। এটি স্ট্রিংয়ের উপর একটি মেম্বার ফাংশন হিসেবে কল করা হয় এবং আর্গুমেন্ট হিসেবে একটি স্ট্রিং নেয়। find স্ট্রিংয়ে প্রথম যেটি পাওয়া যায়, তার জিরো-ইনডেক্সড পজিশন রিটার্ন করে।

std::string new_release{"apple released a new app!"};
new_release.find("app");
// => 0
new_release.find("e");
// => 4

নির্দেশনা

এই অনুশীলনীতে আপনি একটি লগ করা রিপোর্টের লাইনগুলো প্রসেস করবেন। প্রতিটি লগ লাইন একটি স্ট্রিং, যার ফরম্যাট নিচের মতো: "[<LEVEL>]: <MESSAGE>"।

এখানে তিনটি আলাদা লগ লেভেল আছে:

  • INFO
  • WARNING
  • ERROR

আপনার সামনে তিনটি কাজ আছে, যার প্রত্যেকটিতে একটি লগ লাইন দেওয়া হবে এবং আপনাকে সেটি নিয়ে কিছু করতে বলা হবে।

1. একটি লগ লাইন থেকে মেসেজ বের করুন

একটি লগ লাইনের মেসেজ রিটার্ন করতে log_line::message মেথডটি ইমপ্লিমেন্ট করুন:

log_line::message("[ERROR]: Invalid operation")
// => "Invalid operation"

2. একটি লগ লাইন থেকে লগ লেভেল বের করুন

একটি লগ লাইনের লগ লেভেল রিটার্ন করতে log_line::log_level মেথডটি ইমপ্লিমেন্ট করুন, যা বড় হাতের অক্ষরে রিটার্ন করতে হবে:

log_line::log_level("[ERROR]: Invalid operation")
// => "ERROR"

3. একটি লগ লাইন রিফরম্যাট করুন

log_line::reformat মেথডটি ইমপ্লিমেন্ট করুন, যা লগ লাইনটি রিফরম্যাট করে, মেসেজটি আগে রাখে আর তার পরে বন্ধনীর মধ্যে লগ লেভেলটি রাখে:

log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
C++ Exercism

লগ লেভেল শুরু করতে প্রস্তুত?

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