প্রোগ্রামিং

নতুনদের জন্য C++ টিউটোরিয়াল

30 অক্টোবর, 2021

সুচিপত্র

C++ কি?

C++ হল একটি ক্রস-প্ল্যাটফর্ম ভাষা যা উচ্চ-পারফরম্যান্স অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। Bjarne Stroustrup এটিকে C ভাষার এক্সটেনশন হিসেবে তৈরি করেছে। C++ প্রোগ্রামারদের সিস্টেম রিসোর্স এবং মেমরির উপর নিয়ন্ত্রণ দেয়। ভাষাটি 2011, 2014 এবং 2017 সালে C++11, C++14, এবং C++17 এ তিনটি উল্লেখযোগ্য বার আপডেট করা হয়েছিল।

কেন C++ ব্যবহার করুন

  • C++ প্রোগ্রামিং এর জন্য সবচেয়ে জনপ্রিয় ভাষাগুলির মধ্যে একটি।
  • C++ অপারেটিং সিস্টেম, GUI এবং এমবেডেড সিস্টেমে পাওয়া যাবে।
  • এটি একটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা যা প্রোগ্রামগুলির একটি পরিষ্কার কাঠামো দেয় এবং কোডকে পুনরায় ব্যবহার করার অনুমতি দেয়, উন্নয়ন খরচ কমিয়ে দেয়।
  • এটি বহনযোগ্য এবং একাধিক প্ল্যাটফর্মে অভিযোজিত হতে পারে এমন অ্যাপ্লিকেশন বিকাশ করতে ব্যবহার করা যেতে পারে।
  • যেহেতু C++ C# এর কাছাকাছি এবং জাভা , এটি প্রোগ্রামারদের জন্য C++ বা তদ্বিপরীতভাবে স্যুইচ করা সহজ করে তোলে।

বৈশিষ্ট্য

    সরল: C++ হল একটি সহজ ভাষা কারণ এটি ফাংশন, ডেটা টাইপ ইত্যাদির সমৃদ্ধ সেটের জন্য একটি কাঠামোগত পদ্ধতি প্রদান করে।সুবহ: অ্যাসেম্বলি ল্যাঙ্গুয়েজ থেকে ভিন্ন, সি প্রোগ্রামগুলি অনেক মেশিনে সামান্য বা কোন পরিবর্তন ছাড়াই চালানো হচ্ছে। তবে এটি প্ল্যাটফর্ম-স্বাধীন নয়।মধ্য-স্তরের প্রোগ্রামিং ভাষা: C++ নিম্ন-স্তরের প্রোগ্রামিং করতে ব্যবহৃত হয়। এটি কার্নেল, ড্রাইভার ইত্যাদির মতো অ্যাপ্লিকেশন বিকাশ করতে ব্যবহৃত হয়। এটি উচ্চ-স্তরের ভাষার বৈশিষ্ট্যকেও সমর্থন করে।স্ট্রাকচার্ড প্রোগ্রামিং ভাষা: C++ হল একটি স্ট্রাকচার্ড প্রোগ্রামিং ভাষা কারণ আপনি ফাংশন ব্যবহার করে প্রোগ্রামটিকে ভাগে ভাগ করতে পারেন।সমৃদ্ধ লাইব্রেরি: C++ অন্তর্নির্মিত ফাংশন সরবরাহ করে যা বিকাশকে দ্রুত করে।স্মৃতি ব্যবস্থাপনা: এটি আপনাকে গতিশীল মেমরি বরাদ্দের বৈশিষ্ট্য অফার করে। আপনি বিনামূল্যে() ফাংশন কল করে বরাদ্দ করা মেমরি মুক্ত করতে পারেন।দ্রুততা: C++ ভাষার সংকলন এবং সম্পাদনের সময় দ্রুত।নির্দেশক: C++ পয়েন্টার বৈশিষ্ট্য প্রদান করে। আপনি পয়েন্টার ব্যবহার করে মেমরির সাথে সরাসরি ইন্টারঅ্যাক্ট করতে পারেন।পুনরাবৃত্তি: C++ এ, আপনি ফাংশনের মধ্যে ফাংশনটিকে কল করতে পারেন। এটি প্রতিটি ফাংশনের জন্য কোড পুনরায় ব্যবহারযোগ্যতা প্রদান করে।এক্সটেনসিবল: C++ ভাষা এক্সটেনসিবল কারণ এটি দ্রুত নতুন বৈশিষ্ট্য গ্রহণ করতে পারে।অবজেক্ট ওরিয়েন্টেড: C++ হল একটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা। OOPs রক্ষণাবেক্ষণ এবং বিকাশকে সহজ করে তোলে, যেখানে, পদ্ধতি-ভিত্তিক প্রোগ্রামিং ভাষায়, এটি করা সহজ নয় প্রজেক্ট হিসাবে কোড বৃদ্ধি পেলে পরিচালনা করুন আকার বৃদ্ধি পায়।কম্পাইলার ভিত্তিক: এটি একটি কম্পাইলার-ভিত্তিক প্রোগ্রামিং ভাষা। প্রথমে, আপনাকে একটি কম্পাইলার ব্যবহার করে প্রোগ্রামটি কম্পাইল করতে হবে এবং তারপরে আপনি প্রোগ্রামটি চালাতে পারেন।

স্থানীয় পরিবেশ সেটআপ

আপনার কম্পিউটারে নিচের সফটওয়্যারগুলো থাকলে ভালো হতো।

    C++ কম্পাইলার

এটি একটি প্রকৃত C++ কম্পাইলার, যা আপনার সোর্স কোডকে চূড়ান্ত এক্সিকিউটেবল প্রোগ্রামে কম্পাইল করতে ব্যবহার করা হবে। বেশীরভাগ C++ কম্পাইলাররা আপনার সোর্স কোডে কোন এক্সটেনশন দিবেন তা বিবেচনা করে না। সবচেয়ে বেশি ব্যবহৃত কম্পাইলার হল GNU C/C++ কম্পাইলার।

    টেক্সট সম্পাদক

এটি টাইপ করার জন্য সফ্টওয়্যার দ্বারা ব্যবহৃত হয়। উদাহরণগুলির মধ্যে রয়েছে Windows Notepad, OS Edit, Short, Epsilon, EMACS এবং Vim বা VI কমান্ড। আপনি সম্পাদকের সাথে যে ফাইলগুলি তৈরি করেন সেগুলিকে উত্স ফাইল হিসাবে উল্লেখ করা হয় এবং C++ ফাইলগুলিকে .cpp, .cp বা .c হিসাবে উল্লেখ করা হয়৷ আপনার C++ প্রোগ্রামিং শুরু করতে, একটি পাঠ্য সম্পাদক অবশ্যই থাকতে হবে।

    মৌলিক সিনট্যাক্স

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

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

উদাহরণ

|_+_|

আউটপুট

|_+_|

আসুন উপরে উল্লিখিত প্রোগ্রামের বিভিন্ন অংশ দেখি -

  • এটি একটি হেডার প্রয়োজন.
  • নামস্থান std ব্যবহার করুন; নামস্থান std ব্যবহার করার জন্য কম্পাইলারকে সতর্ক করতে।
  • লাইন int main() হল প্রধান বৈশিষ্ট্য যেখানে প্রোগ্রামটি কার্যকর করা শুরু হয়।
  • পরের লাইনে কাটে<< Hello World; the word Hello World is reflected on the keyboard.
  • পরবর্তী লাইন 0 প্রদান করে; main() ফাংশনটি বন্ধ হয়ে যায়।

C++ বেসিক ইনপুট/আউটপুট

C++ I/O অপারেশন স্ট্রিম ধারণা ব্যবহার করছে। স্ট্রিম হল বাইট বা ডেটার প্রবাহের ক্রম। এটি কর্মক্ষমতা দ্রুত করে তোলে।

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

যদি কোনো ডিভাইস যেমন প্রিন্টার, ডিসপ্লে স্ক্রিন, নেটওয়ার্ক সংযোগ ইত্যাদি থেকে বাইট প্রধান মেমরিতে প্রবাহিত হয়, তাহলে একে বলে। একটি ইনপুট অপারেশন।

স্ট্যান্ডার্ড আউটপুট স্ট্রীম (cout)

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

উদাহরণ

|_+_|

আউটপুট

|_+_|

স্ট্যান্ডার্ড ইনপুট স্ট্রীম (সিন)

দ্য জিন একটি পূর্বনির্ধারিত বস্তু। এটি ইনপুট ডিভাইসের সাথে সংযুক্ত থাকে, যা সাধারণত একটি কীবোর্ড। কনসোল ইনপুট পড়ার জন্য স্ট্রিম এক্সট্রাকশন অপারেটর (>>) এর সাথে যোগ দিতে সিন ব্যবহার করা হয়।

উদাহরণ

|_+_|

আউটপুট

|_+_|

স্ট্যান্ডার্ড শেষ লাইন (এন্ডএল)

দ্য endl ক্লাসের একটি পূর্বনির্ধারিত বস্তু। এটি নতুন লাইন অক্ষর সন্নিবেশ করতে এবং স্ট্রিম ফ্লাশ করতে ব্যবহৃত হয়।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ ভেরিয়েবল

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

পরিবর্তনশীল নামের মধ্যে কোনো সাদা স্থান অনুমোদিত নয়।

একটি পরিবর্তনশীল নাম অবশ্যই কোনো সংরক্ষিত শব্দ বা কীওয়ার্ড হওয়া উচিত নয়, যেমন, char, float, ইত্যাদি।

বৈধ পরিবর্তনশীল নাম:

  • int a;
  • int _ab;
  • int a30;

অবৈধ পরিবর্তনশীল নাম:

  • int 4;
  • intxy;
  • int ডবল;

C++ শনাক্তকারী

একটি C++ শনাক্তকারী একটি ভেরিয়েবল, ফাংশন, ক্লাস, মডিউল বা অন্য কোনো ব্যবহারকারী-সংজ্ঞায়িত আইটেম সনাক্ত করতে ব্যবহৃত হয়। এটি A থেকে Z বা a থেকে z বা একটি আন্ডারস্কোর (_) দিয়ে শুরু হয়, যার পরে শূন্য বা তার বেশি অক্ষর এবং 0 থেকে 9 হয়। এটি একটি কেস-সংবেদনশীল প্রোগ্রামিং ভাষা। সুতরাং, কর্মশক্তি এবং কর্মশক্তি C++ এ দুটি ভিন্ন শনাক্তকারী।

C++ ডেটা টাইপ

টাইপকীওয়ার্ড
চরিত্রচর
বুলিয়ানbool
ফ্লোটিং পয়েন্টভাসা
ডাবল ফ্লোটিং পয়েন্টদ্বিগুণ
পূর্ণসংখ্যাint
মূল্যহীনঅকার্যকর
প্রশস্ত চরিত্রwchar_t
টাইপ সাধারণ বিট প্রস্থ সাধারণ পরিসর
চর1বাইট-127 থেকে 127 বা 0 থেকে 255
স্বাক্ষরবিহীন চর1বাইট0 থেকে 255
স্বাক্ষরিত চর1বাইট-127 থেকে 127
wchar_t2 বা 4 বাইট1 প্রশস্ত অক্ষর
int4 বাইট-2147483648 থেকে 2147483647
স্বাক্ষরবিহীন int4 বাইট0 থেকে 4294967295
স্বাক্ষরিত int4 বাইট-2147483648 থেকে 2147483647
সংক্ষিপ্ত int2বাইট-32768 থেকে 32767
ভাসা4 বাইট
স্বাক্ষরবিহীন সংক্ষিপ্ত int2বাইট0 থেকে 65,535
সংক্ষিপ্ত int স্বাক্ষরিত2বাইট-32768 থেকে 32767
দীর্ঘ int8বাইট-2,147,483,648 থেকে 2,147,483,647
স্বাক্ষরিত দীর্ঘ int8বাইটদীর্ঘ int হিসাবে একই
স্বাক্ষরবিহীন দীর্ঘ int8বাইট0 থেকে 4,294,967,295
দীর্ঘ দীর্ঘ int8বাইট-(2^63) থেকে (2^63)-1
স্বাক্ষরবিহীন দীর্ঘ দীর্ঘ int8বাইট0 থেকে 18,446,744,073,709,551,615
দ্বিগুণ8বাইট
দীর্ঘ ডবল12বাইট

C++ ধ্রুবক/লিটারেল

ধ্রুবকগুলি নির্দিষ্ট মানগুলিকে বোঝায় যা প্রোগ্রামটি পরিবর্তন করতে পারে এবং সেগুলিকে আক্ষরিক বলা হয়।

ধ্রুবকগুলি কাঁচা ডেটা প্রকারের যেকোনো হতে পারে এবং পূর্ণসংখ্যা, অক্ষর, ফ্লোটিং-পয়েন্ট সংখ্যা, স্ট্রিং এবং বুলিয়ান মানগুলিতে বিভক্ত।

পূর্ণসংখ্যার আক্ষরিক

একটি পূর্ণসংখ্যা আক্ষরিক একটি দশমিক, অক্টাল, বা হেক্সাডেসিমেল ধ্রুবক।

একটি পূর্ণসংখ্যার আক্ষরিক একটি প্রত্যয় রয়েছে যা যথাক্রমে দীর্ঘ এবং স্বাক্ষরবিহীন জন্য L এবং U এর সংমিশ্রণ। প্রত্যয়টি ছোট হাতের বা বড় হাতের অক্ষর হতে পারে এবং যেকোনো ক্রমে হতে পারে।

যেমন: 212, 215u, 0xFeeL, 078, 032UU

ভাসমান-বিন্দু আক্ষরিক

একটি ভাসমান-বিন্দু আক্ষরিক একটি পূর্ণসংখ্যা অংশ, একটি ভগ্নাংশ, একটি দশমিক বিন্দু, এবং একটি সূচক অংশ আছে। আপনি ফ্লোটিং-পয়েন্ট লিটারালগুলিকে দশমিক আকারে বা সূচক আকারে উপস্থাপন করতে পারেন।

দশমিক ফর্ম ব্যবহার করে প্রতিনিধিত্ব করার সময়, আপনাকে অবশ্যই দশমিক বিন্দু, সূচক বা উভয়ই অন্তর্ভুক্ত করতে হবে। সূচকীয় ফর্ম ব্যবহার করার সময়, আপনার অবশ্যই ভগ্নাংশ, পূর্ণসংখ্যা অংশ বা উভয়ই থাকতে হবে। স্বাক্ষরিত সূচকটি E বা e দ্বারা প্রবর্তিত হয়।

বুলিয়ান লিটারালস

দুটি বুলিয়ান আক্ষরিক আছে

  • সত্য প্রতিনিধিত্বকারী সত্য একটি মান.
  • মিথ্যা প্রতিনিধিত্ব মিথ্যা একটি মান.

অক্ষর আক্ষরিক

অক্ষর আক্ষরিক একক উদ্ধৃতি মধ্যে আবদ্ধ করা হয়. আক্ষরিক L দিয়ে শুরু হলে, এটি একটি প্রশস্ত-অক্ষরের আক্ষরিক এবং একটি wchar_t ধরনের ভেরিয়েবলে সংরক্ষণ করা উচিত। অন্যথায়, এটি একটি সংকীর্ণ অক্ষর আক্ষরিক এবং চর প্রকারের একটি সাধারণ পরিবর্তনশীলে সংরক্ষণ করা হয়।

এস্কেপ সিকোয়েন্স অর্থ
\ চরিত্র
'' চরিত্র
চরিত্র
?? চরিত্র
প্রতিসতর্কতা বা ঘণ্টা
ব্যাকস্পেস
fফর্ম ফিড
নতুন লাইন
গাড়ি ফেরত
অনুভূমিক ট্যাব
vউল্লম্ব ট্যাব
oooএক থেকে তিন অঙ্কের অক্টাল সংখ্যা
xhh. . .এক বা একাধিক সংখ্যার হেক্সাডেসিমেল সংখ্যা

C++ স্টোরেজ ক্লাস

অটো স্টোরেজ ক্লাস

এটি সমস্ত স্থানীয় ভেরিয়েবলের জন্য একটি ডিফল্ট স্টোরেজ ক্লাস।

বাক্য গঠন

|_+_|

রেজিস্টার স্টোরেজ ক্লাস

এগুলি স্থানীয় ভেরিয়েবলগুলিকে সংজ্ঞায়িত করতে ব্যবহৃত হয় যা RAM এর পরিবর্তে একটি রেজিস্টারে সংরক্ষণ করা হয়। এর মানে হল যে ভেরিয়েবলের সর্বোচ্চ সাইজ রেজিস্টার সাইজের সমান এবং এতে '&' অপারেটর প্রয়োগ করা যাবে না।

বাক্য গঠন

|_+_|

স্ট্যাটিক স্টোরেজ ক্লাস

এটি কম্পাইলারকে প্রোগ্রামের সময় স্থানীয় ভেরিয়েবলটিকে তৈরি এবং ধ্বংস করার পরিবর্তে অস্তিত্বে রাখতে বলে। তাই স্থানীয় ভেরিয়েবলগুলিকে স্ট্যাটিক করা তাদের ফাংশন কলগুলির মধ্যে তাদের মান বজায় রাখার প্রস্তাব দেয়।

বাহ্যিক স্টোরেজ ক্লাস

এটি একটি গ্লোবাল ভেরিয়েবলের রেফারেন্স দিতে ব্যবহৃত হয় যা প্রতিটি প্রোগ্রাম ফাইলে দৃশ্যমান। আপনি যখন 'বহিরাগত' ব্যবহার করেন তখন ভেরিয়েবলটি আরম্ভ করা যায় না।

পরিবর্তনযোগ্য স্টোরেজ ক্লাস

পরিবর্তনযোগ্য স্পেসিফায়ার ক্লাস অবজেক্টে প্রযোজ্য। এটি কনস্ট সদস্য ফাংশন ওভাররাইড করার জন্য একটি বস্তুর সদস্য অফার করে। অর্থাৎ, একটি পরিবর্তনযোগ্য সদস্য একটি const সদস্য ফাংশন দ্বারা সংশোধন করা যেতে পারে।

C++ মডিফায়ারের ধরন

C++ char, int, এবং ডাবল ডাটা টাইপ অফার করে যাতে তাদের আগে মডিফায়ার থাকে। একটি মডিফায়ার বেস টাইপের অর্থ পরিবর্তন করতে ব্যবহৃত হয় যাতে এটি বিভিন্ন পরিস্থিতিতে প্রয়োজনীয়তার সাথে আরও সুনির্দিষ্টভাবে ফিট করে।

ডেটা টাইপ মডিফায়ারগুলি নীচে উল্লেখ করা হয়েছে-

  • স্বাক্ষরিত
  • স্বাক্ষরবিহীন
  • দীর্ঘ
  • সংক্ষিপ্ত

সংশোধক স্বাক্ষরিত, স্বাক্ষরবিহীন, দীর্ঘ এবং সংক্ষিপ্ত পূর্ণসংখ্যা বেস প্রকারে প্রয়োগ করা হয়। উপরন্তু, স্বাক্ষরিত এবং স্বাক্ষরবিহীন চর প্রয়োগ করা হয়, এবং দীর্ঘ দ্বিগুণ প্রয়োগ করা হয়।

স্বাক্ষরিত এবং স্বাক্ষরবিহীন সংশোধকগুলি দীর্ঘ বা সংক্ষিপ্ত সংশোধকগুলির উপসর্গ হিসাবে ব্যবহৃত হয়।

কোয়ালিফায়ারের ধরন

    const: ধরনের বস্তু const কার্যকর করার সময় প্রোগ্রাম দ্বারা পরিবর্তন করা যাবে না।অস্থির: সম্পাদনা অস্থির কম্পাইলারকে বলে যে ভেরিয়েবলের মান এমনভাবে পরিবর্তিত হতে পারে যা প্রোগ্রাম দ্বারা স্পষ্টভাবে নির্দিষ্ট করা হয়নি।সীমাবদ্ধ: দ্বারা যোগ্য একটি পয়েন্টার সীমাবদ্ধ একমাত্র উপায় যা দ্বারা এটি নির্দেশিত বস্তু অ্যাক্সেস করা যেতে পারে। C99 একটি নতুন ধরনের কোয়ালিফায়ার যোগ করে যাকে সীমাবদ্ধ বলা হয়।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ এ অপারেটর

একটি অপারেটর হল একটি প্রতীক যা কম্পাইলারকে নির্দিষ্ট গাণিতিক বা লজিক্যাল ম্যানিপুলেশন করতে সাহায্য করে। C++ এর বিভিন্ন বিল্ট-ইন অপারেটর রয়েছে এবং নিম্নলিখিত ধরনের অপারেটরগুলি অফার করে -

  • পাটিগণিত অপারেটর
  • লজিক্যাল অপারেটর
  • বিটওয়াইজ অপারেটর
  • নিয়োগ অপারেটর
  • রিলেশনাল অপারেটর
  • বিবিধ অপারেটর

পাটিগণিত অপারেটর

পাটিগণিত অপারেটরগুলি অপারেটর ছাড়া আর কিছুই নয় যেগুলি ভেরিয়েবল বা দুটি মানের মধ্যে গাণিতিক ক্রিয়াকলাপ সম্পাদন করতে ব্যবহৃত হয়।

অপারেটর বর্ণনা বাক্য গঠন
+দুটি অপারেন্ড যোগ করেa+b
*দুটি অপারেন্ড গুণ করেa*b
-দুটি অপারেন্ড বিয়োগ করেa-খ
/প্রথম অপারেন্ডকে দ্বিতীয় দ্বারা ভাগ করেa/b
%যখন প্রথম অপারেন্ডটি দ্বিতীয় দ্বারা ভাগ করা হয় তখন অবশিষ্টাংশ প্রদান করেa% b
++এটি এক দ্বারা পূর্ণসংখ্যার মান বৃদ্ধি করেa++
এটি এক দ্বারা পূর্ণসংখ্যার মান হ্রাস করেপ্রতি-

লজিক্যাল অপারেটর

C++ এ লজিক্যাল অপারেটররা ভেরিয়েবলের সত্য বা মিথ্যা মানগুলিকে একত্রিত করে যাতে আপনি তাদের ফলাফলের সত্য মানটি বের করতে পারেন।

অপারেটর বর্ণনা বাক্য গঠন
অথবা (||)অপারেন্ডের যেকোনো একটি সত্য হলে সত্য(A || B) সত্য।
এবং (&&)উভয় অপারেন্ড সত্য হলে সত্য(A & & B) মিথ্যা।
না (!)যদি একটি শর্ত সত্য হয়, তাহলে লজিক্যাল নয় অপারেটর মিথ্যা করবে।!(A & & B) সত্য।

বিটওয়াইজ অপারেটর

C++ এ বিটওয়াইজ অপারেটররা পূর্ণসংখ্যার উপর বিটওয়াইজ গণনা করে। বিটওয়াইজ অপারেটর: উভয় বিট 1 অন্য 0 হলে 1 রিটার্ন করে। উদাহরণ: a = 10 = 1010 (বাইনারী) b = 4 = 0100 (বাইনারী a & b = 1010 & 0100 = 0000 = 0 (ডেসিমাল) বিটওয়াইজ বা অপারেটর: 1 যদি বিটের যেকোনো একটি 1 অন্য 0 হয়।

অপারেটর বর্ণনা বাক্য গঠন
>>বাইনারি ডান শিফট x>>x>>
<< বাইনারি বাম স্থানান্তরএক্স<<
^বাইনারি XORx^y
এবংবাইনারি এবংx এবং y
|বাইনারি বাx | Y
~বাইনারি না~x

নিয়োগ অপারেটর

অ্যাসাইনমেন্ট অপারেটররা ভেরিয়েবলের মান নির্ধারণ করে। a = 5 হল একটি অ্যাসাইনমেন্ট অপারেটর যেটি ডানদিকে মান 5 সেট করে বাম দিকের পরিবর্তনশীলের জন্য।

অপারেটর বর্ণনা বাক্য গঠন
=ডান পাশের অভিব্যক্তির মান বাম পাশের অপারেন্ডে বরাদ্দ করা।a=b+c
+=বাম পাশের অপারেন্ডের সাথে ডান পাশের অপারেন্ড যোগ করুন এবং তারপর বাম দিকের অপারেন্ডে বরাদ্দ করুন।a+=b a=a+b
-=বাম অপারেন্ড থেকে ডানের অপারেন্ড বিয়োগ করুন এবং তারপর বাম অপারেন্ডে বরাদ্দ করুন।a-=b a=a-b
/=বাম অপারেন্ডকে ডানের অপারেন্ড দিয়ে ভাগ করুন এবং তারপরে বাম অপারেন্ডে বরাদ্দ করুন।a/=b a=a/b
%=বাম এবং ডান অপারেন্ড ব্যবহার করে মডুলাস নিন এবং বাম অপারেন্ডে ফলাফল নির্ধারণ করুন।a%=b a=a%b
*=অপারেন্ড ব্যবহার করে সূচকের মান গণনা করুন এবং বাম অপারেন্ডে মান নির্ধারণ করুন।a*=b a=a*b
&=বিটওয়াইজ এবং অপারেন্ডে সঞ্চালন করে এবং বাম অপারেন্ডে মান নির্ধারণ করে।a&=b a=a&b
|=অপারেন্ডে Bitwise OR সম্পাদন করে এবং বাম অপারেন্ডে মান নির্ধারণ করে।a|=b a=a|b
^=অপারেন্ডে Bitwise OR সম্পাদন করে এবং বাম অপারেন্ডে মান নির্ধারণ করে।a^=b a=a^b
>>=অপারেন্ডে Bitwise ডান শিফট করুন এবং বাম অপারেন্ডে মান নির্ধারণ করুন।a>>=b a=a>>b
<<=অপারেন্ডে Bitwise বাম স্থানান্তর সম্পাদন করে এবং বাম অপারেন্ডে মান নির্ধারণ করে।প্রতি<<= b a= a << b

রিলেশনাল অপারেটর

রিলেশনাল অপারেটর হল সেই অপারেটর যা দুটি মান বা বস্তুর তুলনা করতে ব্যবহৃত হয়।

অপারেটর বর্ণনা বাক্য গঠন
>অপেক্ষা বৃহত্তরx > y
<থেকে কমএক্স
==সমানx == y
!=সমান নাx != y
>=এর চেয়ে বড় বা সমানx >= y
<= অপেক্ষাকৃত ছোট বা সমানএক্স<= y

বিবিধ অপারেটর

অপারেটর বর্ণনা
অবস্থা? এক্স: ওয়াইযদি শর্তটি সত্য হয়, তবে এটি X এর মান প্রদান করে অন্যথায় Y এর মান প্রদান করে।
,এটি অপারেশনের একটি ক্রম সঞ্চালিত করে। কমার মান হল কমা দ্বারা পৃথক করা তালিকার শেষ অভিব্যক্তির মান।
আকারএটি একটি ভেরিয়েবলের আকার প্রদান করে। উদাহরণস্বরূপ, sizeof(a), যেখানে 'a' একটি পূর্ণসংখ্যা এবং 4 প্রদান করবে।
*এটি একটি পরিবর্তনশীল একটি পয়েন্টার. যেমন *var; একটি পরিবর্তনশীল var নির্দেশক হবে.
কাস্টএটি একটি ডেটা টাইপকে অন্যটিতে রূপান্তর করে।
. (বিন্দু) এবং -> (তীর)এগুলি ক্লাস, কাঠামো এবং ইউনিয়নের পৃথক সদস্যদের উল্লেখ করতে ব্যবহৃত হয়।
এবংএটি ভেরিয়েবলের ঠিকানা প্রদান করে।

C++ লুপ

লুপের জন্য

C++ for loop প্রোগ্রামের একটি অংশকে একাধিকবার পুনরাবৃত্তি করতে ব্যবহৃত হয়। যদি পুনরাবৃত্তির সংখ্যা স্থির করা হয়, তবে লুপের চেয়ে while বা do-while loops ব্যবহার করার পরামর্শ দেওয়া হয়।

লুপের জন্য C++ C/C# এর মতই। আমরা ভেরিয়েবল শুরু করতে পারি, কন্ডিশন চেক করতে পারি এবং মান বৃদ্ধি/কমাতে পারি।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

লুপের জন্য নেস্টেড

C++ এ, আপনি লুপের জন্য অন্যটির ভিতরে লুপের জন্য ব্যবহার করতে পারেন। এটি নেস্টেড ফর লুপ নামে পরিচিত। অভ্যন্তরীণ লুপটি সম্পূর্ণরূপে কার্যকর হয় যখন বাইরের লুপটি একবার কার্যকর করা হয়। সুতরাং যদি বাইরের লুপ এবং ভিতরের লুপ চারবার কার্যকর করা হয়, তাহলে ভিতরের লুপ প্রতিটি বাইরের লুপের জন্য চারবার কার্যকর করা হবে, অর্থাৎ, মোট 16 বার।

উদাহরণ

|_+_|

আউটপুট

|_+_|

যখন লুপ

C++ এ, যখন লুপ প্রোগ্রামের একটি অংশকে কয়েকবার পুনরাবৃত্তি করতে ব্যবহৃত হয়। যদি পুনরাবৃত্তির সংখ্যা স্থির না হয়, তবে লুপের পরিবর্তে একটি সময় লুপ ব্যবহার করার পরামর্শ দেওয়া হয়।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

নেস্টেড যখন লুপ

C++ এ, আপনি অন্য while লুপের ভিতরে একটি while লুপ ব্যবহার করতে পারেন; এটি একটি নেস্টেড while লুপ হিসাবে পরিচিত। যখন বাইরের লুপ একবার নির্বাহ করা হয় তখন নেস্টেড while লুপটি কার্যকর করা হয়।

উদাহরণ

|_+_|

আউটপুট

|_+_|

লুপ করার সময় করবেন

C++ do-while লুপ প্রোগ্রামের একটি অংশকে একাধিকবার পুনরাবৃত্তি করতে ব্যবহৃত হয়। যদি পুনরাবৃত্তির সংখ্যা স্থির না হয় এবং আপনাকে অবশ্যই অন্তত একবার লুপটি চালাতে হবে, এটি একটি ডু-হোয়াইল লুপ ব্যবহার করার পরামর্শ দেওয়া হয়।

C++ do-while লুপ অন্তত একবার কার্যকর করা হয় কারণ লুপ বডির পরে কন্ডিশন চেক করা হয়।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

নেস্টেড ডু-হাইল লুপ

C++ এ, আপনি যদি অন্য ডু-হাইল লুপের ভিতরে একটি ডু-হাইল লুপ ব্যবহার করেন, তবে এটি নেস্টেড ডু-হাইল লুপ হিসাবে পরিচিত। নেস্টেড do-while লুপ প্রতিটি বাইরের ডু-হাইল লুপের জন্য সম্পূর্ণরূপে কার্যকর করা হয়।

উদাহরণ

|_+_|

আউটপুট

|_+_|

সিদ্ধান্ত গ্রহণের বিবৃতি

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

প্রোগ্রামিং ভাষায় সিদ্ধান্ত গ্রহণের বিবৃতিগুলি প্রোগ্রাম নির্বাহের প্রবাহের দিক নির্ধারণ করে। সি++ এ উপলব্ধ সিদ্ধান্ত গ্রহণের বিবৃতি হল:

  • যদি বিবৃতি
  • যদি..অন্য বিবৃতি
  • নেস্টেড যদি স্টেটমেন্ট
  • if-else-যদি মই
  • জাম্প স্টেটমেন্ট:
    • বিরতি
    • চালিয়ে যান
    • যাও
    • প্রত্যাবর্তন

যদি বিবৃতি

যদি বিবৃতি একটি সহজ সিদ্ধান্ত গ্রহণের বিবৃতি হয়। বিবৃতির ব্লক কার্যকর করা হবে কিনা তা নির্ধারণ করতে এটি ব্যবহার করা হয়। শর্ত সত্য হলে বিবৃতির একটি ব্লক কার্যকর করা হয় অন্যথায় নয়।

বাক্য গঠন

|_+_|

এখানে, শর্তাবলী মূল্যায়নের পরে সত্য বা মিথ্যা হবে। যদি বিবৃতি বুলিয়ান মান গ্রহণ করে।

উদাহরণ

|_+_|

আউটপুট

|_+_|

যদি অন্য বিবৃতি

if বিবৃতিটি বলে যে যদি একটি শর্ত সত্য হয় তবে এটি স্টেটমেন্টের ব্লক কার্যকর করবে এবং শর্তটি মিথ্যা হলে এটি কার্যকর হবে না। কন্ডিশনটি মিথ্যা হলে কোডের একটি ব্লক চালানোর জন্য আপনি if স্টেটমেন্ট সহ else স্টেটমেন্ট ব্যবহার করতে পারেন।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

বিবৃতি থাকলে নেস্টেড

একটি নেস্টেড if in C++ হল একটি if স্টেটমেন্ট যা আরেকটি if স্টেটমেন্টকে লক্ষ্য করে। Nested if স্টেটমেন্ট মানে হল একটি if স্টেটমেন্টের ভিতরে আরেকটি if স্টেটমেন্ট। হ্যাঁ, C এবং C++ উভয়ই ইফ স্টেটমেন্টের মধ্যে আমাদের নেস্টেড ইফ স্টেটমেন্ট অফার করে, যেমন, আপনি একটি if স্টেটমেন্ট আরেকটি if স্টেটমেন্টের ভিতরে রাখতে পারেন।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

if-else-যদি মই

একজন ব্যবহারকারী বিভিন্ন বিকল্পের মধ্যে সিদ্ধান্ত নিতে পারেন। if স্টেটমেন্টগুলি উপরে-নিচ থেকে কার্যকর করা হয়। যত তাড়াতাড়ি শর্তগুলি যদি সত্য হয় নিয়ন্ত্রণ করে, তখন তার সাথে যুক্ত বিবৃতিটি কার্যকর করা হয়, এবং বাকিটি অন্যথা-যদি মই বন্ধ করা হয়। শর্ত সত্য না হলে, শেষ এবং চূড়ান্ত বিবৃতি সঞ্চালিত হবে.

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

ঝাঁপ দাও বিবৃতি

বিরতি

এই বিবৃতিটি লুপটি বন্ধ করতে ব্যবহৃত হয়। লুপের মধ্যে থেকে ব্রেক স্টেটমেন্টের সম্মুখীন হওয়ার সাথে সাথে লুপের পুনরাবৃত্তি সেখানে থামে এবং নিয়ন্ত্রণ লুপের পরে প্রথম স্টেটমেন্টে অবিলম্বে ফিরে আসে।

বাক্য গঠন
বিরতি;

ব্রেক স্টেটমেন্টগুলি এমন পরিস্থিতিতে ব্যবহার করা হয় যখন আমরা লুপের জন্য পুনরাবৃত্তির প্রকৃত সংখ্যা সম্পর্কে নিশ্চিত নই বা কিছু শর্তের ভিত্তিতে লুপটি বন্ধ করে দিই।

উদাহরণ

|_+_|

আউটপুট

|_+_|

চালিয়ে যান

কন্টিনিউ স্টেটমেন্ট হল ব্রেক স্টেটমেন্টের বিপরীত; লুপটি বন্ধ করার পরিবর্তে, এটি লুপের পরবর্তী পুনরাবৃত্তি করতে বাধ্য করে।

অবিরত বিবৃতি লুপকে পরবর্তী পুনরাবৃত্তি কার্যকর করতে বাধ্য করে। যখন অবিরত বিবৃতিটি কার্যকর করা হয়, তখন কন্টিনিউ স্টেটমেন্ট অনুসরণ করে লুপের ভিতরের কোডটি এড়িয়ে যায় এবং পরবর্তী পুনরাবৃত্তি শুরু হবে।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

যাও

C++-এ goto স্টেটমেন্ট একটি শর্তহীন জাম্প স্টেটমেন্টকে বোঝায় যা একটি ফাংশনের মধ্যে এক বিন্দু থেকে অন্য বিন্দুতে লাফ দিতে ব্যবহৃত হয়।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

প্রত্যাবর্তন

C++ এ রিটার্ন ফাংশনে এক্সিকিউশনের প্রবাহ ফিরিয়ে দেয়। এই বিবৃতি কোন শর্তসাপেক্ষ বিবৃতি প্রয়োজন নেই. একবার বিবৃতিটি কার্যকর করা হলে, প্রোগ্রামের প্রবাহ অবিলম্বে বন্ধ হয়ে যায় এবং যেখান থেকে এটি কল করা হয়েছিল সেখান থেকে নিয়ন্ত্রণ ফিরিয়ে দেয়। রিটার্ন স্টেটমেন্ট একটি অকার্যকর ফাংশনের জন্য কিছু ফেরত দিতে পারে বা নাও পারে, কিন্তু একটি অকার্যকর ফাংশনের জন্য একটি রিটার্ন মান অবশ্যই ফেরত দিতে হবে।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ ফাংশন

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

C++ প্রোগ্রামের অন্তত একটি ফাংশন আছে, প্রধান() ফাংশন।

একটি ফাংশন সংজ্ঞায়িত করা

C++ এ একটি ফাংশন সংজ্ঞা একটি ফাংশন হেডার এবং একটি বডি নিয়ে গঠিত।

    রিটার্ন টাইপ- এটি একটি মান ফেরত দিতে পারে। কিছু ফাংশন একটি মান ফেরত ছাড়া অপারেশন সঞ্চালন. এর মধ্যে, return_type হল কীওয়ার্ড অকার্যকর .ফাংশনের নাম- এটি ফাংশনের প্রকৃত নাম। ফাংশনের নাম এবং তালিকা একসাথে ফাংশন স্বাক্ষর গঠন করে।পরামিতি- একটি প্যারামিটার ঠিক একটি স্থানধারকের মত। যখন একটি ফাংশন আহ্বান করা হয়, আপনি মানটি প্যারামিটারে পাস করেন। এই মানটি একটি প্রকৃত প্যারামিটার বা যুক্তি হিসাবে পরিচিত। পরামিতি তালিকাটি একটি ফাংশনের পরামিতিগুলির ক্রম, প্রকার এবং সংখ্যাকে বোঝায়।ফাংশন বডি- শরীরে বিবৃতিগুলির একটি সংগ্রহ রয়েছে যা ফাংশনটি কী করে তা নির্ধারণ করে।

উদাহরণ

|_+_|

একটি ফাংশন ঘোষণা

C++ এ, ফাংশনগুলি ব্যবহার করার আগে অবশ্যই ঘোষণা করতে হবে। আপনি একটি ফাংশন এর রিটার্ন মান, নাম এবং এর আর্গুমেন্টের ধরন প্রদান করে ঘোষণা করতে পারেন। আর্গুমেন্টের শর্তাবলী ঐচ্ছিক। একটি ফাংশন সংজ্ঞা একটি ফাংশন ঘোষণা হিসাবে গণনা করা হয়।

উদাহরণ

|_+_|

একটি ফাংশন কলিং

আপনি যখন একটি C++ ফাংশন তৈরি করেন, আপনি ফাংশনটি কী করতে হবে তা নির্ধারণ করুন। একটি ফাংশন ব্যবহার করতে, আপনাকে সেই ফাংশনটিকে কল করতে বা আহ্বান করতে হবে।

যখন প্রোগ্রামটি একটি ফাংশনকে কল করে, তখন প্রোগ্রাম কন্ট্রোল কল ফাংশনে স্থানান্তরিত হয়। একটি কল ফাংশন একটি সংজ্ঞায়িত কাজ সম্পাদন করে এবং যখন এটির রিটার্ন স্টেটমেন্ট কার্যকর করা হয় বা যখন এটির ফাংশন-এন্ডিং ক্লোজিং ব্রেসে পৌঁছে যায়, তখন এটি মূল প্রোগ্রামে প্রোগ্রাম নিয়ন্ত্রণ ফিরিয়ে দেয়।

উদাহরণ

|_+_|

ফাংশন আর্গুমেন্ট

যদি একটি ফাংশন আর্গুমেন্ট ব্যবহার করে, তবে এটি ভেরিয়েবল ঘোষণা করা উচিত যা আর্গুমেন্টের মান গ্রহণ করে। এই ভেরিয়েবল হিসাবে পরিচিত হয় ফাংশনের আনুষ্ঠানিক পরামিতি।

    মূল্য দ্বারা কল: এটি ফাংশনের আনুষ্ঠানিক প্যারামিটারে আর্গুমেন্টের প্রকৃত মান কপি করে। ফাংশনের ভিতরে প্যারামিটারে করা পরিবর্তনগুলি আর্গুমেন্টকে প্রভাবিত করে না।পয়েন্টার দ্বারা কল করুন: এটি আনুষ্ঠানিক প্যারামিটারে আর্গুমেন্টের ঠিকানা কপি করে। এই ফাংশনের ভিতরে, ঠিকানাটি কলে ব্যবহৃত আর্গুমেন্ট অ্যাক্সেস করতে ব্যবহৃত হয়। এর মানে হল প্যারামিটারে করা পরিবর্তনগুলি আর্গুমেন্টকে প্রভাবিত করে।রেফারেন্স দ্বারা কল: এটি আনুষ্ঠানিক প্যারামিটারে একটি আর্গুমেন্টের রেফারেন্স কপি করে। এই ফাংশনের ভিতরে, কলে ব্যবহৃত আর্গুমেন্ট অ্যাক্সেস করতে রেফারেন্স ব্যবহার করা হয়। এর মানে হল প্যারামিটারে করা পরিবর্তনগুলি আর্গুমেন্টকে প্রভাবিত করে।

C++ সংখ্যা

সাধারণত, যখন আমরা সংখ্যা নিয়ে কাজ করি, তখন আমরা আদিম ডেটা টাইপ ব্যবহার করি যেমন int, শর্ট, লং, ফ্লোট, ডাবল ইত্যাদি। C++ ডেটা টাইপ নিয়ে আলোচনা করার সময় ডেটা টাইপের সংখ্যা, তাদের সম্ভাব্য মান এবং সংখ্যার ব্যাপ্তি ব্যাখ্যা করা হয়েছে।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ এ গণিত অপারেটর

হ্যাঁ না ফাংশন উদ্দেশ্য
এক দ্বিগুণ পাপ (ডবল);এটি একটি কোণ (দ্বৈত হিসাবে) নেয় এবং সাইনটি ফেরত দেয়।
দুই ডবল cos(ডবল);এটি একটি কোণ (দ্বৈত হিসাবে) নেয় এবং কোসাইন প্রদান করে।
3 ডবল ট্যান (ডবল);এটি একটি কোণ (দ্বৈত হিসাবে) নেয় এবং স্পর্শক প্রদান করে।
4 ডবল পাউ (ডবল, ডবল);প্রথমটি হল একটি সংখ্যা যা আপনি বাড়াতে চান এবং দ্বিতীয়টি হল আপনি যে শক্তিটি বাড়াতে চান তা টি
5 ডবল লগ (ডবল);এটি একটি সংখ্যা নেয় এবং সেই সংখ্যার স্বাভাবিক লগ প্রদান করে।
6 ডবল হাইপোট (ডবল, ডবল);আপনি যদি এটিকে একটি সমকোণী ত্রিভুজের দুই বাহুর দৈর্ঘ্য অতিক্রম করেন তবে এটি আপনাকে কর্ণের দৈর্ঘ্য ফিরিয়ে দেবে।
7 ডবল sqrt (ডবল);আপনি ফাংশনটি একটি সংখ্যা পাস করেন এবং এটি আপনাকে বর্গমূল দেয়।
8 int abs(int);এটি একটি পূর্ণসংখ্যার পরম মান প্রদান করে যা এটিতে পাস করা হয়।
9 ডাবল ফ্লোর (ডবল);পূর্ণসংখ্যাটি খুঁজে বের করে যা এটিতে পাস করা আর্গুমেন্টের চেয়ে কম বা সমান।
10 ডবল ফ্যাবস (ডবল);এটি পাস করা যেকোনো দশমিক সংখ্যার পরম মান প্রদান করে।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ অ্যারে

C++-এ একটি অ্যারে হল সংলগ্ন মেমরি অবস্থানগুলিতে সংরক্ষিত আইটেমগুলির একটি সংগ্রহ, এবং অ্যারের সূচকগুলি ব্যবহার করে উপাদানগুলি এলোমেলোভাবে অ্যাক্সেস করা যেতে পারে। এগুলি অনুরূপ উপাদানগুলি সংরক্ষণ করতে ব্যবহৃত হয় কারণ ডেটা টাইপ অবশ্যই সমস্ত উপাদানের জন্য একই হতে হবে। তারা প্রাইমিটিভ ডাটা টাইপ যেমন char, int, float, double ইত্যাদি সঞ্চয় করতে পারে। এতে যোগ করার জন্য C++-এ একটি অ্যারে প্রাপ্ত তথ্য যেমন স্ট্রাকচার, পয়েন্টার ইত্যাদি সংরক্ষণ করতে পারে। নিচে একটি অ্যারের মনোরম উপস্থাপনা দেওয়া হল। .

অ্যারে ঘোষণা

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

এখানে,

  • int - এক ধরনের উপাদান সংরক্ষণ করা হবে
  • y – অ্যারের নাম
  • 4 - অ্যারের আকার

অ্যারে অ্যাক্সেস উপাদান

একটি অ্যারের প্রতিটি উপাদান একটি সংখ্যা সঙ্গে সংযুক্ত করা হয়. সংখ্যাটিকে অ্যারে সূচক বলা হয়। আপনি সূচক ব্যবহার করে একটি অ্যারের উপাদান অ্যাক্সেস করতে পারেন।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

এখানে C++ অ্যারের কয়েকটি গুরুত্বপূর্ণ ধারণা রয়েছে

    বহুমাত্রিক অ্যারে: একটি দ্বি-মাত্রিক বিন্যাস হল বহুমাত্রিক বিন্যাসের সহজতম রূপ।একটি অ্যারে নির্দেশক: আপনি সূচী ছাড়াই অ্যারের নাম উল্লেখ করে একটি অ্যারের প্রথম উপাদানটিতে একটি পয়েন্টার তৈরি করবেন।ফাংশন অ্যারে পাসিং: আপনি একটি সূচী ছাড়াই অ্যারের নাম উল্লেখ করে একটি অ্যারের জন্য একটি পয়েন্টার ফাংশনে পাস করবেন।ফাংশন থেকে অ্যারে রিটার্ন: C++ ফাংশনটিকে একটি অ্যারে ফেরত দেওয়ার অনুমতি দেয়।

C++ স্ট্রিং

এটি চরিত্রের একটি সংগ্রহ। C++ প্রোগ্রামিং ভাষায় দুই ধরনের স্ট্রিং ব্যবহার করা হয়:

  • স্ট্রিং যে স্ট্রিং ক্লাস অবজেক্ট
  • সি-স্ট্রিং

স্ট্রিং ক্লাস

C++ লাইব্রেরি একটি প্রদান করে স্ট্রিং ক্লাস টাইপ যা উপরে উল্লিখিত সমস্ত ক্রিয়াকলাপকে সমর্থন করে, উপরন্তু আরও অনেক কার্যকারিতা।

উদাহরণ

|_+_|

আউটপুট

|_+_|

সি স্ট্রিং

এই স্ট্রিংটি C ভাষার মধ্যে উদ্ভূত হয়েছে এবং C++ এর মধ্যে সমর্থিত। এই স্ট্রিংটি অক্ষরের একটি এক-মাত্রিক অ্যারে যা একটি নাল অক্ষর '' দ্বারা সমাপ্ত হয়। এইভাবে নাল-টার্মিনেটেড স্ট্রিংটিতে এমন অক্ষর রয়েছে যা স্ট্রিংকে নাল দ্বারা অনুসরণ করে।

উদাহরণ

|_+_|

আউটপুট

|_+_|

কিছু ফাংশন যা নাল-টার্মিনেটেড স্ট্রিংকে ম্যানিপুলেট করে

    strcpy(s1, s2);

এটি স্ট্রিং s2 কে স্ট্রিং s1 এ কপি করে।

    strcat(s1, s2);

এটি স্ট্রিং s2 কে স্ট্রিং s1 এর শেষে সংযুক্ত করে।

    strstr(s1, s2);

এটি স্ট্রিং s1-এ স্ট্রিং s2 এর উপস্থিতিতে একটি পয়েন্টার প্রদান করে।

    strlen(s1);

এটি স্ট্রিং s1 এর দৈর্ঘ্য প্রদান করে।

    strcmp(s1, s2);

এটি 0 প্রদান করে যদি s1 এবং s2 একই হয়; s1s2 হলে 0 এর কম।

    strchr(s1, ch);

এটি স্ট্রিং s1-এ ch অক্ষরের উপস্থিতিতে পয়েন্টারকে ফিরিয়ে দেয়।

C++ পয়েন্টার

পয়েন্টার হল ঠিকানাগুলির একটি প্রতিনিধিত্ব। তারা প্রোগ্রামগুলিকে কল-বাই-রেফারেন্স অনুকরণ করতে এবং গতিশীল ডেটা স্ট্রাকচার তৈরি এবং ম্যানিপুলেট করতে সক্ষম করে।

বাক্য গঠন

|_+_|

কিভাবে একটি পয়েন্টার ব্যবহার করবেন?

  • প্রথমত, একটি পয়েন্টার ভেরিয়েবল সংজ্ঞায়িত করুন
  • এখন (&) ব্যবহার করে একটি পয়েন্টারে ভেরিয়েবলের ঠিকানা বরাদ্দ করুন যা সেই ভেরিয়েবলের ঠিকানা প্রদান করে।
  • (*) ব্যবহার করে ঠিকানায় সংরক্ষিত মানগুলি অ্যাক্সেস করা যা তার অপারেন্ড দ্বারা নির্দিষ্ট ঠিকানায় অবস্থিত ভেরিয়েবলের মান প্রদান করে।

পয়েন্টার কিছু ধারণা

    নাল পয়েন্টার: এটি বিভিন্ন স্ট্যান্ডার্ড লাইব্রেরিতে সংজ্ঞায়িত শূন্যের মান সহ একটি ধ্রুবক।পয়েন্টার পাটিগণিত: পয়েন্টারগুলিতে চারটি গাণিতিক অপারেটর ব্যবহার করা যেতে পারে: ++, –, +, –পয়েন্টার বনাম অ্যারে: পয়েন্টার এবং অ্যারে মধ্যে একটি ঘনিষ্ঠ সংযোগ আছে.পয়েন্টার অ্যারে: আপনি বেশ কয়েকটি পয়েন্টার ধরে রাখতে অ্যারেকে সংজ্ঞায়িত করতে পারেন।পয়েন্টার থেকে পয়েন্টার: C++ আপনাকে একটি পয়েন্টারে একটি পয়েন্টার রাখার প্রস্তাব দেয় এবং তাই।ফাংশন পয়েন্টার পাসিং: রেফারেন্স বা ঠিকানার মাধ্যমে পাস করা প্রদত্ত বিবৃতিটিকে কলিং ফাংশনে কলিং ফাংশনে পরিবর্তন করতে সক্ষম করে।ফাংশন থেকে রিটার্ন পয়েন্টার: C++ একটি স্থানীয় ভেরিয়েবল, স্ট্যাটিক ভেরিয়েবল এবং গতিশীলভাবে বরাদ্দ করা মেমরিতে একটি পয়েন্টার ফেরত দেওয়ার জন্য একটি ফাংশন অফার করে।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ রেফারেন্স

একটি রেফারেন্স ভেরিয়েবল হল একটি ইতিমধ্যে বিদ্যমান ভেরিয়েবলের নাম। একবার একটি রেফারেন্স শুরু হয়ে গেলে হয় পরিবর্তনশীল নাম বা রেফারেন্স নামটি ভেরিয়েবলটিকে উল্লেখ করতে ব্যবহার করা যেতে পারে।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ তারিখ এবং সময়

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

সময়-সম্পর্কিত চারটি প্রকার রয়েছে: clock_t, time_t, size_t, এবং tm। প্রকারগুলি - clock_t, size_t, এবং time_t কিছু পূর্ণসংখ্যা হিসাবে সিস্টেমের সময় এবং তারিখ উপস্থাপন করতে সক্ষম।

উদাহরণ

|_+_|

কিছু গুরুত্বপূর্ণ ফাংশন

    সময়_টি সময় (সময়_টি * সময়);

এটি 1 জানুয়ারী, 1970 থেকে অতিবাহিত কয়েক সেকেন্ডের মধ্যে বর্তমান ক্যালেন্ডারের সময় ফেরত দেয়৷ যদি সিস্টেমে সময় না থাকে, তাহলে .1 ফেরত দেওয়া হয়৷

    char *ctime(const time_t *time);

এটি ফর্মের একটি পংক্তিতে একটি পয়েন্টার ফেরত দেয় দিন মাস বছর ঘন্টা: মিনিট: সেকেন্ড।

    struct tm *localtime(const time_t *time);

এটি একটি পয়েন্টার ফেরত টিএম স্থানীয় সময় প্রতিনিধিত্ব করে কাঠামো।

    clock_t ঘড়ি (অকার্যকর);

এটি একটি মান প্রদান করে যা কলিং প্রোগ্রামটি চলার সময় আনুমানিক। সময় পাওয়া না গেলে .1 এর একটি মান ফেরত দেওয়া হয়।

    char * asctime ( const struct tm * সময়);

এটি স্ট্রিংটিতে একটি পয়েন্টার ফেরত দেয় যাতে ফর্মে রূপান্তরিত সময় দ্বারা নির্দেশিত কাঠামোতে সংরক্ষিত তথ্য থাকে: দিন মাসের তারিখ ঘন্টা: মিনিট: সেকেন্ড

    struct tm *gmtime(const time_t *time);

এটি একটি টিএম গঠন আকারে সময়ের একটি পয়েন্টার প্রদান করে।

    time_t mktime(struct tm *time);

এটি সময় দ্বারা নির্দেশিত কাঠামোতে পাওয়া ক্যালেন্ডার-সময় প্রদান করে।

    ডবল ডিফটাইম ( time_t time2, time_t time1);

এটি time1 এবং time2 এর মধ্যে সেকেন্ডের পার্থক্য গণনা করে।

    size_t strftime();

এটি একটি নির্দিষ্ট বিন্যাসে তারিখ এবং সময় ফর্ম্যাট করতে ব্যবহার করা যেতে পারে।

C++ ডেটা স্ট্রাকচার

C++ অ্যারেগুলি আপনাকে ভেরিয়েবলগুলিকে সংজ্ঞায়িত করার প্রস্তাব দেয় যা একই ধরণের বিভিন্ন ডেটা আইটেমকে একত্রিত করে। তবুও, দ গঠন আরেকটি ব্যবহারকারী-সংজ্ঞায়িত ডেটা টাইপ যা আপনাকে বিভিন্ন ধরণের ডেটা আইটেম একত্রিত করতে সক্ষম করবে। কাঠামো একটি রেকর্ড প্রতিনিধিত্ব করতে ব্যবহৃত হয়.

একটি কাঠামো সংজ্ঞায়িত করা

একটি গঠন সংজ্ঞায়িত করতে, আপনি struct বিবৃতি ব্যবহার করা উচিত. struct স্টেটমেন্ট প্রোগ্রামের জন্য একাধিক সদস্য সহ একটি ডেটা টাইপ সংজ্ঞায়িত করে।

|_+_|

দ্য গঠন ট্যাগ ঐচ্ছিক। সংজ্ঞার শেষে, চূড়ান্ত সেমিকোলনের আগে, আপনাকে এক বা একাধিক কাঠামোর ভেরিয়েবল নির্দিষ্ট করতে হবে।

কাঠামোর সদস্যদের অ্যাক্সেস করা

কাঠামোর যেকোনো সদস্যকে অ্যাক্সেস করতে, আপনি ব্যবহার করতে পারেন সদস্য অ্যাক্সেস অপারেটর (.) . মেম্বার এক্সেস অপারেটরকে একটি স্ট্রাকচার ভেরিয়েবলের নাম এবং আমরা যে স্ট্রাকচার মেম্বার অ্যাক্সেস করতে চাই তার মধ্যে একটি সময়কাল হিসাবে কোড করা হয়। আপনি ব্যবহার করবেন একটি কাঠামো গঠন প্রকারের ভেরিয়েবল সংজ্ঞায়িত করার জন্য কীওয়ার্ড।

ফাংশন আর্গুমেন্ট হিসাবে গঠন

আপনি কাঠামোটিকে ফাংশন আর্গুমেন্ট হিসাবে পাস করতে পারেন যেভাবে আপনি অন্য কোনও ভেরিয়েবল বা পয়েন্টার পাস করেন।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ ক্লাস এবং অবজেক্ট

C++ এর সবকিছুই ক্লাস এবং অবজেক্টের সাথে সম্পর্কিত, তাদের বৈশিষ্ট্য এবং পদ্ধতি সহ। উদাহরণস্বরূপ: বাস্তব জীবনে, একটি বাস একটি বস্তু . বাস আছে গুণাবলী , যেমন ওজন এবং রঙ, এবং পদ্ধতি , যেমন ড্রাইভ এবং ব্রেক।

গুণাবলী এবং পদ্ধতি হল ভেরিয়েবল এবং ফাংশন যে শ্রেণীর অন্তর্গত। তারা ক্লাস মেম্বার হিসেবে পরিচিত। ক্লাস হল একটি ব্যবহারকারী-সংজ্ঞায়িত ডাটা টাইপ যা আপনি একটি প্রোগ্রামে ব্যবহার করতে পারেন এবং এটি অবজেক্ট কনস্ট্রাক্টর বা অবজেক্ট তৈরির ব্লুপ্রিন্ট হিসেবে কাজ করে।

একটি ক্লাস তৈরি করুন

আপনি একটি ক্লাস তৈরি করতে চান, আপনি ব্যবহার করতে হবে ক্লাস কীওয়ার্ড:

উদাহরণ

|_+_|

একটি অবজেক্ট তৈরি করুন

C++ এ, একটি ক্লাস থেকে একটি অবজেক্ট তৈরি করা হয়।

একটি অবজেক্ট তৈরি করতে আপনাকে ক্লাসের নাম উল্লেখ করতে হবে, তারপরে অবজেক্টের নাম। ক্লাসের বৈশিষ্ট্যগুলি অ্যাক্সেস করতে, অবজেক্টে ডট সিনট্যাক্স (.) ব্যবহার করুন:

উদাহরণ

|_+_|

বিস্তারিত কিছু ধারণা

    ক্লাস সদস্যের কার্যাবলী: একটি সদস্য ফাংশন হল একটি ফাংশন যেটির প্রোটোটাইপ ক্লাস সংজ্ঞার মধ্যে অন্য যেকোন পরিবর্তনশীলের মতোই রয়েছে।ক্লাস অ্যাক্সেস মডিফায়ার: একজন শ্রেণীর সদস্যকে ব্যক্তিগত, সর্বজনীন, সুরক্ষিত হিসাবে সংজ্ঞায়িত করা যেতে পারে। ডিফল্টরূপে এটি ব্যক্তিগত।নির্মাতা: একটি কন্সট্রাক্টর হল একটি ক্লাসের একটি ফাংশন যাকে বলা হয় যখন একটি নতুন বস্তু তৈরি করা হয়।ধ্বংসকারী: একটি ধ্বংসকারী একটি ফাংশন যা বলা হয় যখন তৈরি বস্তু মুছে ফেলা হয়.কপি কনস্ট্রাক্টর:এটি একটি কনস্ট্রাক্টর যা একটি অবজেক্ট তৈরি করে একই ক্লাসের একটি অবজেক্ট দিয়ে শুরু করে, যা আগে তৈরি করা হয়েছে।বন্ধু ফাংশন: এটি একটি ক্লাসের ব্যক্তিগত এবং সুরক্ষিত সদস্যদের সম্পূর্ণ অ্যাক্সেস দেয়।ইনলাইন ফাংশন: কম্পাইলার ফাংশনে একটি কলের জায়গায় ফাংশনের বডিতে কোড প্রসারিত করে।এই পয়েন্টার: প্রতিটি বস্তুর একটি বিশেষ পয়েন্টার আছে এই যা বস্তু নিজেই নির্দেশ করে।একটি শ্রেণীর স্ট্যাটিক সদস্য: একটি ক্লাসের ডেটা সদস্য এবং ফাংশন সদস্য উভয়ই স্ট্যাটিক হিসাবে ঘোষণা করা যেতে পারে।

C++ উত্তরাধিকার

উত্তরাধিকার এমন একটি প্রক্রিয়া যেখানে একটি বস্তু তার মূল বস্তুর সমস্ত বৈশিষ্ট্য এবং আচরণ স্বয়ংক্রিয়ভাবে অর্জন করে। আপনি অন্যান্য ক্লাসে সংজ্ঞায়িত বৈশিষ্ট্য এবং ক্রিয়াগুলি সংশোধন করতে পারেন।

যে শ্রেণীটি অন্য শ্রেণীর সদস্যদের উত্তরাধিকারসূত্রে প্রাপ্ত হয় তাকে একটি উদ্ভূত শ্রেণী বলা হয় এবং যে শ্রেণীর সদস্যরা উত্তরাধিকার সূত্রে প্রাপ্ত হয় তাকে বেস শ্রেণী হিসাবে পরিচিত। প্রাপ্ত শ্রেণী হল বেস শ্রেণীর জন্য বিশেষায়িত শ্রেণী।

উত্তরাধিকারের প্রকারভেদ

    একক উত্তরাধিকারউত্তরাধিকারের ধরন যেখানে প্রাপ্ত বর্গ শুধুমাত্র একটি বেস ক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হয়।

'A' হল বেস ক্লাস,

'B' একটি উদ্ভূত শ্রেণী।

cplusplus
    বহুস্তরীয় উত্তরাধিকারঅন্য প্রাপ্ত বর্গ থেকে একটি শ্রেণী আহরণের একটি প্রক্রিয়া। শ্রেণী C শ্রেণী B এর বৈশিষ্ট্যগুলি উত্তরাধিকার সূত্রে পায় এবং শ্রেণী B শ্রেণী B এর বৈশিষ্ট্যগুলি উত্তরাধিকার সূত্রে পায়।
img 617dd1cc84e68
    একাধিক উত্তরাধিকারএকটি প্রাপ্ত বর্গ একটি বেস ক্লাস বা একাধিক থেকে তৈরি করা হয়। ক্লাস C ক্লাস B এবং ক্লাস A এর বৈশিষ্ট্য এবং আচরণের উত্তরাধিকারী হয়। সুতরাং, এখানে ক্লাস A এবং ক্লাস B হল C ক্লাসের মূল শ্রেণী।
img 617dd1ccd67cc
  • ভিতরে বহুমুখী উত্তরাধিকার, একটি প্রাপ্ত বর্গ অন্য একটি প্রাপ্ত বর্গ থেকে এবং অন্য একটি প্রাপ্ত শ্রেণীর একই বেস শ্রেণী থেকে তৈরি করা হয়। এই উত্তরাধিকার দ্বারা সমর্থিত নয়। NET ভাষা যেমন C#, F#, ইত্যাদি।

ক্লাস ডি ক্লাস C এবং ক্লাস B এর পাশাপাশি ক্লাস A. ক্লাস C, এবং ক্লাস B ক্লাস A-এর উত্তরাধিকারী হয়। ক্লাস A হল ক্লাস B এবং ক্লাস C এবং ক্লাস D-এর পিতামাতা।

img 617dd1cd9230a
    হাইব্রিড উত্তরাধিকারএকাধিক উত্তরাধিকারের সংমিশ্রণ। তাই, এটি বহুস্তরীয় উত্তরাধিকার এবং একাধিক উত্তরাধিকার এবং বহুস্তরীয় উত্তরাধিকার এবং বহুপথ উত্তরাধিকার বহুস্তর এবং একাধিক উত্তরাধিকারের সংমিশ্রণ হতে পারে।
img 617dd1cdf0c4e

C++ অ্যাক্সেস মডিফায়ার

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

C++ এ উপলব্ধ তিন ধরনের অ্যাক্সেস মডিফায়ার রয়েছে:

  • পাবলিক
  • ব্যক্তিগত
  • সুরক্ষিত

আসুন তাদের বিস্তারিত আলোচনা করা যাক:

পাবলিক

পাবলিক স্পেসিফায়ারের অধীনে ঘোষিত সমস্ত শ্রেণীর সদস্য সকলের জন্য উপলব্ধ। পাবলিক হিসাবে ঘোষিত সদস্য ফাংশন অন্যান্য ক্লাস এবং ফাংশন দ্বারাও অ্যাক্সেস করা যেতে পারে। একটি ক্লাসের পাবলিক সদস্যরা সেই ক্লাসের অবজেক্টের সাথে অ্যাক্সেস অপারেটর (.) ব্যবহার করে প্রোগ্রামের যেকোনো জায়গা থেকে অ্যাক্সেস করা যেতে পারে।

উদাহরণ

|_+_|

আউটপুট

|_+_|

ব্যক্তিগত

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

উদাহরণ

|_+_|

আউটপুট

|_+_|

সুরক্ষিত

একটি সুরক্ষিত অ্যাক্সেস মডিফায়ার একটি ব্যক্তিগত অ্যাক্সেস মডিফায়ারের মতোই কারণ এটি তার ক্লাসের বাইরে অ্যাক্সেস করা যায় না যদি না, একটি বন্ধু শ্রেণির সাহায্যে, পার্থক্য হল যে ক্লাস সদস্যদের সুরক্ষিত হিসাবে ঘোষণা করা হয় যে কোনও প্রাপ্ত শ্রেণি দ্বারা অ্যাক্সেস করা যেতে পারে সেই শ্রেণীরও।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ ওভারলোডিং

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

একটি ওভারলোডেড ঘোষণা একই সুযোগে পূর্বে ঘোষিত ঘোষণার মতো একই নামে ঘোষণা করা হয়, উভয় ঘোষণার ভিন্ন যুক্তি এবং ভিন্ন সংজ্ঞা রয়েছে।

ফাংশন ওভারলোডিং

ফাংশন ওভারলোডিং এমন একটি বৈশিষ্ট্য যা আপনাকে একই নামের একাধিক ফাংশন কিন্তু একটি ভিন্ন প্যারামিটার তালিকার অফার করে।

উদাহরণ

|_+_|

আউটপুট

|_+_|

সি++ পলিমরফিজম

অপারেটর ওভারলোডিং

আপনি ব্যবহারকারী-সংজ্ঞায়িত ক্লাসের জন্য অপারেটরদের কাজ করতে পারেন। এর অর্থ হল C++ অপারেটরদের একটি ডেটা টাইপের জন্য একটি বিশেষ অর্থ প্রদান করতে পারে। এটি অপারেটর ওভারলোডিং হিসাবে পরিচিত।

উদাহরণ

|_+_|

আউটপুট

|_+_|

এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ ধারণা। এর অর্থ একাধিক রূপ। অর্থাৎ, একই সত্তা ভিন্ন ভিন্ন পরিস্থিতিতে ভিন্নভাবে আচরণ করে।

ফাংশন ওভাররাইডিং

আপনার বেস ক্লাসের পাশাপাশি প্রাপ্ত ক্লাসে একই ফাংশন থাকতে পারে। আপনি যখন ডেরাইভড ক্লাসের একটি অবজেক্ট ব্যবহার করে ফাংশনটিকে কল করেন, তখন ডেরাইভড ক্লাসের ফাংশন বেস ক্লাসের পরিবর্তে এক্সিকিউট হয়।

অতএব, ফাংশন কলিং বস্তুর উপর নির্ভর করে বিভিন্ন ফাংশন নির্বাহ করা হয়। একে ফাংশন ওভাররাইডিং বলা হয়

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ ভার্চুয়াল ফাংশন

C++ এ, আপনি ফাংশনগুলিকে ওভাররাইড করতে পারবেন না যদি আমরা একটি বেস ক্লাস পয়েন্টার ব্যবহার করে উদ্ভূত ক্লাসের একটি বস্তুকে নির্দেশ করি।

বেস ক্লাসে ভার্চুয়াল ফাংশন ব্যবহার করা নিশ্চিত করে যে এই ক্ষেত্রে ফাংশনটি ওভাররাইড করা যেতে পারে। সুতরাং, ভার্চুয়াল ফাংশনগুলি ফাংশন ওভাররাইডিংয়ের আওতায় পড়ে।

বিশুদ্ধ ভার্চুয়াল ফাংশন

এটা সম্ভব যে আপনি একটি বেস ক্লাসে একটি ভার্চুয়াল ফাংশন অন্তর্ভুক্ত করতে চান যাতে এটি একটি প্রাপ্ত ক্লাসে পুনরায় সংজ্ঞায়িত করা যেতে পারে যাতে সেই শ্রেণীর বস্তুর সাথে মানানসই হয়, কিন্তু বেস ক্লাসে ফাংশনের জন্য আপনি কোন অর্থপূর্ণ সংজ্ঞা দিতে পারেন না। .

উদাহরণ

|_+_|

C++ ডেটা অ্যাবস্ট্রাকশন

C++-এ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের অপরিহার্য বৈশিষ্ট্যগুলির মধ্যে একটি হল ডেটা অ্যাবস্ট্রাকশন। বিমূর্তকরণ মানে শুধুমাত্র প্রাসঙ্গিক তথ্য প্রদর্শন করা এবং বিবরণ গোপন করা। ডেটা বিমূর্ততা বলতে বোঝায় বাইরের বিশ্বের ডেটা সম্পর্কে শুধুমাত্র প্রয়োজনীয় তথ্য প্রদান করা, পটভূমির বিবরণ লুকানো বা বাস্তবায়ন।

ক্লাস ব্যবহার করে বিমূর্ততা

আপনি ক্লাসের সাহায্যে C++ এ অ্যাবস্ট্রাকশন বাস্তবায়ন করতে পারেন। ক্লাস আপনাকে উপলভ্য অ্যাক্সেস স্পেসিফায়ার ব্যবহার করে ডেটা সদস্য এবং সদস্য ফাংশনগুলিকে গ্রুপ করতে সহায়তা করে। একটি ক্লাস সিদ্ধান্ত নিতে পারে কোন ডেটা সদস্য বাইরের বিশ্বের কাছে দৃশ্যমান হবে এবং কোনটি নয়।

অ্যাক্সেস স্পেসিফায়ার ব্যবহার করে বিমূর্ততা

অ্যাক্সেস স্পেসিফায়ার C++ এ বিমূর্ততা বাস্তবায়নে গুরুত্বপূর্ণ ভূমিকা পালন করে। আপনি ক্লাসের সদস্যদের উপর বিধিনিষেধ প্রয়োগ করতে অ্যাক্সেস স্পেসিফায়ার ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

  • একটি ক্লাসে সর্বজনীন হিসাবে ঘোষিত সদস্যদের প্রোগ্রামের যে কোনও জায়গা থেকে অ্যাক্সেস করা যেতে পারে।
  • একটি ক্লাসে ব্যক্তিগত হিসাবে ঘোষিত সদস্যদের শুধুমাত্র ক্লাসের মধ্যে থেকে অ্যাক্সেস করা যেতে পারে। ক্লাসের বাইরে কোডের কোনো অংশ থেকে তাদের অ্যাক্সেস করার অনুমতি নেই।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ ডেটা এনক্যাপসুলেশন

এটি ক্লাস নামক একক ইউনিটে ফাংশন এবং ডেটা সদস্যদের একত্রিত করার প্রক্রিয়া। এটি সরাসরি ডেটা অ্যাক্সেস রোধ করার জন্য। ক্লাসের ফাংশনগুলির মাধ্যমে তাদের অ্যাক্সেস দেওয়া হয়। এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের জনপ্রিয় বৈশিষ্ট্যগুলির মধ্যে একটি যা ডেটা লুকিয়ে রাখতে সহায়তা করে।

এটি বাস্তবায়ন করতে

  • সমস্ত ডেটা সদস্যদের ব্যক্তিগত করুন।
  • প্রতিটি ডেটা সদস্যের জন্য এমনভাবে একটি পাবলিক সেটার এবং গেটার ফাংশন তৈরি করুন যাতে সেট ফাংশন ডেটা সদস্যের মান সেট করে এবং গেট ফাংশন ডেটা সদস্যের মান পায়।

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ বিমূর্ত ক্লাস

C++ ক্লাসকে এর একটি ফাংশনকে vital> pure ভার্চুয়াল ফাংশন হিসেবে ঘোষণা করে বিমূর্ত করা হয়। একটি বিশুদ্ধ ভার্চুয়াল ফাংশন এর ঘোষণায় = 0 স্থাপন করে উল্লেখ করা হয়েছে। প্রাপ্ত ক্লাস তাদের বাস্তবায়ন প্রদান করতে হবে.

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ ফাইল এবং স্ট্রীম

হ্যাঁ না ডেটা টাইপ বর্ণনা
এক অফস্ট্রিম এটি আউটপুট ফাইল স্ট্রীম প্রতিনিধিত্ব করে এবং এটি ফাইল তৈরি করতে এবং ফাইলগুলিতে তথ্য লিখতে ব্যবহৃত হয়।
দুই ifstream এটি ইনপুট ফাইল স্ট্রিম প্রতিনিধিত্ব করে এবং এটি ফাইল থেকে তথ্য পড়তে ব্যবহৃত হয়।
3 fstream এটি সাধারণত ফাইল স্ট্রীম প্রতিনিধিত্ব করে এবং অফস্ট্রিম এবং ifstream উভয়েরই ক্ষমতা রয়েছে।

একটি ফাইল খোলা হচ্ছে

আপনি এটি পড়তে বা লিখতে পারার আগে একটি ফাইল খোলা উচিত। হয় fstream বা অফস্ট্রিম অবজেক্ট লেখার জন্য একটি ফাইল খুলতে ব্যবহার করা যেতে পারে। একটি ifstream অবজেক্ট শুধুমাত্র পড়ার উদ্দেশ্যে ফাইল খুলতে ব্যবহৃত হয়।

হ্যাঁ না মোড পতাকা বর্ণনা
এক ios::ate ফাইলের সমস্ত আউটপুট শেষে যুক্ত করতে হবে।
দুই ios::অ্যাপ এটি আউটপুটের জন্য একটি ফাইল খোলে এবং ফাইলের শেষে পড়া বা লেখার নিয়ন্ত্রণ নিয়ে যায়।
3 ios:: trunc যদি ফাইলটি ইতিমধ্যেই বিদ্যমান থাকে, তাহলে ফাইলটি খোলার আগে বিষয়বস্তু কেটে ফেলা হবে।
4 ios::আউট এটি লেখার জন্য একটি ফাইল খোলে।
5 ios::in এটি পড়ার জন্য একটি ফাইল খোলে।

বাক্য গঠন

|_+_|

একটি ফাইল বন্ধ করা হচ্ছে

একটি C++ প্রোগ্রাম বন্ধ হয়ে গেলে এটি স্বয়ংক্রিয়ভাবে সমস্ত স্ট্রিম ফ্লাশ করে, সমস্ত বরাদ্দ করা মেমরি ছেড়ে দেয় এবং খোলা সমস্ত ফাইল বন্ধ করে দেয়।

বাক্য গঠন

|_+_|

একটি ফাইল থেকে পড়া

আপনি স্ট্রিম নিষ্কাশন অপারেটর (>>) ব্যবহার করে আপনার প্রোগ্রামে একটি ফাইল থেকে তথ্য পড়তে পারেন। শুধুমাত্র পার্থক্য হল আপনি cin অবজেক্টের পরিবর্তে একটি fstream বা ifstream অবজেক্ট ব্যবহার করেন।

উদাহরণ পড়ুন এবং লিখুন

|_+_|

আউটপুট

|_+_|

ফাইল অবস্থান পয়েন্টার

ostream এবং istream উভয়ই ফাইল-পজিশন পয়েন্টার পুনঃস্থাপনের জন্য সদস্য ফাংশন প্রদান করে। এই সদস্য ফাংশনগুলি হল ওস্ট্রিমের জন্য সন্ধান করা এবং আইস্ট্রিমের জন্য সন্ধান করা। সন্ধান এবং সন্ধানের যুক্তিটি একটি দীর্ঘ পূর্ণসংখ্যা। অনুসন্ধানের দিক নির্দেশ করার জন্য একটি দ্বিতীয় যুক্তি উল্লেখ করা যেতে পারে।

C++ ব্যতিক্রম হ্যান্ডলিং

C++ এ ব্যতিক্রম হ্যান্ডলিং হল রানটাইম ত্রুটিগুলি পরিচালনা করার একটি প্রক্রিয়া। আপনি ব্যতিক্রম পরিচালনা করেন যাতে রানটাইম ত্রুটির পরেও অ্যাপ্লিকেশনের স্বাভাবিক প্রবাহ বজায় রাখা যায়।

C++ এ, একটি ব্যতিক্রম হল একটি ঘটনা বা বস্তু যা রানটাইমে নিক্ষেপ করা হয়। সমস্ত ব্যতিক্রম std::exception class থেকে প্রাপ্ত। যদি আমরা ব্যতিক্রমটি পরিচালনা না করি তবে এটি ব্যতিক্রম বার্তাটি প্রিন্ট করে এবং প্রোগ্রামটি বন্ধ করে দেয়।

ব্যতিক্রম বর্ণনা
std::bad_exception এটি অপ্রত্যাশিত ব্যতিক্রমগুলি পরিচালনা করতে ব্যবহৃত হয়।
std::logic_failure এটি একটি কোড পড়ার মাধ্যমে সনাক্ত করা যেতে পারে।
std::bad_typeid এটা সাধারণত টাইপড দ্বারা নিক্ষিপ্ত করা হয়.
std::runtime_error এটি একটি কোড পড়ে সনাক্ত করা যাবে না।
std:: ব্যতিক্রম এটি সমস্ত স্ট্যান্ডার্ড C++ ব্যতিক্রমগুলির একটি ব্যতিক্রম এবং অভিভাবক শ্রেণী।
std::bad_cast এটি সাধারণত dynamic_cast দ্বারা নিক্ষিপ্ত হয়।
std::bad_alloc এটা সাধারণত নতুন দ্বারা নিক্ষিপ্ত করা হয়.

C++ ব্যতিক্রম হ্যান্ডলিং তিনটি কীওয়ার্ডের উপর ভিত্তি করে: ধরার চেষ্টা কর, এবং নিক্ষেপ .

    চেষ্টা করুন- চেষ্টা ব্লক কোডের একটি ব্লক চিহ্নিত করে যার জন্য একটি বিশেষ ব্যতিক্রম সক্রিয় করা হবে। এক বা একাধিক ক্যাচ ব্লক এটি অনুসরণ করে।ধরা- একটি প্রোগ্রাম একটি ব্যতিক্রম হ্যান্ডলারের মাধ্যমে একটি ব্যতিক্রম ক্যাচ করে। ক্যাচ কীওয়ার্ডটি একটি ব্যতিক্রম ধরা দেখায়।নিক্ষেপ- একটি প্রোগ্রাম ব্যতিক্রমটি ছুড়ে দেয় যখন একটি সমস্যা দেখা যায়। এটি একটি থ্রো কীওয়ার্ড ব্যবহার করে করা হয়।

উদাহরণ

|_+_|

C++ ডাইনামিক মেমরি

স্মৃতি দুটি ভাগে বিভক্ত -

    স্ট্যাক− ফাংশনের ভিতরে ঘোষিত সমস্ত ভেরিয়েবল স্ট্যাক থেকে একটি মেমরি গ্রহণ করে।গাদা− এটি প্রোগ্রামের অব্যবহৃত মেমরি, এবং প্রোগ্রামটি চালানোর সময় এটি গতিশীলভাবে মেমরি বরাদ্দ করতে ব্যবহৃত হয়।

প্রোগ্রাম চলাকালীন প্রোগ্রামাররা গতিশীলভাবে স্টোরেজ স্পেস বরাদ্দ করতে পারে। তবুও, প্রোগ্রামাররা নতুন পরিবর্তনশীল নাম তৈরি করতে পারে না এবং এই কারণে, গতিশীল বরাদ্দের জন্য দুটি মানদণ্ড প্রয়োজন:

  • মেমরিতে একটি গতিশীল স্থান তৈরি করা
  • একটি পয়েন্টারে এর ঠিকানা সংরক্ষণ করা হচ্ছে

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

নতুন এবং অপারেটর মুছে দিন

এখানে, ডেটা-টাইপ যেকোন অন্তর্নির্মিত ডেটা টাইপ হতে পারে যাতে একটি অ্যারে অন্তর্ভুক্ত থাকে, বা ব্যবহারকারী-সংজ্ঞায়িত ডেটা টাইপের ক্লাস বা কাঠামো থাকে। বিল্ট-ইন ডেটা টাইপ দিয়ে শুরু করা যাক

বাক্য গঠন

|_+_|

যখন আপনি একটি পরিবর্তনশীল অনুভব করেন যেটি গতিশীলভাবে বরাদ্দ করা হয় না এবং আর প্রয়োজন হয় না, আপনি ফ্রি স্টোরে মেমরি খালি করতে পারেন 'মুছে ফেলা' অপারেটর.

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

অ্যারেগুলির গতিশীল মেমরি বরাদ্দ

আপনি যদি একজন প্রোগ্রামার হিসাবে; একই সিনট্যাক্সের সাহায্যে অক্ষরের একটি অ্যারের জন্য মেমরি বরাদ্দ করতে চান আপনি এটি করতে পারেন।

উদাহরণ

|_+_|

নেমস্পেস আপনাকে গোষ্ঠীভুক্ত সত্তার অফার করে যা আছে বিশ্বব্যাপী সুযোগ সংকীর্ণ স্কোপের মধ্যে, তাদের প্রদান নামস্থানের সুযোগ . এটি নাম দ্বারা উল্লেখিত বিভিন্ন যৌক্তিক সুযোগে প্রোগ্রামের উপাদানগুলিকে সংগঠিত করার অনুমতি দেয়। একটি নেমস্পেস হল একটি বৈশিষ্ট্য যা C++ এ উপস্থিত এবং C তে নেই। একই নামের একাধিক নামস্থান ব্লক অনুমোদিত। ব্লকের মধ্যে সমস্ত ঘোষণা নামযুক্ত সুযোগে ঘোষণা করা হয়।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

বিচ্ছিন্ন নামস্থান

একটি নামস্থানকে কয়েকটি অংশে সংজ্ঞায়িত করা হয় এবং একটি নামস্থান তার সংজ্ঞায়িত অংশগুলির সমষ্টি দ্বারা গঠিত হয়। নেমস্পেসের পৃথক অংশ একাধিক ফাইলে ছড়িয়ে আছে।

বাক্য গঠন

|_+_|

নেস্টেড নেমস্পেস

এখানে আপনি অন্য নামের স্থানের ভিতরে একটি নামস্থান সংজ্ঞায়িত করতে পারেন

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

C++ টেমপ্লেট

টেমপ্লেটটি C++ এর একটি বৈশিষ্ট্য যা আপনাকে জেনেরিক প্রোগ্রাম লিখতে দেয়। অন্য পদে, আপনি টেমপ্লেট ব্যবহার করে বিভিন্ন ডেটা প্রকারের সাথে কাজ করার জন্য একটি একক ফাংশন বা একটি ক্লাস তৈরি করতে পারেন। টেমপ্লেটগুলি প্রোগ্রামগুলির কোড নমনীয়তা এবং পুনঃব্যবহারযোগ্যতার জন্য বৃহত্তর কোডবেসে ব্যবহৃত হয়।

এই ধারণা দুটি উপায়ে ব্যবহার করা হয়:

  • ফাংশন টেমপ্লেট
  • ক্লাস টেমপ্লেট

ফাংশন টেমপ্লেট

একটি ফাংশন টেমপ্লেট একটি সাধারণ ফাংশনের মতো কাজ করে, একটি মূল পার্থক্য সহ।

একটি একক ফাংশন টেমপ্লেট বিভিন্ন ডেটা প্রকারের সাথে কাজ করতে পারে, কিন্তু, একটি একক সাধারণ ফাংশন এক সেট ডেটা টাইপের সাথে কাজ করতে পারে।

সাধারণত, আপনি যদি একাধিক ধরণের ডেটাতে অভিন্ন ক্রিয়াকলাপ করতে চান, আপনি ফাংশন ঘোষণার সাথে ফাংশন তৈরি করতে ফাংশন ওভারলোডিং ব্যবহার করতে পারেন।

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

উদাহরণ

|_+_|

আউটপুট

|_+_|

ক্লাস টেমপ্লেট

ফাংশন টেমপ্লেটের মতো, আপনি ক্লাস অপারেশনের জন্য ক্লাস টেমপ্লেট তৈরি করতে পারেন। সাধারণত, আপনাকে প্রতিটি ডেটা টাইপের জন্য একটি আলাদা ক্লাস তৈরি করতে হবে বা একক ক্লাসের মধ্যে অন্যান্য সদস্য ভেরিয়েবল এবং ফাংশন তৈরি করতে হবে।

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

উদাহরণ

|_+_|

আউটপুট

|_+_|

C++ প্রিপ্রসেসর

প্রিপ্রসেসর নির্দেশিকা হল প্রোগ্রামের কোডে হ্যাশ সাইন (#) এর আগে অন্তর্ভুক্ত লাইন। এই লাইনগুলি প্রোগ্রাম করা বিবৃতি নয় কিন্তু প্রিপ্রসেসরের জন্য নির্দেশাবলী। প্রিপ্রসেসর কোডের সংকলন শুরু হওয়ার আগে কোডটি পরীক্ষা করে এবং নিয়মিত বিবৃতিগুলি কোনও কোড তৈরি করার আগে সমস্ত নির্দেশগুলি সমাধান করে।

প্রিপ্রসেসর নির্দেশাবলী কোডের একক লাইন জুড়ে প্রসারিত। যত তাড়াতাড়ি নতুন লাইন অক্ষর পাওয়া যায়, প্রিপ্রসেসর নির্দেশ শেষ হয়।

প্রিপ্রসেসর নির্দেশাবলী 4 প্রধান ধরনের আছে:

  • ম্যাক্রো
  • ফাইল অন্তর্ভুক্তি
  • শর্তাধীন সংকলন
  • অন্যান্য নির্দেশাবলী

ম্যাক্রো

ম্যাক্রো হল কোডের একটি অংশ যা কিছু নাম দেওয়া হয়। যখনই কম্পাইলার এই নামের মুখোমুখি হয়, এটি কোডের আসল অংশ দিয়ে নামটি প্রতিস্থাপন করে। একটি ম্যাক্রোকে সংজ্ঞায়িত করতে '#define' নির্দেশিকা ব্যবহার করা হয়।

উদাহরণ

|_+_|

আউটপুট

|_+_|

পূর্বনির্ধারিত C++ ম্যাক্রো

    __LINE__

এটি প্রোগ্রামের লাইন নম্বর ধারণ করে যখন প্রোগ্রামটি কম্পাইল করা হচ্ছে।

    __ফাইল__

এটি যখন কম্পাইল করা হচ্ছে তখন প্রোগ্রামটির বর্তমান ফাইলের নাম রয়েছে।

    __তারিখ__

এটিতে স্ট্রিংটি রয়েছে যা বস্তুর কোডে সোর্স ফাইলের অনুবাদের তারিখ।

    __TIME__

এটি ঘন্টা: মিনিট: সেকেন্ডের একটি স্ট্রিং ধারণ করে যা প্রোগ্রামটি কম্পাইল করা হয়েছিল।

ফাইল অন্তর্ভুক্তি

এই প্রিপ্রসেসর নির্দেশিকা কম্পাইলারকে প্রোগ্রামে একটি ফাইল অন্তর্ভুক্ত করতে বলে। দুই ধরনের ফাইল আছে যা ব্যবহারকারীর দ্বারা প্রোগ্রামে রাখা হয়:

    হেডার ফাইল বা স্ট্যান্ডার্ড ফাইল: এই ফাইলগুলিতে পূর্ব-নির্ধারিত ফাংশনের সংজ্ঞা রয়েছে যেমন printf(), scanf() ইত্যাদি। এই ফাংশনগুলির সাথে কাজ করার জন্য এই ফাইলগুলি অন্তর্ভুক্ত করা উচিত। আলাদা হেডার ফাইলে একটি ভিন্ন ফাংশন ঘোষণা করা হয়।ব্যবহারকারী-সংজ্ঞায়িত ফাইল: যখন একটি প্রোগ্রাম অসাধারণ হয়ে ওঠে, তখন এটিকে ছোট ফাইলে ভাগ করা এবং যখনই প্রয়োজন তখন অন্তর্ভুক্ত করা ভাল অভ্যাস। এই ধরনের ফাইল হল ব্যবহারকারী-সংজ্ঞায়িত ফাইল।

শর্তাধীন সংকলন

এটি প্রোগ্রামের একটি নির্দিষ্ট অংশ কম্পাইল করতে বা কিছু শর্তের ভিত্তিতে প্রোগ্রামের কিছু নির্দিষ্ট অংশের সংকলন এড়িয়ে যেতে সাহায্য করে।

বাক্য গঠন

|_+_|

অন্যান্য নির্দেশাবলী

উপরে উল্লিখিত নির্দেশাবলী ছাড়াও এখানে আরও দুটি নির্দেশ রয়েছে যা সাধারণত ব্যবহৃত হয় না। এইগুলো:

    #undef নির্দেশিকা: #undef নির্দেশিকা একটি বিদ্যমান ম্যাক্রোকে অসংজ্ঞায়িত করতে ব্যবহৃত হয়।#প্রাগমা নির্দেশিকা: এটি একটি বিশেষ উদ্দেশ্য নির্দেশিকা, এবং এটি কিছু বৈশিষ্ট্য চালু বা বন্ধ করতে ব্যবহৃত হয়।

C++ সিগন্যাল হ্যান্ডলিং

সিগন্যাল হল সেই বাধা যা অপারেটিং সিস্টেম এমন একটি প্রক্রিয়ায় প্রদান করে যা একটি প্রোগ্রামকে সময়ের আগেই শেষ করে দেয়। UNIX-এ Ctrl+C চেপে, লিনাক্স , Mac OS X বা Windows মেশিন, আপনি বাধা তৈরি করতে পারেন।

এমন সংকেত রয়েছে যা সফ্টওয়্যার সনাক্ত করতে পারে না, তবে সিগন্যালের একটি তালিকা রয়েছে যা আপনি আপনার প্রোগ্রামে ধরতে পারেন এবং গ্রহণযোগ্য সংকেত-ভিত্তিক পদক্ষেপ নিতে পারেন। C++ হেডার ফাইল এই সংকেত বর্ণনা করে।

হ্যাঁ না সংকেত বর্ণনা
এক SIGFPE একটি ভ্রান্ত গাণিতিক অপারেশন, যেমন একটি শূন্য বিরতি বা একটি ওভারফ্লো অপারেশন।
দুই SIGABRT অস্বাভাবিক প্রোগ্রাম সমাপ্তি, যেমন বাতিল করার জন্য একটি কল।
3 SIGINT ইন্টারেক্টিভ ফোকাসের একটি সংকেত প্রাপ্তি
4 সীল একটি অবৈধ নির্দেশ আবিষ্কার.
5 SIGTERM প্রোগ্রাম একটি সমাপ্তির অনুরোধ জমা.
6 SIGSEGV অবৈধ ডিস্ক অ্যাক্সেস.

সিগন্যাল() ফাংশন

সি++ সিগন্যাল হ্যান্ডলিং লাইব্রেরিতে অপ্রত্যাশিত ইভেন্টগুলিকে আটকানোর জন্য একটি সংকেত বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

raise() ফাংশন

raise() ফাংশনের সাহায্যে, যা একটি আর্গুমেন্ট হিসাবে একটি পূর্ণসংখ্যা সংকেত সংখ্যা নেয়, আপনি সংকেত তৈরি করতে পারেন।

বাক্য গঠন

|_+_|

উদাহরণ

|_+_|

আউটপুট

|_+_|

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

বাক্য গঠন

|_+_|
হ্যাঁ না প্যারামিটার বর্ণনা
এক রাগান্বিত একটি একক বিবৃতি যা রুটিন-শুরুতে ফরোয়ার্ড করা যেতে পারে। এটি তুলনা করে অকার্যকর ধরনের একটি পয়েন্টার কাস্ট হিসাবে স্থানান্তর করা আবশ্যক. সরানোর কোন যুক্তি না থাকলে NULL ব্যবহার করা যেতে পারে।
দুই থ্রেড একটি অস্বচ্ছ, বর্তমান থ্রেডের জন্য বিশেষ শনাক্তকারী যা সাবরুটিন ফেরত দেয়।
3 attr একটি অদৃশ্য অবজেক্ট অ্যাট্রিবিউট যা থ্রেড অ্যাট্রিবিউট সেট করার জন্য ব্যবহার করা যেতে পারে। আপনি থ্রেড বৈশিষ্ট্য সহ একটি বস্তু সংজ্ঞায়িত করতে পারেন, অথবা ডিফল্ট মান সহ NULL।
4 শুরু_রুটিন C++ রুটিন যা একবার প্রতিষ্ঠিত হলে, থ্রেডটি কার্যকর হবে।

থ্রেড সমাপ্ত

POSIX থ্রেড বন্ধ করতে আমরা নিম্নলিখিত রুটিন ব্যবহার করি:

|_+_|

এখানে, pthread exit একটি থ্রেড সরাসরি প্রস্থান করতে ব্যবহৃত হয়। সাধারণত, একবার থ্রেডের কাজ শেষ হয়ে গেলে এবং কাজ করার জন্য আর প্রয়োজন হয় না, pthread exit() রুটিন নামকরণ করা হয়।

যদি main() বন্ধ হয়ে যায় এবং pthread exit() দিয়ে প্রস্থান করে থ্রেড তৈরি করার আগে, অন্য থ্রেডগুলি চলতে শুরু করতে পারে। অন্যথায় main() শেষ হলে, সেগুলি অবিলম্বে বন্ধ হয়ে যাবে

থ্রেড এন্টারিং এবং ডিটাচিং

আমরা থ্রেড প্রবেশ বা অপসারণ করতে ব্যবহার করতে পারেন দুটি রুটিন অনুসরণ করা হয়.

|_+_|

সাবরুটিন pthread join() 'threadid' থ্রেড বন্ধ না হওয়া পর্যন্ত কলিং থ্রেড ব্লক করে। এটির একটি বৈশিষ্ট্য নির্ধারণ করে যে এটি যোগযোগ্য বা বিচ্ছিন্ন কিনা যখন একটি থ্রেড গঠিত হয়। এটি শুধুমাত্র থ্রেড দ্বারা যোগ করা যেতে পারে যা যোগযোগ্য হিসাবে তৈরি হয়। একটি থ্রেড বিচ্ছিন্ন হিসাবে গঠিত হলে এটি যোগদান করা যাবে না.

C++ ওয়েব প্রোগ্রামিং

এবং CGI কি?

নির্দেশিকাগুলির একটি সংগ্রহ যা বর্ণনা করে যে কীভাবে ওয়েব সার্ভার এবং একটি কাস্টম স্ক্রিপ্টের মধ্যে তথ্য ভাগ করা হয় তা হল সাধারণ গেটওয়ে ইন্টারফেস বা CGI। বাহ্যিক গেটওয়ে সিস্টেমের জন্য, জেনেরিক গেটওয়ে ইন্টারফেস, বা CGI, HTTP সার্ভারের মতো তথ্য সার্ভারের সাথে ইন্টারফেস করার জন্য একটি মানক। CGI/1.1 হল সর্বশেষ সংস্করণ, এবং CGI/1.2 বিকাশাধীন।

ইন্টারনেটে ব্রাউজিং

আসুন দেখি CGI-এর ধারণা বোঝার জন্য আমরা একটি নির্দিষ্ট ওয়েব পৃষ্ঠা বা URL ব্রাউজ করার জন্য একটি হাইপারলিঙ্ক চাপলে কী হয়। আপনার ব্রাউজার দ্বারা HTTP ওয়েব সার্ভারের সাথে যোগাযোগ করা হয় এবং URL এর দাবি করে, যেমন ফাইলের নাম অনুসারে ফাইলের নাম। ওয়েব সার্ভার URL পার্স করে এবং একটি ফাইলের নাম খোঁজে। অনুরোধ করা ফাইলটি অবস্থিত থাকলে, ওয়েব সার্ভার ফাইলটিকে ব্রাউজারে ফিরিয়ে দেবে, অন্যথায়, এটি একটি ত্রুটি বার্তা পাঠাবে যে আপনি একটি অবৈধ ফাইলের অনুরোধ করেছেন৷

পপুলার গেটওয়ে ইন্টারফেস (CGI) হল একটি মৌলিক প্রোটোকল যা অ্যাপ্লিকেশনগুলিকে ওয়েব সার্ভার এবং ক্লায়েন্টদের সাথে যোগাযোগ করতে দেয়। এই CGI প্রোগ্রামগুলি Python, PERL, Shell, C বা C++ ইত্যাদিতে লেখা সম্ভব।

উদাহরণ

|_+_|

ওয়েব সার্ভার কনফিগারেশন

নিশ্চিত করুন যে ওয়েব সার্ভার CGI প্রোগ্রামিং চালিয়ে যাওয়ার আগে CGI গ্রহণ করে এবং এটি CGI প্রোগ্রামগুলিকে সামঞ্জস্য করার জন্য ডিজাইন করা হয়েছে। HTTP সার্ভার যে CGI প্রোগ্রামগুলি চালায় তার অনেকগুলি একটি পূর্ব-কনফিগার করা ডিরেক্টরিতে অবস্থিত। এই ডিরেক্টরিটিকে একটি CGI ডিরেক্টরি বলা হয় এবং এটির নামকরণ করা হয় /var/www/cgi-bin। কনভেনশন অনুসারে CGI ফাইলগুলিতে .cgi হিসাবে এক্সটেনশন থাকবে, যদিও সেগুলি C++ এর সাথে এক্সিকিউটেবল।

HTTP হেডার

    সেট-কুকি: স্ট্রিং

স্ট্রিং এর মধ্য দিয়ে যাওয়া কুকি কনফিগার করুন।

    সর্বশেষ সংশোধিত: তারিখ

সম্পদের শেষ আপডেটের তারিখ।

    বিষয়বস্তুর দৈর্ঘ্য: N

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

    বিষয়বস্তুর প্রকার:

একটি MIME স্ট্রিং যা স্ট্রিংয়ের বিন্যাস নির্দিষ্ট করে

    অবস্থান: URL

অনুরোধ করা URL এর পরিবর্তে যে URLটি ফেরত দেওয়া উচিত। এই ফাইলটি অন্য ফাইলে একটি অনুরোধ পুনঃনির্দেশ করতে ব্যবহার করা হবে।

    মেয়াদ শেষ হবে: তারিখ

যেদিন ডেটা অকেজো হয়ে গেল। একটি ওয়েবসাইট রিফ্রেশ করতে হবে কিনা তা সিদ্ধান্ত নিতে ব্রাউজারের এটি ব্যবহার করা উচিত।

পরিবেশ পরিবর্তনশীল

    বিষয়বস্তুর প্রকার: ক্লায়েন্ট সার্ভারে সংযুক্ত বিষয়বস্তু পাঠালে ব্যবহৃত বিষয়বস্তুর ডেটার সাজান৷ যেমন, ফাইল আপলোড করা ইত্যাদি।বিষয়বস্তুর দৈর্ঘ্য: প্রশ্নাবলীর তথ্যের সময়কাল যা শুধুমাত্র POST অনুরোধের জন্য প্রাপ্ত করা যেতে পারে।HTTP-কুকি: কী এবং মান জোড়ার প্রকারে সেট করা কুকিজ ফেরত দেয়।এজেন্ট HTTP ব্যবহারকারী: অনুরোধ-শিরোনাম ব্যবহারকারী-এজেন্ট ক্ষেত্র ব্যবহারকারী এজেন্ট সম্পর্কে তথ্য প্রদান করে যে অনুরোধটি শুরু করেছে। এটি ইন্টারনেটে একটি ব্রাউজারের নাম।পথ তথ্য: CGI স্ক্রিপ্ট ফাইলের দিকনির্দেশ।প্রশ্ন STRING: URL-এনকোড করা তথ্য যা GET প্রক্রিয়া থেকে একটি অনুরোধের সাথে জমা দেওয়া হয়।দূরবর্তী ADDRR: দূরবর্তী হোস্টের আইপি ঠিকানা যা আপিলের অনুমতি দেয়। এটি লগিং বা প্রমাণীকরণের উদ্দেশ্যে সহায়ক হতে পারে।দূরবর্তী হোস্ট: অনুসন্ধানকারী হোস্টের সম্পূর্ণ যোগ্য নাম। এই তথ্য উপলব্ধ না হলে, একটি IR ঠিকানা পেতে REMOTE ADDR ব্যবহার করা সম্ভব।অনুরোধের পদ্ধতি: জমা দেওয়ার জন্য ব্যবহৃত পদ্ধতি। GET এবং POST হল সবচেয়ে জনপ্রিয় পন্থা।স্ক্রিপ্ট ফাইলের নাম: একটি CGI স্ক্রিপ্টের সম্পূর্ণ রাস্তাসার্ভার নাম: সার্ভারের ডোমেইন নাম বা আইপি ঠিকানা।SERVER_SOFTWARE: সার্ভারটি চলমান প্রোগ্রামের নাম এবং সংস্করণ।

GET এবং POST পদ্ধতি

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

ইউআরএল উদাহরণ পান পদ্ধতি

|_+_|

কুকিজ ব্যবহার করে

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

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

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

উদাহরণ ফাইল আপলোড

|_+_|

উপসংহার

এর সাথে আমরা এই C++ টিউটোরিয়ালের শেষে চলে এসেছি। আশা করি এটি আপনাকে C++ প্রোগ্রামিং সম্পর্কে বুনিয়াদি বুঝতে সাহায্য করেছে।