C++ ইউনিয়নের উদাহরণ

C I Uniyanera Udaharana



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

বাক্য গঠন:

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







মৌলিক সিনট্যাক্স নিম্নরূপ:



মিলন ইউনিয়নের নাম {

// সদস্য ঘোষণা

ডেটা টাইপ1 সদস্য1 ;

ডেটা টাইপ2 সদস্য2 ;

//...

} ;

এখানে, 'UnionName' ইউনিয়নের শনাক্তকারী হিসাবে কাজ করে যা এই নির্দিষ্ট ব্যবহারকারী-সংজ্ঞায়িত প্রকারের উল্লেখ করার জন্য একটি অনন্য নাম প্রদান করে। ইউনিয়ন সদস্যদের ডেটা টাইপগুলিকে 'DataType1', 'DataType2' ইত্যাদি হিসাবে চিহ্নিত করা হয়। এই ডেটা প্রকারগুলি বিভিন্ন ধরণের তথ্য বোঝায় যা ইউনিয়নের মধ্যে সংরক্ষণ করা যেতে পারে। ইউনিয়নের প্রতিটি সদস্য, 'সদস্য1', 'সদস্য2', ইত্যাদি নামের দ্বারা মনোনীত, ডেটার একটি স্বতন্ত্র অংশ উপস্থাপন করে।



আমরা এখন মৌলিক সিনট্যাক্স বুঝতে পারি। এখন এটি আরও ভালভাবে বোঝার জন্য কয়েকটি উদাহরণ ব্যবহার করা যাক।





উদাহরণ 1: মৌলিক ইউনিয়ন ব্যবহার

প্রথম উদাহরণটি C++-এ ইউনিয়নগুলির মৌলিক ব্যবহারকে চিত্রিত করে, তারা কীভাবে একটি একক কাঠামোর মধ্যে বিভিন্ন ডেটা প্রকারের মধ্যে মেমরির স্থান ভাগাভাগি করতে সক্ষম করে তা প্রদর্শন করে।

এখানে একটি উদাহরণ:



# অন্তর্ভুক্ত করুন

নামস্থান std ব্যবহার করে ;

মিলন অ্যারেইউনিয়ন {

int intArray [ 5 ] ;

ভাসা floatArray [ 5 ] ;

} ;

int প্রধান ( ) {

অ্যারেইউনিয়ন অ্যারেইউনিয়ন ;

জন্য ( int i = 0 ; i < 5 ; ++ i ) {

অ্যারেইউনিয়ন। intArray [ i ] = i * 2 ;

}

cout << 'ইন্টার অ্যারে:' ;

জন্য ( int i = 0 ; i < 5 ; ++ i ) {

cout << '' << অ্যারেইউনিয়ন। intArray [ i ] ;

}

cout << endl ;

জন্য ( int i = 0 ; i < 5 ; ++ i ) {

অ্যারেইউনিয়ন। floatArray [ i ] = i * 1.5f ;

}

cout << 'ফ্লোট অ্যারে:' ;

জন্য ( int i = 0 ; i < 5 ; ++ i ) {

cout << '' << অ্যারেইউনিয়ন। floatArray [ i ] ;

}

cout << endl ;

ফিরে 0 ;

}

এই C++ কোড স্নিপেটে, আমরা 'MyUnion' নামে একটি ইউনিয়ন ব্যবহার করি যা তিনটি ভিন্ন ডেটা সদস্যকে অন্তর্ভুক্ত করে: একটি পূর্ণসংখ্যা (intValue), একটি ফ্লোটিং-পয়েন্ট সংখ্যা (floatValue), এবং একটি অক্ষর (charValue)। ইউনিয়নের মেমরি স্পেস শেয়ার করার ক্ষমতার কারণে এই সদস্যদের মধ্যে শুধুমাত্র একজন যেকোন সময়ে সক্রিয় থাকতে পারে।

'প্রধান' ফাংশনের মধ্যে, আমরা ইউনিয়নের একটি উদাহরণ ঘোষণা করি যা 'myUnion'। প্রথমত, আমরা পূর্ণসংখ্যা সদস্যের মান 42 এ সেট করি এবং এটি প্রিন্ট করতে 'cout' ব্যবহার করি। পরবর্তীকালে, আমরা 'floatValue' সদস্যকে 3.14 এর ফ্লোটিং-পয়েন্ট মান নির্ধারণ করি এবং এটি প্রিন্ট করি। সবশেষে, আমরা 'A' অক্ষরটি 'charValue' সদস্যকে বরাদ্দ করি এবং এটি প্রিন্ট করি। এটি মনে রাখা অপরিহার্য যে যেহেতু সমস্ত ইউনিয়ন সদস্য একই মেমরি অবস্থান ভাগ করে, তাই একজন সদস্যকে পরিবর্তন করা অন্য সদস্যদের মূল্যবোধের উপর প্রভাব ফেলতে পারে। কোডটি 0 ফেরত দিয়ে শেষ হয় যা একটি সফল সম্পাদনের ইঙ্গিত দেয়।

উদাহরণ 2: কাঠামোর সাথে ইউনিয়ন

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

এখানে C++ এ একটি স্ট্রাকচারের মধ্যে একটি ইউনিয়ন ব্যবহার করার একটি উদাহরণ রয়েছে:

# অন্তর্ভুক্ত করুন

নামস্থান std ব্যবহার করে ;

গঠন বিন্দু {

int s1 ;

int s2 ;

} ;

মিলন আকৃতি {

int পক্ষই ;

ভাসা ব্যাসার্ধ ;

পয়েন্ট কেন্দ্র ;

} ;

int প্রধান ( ) {

আকৃতি আকৃতি ;

আকৃতি পক্ষই = 5 ;
cout << 'পক্ষই: ' << আকৃতি পক্ষই << endl ;

আকৃতি ব্যাসার্ধ = 6.0f ;
cout << 'ব্যাসার্ধ:' << আকৃতি ব্যাসার্ধ << endl ;

আকৃতি কেন্দ্র = { 10 , বিশ } ;
cout << 'কেন্দ্র: (' << আকৃতি কেন্দ্র . s1 << ', ' << আকৃতি কেন্দ্র . s2 << ')' << endl ;

ফিরে 0 ;

}

এই কোডে, আমরা একটি C++ প্রোগ্রাম সংজ্ঞায়িত করি যা একটি জ্যামিতিক আকারের বিভিন্ন দিক উপস্থাপন করতে একটি ইউনিয়ন এবং একটি কাঠামো ব্যবহার করে। প্রথমত, আমরা একটি 'পয়েন্ট' কাঠামো ঘোষণা করি যা দুটি পূর্ণসংখ্যা সদস্য, 's1' এবং 's2' নিয়ে গঠিত, যা একটি 2D স্থানের একটি বিন্দুর স্থানাঙ্ক উপস্থাপন করে। তারপর, আমরা 'আকৃতি' নামে একটি 'ইউনিয়ন' সংজ্ঞায়িত করি যা তিনটি সদস্য নিয়ে গঠিত: একটি 'পার্শ্ব' পূর্ণসংখ্যা, একটি 'ব্যাসার্ধ' ফ্লোটিং-পয়েন্ট এবং 'কেন্দ্র' নামে একটি 'পয়েন্ট' কাঠামো। 'প্রধান' ফাংশনে এগিয়ে গিয়ে, আমরা 'শেপ' নামে একটি 'শেপ' অবজেক্ট ইনস্ট্যান্টিয়েট করি। তারপরে আমরা তার বিভিন্ন সদস্যদের মান নির্ধারণ করে ইউনিয়নের বহুমুখিতা প্রদর্শন করি। প্রাথমিকভাবে, আমরা পক্ষের সংখ্যা 5 এ সেট করি এবং ফলাফলটি প্রিন্ট করি। এর পরে, আমরা আকৃতিতে 6.0 ব্যাসার্ধ নির্ধারণ করি এবং ব্যাসার্ধটি আউটপুট করি। অবশেষে, আমরা আকৃতিতে স্থানাঙ্ক (10, 20) সহ একটি কেন্দ্র বিন্দু বরাদ্দ করি এবং কেন্দ্রের স্থানাঙ্কগুলি মুদ্রণ করি।

উদাহরণ 3: Enum-এর সাথে মিলন

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

এখানে একটি উদাহরণ:

# অন্তর্ভুক্ত করুন

নামস্থান std ব্যবহার করে ;

enum ডেটা টাইপ {

পূর্ণসংখ্যা ,

ভাসা ,

CHAR

} ;

মিলন ডেটা ভ্যালু {

int intValue ;

ভাসা floatValue ;

চর charValue ;

} ;

গঠন ডেটা {

ডেটা টাইপ টাইপ ;

ডেটা ভ্যালু মান ;

} ;

int প্রধান ( )

{

তথ্য উপাত্ত 1 , ডেটা2 , ডেটা3 ;

ডেটা1। টাইপ = পূর্ণসংখ্যা ;
ডেটা1। মান . intValue = 42 ;

ডেটা2। টাইপ = ভাসা ;
ডেটা2। মান . floatValue = 3.14f ;

ডেটা3। টাইপ = CHAR ;
ডেটা3। মান . charValue = 'ক' ;

cout << 'ডেটা 1:' << ডেটা1। মান . intValue << endl ;
cout << 'ডেটা 2:' << ডেটা2। মান . floatValue << endl ;
cout << 'ডেটা 3:' << ডেটা3। মান . charValue << endl ;

ফিরে 0 ;

}

এই উদাহরণের জন্য, আমাদের কাছে একটি প্রোগ্রাম রয়েছে যা একটি নমনীয় ডেটা স্ট্রাকচার তৈরি করতে enums, unions এবং structs ব্যবহার করে যা বিভিন্ন ধরনের মান ধারণ করতে সক্ষম। 'DataType' enum তিনটি মৌলিক ডেটা প্রকারের প্রতিনিধিত্ব করার জন্য সংজ্ঞায়িত করা হয়েছে: INTEGEER, FLOAT, এবং CHAR। enum নামের অখণ্ড ধ্রুবকের একটি সেট অফার করে কোড পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা বাড়ায়।

তারপর, আমরা তিনটি সদস্য নিয়ে 'DataValue' নামক একটি ইউনিয়ন তৈরি করি: 'charValue' টাইপের char, 'floatValue' টাইপের float এবং 'intValue' টাইপের int। একটি ইউনিয়নের সাথে, এই সদস্যরা একটি সাধারণ মেমরি অবস্থান ভাগ করে যা ইউনিয়নকে স্বতন্ত্র ধরণের মানগুলিকে বিনিময়যোগ্যভাবে মিটমাট করতে দেয়। তারপরে 'ডেটা' কাঠামো তৈরি করা হয় যা দুটি সদস্য নিয়ে গঠিত: 'টাইপ' নামে একটি 'ডেটা টাইপ' গণনাকারী এবং 'মান' নামে একটি 'ডেটাভ্যালু' ইউনিয়ন। এই স্ট্রাকটটি আমাদের একটি ডাটা টাইপকে এর সংশ্লিষ্ট মানের সাথে সংযুক্ত করতে দেয়, একটি কাঠামোগত উপস্থাপনা প্রদান করে।

'প্রধান' ফাংশনে, আমরা 'ডেটা' কাঠামোর তিনটি দৃষ্টান্ত স্থাপন করি: 'data1', 'data2', এবং 'data3'। আমরা ডেটা টাইপ নির্দিষ্ট করে এবং ইউনিয়নের মধ্যে উপযুক্ত মান সেট করে এই দৃষ্টান্তগুলিতে মান নির্ধারণ করি। উদাহরণ স্বরূপ, “data1” 42 এর মান সহ একটি পূর্ণসংখ্যা টাইপের সাথে বরাদ্দ করা হয়েছে। অবশেষে, প্রতিটি “ডেটা” ইনস্ট্যান্সে সংরক্ষিত মানগুলি প্রিন্ট করতে আমরা “cout” স্টেটমেন্ট ব্যবহার করি। প্রোগ্রামটি 'data1' এর পূর্ণসংখ্যার মান, 'data2' এর ফ্লোটিং-পয়েন্ট মান এবং 'data3' এর অক্ষর মান আউটপুট করে।

এই উদাহরণটি ব্যাখ্যা করে যে কীভাবে এনাম, ইউনিয়ন এবং স্ট্রাকটগুলিকে একত্রিত করে C++ এ একটি বহুমুখী এবং টাইপ-নিরাপদ ডেটা উপস্থাপনা তৈরি করতে নিযুক্ত করা যেতে পারে।

উপসংহার

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