অ্যাবস্ট্রাক্ট ডেটা টাইপ: এডিটি ডেটা মান এবং সম্পর্কিত ক্রিয়াকলাপগুলির একটি সেট হিসাবে সংজ্ঞায়িত করা যেতে পারে যা নির্দিষ্টভাবে কোনও নির্দিষ্ট প্রয়োগের ক্ষেত্রে স্বতন্ত্রভাবে নির্দিষ্ট করা থাকে। সুতরাং একটি অ্যাবস্ট্রাক্ট ডেটা টাইপ হ'ল তথ্য সংগঠিত সংগ্রহ এবং সেই তথ্য পরিচালনার জন্য ব্যবহৃত অপারেশনের একটি সেট। অপারেশনস সেটটি এডিটির ইন্টারফেসকে সংজ্ঞায়িত করে। যতক্ষণ না এডিটি ইন্টারফেসের শর্ত পূরণ করে ততক্ষণ এডিটি কীভাবে প্রয়োগ করা হয় তা বিবেচ্য নয়। যেহেতু, এডিটি তে, ডেটা মান এবং অপারেশনগুলি কম্পিউটারের ভাষায় বাস্তবায়ন না করে গাণিতিক নির্ভুলতার সাথে সংজ্ঞায়িত হয়, তাই আমরা কোনও ক্রিয়াকলাপ ডেটা টাইপ প্রয়োগ করে কিনা সে সম্পর্কে অন্যান্য বিমূর্ত তথ্য প্রকারের সাথে সম্পর্কিত অপারেশনের প্রভাব সম্পর্কে কারণ বলতে পারি etc.
অ্যাবস্ট্রাক্ট ডেটা টাইপ (এডিটি) এবং কংক্রিট ডেটা টাইপের মধ্যে মূল পার্থক্য হ'ল পরেরটি আমাদের কংক্রিটের উপস্থাপনের দিকে নজর দিতে দেয়, যেখানে প্রাক্তনটি আমাদের কাছ থেকে উপস্থাপনাকে আড়াল করে। একটি এডিটি খাঁটি এডিটি বা আপডেটযোগ্য এডিটি হতে পারে। খাঁটি এডিটি হ'ল সমস্ত অপারেশন খাঁটি ফাংশন। এর অর্থ অপারেশনগুলির কোনও পার্শ্ব প্রতিক্রিয়া নেই। বিশেষত, তারা সেখানে ইনপুট যুক্তিগুলি সংশোধন বা আপডেট করে না। এগুলি আউটপুট উত্পন্ন করতে কেবল এই যুক্তিগুলি ব্যবহার করে, যা এডিটি (বা অন্যান্য ধরণের) এর নতুন মূল্য। বেশিরভাগ কংক্রিটের ধরণ খাঁটি। উদাহরণস্বরূপ, পূর্ণসংখ্যার কোনও ক্রিয়াকলাপ আসলে কোনও পূর্ণসংখ্যাকে পরিবর্তন করে না। পরিবর্তে, '+' এর মতো সমস্ত ক্রিয়াকলাপ তাজা আউটপুট উত্পাদন করে।
একটি আপডেটযোগ্য এডিটি হ'ল এমন কিছু অপারেশন আসলে এডিটির মান পরিবর্তন করে। উদাহরণস্বরূপ, ধরুন আমাদের 'পপ' নামে একটি অপারেশন হয়েছে যা একটি স্ট্যাকটিকে একটি আর্গুমেন্ট হিসাবে গ্রহণ করেছে এবং এটি সংশোধন করেছে। ("স্থানে", "ধ্বংসাত্মকভাবে") সর্বোচ্চ অগ্রাধিকার আইটেমটি সরিয়ে দিয়ে। এই অপারেশনটিকে অশুচি বলে বিবেচনা করা হবে এবং পুরো এডিটি তখন অশুচিও হবে। একটি এডিটি ব্যবহারকারী সংজ্ঞায়িত এডিটি হতে পারে।
আমরা জানি যে একটি অ্যাবস্ট্রাক্ট ডেটা টাইপ এমন একটি ডেটা টাইপ যা নিম্নলিখিত দুটি শর্ত পূরণ করে:
টাইপ এবং ক্রিয়াকলাপগুলির প্রতিনিধিত্ব বা সংজ্ঞাটি একটি একক সিনট্যাকটিক ইউনিটে অন্তর্ভুক্ত।
প্রকারটি ব্যবহার করে এমন প্রোগ্রামের ইউনিটগুলি থেকে এই ধরণের অবজেক্টের উপস্থাপনা লুকানো থাকে, সুতরাং কেবলমাত্র সেই ধরণের অবজেক্টগুলির জন্য সরাসরি ক্রিয়াকলাপগুলি টাইপের সংজ্ঞাতে প্রদত্ত।
অ্যাবস্ট্রাক্ট ডেটা টাইপের সংজ্ঞায়িত কোনও ব্যবহারকারীর এই সরবরাহ করা উচিত:
একটি টাইপ সংজ্ঞা যা প্রোগ্রাম ইউনিটগুলিকে প্রকারের ভেরিয়েবল ঘোষণা করতে দেয় তবে এই ভেরিয়েবলগুলির উপস্থাপনা লুকায়।
ধরণের অবজেক্টগুলি ম্যানিপুলেট করার জন্য অপারেশনের একটি সেট।
ব্যবহারকারীর সংজ্ঞাযুক্ত বিমূর্ত ডাটা টাইপের একটি উদাহরণ কাঠামো। 'সি' চারটি মৌলিক ধরণের সরবরাহ করে: ইনট, চর, ফ্লোট এবং ডাবল। তবে, 'সি' প্রোগ্রামারকে তার নিজস্ব ধরণের সংজ্ঞা দেওয়ার ক্ষমতাও সরবরাহ করে। কাঠামো যেমন একটি উদাহরণ। একটি কাঠামো বিভিন্ন অংশের সমষ্টি, যেখানে প্রতিটি অংশই কিছু বিদ্যমান ধরণের থাকে।
struct abc
{int x;
float y;
};
উপরের কাঠামোর সংজ্ঞাটি কোনও ভেরিয়েবল তৈরি করে না, বরং এটি একটি নতুন ধরণের তৈরি করে। এই ধরণের ভেরিয়েবলগুলি বিল্ট ইন টাইপের ভেরিয়েবলগুলির অনুরূপভাবে তৈরি করা যেতে পারে।
struct abc a;
টাইপডেফ কীওয়ার্ডটি আমাদের নতুন প্রকারের জন্য নতুন ধরণের নাম তৈরি করতে দেয়।
উদাহরণ স্বরূপ:
typedef struct abc AB;
যেখানে এবি একটি নতুন টাইপের নাম যা এখন নতুন ধরণের তৈরি করতে ব্যবহৃত হতে পারে।
AB b;
ডেটা স্ট্রাকচার: নিম্নলিখিত ডেটা স্ট্রাকচারের বৈশিষ্ট্যগুলি রয়েছে:
এটিতে উপাদান উপাদান আইটেম রয়েছে, যা পারমাণবিক বা অন্য ডেটা কাঠামো (এখনও একটি ডোমেন) হতে পারে be
এক বা একাধিক উপাদান উপাদানগুলির ক্রিয়াকলাপের সেট।
উপাদানগুলি একে অপরের সাথে এবং সামগ্রিকভাবে কাঠামোর সাথে কীভাবে সম্পর্কিত (বিধিগুলি) তার বিধিগুলি সংজ্ঞায়িত করে।
ডাটা স্ট্রাকচার:
একটি ডেটা কাঠামো স্থির বা গতিশীল হতে পারে। একটি স্থিতিশীল ডেটা কাঠামোর একটি নির্দিষ্ট আকার থাকে। এই অর্থটি স্ট্যাটিক মডিফায়ারের অর্থ থেকে পৃথক। অ্যারে স্থির; একবার আমরা এটি ধরে রাখতে পারে এমন উপাদানগুলির সংখ্যা নির্ধারণ করি, সংখ্যাটি পরিবর্তন হয় না। একটি গতিশীল তথ্য কাঠামো এর বিষয়বস্তু দ্বারা প্রয়োজনীয় হিসাবে মৃত্যুর সময় কার্যকর হয় এবং সঙ্কুচিত হয়। লিঙ্কগুলি ব্যবহার করে একটি গতিশীল ডেটা কাঠামো প্রয়োগ করা হয়।
ডেটা স্ট্রাকচারগুলি আরও লিনিয়ার ডেটা স্ট্রাকচার এবং অ-লিনিয়ার ডেটা স্ট্রাকচারে শ্রেণিবদ্ধ করা যেতে পারে। লিনিয়ার ডেটা স্ট্রাকচারে প্রথম এবং শেষ উপাদানগুলি বাদে প্রতিটি উপাদানগুলির একটি স্বতন্ত্র পূর্বসূরি এবং উত্তরসূরি থাকে, তবে অ-লিনিয়ার ডেটা স্ট্রাকচারের ক্ষেত্রে এই জাতীয় কোনও বিধিনিষেধ নেই কারণ উপাদানগুলি আমরা যেভাবে ব্যবহার করি সেভাবে সীমাবদ্ধ যে কোনও পছন্দসই ফ্যাশনে সাজানো যেতে পারে elements এই ধরণের প্রতিনিধিত্ব করুন।