মডিউল ১-০ঃ সূচনা
আজ শুরু হচ্ছে তোমাদের নতুন কোর্স সি++ এর যাত্রা। সি এবং সি++ প্রায় সিমিলার। তাই শিখতে গিয়ে তোমাদের খুব বেশী বেগ পেতে হবেনা। মডিউল গুলো ভালোভাবে দেখে দেখে বুঝার ট্রাই করবে এবং কয়েকবার করে প্রতিটি জিনিস প্র্যাক্টিস করবে। আজকের মডিউলের সবগুলো বেসিক কন্সেপ্ট। তাই মাথা ঠান্ডা রেখে শুরু করে দাও।
গিটহাব রিপো লিঙ্কঃ https://github.com/phitronio/Batch-5-Introduction-to-cpp-for-DSA
সি++ প্রোগ্রামিং কি?
সি++ প্রোগ্রামিং হলো একটি উচ্চস্তরের কম্পিউটার প্রোগ্রামিং ভাষা, যা সি প্রোগ্রামিং ভাষার একটি সম্প্রসারিত সংস্করণ।১৯৮০ সালে সি ভাষার একটি বর্ধিতাংশ রূপ হিসেবে তৈরি করা হয়েছিল। মূলত সি প্রোগ্রামিং ভাষার সুবিধাজনক বৈশিষ্ট্যগুলোর সমন্বয় সাধন করে সি++ তৈরি করা হয়।
সি++ এর কিছু বৈশিষ্ট্য:
- Object-Oriented Programming (OOP) সমর্থন করে: সি++ OOP-এর ধারণাগুলোকে সমর্থন করে, যেমন ক্লাস, অবজেক্ট, ইনহেরিটেন্স, পলিমর্ফিজম এবং এনক্যাপসুলেশন। এটি জটিল সফ্টওয়্যার ডিজাইন এবং বাস্তবায়নকে সহজ করে তোলে।
- High Performance: সি++ একটি উচ্চ-পারফরম্যান্স প্রোগ্রামিং ভাষা, যা এটিকে সিস্টেম প্রোগ্রামিং, গেম ডেভেলপমেন্ট এবং অন্যান্য কম্পিউটার-নিবিড় অ্যাপ্লিকেশনের জন্য উপযুক্ত করে তোলে।
- Wide Variety of Libraries: সি++-এর জন্য বিস্তৃত লাইব্রেরি এবং টুলস উপলব্ধ রয়েছে যা বিভিন্ন ধরণের অ্যাপ্লিকেশন ডেভেলপমেন্টকে সহায়তা করে।
সি++ ব্যবহারের কিছু ক্ষেত্র:
- সিস্টেম প্রোগ্রামিং: অপারেটিং সিস্টেম, ডিভাইস ড্রাইভার এবং অন্যান্য সিস্টেম-লেভেল সফ্টওয়্যার তৈরি করতে।
- গেম ডেভেলপমেন্ট: 2D এবং 3D গেম তৈরি করতে।
- Graphics and Scientific Computing: গ্রাফিক্স অ্যাপ্লিকেশন, সাইন্টিফিক কম্পিউটেশন এবং মেশিন লার্নিং অ্যাপ্লিকেশন তৈরি করতে।
- Web Development: ওয়েব সার্ভার, ওয়েব অ্যাপ্লিকেশন এবং নেটওয়ার্কিং অ্যাপ্লিকেশন তৈরি করতে।
- Embedded Systems: এম্বেডেড সিস্টেম, যেমন মাইক্রোকন্ট্রোলার-ভিত্তিক ডিভাইসগুলিতে ব্যবহৃত সফ্টওয়্যার তৈরি করতে।
মডিউল ১-১ঃ C++ Setup for Windows
সি++ এর এক্সটেনশনঃ সি প্রোগ্রামিং এ ফাইল Create করার সময় .c ব্যবহার করতাম (Example: test.c)। কিন্তু সি++ এ .cpp (Example: test.cpp)
VS Code এ নিচের path ফলো করুনঃ
Extension->Code Runner->setting->Extension Settings->Executor Map(press setting.json)

তারপর এড করুনঃ
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe && timeout 15s $dir$fileNameWithoutExt.exe < input.txt > output.txt || (echo -n > output.txt && echo 'Time Limit Gone')",ইমেজঃ

এড করার পর Save করুন।
Module 1-2: How to print in C++
কীভাবে সি++ এ প্রিন্ট করতে হয়?
সি প্রোগ্রামিং এ আমরা printf() ব্যাবহার করে প্রিন্ট করেছি। সি++ আমরা কীভাবে প্রিন্ট করতে পারি?
#include <iostream>
int main()
{
int a = 10;
std::cout << a << std::endl;
return 0;
}Explanations:
#include <iostream>এই লাইনটি স্ট্যান্ডার্ড ইনপুট/আউটপুট স্ট্রিম (standard input/output streams) এর জন্য প্রয়োজনীয় ফাংশন এবং অবজেক্ট (object) সংজ্ঞায়িত করে।
int main()
{
}C++ প্রোগ্রাম main ফাংশন থেকে শুরু হয়।
int a = 10;এই লাইনটি একটি ভেরিয়েবল (variable) ডিক্লেয়ার করে।int নির্দেশ করে যে a হল একটি পূর্ণসংখ্যা (integer) ধরনের ভেরিয়েবল। = অপারেটরটি a ভেরিয়েবলে ১০ মান সেট করে।
std::cout << a << std::endl;এই লাইনটি সবচেয়ে গুরুত্বপূর্ণ অংশ যেখানে প্রকৃত প্রিন্ট করা হয়। std::cout হল iostream হেডার ফাইল থেকে আনা cout অবজেক্টটি, যা stdout (standard output) স্ট্রিমের সাথে যোগাযোগ করে। << অপারেটরটি a ভেরিয়েবলের মানকে cout অবজেক্টে স্ট্রিম (stream) করে দেয়। std::endl লাইন ব্রেক যোগ করে, যার ফলে প্রিন্ট করা মানটি পরবর্তী লাইনে যায়।
সংক্ষেপে, এই কোডটি a নামের একটি ভেরিয়েবলে ১০ মান সেট করে এবং তারপর cout অবজেক্টটি ব্যবহার করে সেই মানকে Console এ প্রিন্ট করে।
Module 1-3: How to take input in C++
কীভাবে সি++ এ ইনপুট নিতে হয়?
C++ প্রোগ্রামে ইনপুট নেওয়ার জন্য cin (standard input stream) অবজেক্টটি ব্যবহার করা হয়। আসুন, কিভাবে এটি কাজ করে সেটা দেখি
1. ভেরিয়েবল ঘোষণা (Variable Declaration):
প্রথমে, আপনাকে সেই ধরনের ডাটা নেওয়ার জন্য একটি ভেরিয়েবল ডিক্লেয়ার করতে হবে। উদাহরণস্বরূপ, যদি আপনি একটি পূর্ণসংখ্যা নিতে চান, তাহলে আপনি নির্দেশ করবেন যে ভেরিয়েবলটি হলint টাইপের। একটি ক্যারেক্টার নেওয়ার জন্য, আপনি char টাইপের ভেরিয়েবল ঘোষণা করবেন।
int age;
char initial;2. cin অবজেক্ট ব্যবহার করে ইনপুট নেওয়া (Taking Input using cin object):
এরপরে ভেরিয়েবলগুলিতে ডাটা নেওয়ার জন্য cin অবজেক্ট এবং >> অপারেটরটি ব্যবহার করুন। >> অপারেটরটি cin অবজেক্ট থেকে ডাটা পড়ে এবং ভেরিয়েবলে সেগুলি সংরক্ষণ করে।
cin >> age >> initial;এই উদাহরণে, cin >> age কমান্ডটি কি-বোর্ড থেকে একটি পূর্ণসংখ্যা পড়ে age ভেরিয়েবলে স্টোর করে। এরপরে, cin >> initial কমান্ডটি কি-বোর্ড থেকে একটি ক্যারেক্টার পড়ে initial ভেরিয়েবলে জমা করে。
3. গুরুত্বপূর্ণ দ্রষ্টব্য:
- cin একটি স্পেস দ্বারা আলাদা করা দুটি ইনপুট নেবে। যদি ব্যবহারকারী একাধিক শব্দ ইনপুট করে, তাহলে শুধুমাত্র প্রথম শব্দটিই আপনার ভেরিয়েবলে জমা হবে।
4. উদাহরণ:
নিচের উদাহরণটি দেখানো হল যে কিভাবে একজন ব্যবহারকারীর বয়স এবং নামের প্রথম অক্ষর ইনপুট নেওয়া যায় এবং পরে সেই তথ্য প্রিন্ট করা যায়:
#include <iostream>
using namespace std;
int main() {
int age;
char initial;
cout << "Enter your age:";
cin >> age;
cout << "Enter the first letter of your name: ";
cin >> initial;
cout << age << endl;
cout << initial << endl;
return 0;
}Result:

মডিউল ১-৪ঃ EOF ও Setprecision
EOF - এন্ড-অফ-ফাইল
eof কীভাবে কাজ করে সে সম্পর্কে এখানে বিশ্লেষণ দেওয়া হল:
কোড:
#include <iostream>
using namespace std;
int main() {
int a, b;
while (cin >> a >> b) {
cout << a << " " << b << endl;
}
return 0;
}ব্যাখ্যা:
eof অভ্যন্তরীণভাবে কীভাবে পরিচালিত হয় সে সম্পর্কে আরও বিস্তৃতভাবে দেখা যাক:
- cin >> a >> b কমান্ডটি চালানো হলে, এটি দুটি পূর্ণসংখ্যা মান পড়ার চেষ্টা করে।
- মানগুলি a এবং b তে সংরক্ষণ করা হয় এবং লুপটি চলতে থাকে। যদি eof এ পৌঁছানো হয় (যেমন, ব্যবহারকারী উইন্ডোজে Ctrl+Z টিপে) বা পড়ার সময় অন্য কোনো ত্রুটি হয়, তাহলে লুপ ব্রেক হয়ে যায়।
Setprecision():
C++ প্রোগ্রামিং ভাষায় setprecision() ফাংশনটি ফ্লোটিং-পয়েন্ট মান (যেমন double,float) প্রিন্ট করার সময় দশমিকের পরে কতগুলি দশমিক স্থান দেখানো হবে তা নিয়ন্ত্রণ করে। এটি iomanip (Input Output Manipulators) হেডার ফাইলের এর অংশ।
কোডঃ
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double a;
cin >> a;
cout << fixed << setprecision(5) << a << endl;
return 0;
}কীভাবে এটি কাজ করে (How it Works):
cout << setprecision(5) << a << endl;setprecision(5): এই অংশটি cout অবজেক্টকে বলে যে ফ্লোটিং-পয়েন্ট মানটি প্রিন্ট করার সময় দশমিকের পরে 5টি দশমিক স্থান দেখাতে হবে।
Result:

মডিউল ১-৫ঃ If Else and Ternary Operator
If Else:
#include <iostream>
using namespace std;
int main() {
int x = 10;
if (x == 10) {
cout << "It is ten out of ten\n";
} else {
cout << "This is not ten" << endl;
}
return 0;
}1. হেডার ফাইল অন্তর্ভুক্তকরণ (Including Header File):
#include <iostream>: এই লাইনটি <iostream> হেডার ফাইলটি অন্তর্ভুক্ত করে, যা ইনপুট/আউটপুট কার্যক্রমের জন্য প্রয়োজনীয় ফাংশন সরবরাহ করে। এটি আমাদের cout অবজেক্টটি ব্যবহার করতে দেয়, যা প্রোগ্রামটির আউটপুট প্রিন্ট করে।
2. নামস্পেস ঘোষণা (Namespace Declaration):
using namespace std;: এই লাইনটি আমাদের std::cout লিখার পরিবর্তে কেবল cout লিখতে দেয়।
3. মেইন ফাংশন (Main Function):
int main(): এটি প্রোগ্রামটির প্রধান ফাংশন, যেখান থেকে কোডটি চালু হয়।
4. ভেরিয়েবল ঘোষণা (Variable Declaration):
int x = 10;: এই লাইনটি একটি পূর্ণসংখ্যা ভেরিয়েবল x ঘোষণা করে এবং এর মান 10 সেট করে।
5. if-else স্টেটমেন্ট (if-else Statement):
if (x == 10): এই অংশটি একটি শর্ত পরীক্ষা করে। এটি বলে যে যদি x এর মান 10 এর সমান হয়, তাহলে if ব্লকের মধ্যে থাকা কোডটি চালানো হবে।
cout << "It is ten out of ten\n";: যদি x এর মান 10 হয়, তাহলে এই লাইনটি "It is ten out of ten" লেখাটি প্রিন্ট করে।
else: যদি x এর মান 10 এর সমান না হয়, তাহলে else ব্লকের মধ্যে থাকা কোডটি চালানো হবে।
cout << "This is not ten" << endl;: যদি x এর মান 10 না হয়, তাহলে এই লাইনটি "This is not ten" লেখাটি প্রিন্ট করে।
টার্নারি অপারেটর (Ternary Operator)
C++ এ টার্নারি অপারেটর, যা কন্ডিশনাল অপারেটর নামেও পরিচিত, একটি সংক্ষিপ্ত উপায়ে একটি if-else স্টেটমেন্টের মতো কাজ করে। এটি একটি শর্ত পরীক্ষা করে এবং শর্তটি সত্য বা মিথ্যা হওয়ার উপর ভিত্তি করে রেজাল্ট দেই।
কীভাবে এটি কাজ করে (How it Works):
টার্নারি অপারেটরের সিন্ট্যাক্স নিম্নরূপ:
condition ? expression_if_true : expression_if_falsecondition: এটি একটি বুলিয়ান অংশ। যা সত্য বা মিথ্যা হিসাবে মূল্যায়ন করা হয়।
expression_if_true: যদি condition সত্য হয়, তাহলে এই অংশের মান দেওয়া হয়।
expression_if_false: যদি condition মিথ্যা হয়, তাহলে অংশের মান দেওয়া হয়।
উদাহরণ (Example):
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
(n % 2 == 0) ? cout << "Even" << endl : cout << "Odd" << endl;
return 0;
}-> cin >> n;: এই লাইনটি ব্যবহারকারীর কাছ থেকে একটি পূর্ণসংখ্যা ইনপুট নেয় এবং সেটিকে n ভেরিয়েবলে সংরক্ষণ করে।
-> টার্নারি অপারেটর:
(n % 2 == 0): এটি টার্নারি অপারেটরের শর্তের অংশ। এটি পরীক্ষা করে যে n কে ২ দ্বারা ভাগ করার বাকি (%) 0 এর সমান কিনা। যদি এটি সমান হয়, তাহলে n কে জোড় বলে বিবেচনা করা হয়।
?: এই প্রতীকটি শর্তকে সম্ভাব্য দুটি ফলাফল থেকে পৃথক করে।
cout << "Even" << endl: এটি হল শর্ত (n % 2 == 0) সত্য হলে আউটপুট। এটি "Even" এবং তারপরে একটি নিউলাইন অক্ষর প্রিন্ট করে।
:: এই প্রতীকটি সত্য শর্তের জন্য আউটপুটকে মিথ্যা শর্তের জন্য আউটপুট থেকে পৃথক করে।
cout << "Odd" << endl: এটি হল শর্তটি মিথ্যা হলে আউটপুট। এটি "Odd" এবং তারপরে একটি নিউলাইন অক্ষর প্রিন্ট করে।
মডিউল ১-৬ঃ Switch Case
C++ এ সুইচ-কেস স্টেটমেন্ট হলো ব্রাঞ্চিং (multiple branching) এর জন্য একটি নিয়ন্ত্রণ কাঠামো। এটি একটি ভেরিয়েবলের মানের সাথে অন্যান্য মানগুলোর তুলনা করে এবং মানগুলোর সাথে মেলে এমন ক্ষেত্রে নির্দিষ্ট কোড ব্লকগুলি চালায়।
কীভাবে এটি কাজ করে (How it Works)?
switch (expression) {
case value1:
// code to execute if expression == value1
break;
case value2:
// code to execute if expression == value2
break;
// ... more cases
default:
// code to execute if expression doesn't match any case
break;
}expression: এটি একটি ভেরিয়েবল যা একটি মান ফেরত দেয়।
case: প্রতিটি case লেবেলটি একটি মান নির্দেশ করে যার সাথে expression এর মান তুলনা করা হয়।
break: break স্টেটমেন্টটি নিশ্চিত করে যে একবার একটি case ম্যাচ হয়, তাহলে পরবর্তী case গুলো আর চালানো হয় না।
default: default লেবেলটি ঐ ক্ষেত্রে কোড চালানোর জন্য যেখানে expression এর মান কোনো case লেবেলের সাথে মেলে না।
উদাহরণ (Example):
#include <iostream>
using namespace std;
int main() {
char grade = 'A';
switch (grade) {
case 'A':
cout << "Excellent!" << endl;
break;
case 'B':
cout << "Very good!" << endl;
break;
case 'C':
cout << "Good job!" << endl;
break;
default:
cout << "Invalid grade" << endl;
}
return 0;
}উদাহরণে:
- grade ভেরিয়েবলটির মান 'A'।
- switch স্টেটমেন্টটি grade এর মানের সাথে case লেবেলগুলির সাথে তুলনা করে।
- যেহেতু grade এর মান 'A' এবং এটি case 'A': এর সাথে মেলে, তাই "Excellent!" মেসেজটি প্রিন্ট হয়।
- break স্টেটমেন্টটি নিশ্চিত করে যে পরবর্তী case গুলো চালানো হয় না।
মডিউল ১-৭ঃmin(), max() and swap() Functions Min
Min and Max:
#include <iostream>
#include <algorithm>//এই লাইনটি min এবং max ফাংশন সহ অন্যান্য অ্যালগোরিদম ফাংশন সরবরাহ করে।
using namespace std;
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
// পদ্ধতি ১: পৃথকভাবে min ও max খুঁজে বের করা
int c = min(a, b); // a ও b এর মধ্যে ক্ষুদ্রতম মান খুঁজে 'c' ভেরিয়েবলে রাখুন
int d = max(a, b); // a ও b এর মধ্যে সর্বোচ্চ মান খুঁজে 'd' ভেরিয়েবলে রাখুন
cout << c << " " << d << endl;
// পদ্ধতি ২:সবগুলি মানের মধ্যে min ও max খুঁজে বের করা
int mn = min({a, b, c, d}); // {a, b, c, d} এর মধ্যে ক্ষুদ্রতম মান খুঁজে 'mn' ভেরিয়েবলে রাখুন
int mx = max({a, b, c, d}); // {a, b, c, d} এর মধ্যে সর্বোচ্চ মান খুঁজে 'mx' ভেরিয়েবলে রাখুন
cout << mn << " " << mx << endl;
return 0;
}Swap():
C++ এ swap ফাংশনটি <utility> হেডার ফাইলে সংজ্ঞায়িত একটি বিল্ট-ইন ফাংশন। এটি দুটি ভেরিয়েবলের মানকে একে অপরের সাথে পরিবর্তন করে।
কীভাবে এটি কাজ করে (How it Works):
swap(a, b);- a এবং b দুটি ভেরিয়েবল যাদের মান একে অপরের সাথে পরিবর্তন করতে চান।
উদাহরণ (Example):
int x = 10;
int y = 20;
swap(x, y);
cout << x << " " << y << endl; // Output: 20 10কোড ব্যাখ্যা (Code Explanation):
#include <iostream>
#include <utility>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
swap(a, b);
cout << a << " " << b << endl;
}হেডার ফাইল অন্তর্ভুক্তকরণ (Header File Inclusion):
#include <iostream>: এই লাইনটি ইনপুট/আউটপুট কার্যক্রমের জন্য প্রয়োজনীয় ফাংশন সরবরাহ করে।#include <utility>: এই লাইনটি swap ফাংশন সহ অন্যান্য অ্যালগোরিদম ফাংশন সরবরাহ করে।
নেমস্পেস ঘোষণা (Namespace Declaration):
- using namespace std;: এই লাইনটি আমাদের std::swap লিখার পরিবর্তে কেবল swap লিখতে দেয়।
মেইন ফাংশন (Main Function):
- int main(): এটি প্রোগ্রামটির প্রধান ফাংশন, যেখান থেকে কোডটি চালু হয়।
ভেরিয়েবল ঘোষণা (Variable Declaration):
- int a, b;: এই লাইনটি দুটি পূর্ণসংখ্যা ভেরিয়েবল a এবং b ঘোষণা করে।
ইনপুট গ্রহণ (Input Taking):
- cin >> a >> b;: এই লাইনটি ব্যবহারকারীর কাছ থেকে দুটি পূর্ণসংখ্যা ইনপুট নেয় এবং সেগুলি যথাক্রমে a এবং b ভেরিয়েবলে সংরক্ষণ করে।
swap ফাংশন (swap Function):
- swap(a, b);: এই লাইনটি swap ফাংশন কল করে, যা a এবং b এর মান একে অপরের সাথে পরিবর্তন করে।
আউটপুট প্রদর্শন (Output Display):
- cout << a << " " << b << endl;: এই লাইনটি পরিবর্তিত মানগুলি, a এবং b প্রিন্ট করে।
উদাহরণ (Example):
আপনি যদি ইনপুট হিসাবে 10 এবং 20 দেন, তাহলে আউটপুটটি নিম্নরূপ হবে:
20 10মডিউল ১-৮ঃ String Input and Output
String Input and Output:
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
int main()
{
char s[100]; // ১০০ সাইজের একটি character array ডিক্লেয়ার করা হয়েছে, যা একটি স্ট্রিং হিসেবে ব্যবহৃত হবে।
int a; // একটি integer ভেরিয়েবল ডিক্লেয়ার করা হয়েছে।
cin >> a; // integer ইনপুট নেওয়া হচ্ছে।
getchar(); // একটি newline character (এন্টার কী) গ্রহণ করা হচ্ছে যাতে পরবর্তী ইনপুটে সমস্যা না হয়।
cin.getline(s, 100); // স্ট্রিং ইনপুট নেওয়ার জন্য cin.getline ব্যবহার করা হচ্ছে, যা স্ট্রিং s তে সংরক্ষণ করা হবে।
cout << a << endl; // integer a এর মান আউটপুট করা হচ্ছে।
cout << s << endl; // স্ট্রিং s এর মান আউটপুট করা হচ্ছে।
return 0; // প্রোগ্রাম শেষ।
}বিস্তারিত ব্যাখ্যা:
Header Files ইনক্লুড করা:
#include <iostream>
#include <string.h>
#include <string>
using namespace std;#include <iostream>: ইনপুট এবং আউটপুট স্ট্রিম পরিচালনার জন্য।#include <string.h>: সি স্টাইলের স্ট্রিং ম্যানিপুলেশনের জন্য।#include <string>: সি++ স্ট্রিং ক্লাস ব্যবহারের জন্য।- using namespace std;: std নেমস্পেসের বিভিন্ন ফাংশন এবং অবজেক্ট সরাসরি ব্যবহারের জন্য।
main ফাংশন ডিক্লেয়ারেশন:
int main()- প্রধান ফাংশন যা প্রোগ্রাম চালানোর সময় প্রথমে এক্সিকিউট হয়।
ভেরিয়েবল ডিক্লেয়ারেশন:
char s[100]; // একটি character array, যা একটি স্ট্রিং হিসেবে ব্যবহৃত হবে।
int a; // একটি integer ভেরিয়েবল।integer ইনপুট নেওয়া:
cin >> a;- integer a এর মান ইনপুট নেওয়া হচ্ছে।
newline character গ্রহণ করা:
getchar();- পূর্ববর্তী cin ইনপুটের newline character (এন্টার কী) গ্রহণ করা হচ্ছে যাতে পরবর্তী ইনপুটে সমস্যা না হয়।
স্ট্রিং ইনপুট নেওয়া:
cin.getline(s, 100); // সি++ স্টাইলের স্ট্রিং ইনপুট।- cin.getline(s, 100) স্ট্রিং s এ ইনপুট নেওয়া হচ্ছে, সর্বাধিক ১০০ character পর্যন্ত।
আউটপুট প্রদর্শন করা:
cout << a << endl; // integer `a` এর মান আউটপুট করা হচ্ছে।
cout << s << endl; // স্ট্রিং `s` এর মান আউটপুট করা হচ্ছে।প্রোগ্রাম সফলভাবে শেষ হওয়া:
return 0;- প্রোগ্রাম শেষ ।
Module 1-9: bits Header File
<bits/stdc++.h> হেডার ফাইল:
#include <bits/stdc++.h> একটি প্রিপ্রসেসর ডিরেক্টিভ যা C++ প্রোগ্রামিং ভাষায় ব্যবহৃত হয়। এটি প্রায় সব স্ট্যান্ডার্ড লাইব্রেরি হেডার ফাইল একসাথে ইনক্লুড করে দেয়। আসুন এটি কেন ব্যবহার করা হয় এবং এর সুবিধা ও অসুবিধা কী তা বাংলায় ব্যাখ্যা করা যাক।
কেন ব্যবহার করা হয়:
- সহজতা: প্রোগ্রামাররা বিভিন্ন হেডার ফাইল আলাদা আলাদাভাবে ইনক্লুড করার পরিবর্তে শুধু
#include <bits/stdc++.h>ব্যবহার করে সব হেডার ফাইল একসাথে ইনক্লুড করতে পারে। এটি সময় বাঁচায় এবং কোড লেখা সহজ করে। - অভ্যাস: অনেক প্রোগ্রামিং প্রতিযোগিতায় বা অনুশীলনে প্রোগ্রামাররা দ্রুত কোড লেখা ও পরীক্ষা করার জন্য এটি ব্যবহার করে। এটি কোডের পাঠযোগ্যতা বাড়ায় এবং সময় সাশ্রয় করে।
