"‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬‫سال‬ ‫بهار‬4931‫خورشیدی‬ ‫هجری‬
‫کابل‬ ‫دانشگاه‬
‫کمپیوترساینس‬ ‫دانشکدهء‬
‫دیتا‬ ‫ساختارهای‬
Data Structure
‫ویرایش‬‫دوم‬
Page 2 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫هستی‬ ‫پروگرامر‬ ‫یگانه‬ ‫نام‬ ‫به‬
Data Structure Using Java
‫سافت‬‫آن‬ ‫ساختن‬ ‫زمان‬ ‫در‬ ‫ویر‬ ‫سافت‬ ‫ابعاد‬ ‫تمام‬ ‫با‬ ‫انجنیرینگ‬ ‫ویر‬‫سافت‬ ‫از‬ ‫بخش‬ ‫یک‬ ‫حقیقت‬ ‫در‬ ‫هم‬ ‫سترکچر‬ ‫دیتا‬ ‫و‬ ‫است‬ ‫ارتباط‬ ‫در‬
.‫میکند‬ ‫بحث‬ ‫دیتا‬ ‫داخلی‬ ‫ساختار‬ ‫از‬ ‫که‬ ‫بوده‬ ‫انجنیرینگ‬ ‫ویر‬‫ع‬ ‫به‬ ‫وبا‬‫های‬ ‫روش‬ ‫دیگر‬ ‫بارت‬‫ذ‬‫کمپیوتر‬ ‫اصلی‬ ‫حافظهء‬ ‫در‬ ‫را‬ ‫دیتا‬ ‫خیرهء‬
(RAM( ‫دیتا‬ ‫ساختار‬ ‫نام‬ ‫به‬ )Data Structure).‫میکنند‬ ‫یاد‬
‫چیست؟‬ ‫دیتا‬
‫برای‬ ‫که‬ ‫است‬ ‫شدهء‬ ‫ارایه‬ ‫معلومات‬ ‫از‬ ‫عبارت‬communication.‫میباشد‬ ‫آماده‬ ‫ماشینها‬ ‫یاپراسس‬ ‫و‬ ‫انسانها‬ ‫وتحلیل‬ ‫تجزیه‬ ‫؛‬
: ‫که‬ ‫میکند‬ ‫هدایت‬ ‫ما‬ ‫به‬ ‫سترکچر‬ ‫دیتا‬
.‫شود‬ ‫ذخیره‬ ‫باید‬ ‫دیتا‬ ‫چگونه‬
‫باید‬ ‫چگونه‬organize‫گردد‬
‫چگونه‬Retrieve.‫شود‬
‫چگونه‬represent.‫گردد‬
‫مفی‬ ‫ویر‬ ‫سافت‬ ‫یک‬ ‫تا‬‫برای‬ ‫سترکچر‬ ‫دیتا‬ .‫نگردد‬ ‫دیتا‬ ‫وخرابی‬ ‫پراسسر‬ ‫وقت‬ ‫شدن‬ ‫ضایع‬ ‫باعث‬ ‫که‬ ‫آید‬ ‫بدست‬ ‫ومؤثر‬ ‫استفاده‬ ‫قابل‬ ، ‫د‬
organize( ‫اصلی‬ ‫حافظهء‬ ‫در‬ ‫دیتا‬ ‫کردن‬RAM)‫مانند‬ ‫ساختارهایی‬ ‫از‬Array،Stack،Queue،Linked List،Graph،
Trees‫باالی‬ ‫مذکور‬ ‫هرساختار‬ ‫که‬ ‫میکنند‬ ‫استفاده‬ ‫وغیره‬Data Sorting،Data Searching،Hash table،Graph
algorithm،Data Compressing‫وغیره‬apply.‫میگردد‬
‫سترکچر‬ ‫دیتا‬ ‫فواید‬
Ease of Use‫قابل‬ ‫آسان‬ ‫مذکوررا‬ ‫ویر‬ ‫وسافت‬ ‫ساخته‬ ‫کم‬ ‫را‬ ‫ویر‬ ‫سافت‬ ‫یک‬ ‫های‬ ‫پیچیدگی‬ ‫سترکچر‬ ‫دیتا‬ ‫از‬ ‫استفاده‬ ‫یعنی‬ :
.‫سازد‬ ‫می‬ ‫استفاده‬
Speed‫کمپیوتر‬ ‫میموری‬ ‫در‬ ‫منظم‬ ‫بسیار‬ ‫طور‬ ‫به‬ ‫دیتا‬ ‫سترکچر‬ ‫دیتا‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫چون‬ :organize‫و‬ ‫وقت‬ ‫بنأ‬ ‫میگردد‬
.‫باالمیرود‬ ‫سرعت‬ ‫و‬ ‫نگردیده‬ ‫ضایع‬ ‫پراسسر‬ ‫سرعت‬
Efficiency:.‫میکند‬ ‫کمک‬ ‫میشود‬ ‫ساخته‬ ‫که‬ ‫هدفی‬ ‫خاطر‬ ‫به‬ ‫پروگرام‬ ‫یک‬ ‫مؤثریت‬ ‫در‬ ‫سترکچر‬ ‫دیتا‬ ‫از‬ ‫استفاده‬ ‫یعنی‬
Efficient Use of Memory:‫در‬ ‫دیتا‬ ‫نمایش‬ ‫و‬ ‫ذخیره‬ ‫متفاوت‬ ‫های‬ ‫روش‬ ‫با‬ ‫آشنایی‬RAM‫طوری‬ ‫ما‬ ‫که‬ ‫میگردد‬ ‫باعث‬
‫ر‬ ‫حافظه‬ ‫کمترین‬ ‫که‬ ‫کنیم‬ ‫ذخیره‬ ‫حافظه‬ ‫در‬ ‫را‬ ‫دیتا‬.‫باشد‬ ‫داشته‬ ‫نیاز‬ ‫دسترسی‬ ‫روش‬ ‫بهترین‬ ‫با‬ ‫ا‬
Reusability( ‫شدن‬ ‫استفاده‬ ‫بار‬ ‫بار‬ ‫قابلیت‬ ‫ساختارها‬ ‫تمام‬ :reusability‫که‬ ‫باشد‬ ‫می‬ ‫دارا‬ ‫را‬ )‫ساختن‬ ‫در‬ ‫سهولت‬ ‫باعث‬
.‫شود‬ ‫می‬ ‫ها‬ ‫پروگرام‬
Type of Operation‫مذکور‬ ‫های‬ ‫ساختار‬ ‫در‬ ‫میکنیم‬ ‫استفاده‬ ‫ها‬ ‫پروگرام‬ ‫ساختن‬ ‫برای‬ ‫ستاندارد‬ ‫ساختارهای‬ ‫از‬ ‫ما‬ ‫زمانیکه‬ :
.‫گردد‬ ‫تطبیق‬ ‫عملیات‬ ‫مختلف‬ ‫انواع‬ ‫میتوانند‬
:‫سترکچر‬ ‫دیتا‬ ‫انواع‬
.‫باشد‬ ‫می‬ ‫دونوع‬ ‫به‬ ‫سترکچر‬ ‫دیتا‬
Primitive Structure‫ساختارهای‬ ‫از‬ ‫عبارت‬ :built in‫تنها‬ ‫کدام‬ ‫هر‬ ‫که‬ ‫باشد‬ ‫می‬Single value‫مانند‬ .‫میکند‬ ‫ذخیره‬ ‫را‬
int, char, String, double, float, Boolean.‫وغیره‬
Non Primitive Structure‫مجموعهء‬ ‫از‬ :‫چندین‬Primitive Data Type‫چندین‬ ‫تواند‬ ‫می‬ ‫هرکدام‬ ‫که‬ ‫میگردد‬ ‫تشکیل‬
: ‫از‬ ‫عبارتند‬ ‫که‬ ‫میگردد‬ ‫تقسیم‬ ‫دوبخش‬ ‫به‬ ‫خود‬ ‫نوبت‬ ‫به‬ ‫ساختارها‬ ‫نوع‬ ‫واین‬ .‫نماید‬ ‫ذخیره‬ ‫نام‬ ‫یک‬ ‫تحت‬ ‫درخود‬ ‫را‬ ‫قیمت‬
Linear Data Structure‫ش‬ ‫به‬ ‫را‬ ‫دیتا‬ ‫ها‬ ‫ساختار‬ ‫نوع‬ ‫این‬ :‫کمپیوتر‬ ‫حافظهء‬ ‫در‬ )‫(مسلسل‬ ‫خطی‬ ‫کل‬‫ذخیره‬
‫مانند‬ .‫میکند‬Array،stack،Queue.‫وغیره‬
Non-Linear Data Structure‫مختلف‬ ‫اشکال‬ ‫به‬ ‫دیتارا‬ :‫کمپیوتر‬ ‫حافظهء‬ ‫در‬،‫ها‬ ‫گراف‬ ‫مانند‬ ‫میکند‬ ‫ذخیره‬
‫وغیره‬ ‫ها‬ ‫چارت‬
Page 3 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
Object Oriented Design
( ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫ازلسان‬ ‫یکی‬ ‫جاوا‬ ‫میدانیم‬ ‫قسمیکه‬Object-Oriented Programming language.‫باشد‬ ‫می‬ )‫یعنی‬
( ‫مشخصات‬ ‫وتمام‬ ‫شده‬ ‫مشخص‬ ‫کار‬ ‫طرح‬ ‫یا‬ ‫نقشه‬ ‫اوال‬ ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫لسان‬ ‫نوع‬ ‫دراین‬attributes( ‫اعمال‬ ‫و‬ )behavior‫نرم‬ )
‫چندین‬ ‫سپس‬ ‫و‬ ‫میگردد‬ ‫معرفی‬ ‫درآن‬ ‫افزار‬object‫را‬ ‫ومشخصات‬ ‫خواص‬ ‫تمام‬ ‫و‬ ‫نموده‬ ‫استفاده‬ ‫مذکور‬ ‫کار‬ ‫طرح‬ ‫و‬ ‫نقشه‬ ‫از‬ ‫توانند‬ ‫می‬
‫بخو‬ ‫را‬ ‫شده‬ ‫ذکر‬ ‫طرح‬ ‫در‬ ‫که‬.‫بگیرند‬ ‫د‬
‫یعنی‬OOA (object oriented Approach)‫و‬ ‫نموده‬ ‫طرح‬ ‫ها‬ ‫کالس‬ ‫قالب‬ ‫در‬ ‫آنرا‬ ‫مربوطهء‬ ‫عملیات‬ ‫و‬ ‫دیتا‬ ‫که‬ ‫میدهد‬ ‫اجازه‬ ‫ما‬ ‫به‬
‫نهایت‬ ‫بی‬ ‫میتوانیم‬ ‫آن‬ ‫از‬object.‫بسازیم‬:‫از‬ ‫عبارتند‬ ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫لسان‬ ‫اساسی‬ ‫جزء‬ ‫دو‬ ‫بنأ‬
Classes‫فنکشن‬ ‫و‬ ‫مشخصات‬ ‫از‬ ‫مجموعهء‬ :‫که‬ ‫باشند‬ ‫می‬ ‫های‬‫و‬ ‫داشته‬ ‫آنرا‬ ‫باید‬ ‫افزار‬ ‫نرم‬ ‫یک‬.‫دهند‬ ‫انجام‬‫کار‬ ‫طرح‬ ‫ویک‬
(blue print‫برای‬ ‫نمونه‬ ‫ویا‬ )Object.‫بگیرند‬ ‫کالس‬ ‫از‬ ‫شانرا‬ ‫خصوصیات‬ ‫تمام‬ ‫تا‬ ‫باشد‬ ‫می‬ ‫ها‬
Object‫لمس‬ ‫قابل‬ ‫اشیای‬ ‫بعضی‬ ‫از‬ ‫عبارت‬ ‫درلغت‬ :‫(کتاب‬‫باشد‬ ‫می‬ )‫وغیره‬ ‫فشار‬ ،‫(زمان‬ ‫لمس‬ ‫قابل‬ ‫وغیر‬ )‫کمپیوتر‬ ، ‫قلم‬ ،
، ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫لسان‬ ‫دراصطالح‬ ‫و‬Object‫مشخصات‬ ‫و‬ ‫ها‬ ‫میتود‬ ‫که‬ ‫شوند‬ ‫می‬ ‫گفته‬ ‫افزار‬ ‫نرم‬ ‫از‬ ‫بخش‬ ‫به‬ ‫ها‬
‫وهر‬ .‫نمایند‬ ‫می‬ ‫تطبیق‬ ‫هارا‬ ‫کالس‬ ‫در‬ ‫شده‬ ‫معرفی‬Object.‫است‬ ‫بخش‬ ‫سه‬ ‫شامل‬
oAttribute
oBehavior
oUnique Identity
‫یک‬ ‫موتر‬ :‫مثال‬ ‫بطور‬Object‫که‬ ‫است‬attribute‫باشد‬ ‫می‬ ‫آن‬ ‫تولید‬ ‫سال‬ ‫و‬ ، ‫نوع‬ ‫؛‬ ‫سایز‬ ‫؛‬ ‫رنگ‬ ‫از‬ ‫عبارت‬ ‫آن‬ ‫های‬
‫درحالیکه‬behavior‫یا‬method‫گرفتن‬ ‫سرعت‬ ، ‫نمودن‬ ‫توقف‬ ،‫کردن‬ ‫مصرف‬ ‫تیل‬ ، ‫گرفتن‬ ‫سرعت‬ ‫از‬ ‫عبارت‬ ‫آن‬ ‫های‬
.‫باشد‬ ‫می‬ .....‫و‬unique Identity‫همان‬ ‫پلیت‬ ‫نمبر‬ ‫هم‬ ‫آن‬.‫است‬ ‫موتر‬
Object Oriented Programming Language‫اصول‬ ‫نام‬ ‫به‬ ‫میکنند.که‬ ‫استفاده‬ ‫ها‬ ‫مادل‬ ‫سازی‬ ‫ساده‬ ‫منظور‬ ‫به‬ ‫میکانیزم‬ ‫سه‬ ‫از‬
:‫از‬ ‫وعبارتند‬ .‫شود‬ ‫می‬ ‫نامیده‬ ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫لسان‬
4.Inheritance:‫و‬ ‫مشخصات‬ ‫ها‬ ‫کالس‬ ‫از‬ ‫بعضی‬behavior‫شانرا‬‫این‬ ‫که‬ ‫میگیرند‬ ‫ارث‬ ‫به‬ ‫را‬ ‫دیگر‬ ‫های‬ ‫کالس‬ ‫از‬
‫نام‬ ‫به‬ ‫خاصیت‬inheritance.‫یادمیگردد‬‫چندین‬ ‫دارای‬ ‫کالس‬ ‫چندین‬ ‫ویا‬ ‫دو‬ ‫ممکن‬ ‫یعنی‬attribute‫و‬behavior‫مشترک‬
‫به‬ ‫مذکور‬ ‫کالس‬ ‫از‬ ‫را‬ ‫خصوصیات‬ ‫این‬ ‫ها‬ ‫کالس‬ ‫وسایر‬ ‫شوند‬ ‫می‬ ‫معرفی‬ ‫ها‬ ‫کالس‬ ‫از‬ ‫یکی‬ ‫در‬ ‫مشترک‬ ‫اجزای‬ ‫این‬ ‫که‬ ‫باشند‬
‫میگی‬ ‫ارث‬‫نام‬ ‫به‬ ‫میگردند‬ ‫معرفی‬ ‫درآن‬ ‫مشترک‬ ‫خصوصیات‬ ‫که‬ ‫کالس‬ ‫و‬ .‫رند‬super class،base class‫ویا‬Parent
class‫نام‬ ‫به‬ ‫ها‬ ‫کالس‬ ‫سایر‬ ‫درحالیکه‬ ‫میگردد‬ ‫یاد‬Child class،sub class.‫یادمیگردند‬
‫عمر‬ ‫؛‬ ‫نام‬ ‫قبیل‬ ‫از‬ ‫مشترک‬ ‫مشخصات‬ ‫بعضی‬ ‫دارای‬ ‫سه‬ ‫هر‬ ‫ومعلم‬ ‫دکتور‬ ، ‫انجنیر‬ ‫کالس‬ ‫سه‬ :‫مثال‬‫وهمچنین‬ ‫وزن‬ ، ‫قد‬ ،
‫دارای‬behavior‫یک‬ ‫سهولیت‬ ‫خاطر‬ ‫به‬ ‫بنأ‬ .‫باشند‬ ‫می‬ ‫کردن‬ ‫مطالعه‬ ، ‫کردن‬ ‫خواب‬ ، ‫آشامیدن‬ ، ‫خوردن‬ ‫مانند‬ ‫مشترک‬ ‫های‬
‫نام‬ ‫تحت‬ ‫کالس‬Human‫کالس‬ ‫سه‬ ‫حالت‬ ‫ودرین‬ .‫میکنیم‬ ‫اضافه‬ ‫آن‬ ‫در‬ ‫را‬ ‫مشترک‬ ‫افعال‬ ‫و‬ ‫خصوصیات‬ ‫این‬ ‫که‬ ‫سازیم‬ ‫می‬
‫خصوص‬ ‫توانند‬ ‫می‬ ‫الذکر‬ ‫فوق‬‫خ‬ ‫خاص‬ ‫یات‬‫باشند‬ ‫داشته‬ ‫نیز‬ ‫را‬ ‫ودش‬.‫کلیدی‬ ‫کلمهء‬ ‫استعمال‬ ‫با‬ ‫درجاوا‬ (extends‫میتوانیم‬
.)‫کنیم‬ ‫دیگرمعرفی‬ ‫کالس‬ ‫وارث‬ ‫را‬ ‫کالس‬ ‫یک‬
2.Encapsulation:‫ازپنهان‬ ‫عبارت‬‫کردن‬Attribute‫و‬ ‫ها‬behavior‫یک‬ ‫مورد‬ ‫بی‬ ‫هایی‬Object‫آشکار‬ ‫و‬ ‫دادن‬ ‫وبروز‬
‫که‬ ‫مشخصات‬ ‫ساختن‬‫حاضر‬ ‫درحال‬‫یک‬ ‫ممکن‬ ‫یعنی‬ .‫است‬ ‫نیاز‬ ‫آن‬ ‫به‬object‫م‬ ‫دارای‬‫باشد‬ ‫زیادی‬ ‫های‬ ‫متود‬ ‫و‬ ‫ها‬ ‫شخصه‬
‫ولی‬‫مختلف‬ ‫حاالت‬ ‫نظربه‬‫استفاده‬ ‫حالت‬ ‫همان‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫متود‬ ‫و‬ ‫مشخصات‬ ‫از‬‫م‬‫ی‬.‫نمایند‬
‫یک‬ ‫منحیث‬ ‫من‬ ‫مثال‬ ‫بطور‬Object‫و‬ ‫مشخصات‬ ‫دارای‬Behavior‫چون‬ .‫باشم‬ ‫می‬ ‫مختلفی‬ ‫های‬‫کابل‬ ‫دانشگاه‬ ‫در‬ ‫زمانیکه‬
‫داخل‬‫نا‬ ‫با‬ ‫میشوم‬‫ام‬ ‫شده‬ ‫ثبت‬ ‫بودنم‬ ‫محصل‬ ‫مشخصات‬ ‫و‬ ‫م‬) ‫خواندن‬ ‫درس‬ ‫محصل؛‬ ‫تخلص‬ ، ‫محصل‬ ‫پدر‬ ‫اسم‬ ، ‫محصل‬ ‫(اسم‬
) ‫دادن‬ ‫درس‬ ، ‫معلم‬ ‫تخلص‬ ‫؛‬ ‫معلم‬ ‫پدر‬ ‫اسم‬ ، ‫معلم‬ ‫اسم‬ ( ‫معلمی‬ ‫ومشخصات‬ ‫نام‬ ‫با‬ ‫مکاتب‬ ‫از‬ ‫یکی‬ ‫در‬ ‫حال‬ ‫درعین‬‫شده‬ ‫ثبت‬
‫ام‬‫بو‬ ‫معلم‬ ‫همچون‬ ‫مشخصات‬ ‫به‬ ‫کابل‬ ‫دانشگاه‬ ‫وقتی‬ ‫هیچ‬ ‫یعنی‬ .‫نداشته‬ ‫کار‬ ‫میکنم‬ ‫راتدریس‬ ‫مضامینی‬ ‫کدام‬ ‫یااینکه‬ ‫و‬ ‫دنم‬
.‫ندارد‬ ‫کاری‬ ‫دارم‬ ‫نمره‬ ‫چقدر‬ ‫مضامین‬ ‫درکدام‬ ‫واینکه‬ ‫بودنم‬ ‫محصل‬ ‫به‬ ‫هم‬ ‫مکتب‬ ‫ودرمقابل‬
9.Polymorphism:( ‫مشخصات‬attributes‫ویا‬ )Behavior‫عمل‬ ‫مختلفی‬ ‫اشکال‬ ‫به‬ ‫ولی‬ ‫بوده‬ ‫مشابه‬ ‫نام‬ ‫تحت‬ ‫که‬ ‫هایی‬
‫مارفیسم‬ ‫پولی‬ ‫نام‬ ‫به‬ ‫میکنند‬.‫یادمیگردند‬.‫است‬ ‫آورده‬ ‫بار‬ ‫به‬ ‫معاصر‬ ‫نویسی‬ ‫برنامه‬ ‫در‬ ‫را‬ ‫زیادی‬ ‫سهولیات‬ ‫که‬‫مثال‬ ‫بطور‬
‫یک‬ ‫کاربن‬ ‫که‬ ‫میدانیم‬Object.‫ذغال‬ ‫ویا‬ ‫باشد‬ ‫الماس‬ ‫میتواند‬ ‫باشد‬ ‫حالت‬ ‫چندین‬ ‫دارای‬ ‫میتواند‬ ‫ولی‬ ‫است‬
Page 4 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫که‬ ‫نویسیم‬ ‫می‬ ‫را‬ ‫پروگرام‬ : ‫مثال‬ ‫طور‬‫وهمچن‬ ‫نماید‬ ‫ذخیره‬ ‫را‬ ‫مختلفی‬ ‫های‬ ‫کمپیوتر‬ ‫مشخصات‬‫به‬ ‫ان‬user‫مشخصات‬ ‫این‬ ‫تا‬ ‫دهد‬ ‫اجازه‬
.‫بدهد‬ ‫تغییر‬ ‫و‬ ‫رادیده‬
‫نام‬ ‫به‬ ‫کالس‬ ‫یک‬ ‫اوال‬PCsRecord‫هر‬ ‫تا‬ ‫سازیم‬ ‫می‬PC.‫بگیرد‬ ‫کالس‬ ‫این‬ ‫از‬ ‫خودرا‬ ‫مشخصات‬ ‫میشود‬ ‫اضافه‬ ‫که‬
‫کالس‬‫یک‬ ‫صرف‬ ‫فوق‬blue print‫مشخصات‬ ‫وخواص‬ ‫تمام‬ ‫که‬ ‫باشد‬ ‫می‬Object.‫است‬ ‫شده‬ ‫معرفی‬ ‫درآن‬‫که‬‫نهایت‬ ‫بی‬ ‫میتوانیم‬
Object‫هر‬ ‫که‬ ‫بسازیم‬ ‫فوق‬ ‫کالس‬ ‫از‬object‫و‬ ‫مشخصات‬ ‫تمام‬ ‫کالس‬ ‫این‬method‫های‬‫بخود‬ ‫را‬ ‫شده‬ ‫معرفی‬‫ال‬ .‫میگیرد‬‫بته‬
Object‫داخل‬ ‫همیشه‬ ‫ها‬‫متود‬main‫میگردد‬ ‫معرفی‬‫وحال‬ .‫دارای‬ ‫که‬ ‫سازیم‬ ‫می‬ ‫را‬ ‫دیگری‬ ‫کالس‬main method‫آن‬ ‫در‬ ‫و‬ ‫بوده‬
object.‫میکنیم‬ ‫معرفی‬ ‫ذیل‬ ‫طور‬ ‫کالس‬ ‫این‬ ‫نوع‬ ‫از‬ ‫هارا‬
Page 5 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫پروگرام‬ ‫نتیجهء‬.‫کرد‬ ‫خواهید‬ ‫مالحظه‬ ‫ذیل‬ ‫شکل‬ ‫به‬ ‫را‬ ‫فوق‬
‫را‬ ‫ذیل‬ ‫کالس‬ :‫دوم‬ ‫مثال‬coding.‫نمایید‬
Date
Day
Month
Year
Min Year
Return Day()
Return Month()
Return Year()
Return Serial of Day()
Page 6 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
Array
‫نام‬ ‫به‬ ‫میگردد‬ ‫ذخیره‬ ‫مسلسل‬ ‫شکل‬ ‫به‬ ‫درمیموری‬ ‫که‬ ‫مشابه‬ ‫بانام‬ ‫را‬ ‫همنوع‬ ‫ومتحولین‬ ‫عناصر‬ ‫از‬ ‫یامجموعهء‬ ‫و‬ ‫لیست‬array‫یاد‬
‫میکن‬‫مشابه‬ ‫متحولین‬ ‫این‬ ‫که‬ .‫ند‬Fixed size‫و‬ ‫بوده‬‫از‬ ‫استفاده‬ ‫با‬index‫و‬ ‫فرق‬ ‫دیگر‬ ‫یک‬ ‫از‬ ‫ها‬access‫باالی‬ .‫میگردند‬array
‫را‬ ‫مختلفی‬ ‫عملیات‬ ‫میتوانیم‬‫قبیل‬ ‫از‬insertion،Deletion, sorting, searching‫عناصر‬ .‫دهیم‬ ‫انجام‬ ‫را‬ ‫وغیره‬Array‫به‬ ‫مطابق‬
.‫میگردند‬ ‫دخیره‬ ‫حافظه‬ ‫در‬ ‫ذیل‬ ‫شکل‬
20302214678865339872
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
‫نام‬ ‫فوق‬ ‫درحالت‬Array‫از‬ ‫عبارت‬a‫که‬ ‫باشد‬ ‫می‬[]‫حجره‬ ‫هر‬ ‫اندیکس‬ ‫نشاندهندهء‬Array.‫باشد‬ ‫می‬
Page 7 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫فواید‬array
Array( ‫ساختار‬ ‫یک‬data structure‫را‬ ‫مختلفی‬ ‫عملیات‬ ‫و‬ ‫گردیده‬ ‫معرفی‬ ‫آسانی‬ ‫به‬ ‫که‬ ‫بوده‬ ‫ساده‬ )support‫وهمچنین‬ .‫میکند‬
‫در‬ ‫ها‬ ‫اندیکس‬ ‫از‬ ‫استفاده‬array‫پراسهء‬access‫تمام‬ ‫همزمان‬ ‫میتوانیم‬ ‫ما‬ ‫که‬ ‫زیرا‬ ‫است‬ ‫ساخته‬ ‫سریع‬ ‫بسیار‬ ‫دیتارا‬ ‫کردن‬element
‫هایی‬array‫توسط‬ ‫آسانی‬ ‫بسیار‬ ‫به‬ ‫را‬index‫شان‬ ‫های‬access.‫کنیم‬
‫نواقص‬Array
Array‫آن‬ ‫نقص‬ ‫مهمترین‬ ‫جمله‬ ‫از‬ ‫میباشد‬ ‫نیز‬ ‫نواقص‬ ‫دارای‬fixed size‫که‬ ‫استیم‬ ‫مجبور‬ ‫ما‬ ‫یعنی‬ .‫است‬ ‫آن‬ ‫بودن‬array‫ه‬ ‫را‬‫میشه‬
‫معموال‬ .‫میگردد‬ ‫حافظه‬ ‫ضیاع‬ ‫باعث‬ ‫عمل‬ ‫این‬ ‫که‬ ‫باشیم‬ ‫نداشته‬ ‫نیازی‬ ‫اینکه‬ ‫ولو‬ ‫کنیم‬ ‫معرفی‬ ‫نیاز‬ ‫مورد‬ ‫موقعیت‬ ‫مقدار‬ ‫تراز‬ ‫اضافه‬
‫سرعت‬search‫در‬array‫شکل‬ ‫به‬ ‫که‬ ‫های‬unsorted‫ترتیب‬ ‫همین‬ ‫وبه‬ ‫بوده‬ ‫پایین‬ ‫بسیار‬ ‫میباشد‬insertion‫در‬array‫تنظیم‬ ‫هایی‬
( ‫شده‬sorted‫سخ‬ ‫بسیار‬ ).‫است‬ ‫ت‬‫در‬ ‫هم‬ ‫درحالیکه‬sorted array‫در‬ ‫وهم‬unsorted array‫عملیهء‬deletion.‫است‬ ‫دشوار‬ ‫کار‬
‫طرزمعرفی‬Array
DataType ArrayName[] = new DataType[ArraySize];
String name[]=new String[50];
int list[]=new int[15];
List[5]=70;
List[10]=list[5]+100;
System.out.println(“Index 44”+list[44]);
‫موضوع‬ ‫شدن‬ ‫ساده‬ ‫برای‬‫ات‬‫کار‬ ‫ومراحل‬ ‫روش‬ ‫تعیین‬ ‫و‬‫وکودنویسی‬‫الگوریتم‬ ‫باید‬ ‫اوال‬‫فلوچارت‬ ‫ویا‬ ‫ها‬.‫بسازیم‬
‫چیست؟‬ ‫الگوریتم‬
‫از‬ ‫مجموعهء‬activity‫آمدن‬ ‫بدست‬ ‫منجربه‬ ‫که‬ ‫مسلسل‬ ‫هایی‬output‫نام‬ ‫به‬ ‫میگردند‬ ‫دلخواه‬algorithm‫و‬ ‫میگردد‬ ‫یاد‬‫از‬ ‫اصل‬ ‫در‬
‫پروگرام‬ ‫یک‬ ‫نمودن‬ ‫تکمیل‬ ‫مراحل‬ ‫دیگر‬ ‫عبارت‬ ‫به‬ ‫ویا‬ .‫است‬ ‫خوارزمی‬ ‫موسی‬ ‫بن‬ ‫محمد‬ ‫به‬ ‫منسوب‬ ‫که‬ ‫شده‬ ‫گرفته‬ )‫(الخوارزم‬ ‫کلمهء‬
‫شکل‬ ‫به‬ ‫که‬step‫به‬step:‫مثال‬ .‫میگردد‬ ‫یاد‬ ‫الگوریتم‬ ‫نام‬ ‫به‬ ‫میشود‬ ‫بیان‬ ‫ورق‬ ‫روی‬
Step1: start
Step2: Declare
Step3:initialize
Step4:increment
step5:Display
Step6:stop
‫چیست؟‬ ‫فلوچارت‬
‫شکل‬ ‫به‬ ‫را‬ ‫پروگرام‬ ‫یک‬ ‫شدن‬ ‫تکمیل‬ ‫مراحل‬ ‫که‬ ‫است‬ ‫دیاگرام‬visual‫شروع‬ ‫دیاگرام‬ ‫درین‬ ‫که‬ .‫میدهد‬ ‫نمایش‬ ‫ها‬ ‫چارت‬ ‫از‬ ‫استفاده‬ ‫وبا‬
:‫ذیل‬ ‫شکل‬ ‫قرار‬ ‫میشود‬ ‫داده‬ ‫نشان‬ ‫بیضوی‬ ‫توسط‬ ‫کار‬ ‫وختم‬
Page 8 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫نمرات‬ ‫و‬ ‫نام‬ ‫که‬ ‫نویسیم‬ ‫می‬ ‫را‬ ‫پروگرام‬ :‫مثال‬ ‫طور‬.‫دهد‬ ‫نشان‬ ‫را‬ ‫نمرات‬ ‫و‬ ‫نام‬ ‫این‬ ‫سپس‬ ‫و‬ ‫کرده‬ ‫ثبت‬ ‫را‬ ‫شاگردان‬ ‫تمام‬
:‫الگوریتم‬
‫دو‬array.‫کنیم‬ ‫معرفی‬
‫داخل‬ ‫را‬ ‫نمرات‬ ‫و‬ ‫نام‬array.‫برساند‬ ‫ثبت‬ ‫به‬
.‫دهد‬ ‫نمایش‬ ‫را‬ ‫ونمرات‬ ‫نام‬
import java.util.Scanner;
public class List {
int size;
int score[];
public List(int s) {
size = s;
score = new int [size];
}
Scanner keyboard = new Scanner(System.in);
public void insert(int n) {
for(int i=0; i<n; i++)
score[i]=keyboard.nextInt();
}
public void display(int m) {
Page 9 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
for(int i=0; i<m; i++)
System.out.println(score[i]);
}
}
‫دومی‬ ‫کالس‬
public class arrayapp {
public static void main(String[] args) {
List SwE5 = new List(45);
List IS5 = new List (55);
List IT5 = new List(60);
SwE5.insert(45);
SwE5.display(45);
IS5.insert(55);
IS5.display(55);
IT5.insert(60);
IT5.display(60);
} }
Searching Algorithm
( ‫عنصر‬ ‫یک‬ ‫کردن‬ ‫جستجو‬ ‫برای‬ ‫دوروش‬element‫در‬ )array:‫دارد‬ ‫زیاد‬ ‫اهمیت‬
Linear Search
Binary Search
‫در‬linear search‫در‬ ‫موجود‬ ‫عناصر‬ ‫تک‬ ‫تک‬ ‫با‬ ‫شده‬ ‫خواسته‬ ‫عنصر‬array‫در‬ ‫را‬ ‫نتیجه‬ ‫بودن‬ ‫مساوی‬ ‫ودرصورت‬ ‫میگردد‬ ‫مقایسه‬
.‫یابد‬ ‫می‬
public student find(String searchname) {
int j;
for(j=0; j<nelems; j++)
if( a[j] = searchname)
break;
if( j == nelems)
return null;
else
return a[j];
}
‫در‬binary search‫های‬ ‫لیست‬ ‫در‬ ‫عموما‬ ‫که‬sort‫شده‬ ‫خواسته‬ ‫عناصر‬ ‫و‬ ‫نموده‬ ‫دریافت‬ ‫را‬ ‫وسطی‬ ‫اندیکس‬ ‫اوال‬ ‫میگیرد‬ ‫صورت‬ ‫شده‬
‫عین‬ ‫و‬ ‫نگرفته‬ ‫مدنظر‬ ‫را‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫تر‬ ‫کوچک‬ ‫بود‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫تر‬ ‫بزرگ‬ ‫درصورتیکه‬ .‫میکند‬ ‫مقایسه‬ ‫وسط‬ ‫عنصر‬ ‫با‬ ‫را‬
.‫کند‬ ‫می‬ ‫اجرا‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫تر‬ ‫بزرگ‬ ‫عناصر‬ ‫باالی‬ ‫را‬ ‫پراسه‬
Page 10 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
public boolean find(int searchkey) {
int lowerBound = 0;
int upperBound = n-1;
int middle=0;
while(true) {
middle = (lowerBound + upperBound) / 2;
if (student[middle] == searchkey)
return true;
else if(lowerBound>upperBound)
return false;
else {
if(student[middle] < searchkey)
lowerBound = middle + 1;
else
upperBound = middle - 1;
} } }
Page 11 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
Stack
Stack( ‫دیتا‬ ‫ساختار‬ ‫از‬ ‫وعبارت‬ ‫بوده‬ ‫گاه‬ ‫ذخیره‬ ‫معنی‬ ‫به‬ ‫درلغت‬data structure‫بوده‬ )‫که‬‫مجموعهء‬ ‫از‬item‫هایی‬order‫شده‬
‫باشد‬ ‫شده‬ ‫تشکیل‬ ‫طوری‬‫که‬insertion‫و‬deletion‫نام‬ ‫به‬ ‫و‬ .‫میگیرد‬ ‫صورت‬ ‫آن‬ ‫انجام‬ ‫یک‬ ‫از‬ ‫تنها‬LIFO (Last In First Out)‫ویا‬
FILO (First In Last Out).‫میگردد‬ ‫یاد‬ ‫هم‬‫گ‬ ‫وبرای‬ ‫اند‬ ‫شده‬ ‫چیده‬ ‫سربسر‬ ‫که‬ ‫کنید‬ ‫فرض‬ ‫را‬ ‫کفتریا‬ ‫های‬ ‫ظرف‬ :‫مثال‬ ‫بطور‬‫ی‬ ‫رفتن‬‫کی‬
‫رادور‬ ‫فوقانی‬ ‫ظروف‬ ‫تازمانیکه‬ .‫بگیریم‬ ‫را‬ ‫پاییننی‬ ‫ظرف‬ ‫ونمیتوانیم‬ ‫میگیریم‬ ‫دارد‬ ‫قرار‬ ‫ظرفها‬ ‫همه‬ ‫باالی‬ ‫در‬ ‫راکه‬ ‫ظرف‬ ، ‫ازظروف‬
.‫باشیم‬ ‫نکرده‬
‫آورن‬ ‫بدست‬ ‫بخاطر‬ ‫شما‬ ‫و‬ ‫گرفته‬ ‫قرار‬ ‫سیا‬ ، ‫سفید‬ ، ‫سرخ‬ ‫های‬ ‫رنگ‬ ‫به‬ ‫دیگری‬ ‫بلوز‬ ‫چند‬ ‫زیر‬ ‫تان‬ ‫آبی‬ ‫دلخواه‬ ‫بلوز‬ ‫که‬ ‫کنید‬ ‫فرض‬ ‫ویا‬
).‫است‬ ‫مثال‬ ‫یک‬ ‫(فقط‬ .‫بیاورید‬ ‫بدست‬ ‫را‬ ‫آبی‬ ‫بلوز‬ ‫سپس‬ ‫و‬ ‫چیده‬ ‫دیگر‬ ‫طرف‬ ‫در‬ ‫را‬ ‫دیگر‬ ‫های‬ ‫بلوز‬ ‫باید‬ ‫اوال‬ ‫تان‬ ‫دلخواه‬ ‫بلوز‬
‫میتوانیم‬ ‫گفته‬ ‫فوق‬ ‫های‬ ‫مثال‬ ‫درروشنی‬stack‫پذیر‬ ‫امکان‬ ‫آن‬ ‫فوقانی‬ ‫قسمت‬ ‫از‬ ‫تنها‬ ‫دیتا‬ ‫پراسس‬ ‫میباشدکه‬ ‫دیتای‬ ‫ساختار‬ ‫از‬ ‫عبارت‬
‫ساختا‬ ‫دیگر‬ ‫عبارت‬ ‫به‬ ‫است.وبا‬‫منظور‬ ‫به‬ ‫درآن‬ ‫که‬ ‫است‬ ‫ر‬access‫ویا‬ ‫عناصر‬ ‫کردن‬remove‫فوقانی‬ ‫قسمت‬ ‫به‬ ‫تنها‬ ‫عناصر‬ ‫کردن‬
.‫مینماییم‬ ‫مراجعه‬ ‫آن‬
‫که‬ ‫میتوانیم‬ ‫گفته‬stack‫را‬ ‫عناصر‬ ‫میتوانیم‬ ‫صرف‬ ‫درآن‬ ‫زیراکه‬ ‫میتواند‬ ‫داده‬ ‫انجام‬ ‫ها‬ ‫ساختار‬ ‫سایر‬ ‫به‬ ‫نسبت‬ ‫را‬ ‫محدودی‬ ‫عملیات‬
insert‫و‬remove‫که‬ .‫کنیم‬Insert‫نمودن‬value‫در‬ ‫هارا‬stack‫نام‬ ‫به‬push‫وگرفتن‬value‫نام‬ ‫به‬ ‫هارا‬pop.‫میکنند‬ ‫یاد‬‫که‬
‫فوقانی‬ ‫قسمت‬ ‫از‬ ‫هردوعملیه‬(top of stack).‫میگیرد‬ ‫صورت‬‫یا‬ ‫و‬ ‫بودن‬ ‫خالی‬ ‫که‬ ‫داریم‬ ‫نیاز‬ ‫دیگری‬ ‫عملیهء‬ ‫یک‬ ‫به‬ ‫وهمچنان‬
‫پربودن‬stack‫آنرا‬ ‫دراینجا‬ ‫که‬ ‫کند‬ ‫بررسی‬ ‫را‬isEmpty.‫مینامیم‬
Page 12 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫ب‬ ‫عموم‬ ‫طور‬‫ها‬ ‫پروگرام‬ ‫اجراشدن‬ ‫ا‬stack‫میتوانیم‬ ‫ما‬ ‫و‬ ‫میباشد‬ ‫خالی‬‫عناصر‬stack‫تعریف‬ ‫با‬ ‫را‬constructor‫صفر‬ ‫به‬initialize
‫حالت‬ ‫این‬ ‫که‬ .‫کنیم‬stack‫نام‬ ‫رابه‬stack underflow‫های‬ ‫حجره‬ ‫زمانیکه‬ ‫و‬ ‫یادمیکنند‬stack‫فوقانی‬ ‫درقسمت‬ ‫و‬ ‫باشد‬ ‫شده‬ ‫اشغال‬
‫برای‬ ‫جایی‬push‫نام‬ ‫به‬ ‫را‬ ‫حالت‬ ‫این‬ ‫باشد‬ ‫نداشته‬stack overflow‫حالت‬ ‫این‬ ‫که‬ .‫یادمیکنند‬exception‫متود‬ ‫تعریف‬ ‫با‬ ‫میتوان‬ ‫را‬
‫نام‬ ‫به‬ ‫دیگری‬isFull()( ‫کنترول‬handle.‫کرد‬ )
‫از‬stack‫قبیل‬ ‫از‬ ‫مهم‬ ‫درمواردی‬Web Browsers،Undo mechanism،paste mechanism‫دکمهء‬ ،back‫در‬web
browser‫و‬ ‫ها‬window‫میرویم‬ ‫مختلف‬ ‫عناصر‬ ‫بین‬ ‫ها‬ ‫گراف‬ ‫در‬ ‫زمانیکه‬ ‫مسیر‬ ‫نگهداشتن‬ ، ‫ها‬‫استفاده‬ ‫دیگر‬ ‫مورد‬ ‫وصدها‬
.‫میگردد‬
‫از‬ ‫استفاده‬ ‫وابتدایی‬ ‫ساده‬ ‫شکل‬ ‫ذیل‬ ‫پروگرام‬Stack.‫میدهد‬ ‫رانشان‬
( ‫اصلی‬ ‫متود‬ ‫حال‬ ‫و‬main method‫درآن‬ ‫و‬ ‫ساخته‬ ‫را‬ )object‫کالس‬Stack‫میکن‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫و‬ ‫ساخته‬ ‫را‬.‫یم‬
Page 13 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
Balanced Parentheses
‫از‬ ‫استفاده‬ ‫موارد‬ ‫از‬ ‫یکی‬stack‫بکار‬ ‫ها‬ ‫قوس‬ ‫ریاضیکی‬ ‫عملیات‬ ‫دراکثر‬ ‫شک‬ ‫بدون‬ ‫باشد‬ ‫می‬ ‫ها‬ ‫وقوس‬ ‫ریاضیکی‬ ‫عملیات‬ ‫بررسی‬ ،
‫الجبری‬ ‫افاده‬ ‫یک‬ ‫تا‬ ‫سازیم‬ ‫می‬ ‫را‬ ‫پروگرام‬ ‫بخش‬ ‫درین‬ ‫لذا‬ .‫میکند‬ ‫کمک‬ ‫زیاد‬ ‫مسایل‬ ‫حل‬ ‫در‬ ‫ها‬ ‫قوس‬ ‫بجای‬ ‫پایان‬ ‫و‬ ‫آغاز‬ ‫و‬ ‫میشوند‬ ‫برده‬
‫ویاخیر؟‬ ‫است‬ ‫درست‬ ‫که‬ ‫کند‬ ‫بررسی‬ ‫و‬ ‫گرفته‬ ‫را‬
‫او‬ ‫منظور‬ ‫بدین‬.‫کند‬ ‫بررسی‬ ‫هارا‬ ‫قوس‬ ‫بجابودن‬ ‫که‬ ‫میکنیم‬ ‫دیزاین‬ ‫را‬ ‫کالس‬ ‫ال‬
Page 14 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫وحال‬‫متود‬isBalanced.‫میکنیم‬ ‫نوشته‬ ، ‫فوق‬ ‫دستورهای‬ ‫ادامه‬ ‫به‬ ‫میکند‬ ‫چیک‬ ‫را‬ ‫ها‬ ‫قوس‬ ‫بودن‬ ‫درست‬ ‫که‬ ‫را‬
‫کالس‬ ‫وحال‬stack‫راهمانند‬.‫مینویسیم‬ ‫آن‬ ‫مربوطهء‬ ‫عملیات‬ ‫و‬ ‫ها‬ ‫متود‬ ‫با‬ ‫شد‬ ‫ذکر‬ ‫قبال‬ ‫که‬ ‫کالس‬
Page 15 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
Queue
‫ساخ‬‫به‬ ‫مشابه‬ ‫تقریبا‬ ‫که‬ ‫است‬ ‫دیگر‬ ‫تار‬stack‫تفاوت‬ ‫این‬ ‫با‬ ‫وتنها‬‫که‬‫ساختار‬ ‫درین‬item‫بار‬ ‫اولین‬ ‫که‬‫وارد‬‫پراسس‬ ‫بار‬ ‫اولین‬ ‫باشد‬ ‫شده‬
‫میشود‬(First in First Out).‫وهدف‬‫روش‬ ‫تا‬ ‫ها‬ ‫دیتا‬ ‫ویا‬ ‫ها‬ ‫پراسه‬ ‫دادن‬ ‫قرار‬ ‫صف‬ ‫در‬ ‫هم‬ ‫ساختار‬ ‫این‬ ‫اصلی‬FIFO‫تطبیق‬ ‫آن‬ ‫باالی‬
.‫گردد‬‫مثال‬( ‫صف‬ ‫در‬ ‫نفر‬ ‫چندین‬ ‫ذیل‬ ‫درشکل‬Queue)‫صف‬ ‫از‬ ‫بار‬ ‫اولین‬ ‫گرفته‬ ‫قرار‬ ‫درصف‬ ‫بار‬ ‫اولین‬ ‫که‬ ‫شخصی‬ ‫دارند‬ ‫قرار‬
‫آخری‬ ‫است‬ ‫پیوسته‬ ‫صف‬ ‫به‬ ‫بار‬ ‫آخرین‬ ‫که‬ ‫شخصی‬ ‫ترتیب‬ ‫همین‬ ‫به‬ ‫و‬ ‫میشود‬ ‫خارج‬.‫میگیرد‬ ‫قرار‬ ‫پراسس‬ ‫مورد‬ ‫بار‬ ‫ن‬
Page 16 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫از‬‫ساختار‬Queue‫حا‬ ‫روزمره‬ ‫زندگی‬ ‫در‬ ‫آید‬ ‫می‬ ‫عمل‬ ‫به‬ ‫زیادی‬ ‫های‬ ‫استفاده‬‫صف‬ ‫در‬ ‫اشخاص‬ ‫ویا‬ ‫اشیا‬ ‫که‬ ‫میشود‬ ‫واقع‬ ‫زیادی‬ ‫الت‬
(queue‫مثال‬ .‫میگیرند‬ ‫قرار‬ )‫نانوایی‬ ‫صف‬،‫صف‬‫ب‬ ‫برای‬‫ازرسی‬‫وغیره‬ ، ‫محافظان‬ ‫توسط‬‫که‬ .‫ساختار‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫ما‬Queue
.‫کنیم‬ ‫مادلینگ‬ ‫مذکوررا‬ ‫حاالت‬ ‫میتوانیم‬ ‫آسانی‬ ‫به‬ ‫بسیار‬
‫ه‬‫مچنان‬‫از‬ ‫استفاده‬ ‫با‬ ‫تنها‬ ‫که‬ ‫میشود‬ ‫پیش‬ ‫حاالت‬ ‫بسیار‬ ‫نیز‬ ‫کمپیوتری‬ ‫های‬ ‫درسیستم‬queue.‫کنیم‬ ‫کنترول‬ ‫آنهارا‬ ‫میتوانیم‬‫مثال‬print
‫یعنی‬ .‫وغیره‬ ‫ازکیبورد‬ ‫حروف‬ ‫تایپ‬ ، ‫ها‬ ‫فایل‬ ‫شدن‬‫فایل‬ ‫به‬ ‫وسپس‬ ‫شده‬ ‫چاپ‬ ‫باید‬ ‫اول‬ ‫آمده‬ ‫شدن‬ ‫چاپ‬ ‫برای‬ ‫اول‬ ‫که‬ ‫فایل‬ ‫حاالت‬ ‫درین‬
.‫برود‬ ‫دومی‬‫وبه‬.‫شود‬ ‫داده‬ ‫نمایش‬ ‫صفحه‬ ‫درروی‬ ‫سپس‬ ‫و‬ ‫شده‬ ‫پراسس‬ ‫اوال‬ ‫باید‬ ‫میشود‬ ‫فشارداده‬ ‫اول‬ ‫کیبورد‬ ‫از‬ ‫که‬ ‫دکمهء‬ ‫ترتیب‬ ‫همین‬
‫برای‬( ‫قطار‬ ‫کنترول‬queue‫های‬ ‫نام‬ ‫به‬ ‫دومتحول‬ ‫از‬ ‫ما‬ )first‫و‬last‫که‬ ‫میکنیم‬ ‫استفاده‬‫ابتدا‬ ‫در‬first=0‫و‬last=-1.‫باشد‬ ‫می‬
‫م‬:‫ثال‬
class Queue {
private int maxSize;
private long[] queArray;
private int first;
private int last;
private int nItems;
public Queue(int s) {
maxSize = s;
queArray = new long[maxSize];
first = 0;
last= -1;
nItems = 0;
}
public void insert(long j) {
if(last == maxSize - 1)
last = -1;
queArray[++last] = j;
Page 17 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
nItems++;
}
public long remove() {
long temp = queArray[first++];
if(first == maxSize)
first = 0;
nItems--;
return temp;
}
public long peekFirst() {
return queArray[first];
}
public boolean isEmpty() {
return (nItems ==0);
}
public boolean isFull() {
return (nItems==maxSize);
}
public int Size() {
return nItems;
}
public static void main(String[] args) {
Queue theQueue = new Queue(5);
theQueue.insert(10);
theQueue.insert(20);
theQueue.insert(30);
theQueue.insert(40);
theQueue.remove();
theQueue.remove();
theQueue.remove();
theQueue.insert(50);
theQueue.insert(60);
theQueue.insert(70);
theQueue.insert(80);
while( !theQueue.isEmpty() ) {
long n = theQueue.remove();
System.out.print(n);
System.out.print(" ");
}
System.out.println(" ");
}
}
Page 18 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
Greedy Algorithm
‫است‬ ‫الگوریتم‬‫ازاینرو‬ .‫نمیکند‬ ‫را‬ ‫پراسس‬ ‫بعدی‬ ‫مراحل‬ ‫فکر‬ ‫وجه‬ ‫هیچ‬ ‫وبه‬ ‫نموده‬ ‫انتخاب‬ ‫را‬ ‫حالت‬ ‫بهترین‬ ‫پراسس‬ ‫مرحلهء‬ ‫هر‬ ‫در‬ ‫که‬
( ‫حریص‬ ‫های‬ ‫الگوریتم‬ ‫نام‬ ‫به‬greedy algorithm‫داشته‬ ‫زیاد‬ ‫استعمال‬ ‫موارد‬ ‫ها‬ ‫الگوریتم‬ ‫نوع‬ ‫این‬ .‫میشوند‬ ‫یاد‬ )‫اپلیکیشن‬ ‫مثال‬ ‫بطور‬
‫از‬ ‫ها‬ ‫پرابلم‬ ‫حل‬ ‫منظور‬ ‫به‬ ‫ذیل‬ ‫های‬greedy algorithm:‫میکنند‬ ‫استفاده‬
MST (Minimum Spanning Tree)
OSPF (Open Shortest Path First)
File Compression & Hoffman Algorithm
A simple scheduling algorithm
Greedy algorithm‫مانند‬ ‫های‬ ‫ساختار‬ ‫در‬graph‫و‬Tree.‫شود‬ ‫تطبیق‬ ‫میتواند‬
Graph
( ‫میموری‬ ‫در‬ ‫دیتا‬ ‫ذخیره‬ ‫های‬ ‫ازروش‬ ‫یکی‬data structure‫سایر‬ ‫برخالف‬ ‫و‬ ‫میگردد‬ ‫استفاده‬ ‫زیاد‬ ‫مسایل‬ ‫در‬ ‫که‬ ‫باشد‬ ‫می‬ )
‫شکل‬ ‫به‬ ‫دیتارا‬ ‫خواندیم‬ ‫که‬ ‫سترکچرهای‬non linear‫میموری‬ ‫در‬represent.‫میکند‬‫جا‬ ‫عناصر‬ ‫درآن‬ ‫که‬ ‫میموری‬ ‫های‬ ‫قسمت‬ ‫یعنی‬
‫شده‬ ‫ثبت‬ ‫مسلسل‬ ‫غیر‬ ‫شکل‬ ‫وبه‬ ‫حافظه‬ ‫از‬ ‫مختلف‬ ‫های‬ ‫درقسمت‬ ‫بلکه‬ ‫نگردیده‬ ‫ذخیره‬ ‫پیوسته‬ ‫شکل‬ ‫وبه‬ ‫مستقیم‬ ‫خط‬ ‫یک‬ ‫باالی‬ ‫میگیرد‬
‫تباط‬ ‫ار‬ ‫شان‬ ‫همجوار‬ ‫عناصر‬ ‫طریق‬ ‫از‬ ‫ویاهم‬ ‫مستقیم‬ ‫لینک‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫یا‬ ‫شان‬ ‫دیگر‬ ‫باهم‬ ‫عناصر‬ ‫ولی‬.‫دارند‬
‫مجموعهء‬ ‫از‬ ‫که‬ ‫است‬ ‫ساختار‬ ‫گراف‬ ‫که‬ ‫میتوانیم‬ ‫گفته‬ ‫پس‬node‫و‬ ) ‫(عناصر‬ ‫ها‬edge‫این‬ ‫و‬ ‫است‬ ‫شده‬ ‫ها)ساخته‬ ‫(لینک‬ ‫ها‬node
‫شان‬ ‫بایکدیگر‬ ‫ها‬‫توسط‬edge‫ها‬.‫دارند‬ ‫ارتباط‬‫ویا‬‫اصطالحات‬ ‫اگر‬child‫و‬parent‫از‬binary tree‫هر‬ ‫طوریکه‬ ‫شود‬ ‫حذف‬
‫عناصر‬ ‫از‬ ‫هریکی‬ ‫به‬ ‫بتواند‬ ‫عنصر‬(‫میگردد‬ ‫یاد‬ ‫گراف‬ ‫بنام‬ ‫ذیل‬ ‫ساختار‬ ‫شود‬ ‫وصل‬ ‫دیگر‬binary tree‫هر‬ ‫که‬ ‫است‬ ‫ساختار‬child
‫یک‬ ‫تنها‬parent‫چندین‬ ‫و‬child‫میتوا‬ ‫داشته‬‫ند‬.)
Vertices or Nodes
Node‫یک‬ ‫آن‬ ‫کدام‬ ‫هر‬ ‫که‬ ‫باشد‬ ‫حافظه‬ ‫از‬ ‫های‬ ‫موقعیت‬ ‫میتواند‬ ‫هرکدام‬ ‫عناصر‬ ‫ویا‬ ‫ها‬task‫اکثرا‬ ‫عناصر‬ ‫این‬ ‫و‬ .‫میدهد‬ ‫رانشان‬
‫منحیث‬object.‫شود‬ ‫تمثیل‬ ‫جاوا‬ ‫های‬ ‫کالس‬ ‫در‬‫آن‬ ‫از‬ ‫سپس‬ ‫و‬ ‫بسازیم‬ ‫هارا‬ ‫کالس‬ ‫عناصر‬ ‫بخاطر‬ ‫باید‬ ‫ما‬ ‫یعنی‬object‫بسازیم‬
‫وهر‬object‫یک‬ ‫منحیث‬node.‫میگردد‬ ‫معرفی‬
Edges‫دو‬ ‫که‬ ‫های‬ ‫الین‬ ‫از‬ ‫مجموعهء‬ :node‫نام‬ ‫به‬ ‫میکند‬ ‫وصل‬ ‫باهم‬ ‫را‬edge‫میگر‬ ‫یاد‬‫درصورتیکه‬ .‫دد‬edge‫دار‬ ‫جهت‬ ‫ها‬
(directed edge‫کدام‬ ‫که‬ ‫دهد‬ ‫می‬ ‫نشان‬ ‫باشند‬ )task‫ویا‬node‫از‬ ‫قبل‬task.‫شود‬ ‫پراسس‬ ‫دیگری‬
Adjacency vertices‫یک‬ ‫توسط‬ ‫که‬ ‫میشوند‬ ‫گفته‬ ‫همجوار‬ ‫زمانی‬ ‫دوعنصر‬ :edge.‫باشد‬ ‫داشته‬ ‫ارتباط‬ ‫مستقیم‬ ‫شکل‬ ‫به‬
Path‫از‬ ‫مجموعه‬ :vertices‫دو‬ ‫که‬ ‫متصل‬ ‫های‬node‫نام‬ ‫به‬ ‫میسازد‬ ‫وصل‬ ‫باهم‬ ‫را‬path‫بین‬ ‫ارتباط‬ ‫ذیل‬ ‫درشکل‬ ‫مثال‬ .‫میگردد‬ ‫یاد‬
‫عناصر‬G‫و‬A‫هم‬ ‫به‬ ‫متصل‬ ‫عناصر‬ ‫از‬ ‫استفاده‬ ‫با‬D‫و‬B‫گرفته‬ ‫صورت‬‫نام‬ ‫به‬ ‫مسیر‬ ‫این‬ ‫که‬path.‫میشود‬ ‫نامیده‬
Page 19 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
Completed or connected Graph‫زمانی‬ ‫ها‬ ‫گراف‬ :completed‫هر‬ ‫که‬ ‫میشوند‬ ‫نامیده‬node‫تمام‬ ‫به‬node‫دیگر‬ ‫های‬
‫از‬ ‫استفاده‬ ‫با‬ ‫درگراف‬edges:‫باشند.مثال‬ ‫داشته‬ ‫ارتباط‬ ‫جداگانه‬ ‫های‬
Directed Graph
‫جهات‬ ‫که‬ ‫اند‬ ‫های‬ ‫گراف‬edge‫تحت‬ ‫دیگری‬ ‫عنصر‬ ‫از‬ ‫قبل‬ ‫عنصر‬ ‫کدام‬ ‫که‬ ‫میدهد‬ ‫نشان‬ ‫وجهات‬ .‫است‬ ‫مشخص‬ ‫عناصر‬ ‫بین‬ ‫ها‬
.‫قرارگیرد‬ ‫پراسس‬
Undirected Graph‫ج‬ ‫که‬ ‫اند‬ ‫های‬ ‫گراف‬ :.‫باشد‬ ‫نگردیده‬ ‫مشخص‬ ‫عناصر‬ ‫بین‬ ‫هت‬
Weighted Graph( ‫ها‬ ‫لینک‬ ‫درآن‬ ‫که‬ ‫های‬ ‫گراف‬ :edges‫نام‬ ‫به‬ ‫باشد‬ ‫وزن‬ ‫دارای‬ )weighted Graph‫میتواند‬ ‫میگردد.وزن‬ ‫یاد‬
.‫باشد‬ ‫وغیره‬ ‫قیمت‬ ، ‫فاصله‬:‫مثال‬
)‫نیست‬ ‫منطقی‬ ‫والیات‬ ‫موقعیت‬ ‫شود‬ ‫واضح‬ ‫دار‬ ‫وزن‬ ‫های‬ ‫گراف‬ ‫تا‬ ‫است‬ ‫مثال‬ ‫یک‬ ‫فوق‬ ‫(شکل‬
Page 20 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫معرفی‬‫درمیموری‬ ‫گراف‬ ‫ونمایش‬
.‫پردازیم‬ ‫می‬ ‫ها‬ ‫پروگرام‬ ‫در‬ ‫فوق‬ ‫اجزای‬ ‫از‬ ‫یک‬ ‫هر‬ ‫معرفی‬ ‫چگونگی‬ ‫به‬ ‫حال‬
‫از‬ ‫استفاده‬ ‫با‬ ‫است‬ ‫بهتر‬ ‫گراف‬ ‫عناصر‬ ‫کردیم‬ ‫ذکر‬ ‫قبال‬ ‫همانطوریکه‬object‫دا‬ ‫نمایش‬ ‫ها‬‫دارای‬ ‫عناصر‬ ‫تمام‬ ‫دیگر‬ ‫طرف‬ ‫واز‬ .‫شود‬ ‫ده‬
‫بناء‬ ‫باشند‬ ‫می‬ ‫مشابه‬ ‫مشخصات‬ ‫و‬ ‫خواص‬object‫شکل‬ ‫به‬ ‫ها‬array‫داشته‬ ‫را‬ ‫کالس‬ ‫یک‬ ‫باید‬ ‫اوال‬ ‫که‬ ‫است‬ ‫واضح‬ .‫میگردد‬ ‫معرفی‬
‫آن‬ ‫از‬ ‫بتوانیم‬ ‫تا‬ ‫باشیم‬object.‫میکنیم‬ ‫دیزاین‬ ‫ذیل‬ ‫طور‬ ‫عناصر‬ ‫برای‬ ‫را‬ ‫کالسی‬ ‫بناء‬ .‫کنیم‬ ‫معرفی‬ ‫هارا‬
( ‫ها‬ ‫راه‬ ‫تمثیل‬ ‫برای‬edges‫از‬ ).‫میگردد‬ ‫استفاده‬ ‫ذیل‬ ‫روش‬ ‫دو‬
Adjacency Matrix‫(یا‬array)‫دوبعدی‬ ‫های‬
Adjacency list
Adjacency matrix‫درحقیقت‬two dimensional Array‫راه‬ ‫عنصر‬ ‫دو‬ ‫بین‬ ‫آیا‬ ‫که‬ ‫کند‬ ‫می‬ ‫مشخص‬ ‫آن‬ ‫جزء‬ ‫هر‬ ‫که‬ ‫باشد‬ ‫می‬
‫دارای‬ ‫گراف‬ ‫ویاخیر.ودرصورتیکه‬ ‫دارد‬ ‫وجود‬N‫کامل‬ ‫تمثیل‬ ‫برای‬ ‫ما‬ ‫درینصورت‬ ‫باشد‬ ‫عنصر‬edge‫باید‬ ‫میموری‬ ‫در‬ ‫ها‬NxN
dimensional array‫نمایی‬ ‫معرفی‬ ‫را‬.‫م‬‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫گرفته‬ ‫مدنظر‬ ‫میباشد‬ ‫عنصر‬ ‫چهار‬ ‫دارای‬ ‫راکه‬ ‫ذیل‬ ‫گراف‬ ‫مثال‬ ‫بطور‬
adjacency matrix.‫میدهیم‬ ‫نشان‬ ‫را‬ ‫عناصر‬ ‫ارتباط‬ ‫ذیل‬ ‫طوری‬
A B C D
A 0 1 1 1
B 1 0 0 1
C 1 0 0 0
D 1 1 0 0
Page 21 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
.‫دهیم‬ ‫شرح‬ ‫گراف‬ ‫در‬ ‫را‬ ‫افغانستان‬ ‫مختلف‬ ‫شهر‬ ‫چند‬ ‫میخواهیم‬ :‫مثال‬ ‫بطور‬
‫بناء‬‫دارای‬ ‫که‬ ‫باشد‬ ‫می‬ ‫ها‬ ‫شهر‬ ‫گراف‬ ‫این‬ ‫در‬ ‫عناصر‬ ‫و‬ ‫نگهدارد‬ ‫درخود‬ ‫را‬ ‫عناصر‬ ‫خصوصیات‬ ‫که‬ ‫میسازیم‬ ‫را‬ ‫کالس‬ ‫اوال‬
.‫میکنیم‬ ‫اکتفا‬ ) ‫شده‬ ‫دیده‬ ‫شهر‬ ‫(آیا‬ ‫و‬ )‫شهر‬ ‫(نام‬ ‫آن‬ ‫مشخصه‬ ‫دو‬ ‫به‬ ‫تنها‬ ‫ما‬ ‫باشدولی‬ ‫می‬ ‫زیاد‬ ‫خصوصیات‬
‫نام‬ ‫به‬ ‫را‬ ‫دیگری‬ ‫کالس‬ ‫وحال‬graph‫کالس‬ ‫از‬ ‫که‬ ‫میسازیم‬Vertices‫و‬ ‫نموده‬ ‫استفاده‬edges.‫نماید‬ ‫تمثیل‬ ‫هارا‬
.‫کنیم‬ ‫اضافه‬ ‫درآن‬ ‫راهارا‬ ‫و‬ ‫شهرها‬ ‫که‬ ‫میسازیم‬ ‫را‬ ‫کالس‬ ‫مرحله‬ ‫درین‬
Page 22 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
‫گراف‬ ‫در‬ ‫جستجو‬Search in Graph
‫شامل‬ ‫میشود‬ ‫عناصر‬ ‫که‬ ‫است‬ ‫عناصر‬ ‫دربین‬ ‫جستجو‬ ‫شود‬ ‫ارایه‬ ‫گراف‬ ‫توسط‬ ‫میتواند‬ ‫که‬ ‫اساسی‬ ‫بسیار‬ ‫عملیات‬ ‫از‬ ‫یکی‬Object‫های‬
‫ها‬ ‫شبکه‬ ‫جستجوی‬ ‫یعنی‬ ‫ها‬ ‫روتر‬ ‫جستجوی‬ ‫که‬ ‫کند‬ ‫تمثیل‬ ‫درشبکه‬ ‫را‬ ‫روتر‬ ‫میتواند‬ ‫عناصر‬ ‫مثال‬ ‫باشد‬ ‫مختلف‬‫روت‬ ‫کدام‬ ‫واینکه‬‫باهم‬ ‫ها‬ ‫ر‬
‫دارند‬ )‫(همجوار‬ ‫مستقیم‬ ‫ارتباط‬.‫کند‬ ‫تمثیل‬ ‫نقشه‬ ‫یک‬ ‫در‬ ‫را‬ ‫شهرها‬ ‫میتواند‬ ‫عناصر‬ ‫ترتیب‬ ‫همین‬ ‫به‬ .‫از‬ ‫استفاده‬ ‫با‬ ‫که‬searching
‫دریابیم‬ ‫میتوانیم‬‫ویاخیر؟‬ ‫است‬ ‫موجود‬ ‫راه‬ ‫شهر‬ ‫دو‬ ‫بین‬ ‫آیا‬ ‫که‬
.‫میکند‬ ‫استفاده‬ ‫ستراتیژی‬ ‫دو‬ ‫از‬ ‫گراف‬ ‫کار‬ ‫این‬ ‫وبرای‬ ‫شود‬ ‫دیده‬ ‫مکمل‬ ‫بطور‬ ‫گراف‬ ‫باید‬ ‫عنصر‬ ‫یک‬ ‫جستجوی‬ ‫برای‬‫عبارتن‬ ‫که‬:‫از‬ ‫د‬
DFS (Depth-First Search)
BFS (Breadth-First Search)
‫می‬ ‫بررسی‬ ‫را‬ ‫گراف‬ ‫یک‬ ‫موجود‬ ‫عناصر‬ ‫تمام‬ ‫ذیل‬ ‫روش‬ ‫هردو‬‫ولی‬ ‫کند‬DFS‫از‬ ‫عملیه‬ ‫اجرای‬ ‫برای‬Stack‫درحالیکه‬ ‫میکند‬ ‫استفاده‬
BFS‫از‬Queue.‫میکند‬ ‫استفاده‬
Page 23 of 23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬
DFS (Depth-First Search)
‫دراین‬( ‫آغاز‬ ‫نقطهء‬ ‫یک‬ ‫اوال‬ ‫که‬ ‫میگیرد‬ ‫صورت‬ ‫طوری‬ ، ‫گراف‬ ‫در‬ ‫جستجو‬ ‫روش‬node)‫شروع‬ ‫جستجو‬ ‫ازآن‬ ‫باید‬ ‫که‬‫مثال‬A‫را‬
‫و‬ ‫نموده‬ ‫انتخاب‬‫اولین‬ ‫به‬ ‫سپس‬node‫همجوار‬A‫رفته‬‫مثال‬B‫آنرا‬ ‫و‬visit.‫میکنیم‬ ‫نشانی‬ ‫و‬ ‫نموده‬‫وسپس‬‫همسایه‬ ‫اولین‬ ‫به‬B‫ر‬‫فته‬
‫وآنرا‬visit‫وبدین‬ .‫میکنیم‬ ‫ونشانی‬‫مید‬ ‫ادامه‬ ‫ترتیب‬.‫هیم‬‫و‬‫درهرمرحله‬node‫در‬ ‫هارا‬Stuck( ‫داخل‬push)‫تا‬ .‫میکنیم‬‫به‬ ‫زمانیکه‬
‫آخرین‬node‫رسیدیم‬node‫هارا‬pop‫تا‬ .‫بیاییم‬ ‫عقب‬ ‫به‬ ‫و‬ ‫نموده‬‫تمام‬Node.‫شود‬ ‫جستجو‬ ‫همجوار‬ ‫های‬

(ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا - محب الله امان

  • 1.
    "‫"امان‬ ‫هللا‬ ‫محب‬:‫وترتیب‬ ‫تهیه‬‫سال‬ ‫بهار‬4931‫خورشیدی‬ ‫هجری‬ ‫کابل‬ ‫دانشگاه‬ ‫کمپیوترساینس‬ ‫دانشکدهء‬ ‫دیتا‬ ‫ساختارهای‬ Data Structure ‫ویرایش‬‫دوم‬
  • 2.
    Page 2 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫هستی‬ ‫پروگرامر‬ ‫یگانه‬ ‫نام‬ ‫به‬ Data Structure Using Java ‫سافت‬‫آن‬ ‫ساختن‬ ‫زمان‬ ‫در‬ ‫ویر‬ ‫سافت‬ ‫ابعاد‬ ‫تمام‬ ‫با‬ ‫انجنیرینگ‬ ‫ویر‬‫سافت‬ ‫از‬ ‫بخش‬ ‫یک‬ ‫حقیقت‬ ‫در‬ ‫هم‬ ‫سترکچر‬ ‫دیتا‬ ‫و‬ ‫است‬ ‫ارتباط‬ ‫در‬ .‫میکند‬ ‫بحث‬ ‫دیتا‬ ‫داخلی‬ ‫ساختار‬ ‫از‬ ‫که‬ ‫بوده‬ ‫انجنیرینگ‬ ‫ویر‬‫ع‬ ‫به‬ ‫وبا‬‫های‬ ‫روش‬ ‫دیگر‬ ‫بارت‬‫ذ‬‫کمپیوتر‬ ‫اصلی‬ ‫حافظهء‬ ‫در‬ ‫را‬ ‫دیتا‬ ‫خیرهء‬ (RAM( ‫دیتا‬ ‫ساختار‬ ‫نام‬ ‫به‬ )Data Structure).‫میکنند‬ ‫یاد‬ ‫چیست؟‬ ‫دیتا‬ ‫برای‬ ‫که‬ ‫است‬ ‫شدهء‬ ‫ارایه‬ ‫معلومات‬ ‫از‬ ‫عبارت‬communication.‫میباشد‬ ‫آماده‬ ‫ماشینها‬ ‫یاپراسس‬ ‫و‬ ‫انسانها‬ ‫وتحلیل‬ ‫تجزیه‬ ‫؛‬ : ‫که‬ ‫میکند‬ ‫هدایت‬ ‫ما‬ ‫به‬ ‫سترکچر‬ ‫دیتا‬ .‫شود‬ ‫ذخیره‬ ‫باید‬ ‫دیتا‬ ‫چگونه‬ ‫باید‬ ‫چگونه‬organize‫گردد‬ ‫چگونه‬Retrieve.‫شود‬ ‫چگونه‬represent.‫گردد‬ ‫مفی‬ ‫ویر‬ ‫سافت‬ ‫یک‬ ‫تا‬‫برای‬ ‫سترکچر‬ ‫دیتا‬ .‫نگردد‬ ‫دیتا‬ ‫وخرابی‬ ‫پراسسر‬ ‫وقت‬ ‫شدن‬ ‫ضایع‬ ‫باعث‬ ‫که‬ ‫آید‬ ‫بدست‬ ‫ومؤثر‬ ‫استفاده‬ ‫قابل‬ ، ‫د‬ organize( ‫اصلی‬ ‫حافظهء‬ ‫در‬ ‫دیتا‬ ‫کردن‬RAM)‫مانند‬ ‫ساختارهایی‬ ‫از‬Array،Stack،Queue،Linked List،Graph، Trees‫باالی‬ ‫مذکور‬ ‫هرساختار‬ ‫که‬ ‫میکنند‬ ‫استفاده‬ ‫وغیره‬Data Sorting،Data Searching،Hash table،Graph algorithm،Data Compressing‫وغیره‬apply.‫میگردد‬ ‫سترکچر‬ ‫دیتا‬ ‫فواید‬ Ease of Use‫قابل‬ ‫آسان‬ ‫مذکوررا‬ ‫ویر‬ ‫وسافت‬ ‫ساخته‬ ‫کم‬ ‫را‬ ‫ویر‬ ‫سافت‬ ‫یک‬ ‫های‬ ‫پیچیدگی‬ ‫سترکچر‬ ‫دیتا‬ ‫از‬ ‫استفاده‬ ‫یعنی‬ : .‫سازد‬ ‫می‬ ‫استفاده‬ Speed‫کمپیوتر‬ ‫میموری‬ ‫در‬ ‫منظم‬ ‫بسیار‬ ‫طور‬ ‫به‬ ‫دیتا‬ ‫سترکچر‬ ‫دیتا‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫چون‬ :organize‫و‬ ‫وقت‬ ‫بنأ‬ ‫میگردد‬ .‫باالمیرود‬ ‫سرعت‬ ‫و‬ ‫نگردیده‬ ‫ضایع‬ ‫پراسسر‬ ‫سرعت‬ Efficiency:.‫میکند‬ ‫کمک‬ ‫میشود‬ ‫ساخته‬ ‫که‬ ‫هدفی‬ ‫خاطر‬ ‫به‬ ‫پروگرام‬ ‫یک‬ ‫مؤثریت‬ ‫در‬ ‫سترکچر‬ ‫دیتا‬ ‫از‬ ‫استفاده‬ ‫یعنی‬ Efficient Use of Memory:‫در‬ ‫دیتا‬ ‫نمایش‬ ‫و‬ ‫ذخیره‬ ‫متفاوت‬ ‫های‬ ‫روش‬ ‫با‬ ‫آشنایی‬RAM‫طوری‬ ‫ما‬ ‫که‬ ‫میگردد‬ ‫باعث‬ ‫ر‬ ‫حافظه‬ ‫کمترین‬ ‫که‬ ‫کنیم‬ ‫ذخیره‬ ‫حافظه‬ ‫در‬ ‫را‬ ‫دیتا‬.‫باشد‬ ‫داشته‬ ‫نیاز‬ ‫دسترسی‬ ‫روش‬ ‫بهترین‬ ‫با‬ ‫ا‬ Reusability( ‫شدن‬ ‫استفاده‬ ‫بار‬ ‫بار‬ ‫قابلیت‬ ‫ساختارها‬ ‫تمام‬ :reusability‫که‬ ‫باشد‬ ‫می‬ ‫دارا‬ ‫را‬ )‫ساختن‬ ‫در‬ ‫سهولت‬ ‫باعث‬ .‫شود‬ ‫می‬ ‫ها‬ ‫پروگرام‬ Type of Operation‫مذکور‬ ‫های‬ ‫ساختار‬ ‫در‬ ‫میکنیم‬ ‫استفاده‬ ‫ها‬ ‫پروگرام‬ ‫ساختن‬ ‫برای‬ ‫ستاندارد‬ ‫ساختارهای‬ ‫از‬ ‫ما‬ ‫زمانیکه‬ : .‫گردد‬ ‫تطبیق‬ ‫عملیات‬ ‫مختلف‬ ‫انواع‬ ‫میتوانند‬ :‫سترکچر‬ ‫دیتا‬ ‫انواع‬ .‫باشد‬ ‫می‬ ‫دونوع‬ ‫به‬ ‫سترکچر‬ ‫دیتا‬ Primitive Structure‫ساختارهای‬ ‫از‬ ‫عبارت‬ :built in‫تنها‬ ‫کدام‬ ‫هر‬ ‫که‬ ‫باشد‬ ‫می‬Single value‫مانند‬ .‫میکند‬ ‫ذخیره‬ ‫را‬ int, char, String, double, float, Boolean.‫وغیره‬ Non Primitive Structure‫مجموعهء‬ ‫از‬ :‫چندین‬Primitive Data Type‫چندین‬ ‫تواند‬ ‫می‬ ‫هرکدام‬ ‫که‬ ‫میگردد‬ ‫تشکیل‬ : ‫از‬ ‫عبارتند‬ ‫که‬ ‫میگردد‬ ‫تقسیم‬ ‫دوبخش‬ ‫به‬ ‫خود‬ ‫نوبت‬ ‫به‬ ‫ساختارها‬ ‫نوع‬ ‫واین‬ .‫نماید‬ ‫ذخیره‬ ‫نام‬ ‫یک‬ ‫تحت‬ ‫درخود‬ ‫را‬ ‫قیمت‬ Linear Data Structure‫ش‬ ‫به‬ ‫را‬ ‫دیتا‬ ‫ها‬ ‫ساختار‬ ‫نوع‬ ‫این‬ :‫کمپیوتر‬ ‫حافظهء‬ ‫در‬ )‫(مسلسل‬ ‫خطی‬ ‫کل‬‫ذخیره‬ ‫مانند‬ .‫میکند‬Array،stack،Queue.‫وغیره‬ Non-Linear Data Structure‫مختلف‬ ‫اشکال‬ ‫به‬ ‫دیتارا‬ :‫کمپیوتر‬ ‫حافظهء‬ ‫در‬،‫ها‬ ‫گراف‬ ‫مانند‬ ‫میکند‬ ‫ذخیره‬ ‫وغیره‬ ‫ها‬ ‫چارت‬
  • 3.
    Page 3 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ Object Oriented Design ( ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫ازلسان‬ ‫یکی‬ ‫جاوا‬ ‫میدانیم‬ ‫قسمیکه‬Object-Oriented Programming language.‫باشد‬ ‫می‬ )‫یعنی‬ ( ‫مشخصات‬ ‫وتمام‬ ‫شده‬ ‫مشخص‬ ‫کار‬ ‫طرح‬ ‫یا‬ ‫نقشه‬ ‫اوال‬ ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫لسان‬ ‫نوع‬ ‫دراین‬attributes( ‫اعمال‬ ‫و‬ )behavior‫نرم‬ ) ‫چندین‬ ‫سپس‬ ‫و‬ ‫میگردد‬ ‫معرفی‬ ‫درآن‬ ‫افزار‬object‫را‬ ‫ومشخصات‬ ‫خواص‬ ‫تمام‬ ‫و‬ ‫نموده‬ ‫استفاده‬ ‫مذکور‬ ‫کار‬ ‫طرح‬ ‫و‬ ‫نقشه‬ ‫از‬ ‫توانند‬ ‫می‬ ‫بخو‬ ‫را‬ ‫شده‬ ‫ذکر‬ ‫طرح‬ ‫در‬ ‫که‬.‫بگیرند‬ ‫د‬ ‫یعنی‬OOA (object oriented Approach)‫و‬ ‫نموده‬ ‫طرح‬ ‫ها‬ ‫کالس‬ ‫قالب‬ ‫در‬ ‫آنرا‬ ‫مربوطهء‬ ‫عملیات‬ ‫و‬ ‫دیتا‬ ‫که‬ ‫میدهد‬ ‫اجازه‬ ‫ما‬ ‫به‬ ‫نهایت‬ ‫بی‬ ‫میتوانیم‬ ‫آن‬ ‫از‬object.‫بسازیم‬:‫از‬ ‫عبارتند‬ ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫لسان‬ ‫اساسی‬ ‫جزء‬ ‫دو‬ ‫بنأ‬ Classes‫فنکشن‬ ‫و‬ ‫مشخصات‬ ‫از‬ ‫مجموعهء‬ :‫که‬ ‫باشند‬ ‫می‬ ‫های‬‫و‬ ‫داشته‬ ‫آنرا‬ ‫باید‬ ‫افزار‬ ‫نرم‬ ‫یک‬.‫دهند‬ ‫انجام‬‫کار‬ ‫طرح‬ ‫ویک‬ (blue print‫برای‬ ‫نمونه‬ ‫ویا‬ )Object.‫بگیرند‬ ‫کالس‬ ‫از‬ ‫شانرا‬ ‫خصوصیات‬ ‫تمام‬ ‫تا‬ ‫باشد‬ ‫می‬ ‫ها‬ Object‫لمس‬ ‫قابل‬ ‫اشیای‬ ‫بعضی‬ ‫از‬ ‫عبارت‬ ‫درلغت‬ :‫(کتاب‬‫باشد‬ ‫می‬ )‫وغیره‬ ‫فشار‬ ،‫(زمان‬ ‫لمس‬ ‫قابل‬ ‫وغیر‬ )‫کمپیوتر‬ ، ‫قلم‬ ، ، ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫لسان‬ ‫دراصطالح‬ ‫و‬Object‫مشخصات‬ ‫و‬ ‫ها‬ ‫میتود‬ ‫که‬ ‫شوند‬ ‫می‬ ‫گفته‬ ‫افزار‬ ‫نرم‬ ‫از‬ ‫بخش‬ ‫به‬ ‫ها‬ ‫وهر‬ .‫نمایند‬ ‫می‬ ‫تطبیق‬ ‫هارا‬ ‫کالس‬ ‫در‬ ‫شده‬ ‫معرفی‬Object.‫است‬ ‫بخش‬ ‫سه‬ ‫شامل‬ oAttribute oBehavior oUnique Identity ‫یک‬ ‫موتر‬ :‫مثال‬ ‫بطور‬Object‫که‬ ‫است‬attribute‫باشد‬ ‫می‬ ‫آن‬ ‫تولید‬ ‫سال‬ ‫و‬ ، ‫نوع‬ ‫؛‬ ‫سایز‬ ‫؛‬ ‫رنگ‬ ‫از‬ ‫عبارت‬ ‫آن‬ ‫های‬ ‫درحالیکه‬behavior‫یا‬method‫گرفتن‬ ‫سرعت‬ ، ‫نمودن‬ ‫توقف‬ ،‫کردن‬ ‫مصرف‬ ‫تیل‬ ، ‫گرفتن‬ ‫سرعت‬ ‫از‬ ‫عبارت‬ ‫آن‬ ‫های‬ .‫باشد‬ ‫می‬ .....‫و‬unique Identity‫همان‬ ‫پلیت‬ ‫نمبر‬ ‫هم‬ ‫آن‬.‫است‬ ‫موتر‬ Object Oriented Programming Language‫اصول‬ ‫نام‬ ‫به‬ ‫میکنند.که‬ ‫استفاده‬ ‫ها‬ ‫مادل‬ ‫سازی‬ ‫ساده‬ ‫منظور‬ ‫به‬ ‫میکانیزم‬ ‫سه‬ ‫از‬ :‫از‬ ‫وعبارتند‬ .‫شود‬ ‫می‬ ‫نامیده‬ ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫پروگرام‬ ‫های‬ ‫لسان‬ 4.Inheritance:‫و‬ ‫مشخصات‬ ‫ها‬ ‫کالس‬ ‫از‬ ‫بعضی‬behavior‫شانرا‬‫این‬ ‫که‬ ‫میگیرند‬ ‫ارث‬ ‫به‬ ‫را‬ ‫دیگر‬ ‫های‬ ‫کالس‬ ‫از‬ ‫نام‬ ‫به‬ ‫خاصیت‬inheritance.‫یادمیگردد‬‫چندین‬ ‫دارای‬ ‫کالس‬ ‫چندین‬ ‫ویا‬ ‫دو‬ ‫ممکن‬ ‫یعنی‬attribute‫و‬behavior‫مشترک‬ ‫به‬ ‫مذکور‬ ‫کالس‬ ‫از‬ ‫را‬ ‫خصوصیات‬ ‫این‬ ‫ها‬ ‫کالس‬ ‫وسایر‬ ‫شوند‬ ‫می‬ ‫معرفی‬ ‫ها‬ ‫کالس‬ ‫از‬ ‫یکی‬ ‫در‬ ‫مشترک‬ ‫اجزای‬ ‫این‬ ‫که‬ ‫باشند‬ ‫میگی‬ ‫ارث‬‫نام‬ ‫به‬ ‫میگردند‬ ‫معرفی‬ ‫درآن‬ ‫مشترک‬ ‫خصوصیات‬ ‫که‬ ‫کالس‬ ‫و‬ .‫رند‬super class،base class‫ویا‬Parent class‫نام‬ ‫به‬ ‫ها‬ ‫کالس‬ ‫سایر‬ ‫درحالیکه‬ ‫میگردد‬ ‫یاد‬Child class،sub class.‫یادمیگردند‬ ‫عمر‬ ‫؛‬ ‫نام‬ ‫قبیل‬ ‫از‬ ‫مشترک‬ ‫مشخصات‬ ‫بعضی‬ ‫دارای‬ ‫سه‬ ‫هر‬ ‫ومعلم‬ ‫دکتور‬ ، ‫انجنیر‬ ‫کالس‬ ‫سه‬ :‫مثال‬‫وهمچنین‬ ‫وزن‬ ، ‫قد‬ ، ‫دارای‬behavior‫یک‬ ‫سهولیت‬ ‫خاطر‬ ‫به‬ ‫بنأ‬ .‫باشند‬ ‫می‬ ‫کردن‬ ‫مطالعه‬ ، ‫کردن‬ ‫خواب‬ ، ‫آشامیدن‬ ، ‫خوردن‬ ‫مانند‬ ‫مشترک‬ ‫های‬ ‫نام‬ ‫تحت‬ ‫کالس‬Human‫کالس‬ ‫سه‬ ‫حالت‬ ‫ودرین‬ .‫میکنیم‬ ‫اضافه‬ ‫آن‬ ‫در‬ ‫را‬ ‫مشترک‬ ‫افعال‬ ‫و‬ ‫خصوصیات‬ ‫این‬ ‫که‬ ‫سازیم‬ ‫می‬ ‫خصوص‬ ‫توانند‬ ‫می‬ ‫الذکر‬ ‫فوق‬‫خ‬ ‫خاص‬ ‫یات‬‫باشند‬ ‫داشته‬ ‫نیز‬ ‫را‬ ‫ودش‬.‫کلیدی‬ ‫کلمهء‬ ‫استعمال‬ ‫با‬ ‫درجاوا‬ (extends‫میتوانیم‬ .)‫کنیم‬ ‫دیگرمعرفی‬ ‫کالس‬ ‫وارث‬ ‫را‬ ‫کالس‬ ‫یک‬ 2.Encapsulation:‫ازپنهان‬ ‫عبارت‬‫کردن‬Attribute‫و‬ ‫ها‬behavior‫یک‬ ‫مورد‬ ‫بی‬ ‫هایی‬Object‫آشکار‬ ‫و‬ ‫دادن‬ ‫وبروز‬ ‫که‬ ‫مشخصات‬ ‫ساختن‬‫حاضر‬ ‫درحال‬‫یک‬ ‫ممکن‬ ‫یعنی‬ .‫است‬ ‫نیاز‬ ‫آن‬ ‫به‬object‫م‬ ‫دارای‬‫باشد‬ ‫زیادی‬ ‫های‬ ‫متود‬ ‫و‬ ‫ها‬ ‫شخصه‬ ‫ولی‬‫مختلف‬ ‫حاالت‬ ‫نظربه‬‫استفاده‬ ‫حالت‬ ‫همان‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫متود‬ ‫و‬ ‫مشخصات‬ ‫از‬‫م‬‫ی‬.‫نمایند‬ ‫یک‬ ‫منحیث‬ ‫من‬ ‫مثال‬ ‫بطور‬Object‫و‬ ‫مشخصات‬ ‫دارای‬Behavior‫چون‬ .‫باشم‬ ‫می‬ ‫مختلفی‬ ‫های‬‫کابل‬ ‫دانشگاه‬ ‫در‬ ‫زمانیکه‬ ‫داخل‬‫نا‬ ‫با‬ ‫میشوم‬‫ام‬ ‫شده‬ ‫ثبت‬ ‫بودنم‬ ‫محصل‬ ‫مشخصات‬ ‫و‬ ‫م‬) ‫خواندن‬ ‫درس‬ ‫محصل؛‬ ‫تخلص‬ ، ‫محصل‬ ‫پدر‬ ‫اسم‬ ، ‫محصل‬ ‫(اسم‬ ) ‫دادن‬ ‫درس‬ ، ‫معلم‬ ‫تخلص‬ ‫؛‬ ‫معلم‬ ‫پدر‬ ‫اسم‬ ، ‫معلم‬ ‫اسم‬ ( ‫معلمی‬ ‫ومشخصات‬ ‫نام‬ ‫با‬ ‫مکاتب‬ ‫از‬ ‫یکی‬ ‫در‬ ‫حال‬ ‫درعین‬‫شده‬ ‫ثبت‬ ‫ام‬‫بو‬ ‫معلم‬ ‫همچون‬ ‫مشخصات‬ ‫به‬ ‫کابل‬ ‫دانشگاه‬ ‫وقتی‬ ‫هیچ‬ ‫یعنی‬ .‫نداشته‬ ‫کار‬ ‫میکنم‬ ‫راتدریس‬ ‫مضامینی‬ ‫کدام‬ ‫یااینکه‬ ‫و‬ ‫دنم‬ .‫ندارد‬ ‫کاری‬ ‫دارم‬ ‫نمره‬ ‫چقدر‬ ‫مضامین‬ ‫درکدام‬ ‫واینکه‬ ‫بودنم‬ ‫محصل‬ ‫به‬ ‫هم‬ ‫مکتب‬ ‫ودرمقابل‬ 9.Polymorphism:( ‫مشخصات‬attributes‫ویا‬ )Behavior‫عمل‬ ‫مختلفی‬ ‫اشکال‬ ‫به‬ ‫ولی‬ ‫بوده‬ ‫مشابه‬ ‫نام‬ ‫تحت‬ ‫که‬ ‫هایی‬ ‫مارفیسم‬ ‫پولی‬ ‫نام‬ ‫به‬ ‫میکنند‬.‫یادمیگردند‬.‫است‬ ‫آورده‬ ‫بار‬ ‫به‬ ‫معاصر‬ ‫نویسی‬ ‫برنامه‬ ‫در‬ ‫را‬ ‫زیادی‬ ‫سهولیات‬ ‫که‬‫مثال‬ ‫بطور‬ ‫یک‬ ‫کاربن‬ ‫که‬ ‫میدانیم‬Object.‫ذغال‬ ‫ویا‬ ‫باشد‬ ‫الماس‬ ‫میتواند‬ ‫باشد‬ ‫حالت‬ ‫چندین‬ ‫دارای‬ ‫میتواند‬ ‫ولی‬ ‫است‬
  • 4.
    Page 4 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫که‬ ‫نویسیم‬ ‫می‬ ‫را‬ ‫پروگرام‬ : ‫مثال‬ ‫طور‬‫وهمچن‬ ‫نماید‬ ‫ذخیره‬ ‫را‬ ‫مختلفی‬ ‫های‬ ‫کمپیوتر‬ ‫مشخصات‬‫به‬ ‫ان‬user‫مشخصات‬ ‫این‬ ‫تا‬ ‫دهد‬ ‫اجازه‬ .‫بدهد‬ ‫تغییر‬ ‫و‬ ‫رادیده‬ ‫نام‬ ‫به‬ ‫کالس‬ ‫یک‬ ‫اوال‬PCsRecord‫هر‬ ‫تا‬ ‫سازیم‬ ‫می‬PC.‫بگیرد‬ ‫کالس‬ ‫این‬ ‫از‬ ‫خودرا‬ ‫مشخصات‬ ‫میشود‬ ‫اضافه‬ ‫که‬ ‫کالس‬‫یک‬ ‫صرف‬ ‫فوق‬blue print‫مشخصات‬ ‫وخواص‬ ‫تمام‬ ‫که‬ ‫باشد‬ ‫می‬Object.‫است‬ ‫شده‬ ‫معرفی‬ ‫درآن‬‫که‬‫نهایت‬ ‫بی‬ ‫میتوانیم‬ Object‫هر‬ ‫که‬ ‫بسازیم‬ ‫فوق‬ ‫کالس‬ ‫از‬object‫و‬ ‫مشخصات‬ ‫تمام‬ ‫کالس‬ ‫این‬method‫های‬‫بخود‬ ‫را‬ ‫شده‬ ‫معرفی‬‫ال‬ .‫میگیرد‬‫بته‬ Object‫داخل‬ ‫همیشه‬ ‫ها‬‫متود‬main‫میگردد‬ ‫معرفی‬‫وحال‬ .‫دارای‬ ‫که‬ ‫سازیم‬ ‫می‬ ‫را‬ ‫دیگری‬ ‫کالس‬main method‫آن‬ ‫در‬ ‫و‬ ‫بوده‬ object.‫میکنیم‬ ‫معرفی‬ ‫ذیل‬ ‫طور‬ ‫کالس‬ ‫این‬ ‫نوع‬ ‫از‬ ‫هارا‬
  • 5.
    Page 5 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫پروگرام‬ ‫نتیجهء‬.‫کرد‬ ‫خواهید‬ ‫مالحظه‬ ‫ذیل‬ ‫شکل‬ ‫به‬ ‫را‬ ‫فوق‬ ‫را‬ ‫ذیل‬ ‫کالس‬ :‫دوم‬ ‫مثال‬coding.‫نمایید‬ Date Day Month Year Min Year Return Day() Return Month() Return Year() Return Serial of Day()
  • 6.
    Page 6 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ Array ‫نام‬ ‫به‬ ‫میگردد‬ ‫ذخیره‬ ‫مسلسل‬ ‫شکل‬ ‫به‬ ‫درمیموری‬ ‫که‬ ‫مشابه‬ ‫بانام‬ ‫را‬ ‫همنوع‬ ‫ومتحولین‬ ‫عناصر‬ ‫از‬ ‫یامجموعهء‬ ‫و‬ ‫لیست‬array‫یاد‬ ‫میکن‬‫مشابه‬ ‫متحولین‬ ‫این‬ ‫که‬ .‫ند‬Fixed size‫و‬ ‫بوده‬‫از‬ ‫استفاده‬ ‫با‬index‫و‬ ‫فرق‬ ‫دیگر‬ ‫یک‬ ‫از‬ ‫ها‬access‫باالی‬ .‫میگردند‬array ‫را‬ ‫مختلفی‬ ‫عملیات‬ ‫میتوانیم‬‫قبیل‬ ‫از‬insertion،Deletion, sorting, searching‫عناصر‬ .‫دهیم‬ ‫انجام‬ ‫را‬ ‫وغیره‬Array‫به‬ ‫مطابق‬ .‫میگردند‬ ‫دخیره‬ ‫حافظه‬ ‫در‬ ‫ذیل‬ ‫شکل‬ 20302214678865339872 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] ‫نام‬ ‫فوق‬ ‫درحالت‬Array‫از‬ ‫عبارت‬a‫که‬ ‫باشد‬ ‫می‬[]‫حجره‬ ‫هر‬ ‫اندیکس‬ ‫نشاندهندهء‬Array.‫باشد‬ ‫می‬
  • 7.
    Page 7 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫فواید‬array Array( ‫ساختار‬ ‫یک‬data structure‫را‬ ‫مختلفی‬ ‫عملیات‬ ‫و‬ ‫گردیده‬ ‫معرفی‬ ‫آسانی‬ ‫به‬ ‫که‬ ‫بوده‬ ‫ساده‬ )support‫وهمچنین‬ .‫میکند‬ ‫در‬ ‫ها‬ ‫اندیکس‬ ‫از‬ ‫استفاده‬array‫پراسهء‬access‫تمام‬ ‫همزمان‬ ‫میتوانیم‬ ‫ما‬ ‫که‬ ‫زیرا‬ ‫است‬ ‫ساخته‬ ‫سریع‬ ‫بسیار‬ ‫دیتارا‬ ‫کردن‬element ‫هایی‬array‫توسط‬ ‫آسانی‬ ‫بسیار‬ ‫به‬ ‫را‬index‫شان‬ ‫های‬access.‫کنیم‬ ‫نواقص‬Array Array‫آن‬ ‫نقص‬ ‫مهمترین‬ ‫جمله‬ ‫از‬ ‫میباشد‬ ‫نیز‬ ‫نواقص‬ ‫دارای‬fixed size‫که‬ ‫استیم‬ ‫مجبور‬ ‫ما‬ ‫یعنی‬ .‫است‬ ‫آن‬ ‫بودن‬array‫ه‬ ‫را‬‫میشه‬ ‫معموال‬ .‫میگردد‬ ‫حافظه‬ ‫ضیاع‬ ‫باعث‬ ‫عمل‬ ‫این‬ ‫که‬ ‫باشیم‬ ‫نداشته‬ ‫نیازی‬ ‫اینکه‬ ‫ولو‬ ‫کنیم‬ ‫معرفی‬ ‫نیاز‬ ‫مورد‬ ‫موقعیت‬ ‫مقدار‬ ‫تراز‬ ‫اضافه‬ ‫سرعت‬search‫در‬array‫شکل‬ ‫به‬ ‫که‬ ‫های‬unsorted‫ترتیب‬ ‫همین‬ ‫وبه‬ ‫بوده‬ ‫پایین‬ ‫بسیار‬ ‫میباشد‬insertion‫در‬array‫تنظیم‬ ‫هایی‬ ( ‫شده‬sorted‫سخ‬ ‫بسیار‬ ).‫است‬ ‫ت‬‫در‬ ‫هم‬ ‫درحالیکه‬sorted array‫در‬ ‫وهم‬unsorted array‫عملیهء‬deletion.‫است‬ ‫دشوار‬ ‫کار‬ ‫طرزمعرفی‬Array DataType ArrayName[] = new DataType[ArraySize]; String name[]=new String[50]; int list[]=new int[15]; List[5]=70; List[10]=list[5]+100; System.out.println(“Index 44”+list[44]); ‫موضوع‬ ‫شدن‬ ‫ساده‬ ‫برای‬‫ات‬‫کار‬ ‫ومراحل‬ ‫روش‬ ‫تعیین‬ ‫و‬‫وکودنویسی‬‫الگوریتم‬ ‫باید‬ ‫اوال‬‫فلوچارت‬ ‫ویا‬ ‫ها‬.‫بسازیم‬ ‫چیست؟‬ ‫الگوریتم‬ ‫از‬ ‫مجموعهء‬activity‫آمدن‬ ‫بدست‬ ‫منجربه‬ ‫که‬ ‫مسلسل‬ ‫هایی‬output‫نام‬ ‫به‬ ‫میگردند‬ ‫دلخواه‬algorithm‫و‬ ‫میگردد‬ ‫یاد‬‫از‬ ‫اصل‬ ‫در‬ ‫پروگرام‬ ‫یک‬ ‫نمودن‬ ‫تکمیل‬ ‫مراحل‬ ‫دیگر‬ ‫عبارت‬ ‫به‬ ‫ویا‬ .‫است‬ ‫خوارزمی‬ ‫موسی‬ ‫بن‬ ‫محمد‬ ‫به‬ ‫منسوب‬ ‫که‬ ‫شده‬ ‫گرفته‬ )‫(الخوارزم‬ ‫کلمهء‬ ‫شکل‬ ‫به‬ ‫که‬step‫به‬step:‫مثال‬ .‫میگردد‬ ‫یاد‬ ‫الگوریتم‬ ‫نام‬ ‫به‬ ‫میشود‬ ‫بیان‬ ‫ورق‬ ‫روی‬ Step1: start Step2: Declare Step3:initialize Step4:increment step5:Display Step6:stop ‫چیست؟‬ ‫فلوچارت‬ ‫شکل‬ ‫به‬ ‫را‬ ‫پروگرام‬ ‫یک‬ ‫شدن‬ ‫تکمیل‬ ‫مراحل‬ ‫که‬ ‫است‬ ‫دیاگرام‬visual‫شروع‬ ‫دیاگرام‬ ‫درین‬ ‫که‬ .‫میدهد‬ ‫نمایش‬ ‫ها‬ ‫چارت‬ ‫از‬ ‫استفاده‬ ‫وبا‬ :‫ذیل‬ ‫شکل‬ ‫قرار‬ ‫میشود‬ ‫داده‬ ‫نشان‬ ‫بیضوی‬ ‫توسط‬ ‫کار‬ ‫وختم‬
  • 8.
    Page 8 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫نمرات‬ ‫و‬ ‫نام‬ ‫که‬ ‫نویسیم‬ ‫می‬ ‫را‬ ‫پروگرام‬ :‫مثال‬ ‫طور‬.‫دهد‬ ‫نشان‬ ‫را‬ ‫نمرات‬ ‫و‬ ‫نام‬ ‫این‬ ‫سپس‬ ‫و‬ ‫کرده‬ ‫ثبت‬ ‫را‬ ‫شاگردان‬ ‫تمام‬ :‫الگوریتم‬ ‫دو‬array.‫کنیم‬ ‫معرفی‬ ‫داخل‬ ‫را‬ ‫نمرات‬ ‫و‬ ‫نام‬array.‫برساند‬ ‫ثبت‬ ‫به‬ .‫دهد‬ ‫نمایش‬ ‫را‬ ‫ونمرات‬ ‫نام‬ import java.util.Scanner; public class List { int size; int score[]; public List(int s) { size = s; score = new int [size]; } Scanner keyboard = new Scanner(System.in); public void insert(int n) { for(int i=0; i<n; i++) score[i]=keyboard.nextInt(); } public void display(int m) {
  • 9.
    Page 9 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ for(int i=0; i<m; i++) System.out.println(score[i]); } } ‫دومی‬ ‫کالس‬ public class arrayapp { public static void main(String[] args) { List SwE5 = new List(45); List IS5 = new List (55); List IT5 = new List(60); SwE5.insert(45); SwE5.display(45); IS5.insert(55); IS5.display(55); IT5.insert(60); IT5.display(60); } } Searching Algorithm ( ‫عنصر‬ ‫یک‬ ‫کردن‬ ‫جستجو‬ ‫برای‬ ‫دوروش‬element‫در‬ )array:‫دارد‬ ‫زیاد‬ ‫اهمیت‬ Linear Search Binary Search ‫در‬linear search‫در‬ ‫موجود‬ ‫عناصر‬ ‫تک‬ ‫تک‬ ‫با‬ ‫شده‬ ‫خواسته‬ ‫عنصر‬array‫در‬ ‫را‬ ‫نتیجه‬ ‫بودن‬ ‫مساوی‬ ‫ودرصورت‬ ‫میگردد‬ ‫مقایسه‬ .‫یابد‬ ‫می‬ public student find(String searchname) { int j; for(j=0; j<nelems; j++) if( a[j] = searchname) break; if( j == nelems) return null; else return a[j]; } ‫در‬binary search‫های‬ ‫لیست‬ ‫در‬ ‫عموما‬ ‫که‬sort‫شده‬ ‫خواسته‬ ‫عناصر‬ ‫و‬ ‫نموده‬ ‫دریافت‬ ‫را‬ ‫وسطی‬ ‫اندیکس‬ ‫اوال‬ ‫میگیرد‬ ‫صورت‬ ‫شده‬ ‫عین‬ ‫و‬ ‫نگرفته‬ ‫مدنظر‬ ‫را‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫تر‬ ‫کوچک‬ ‫بود‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫تر‬ ‫بزرگ‬ ‫درصورتیکه‬ .‫میکند‬ ‫مقایسه‬ ‫وسط‬ ‫عنصر‬ ‫با‬ ‫را‬ .‫کند‬ ‫می‬ ‫اجرا‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫تر‬ ‫بزرگ‬ ‫عناصر‬ ‫باالی‬ ‫را‬ ‫پراسه‬
  • 10.
    Page 10 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ public boolean find(int searchkey) { int lowerBound = 0; int upperBound = n-1; int middle=0; while(true) { middle = (lowerBound + upperBound) / 2; if (student[middle] == searchkey) return true; else if(lowerBound>upperBound) return false; else { if(student[middle] < searchkey) lowerBound = middle + 1; else upperBound = middle - 1; } } }
  • 11.
    Page 11 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ Stack Stack( ‫دیتا‬ ‫ساختار‬ ‫از‬ ‫وعبارت‬ ‫بوده‬ ‫گاه‬ ‫ذخیره‬ ‫معنی‬ ‫به‬ ‫درلغت‬data structure‫بوده‬ )‫که‬‫مجموعهء‬ ‫از‬item‫هایی‬order‫شده‬ ‫باشد‬ ‫شده‬ ‫تشکیل‬ ‫طوری‬‫که‬insertion‫و‬deletion‫نام‬ ‫به‬ ‫و‬ .‫میگیرد‬ ‫صورت‬ ‫آن‬ ‫انجام‬ ‫یک‬ ‫از‬ ‫تنها‬LIFO (Last In First Out)‫ویا‬ FILO (First In Last Out).‫میگردد‬ ‫یاد‬ ‫هم‬‫گ‬ ‫وبرای‬ ‫اند‬ ‫شده‬ ‫چیده‬ ‫سربسر‬ ‫که‬ ‫کنید‬ ‫فرض‬ ‫را‬ ‫کفتریا‬ ‫های‬ ‫ظرف‬ :‫مثال‬ ‫بطور‬‫ی‬ ‫رفتن‬‫کی‬ ‫رادور‬ ‫فوقانی‬ ‫ظروف‬ ‫تازمانیکه‬ .‫بگیریم‬ ‫را‬ ‫پاییننی‬ ‫ظرف‬ ‫ونمیتوانیم‬ ‫میگیریم‬ ‫دارد‬ ‫قرار‬ ‫ظرفها‬ ‫همه‬ ‫باالی‬ ‫در‬ ‫راکه‬ ‫ظرف‬ ، ‫ازظروف‬ .‫باشیم‬ ‫نکرده‬ ‫آورن‬ ‫بدست‬ ‫بخاطر‬ ‫شما‬ ‫و‬ ‫گرفته‬ ‫قرار‬ ‫سیا‬ ، ‫سفید‬ ، ‫سرخ‬ ‫های‬ ‫رنگ‬ ‫به‬ ‫دیگری‬ ‫بلوز‬ ‫چند‬ ‫زیر‬ ‫تان‬ ‫آبی‬ ‫دلخواه‬ ‫بلوز‬ ‫که‬ ‫کنید‬ ‫فرض‬ ‫ویا‬ ).‫است‬ ‫مثال‬ ‫یک‬ ‫(فقط‬ .‫بیاورید‬ ‫بدست‬ ‫را‬ ‫آبی‬ ‫بلوز‬ ‫سپس‬ ‫و‬ ‫چیده‬ ‫دیگر‬ ‫طرف‬ ‫در‬ ‫را‬ ‫دیگر‬ ‫های‬ ‫بلوز‬ ‫باید‬ ‫اوال‬ ‫تان‬ ‫دلخواه‬ ‫بلوز‬ ‫میتوانیم‬ ‫گفته‬ ‫فوق‬ ‫های‬ ‫مثال‬ ‫درروشنی‬stack‫پذیر‬ ‫امکان‬ ‫آن‬ ‫فوقانی‬ ‫قسمت‬ ‫از‬ ‫تنها‬ ‫دیتا‬ ‫پراسس‬ ‫میباشدکه‬ ‫دیتای‬ ‫ساختار‬ ‫از‬ ‫عبارت‬ ‫ساختا‬ ‫دیگر‬ ‫عبارت‬ ‫به‬ ‫است.وبا‬‫منظور‬ ‫به‬ ‫درآن‬ ‫که‬ ‫است‬ ‫ر‬access‫ویا‬ ‫عناصر‬ ‫کردن‬remove‫فوقانی‬ ‫قسمت‬ ‫به‬ ‫تنها‬ ‫عناصر‬ ‫کردن‬ .‫مینماییم‬ ‫مراجعه‬ ‫آن‬ ‫که‬ ‫میتوانیم‬ ‫گفته‬stack‫را‬ ‫عناصر‬ ‫میتوانیم‬ ‫صرف‬ ‫درآن‬ ‫زیراکه‬ ‫میتواند‬ ‫داده‬ ‫انجام‬ ‫ها‬ ‫ساختار‬ ‫سایر‬ ‫به‬ ‫نسبت‬ ‫را‬ ‫محدودی‬ ‫عملیات‬ insert‫و‬remove‫که‬ .‫کنیم‬Insert‫نمودن‬value‫در‬ ‫هارا‬stack‫نام‬ ‫به‬push‫وگرفتن‬value‫نام‬ ‫به‬ ‫هارا‬pop.‫میکنند‬ ‫یاد‬‫که‬ ‫فوقانی‬ ‫قسمت‬ ‫از‬ ‫هردوعملیه‬(top of stack).‫میگیرد‬ ‫صورت‬‫یا‬ ‫و‬ ‫بودن‬ ‫خالی‬ ‫که‬ ‫داریم‬ ‫نیاز‬ ‫دیگری‬ ‫عملیهء‬ ‫یک‬ ‫به‬ ‫وهمچنان‬ ‫پربودن‬stack‫آنرا‬ ‫دراینجا‬ ‫که‬ ‫کند‬ ‫بررسی‬ ‫را‬isEmpty.‫مینامیم‬
  • 12.
    Page 12 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫ب‬ ‫عموم‬ ‫طور‬‫ها‬ ‫پروگرام‬ ‫اجراشدن‬ ‫ا‬stack‫میتوانیم‬ ‫ما‬ ‫و‬ ‫میباشد‬ ‫خالی‬‫عناصر‬stack‫تعریف‬ ‫با‬ ‫را‬constructor‫صفر‬ ‫به‬initialize ‫حالت‬ ‫این‬ ‫که‬ .‫کنیم‬stack‫نام‬ ‫رابه‬stack underflow‫های‬ ‫حجره‬ ‫زمانیکه‬ ‫و‬ ‫یادمیکنند‬stack‫فوقانی‬ ‫درقسمت‬ ‫و‬ ‫باشد‬ ‫شده‬ ‫اشغال‬ ‫برای‬ ‫جایی‬push‫نام‬ ‫به‬ ‫را‬ ‫حالت‬ ‫این‬ ‫باشد‬ ‫نداشته‬stack overflow‫حالت‬ ‫این‬ ‫که‬ .‫یادمیکنند‬exception‫متود‬ ‫تعریف‬ ‫با‬ ‫میتوان‬ ‫را‬ ‫نام‬ ‫به‬ ‫دیگری‬isFull()( ‫کنترول‬handle.‫کرد‬ ) ‫از‬stack‫قبیل‬ ‫از‬ ‫مهم‬ ‫درمواردی‬Web Browsers،Undo mechanism،paste mechanism‫دکمهء‬ ،back‫در‬web browser‫و‬ ‫ها‬window‫میرویم‬ ‫مختلف‬ ‫عناصر‬ ‫بین‬ ‫ها‬ ‫گراف‬ ‫در‬ ‫زمانیکه‬ ‫مسیر‬ ‫نگهداشتن‬ ، ‫ها‬‫استفاده‬ ‫دیگر‬ ‫مورد‬ ‫وصدها‬ .‫میگردد‬ ‫از‬ ‫استفاده‬ ‫وابتدایی‬ ‫ساده‬ ‫شکل‬ ‫ذیل‬ ‫پروگرام‬Stack.‫میدهد‬ ‫رانشان‬ ( ‫اصلی‬ ‫متود‬ ‫حال‬ ‫و‬main method‫درآن‬ ‫و‬ ‫ساخته‬ ‫را‬ )object‫کالس‬Stack‫میکن‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫و‬ ‫ساخته‬ ‫را‬.‫یم‬
  • 13.
    Page 13 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ Balanced Parentheses ‫از‬ ‫استفاده‬ ‫موارد‬ ‫از‬ ‫یکی‬stack‫بکار‬ ‫ها‬ ‫قوس‬ ‫ریاضیکی‬ ‫عملیات‬ ‫دراکثر‬ ‫شک‬ ‫بدون‬ ‫باشد‬ ‫می‬ ‫ها‬ ‫وقوس‬ ‫ریاضیکی‬ ‫عملیات‬ ‫بررسی‬ ، ‫الجبری‬ ‫افاده‬ ‫یک‬ ‫تا‬ ‫سازیم‬ ‫می‬ ‫را‬ ‫پروگرام‬ ‫بخش‬ ‫درین‬ ‫لذا‬ .‫میکند‬ ‫کمک‬ ‫زیاد‬ ‫مسایل‬ ‫حل‬ ‫در‬ ‫ها‬ ‫قوس‬ ‫بجای‬ ‫پایان‬ ‫و‬ ‫آغاز‬ ‫و‬ ‫میشوند‬ ‫برده‬ ‫ویاخیر؟‬ ‫است‬ ‫درست‬ ‫که‬ ‫کند‬ ‫بررسی‬ ‫و‬ ‫گرفته‬ ‫را‬ ‫او‬ ‫منظور‬ ‫بدین‬.‫کند‬ ‫بررسی‬ ‫هارا‬ ‫قوس‬ ‫بجابودن‬ ‫که‬ ‫میکنیم‬ ‫دیزاین‬ ‫را‬ ‫کالس‬ ‫ال‬
  • 14.
    Page 14 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫وحال‬‫متود‬isBalanced.‫میکنیم‬ ‫نوشته‬ ، ‫فوق‬ ‫دستورهای‬ ‫ادامه‬ ‫به‬ ‫میکند‬ ‫چیک‬ ‫را‬ ‫ها‬ ‫قوس‬ ‫بودن‬ ‫درست‬ ‫که‬ ‫را‬ ‫کالس‬ ‫وحال‬stack‫راهمانند‬.‫مینویسیم‬ ‫آن‬ ‫مربوطهء‬ ‫عملیات‬ ‫و‬ ‫ها‬ ‫متود‬ ‫با‬ ‫شد‬ ‫ذکر‬ ‫قبال‬ ‫که‬ ‫کالس‬
  • 15.
    Page 15 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ Queue ‫ساخ‬‫به‬ ‫مشابه‬ ‫تقریبا‬ ‫که‬ ‫است‬ ‫دیگر‬ ‫تار‬stack‫تفاوت‬ ‫این‬ ‫با‬ ‫وتنها‬‫که‬‫ساختار‬ ‫درین‬item‫بار‬ ‫اولین‬ ‫که‬‫وارد‬‫پراسس‬ ‫بار‬ ‫اولین‬ ‫باشد‬ ‫شده‬ ‫میشود‬(First in First Out).‫وهدف‬‫روش‬ ‫تا‬ ‫ها‬ ‫دیتا‬ ‫ویا‬ ‫ها‬ ‫پراسه‬ ‫دادن‬ ‫قرار‬ ‫صف‬ ‫در‬ ‫هم‬ ‫ساختار‬ ‫این‬ ‫اصلی‬FIFO‫تطبیق‬ ‫آن‬ ‫باالی‬ .‫گردد‬‫مثال‬( ‫صف‬ ‫در‬ ‫نفر‬ ‫چندین‬ ‫ذیل‬ ‫درشکل‬Queue)‫صف‬ ‫از‬ ‫بار‬ ‫اولین‬ ‫گرفته‬ ‫قرار‬ ‫درصف‬ ‫بار‬ ‫اولین‬ ‫که‬ ‫شخصی‬ ‫دارند‬ ‫قرار‬ ‫آخری‬ ‫است‬ ‫پیوسته‬ ‫صف‬ ‫به‬ ‫بار‬ ‫آخرین‬ ‫که‬ ‫شخصی‬ ‫ترتیب‬ ‫همین‬ ‫به‬ ‫و‬ ‫میشود‬ ‫خارج‬.‫میگیرد‬ ‫قرار‬ ‫پراسس‬ ‫مورد‬ ‫بار‬ ‫ن‬
  • 16.
    Page 16 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫از‬‫ساختار‬Queue‫حا‬ ‫روزمره‬ ‫زندگی‬ ‫در‬ ‫آید‬ ‫می‬ ‫عمل‬ ‫به‬ ‫زیادی‬ ‫های‬ ‫استفاده‬‫صف‬ ‫در‬ ‫اشخاص‬ ‫ویا‬ ‫اشیا‬ ‫که‬ ‫میشود‬ ‫واقع‬ ‫زیادی‬ ‫الت‬ (queue‫مثال‬ .‫میگیرند‬ ‫قرار‬ )‫نانوایی‬ ‫صف‬،‫صف‬‫ب‬ ‫برای‬‫ازرسی‬‫وغیره‬ ، ‫محافظان‬ ‫توسط‬‫که‬ .‫ساختار‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫ما‬Queue .‫کنیم‬ ‫مادلینگ‬ ‫مذکوررا‬ ‫حاالت‬ ‫میتوانیم‬ ‫آسانی‬ ‫به‬ ‫بسیار‬ ‫ه‬‫مچنان‬‫از‬ ‫استفاده‬ ‫با‬ ‫تنها‬ ‫که‬ ‫میشود‬ ‫پیش‬ ‫حاالت‬ ‫بسیار‬ ‫نیز‬ ‫کمپیوتری‬ ‫های‬ ‫درسیستم‬queue.‫کنیم‬ ‫کنترول‬ ‫آنهارا‬ ‫میتوانیم‬‫مثال‬print ‫یعنی‬ .‫وغیره‬ ‫ازکیبورد‬ ‫حروف‬ ‫تایپ‬ ، ‫ها‬ ‫فایل‬ ‫شدن‬‫فایل‬ ‫به‬ ‫وسپس‬ ‫شده‬ ‫چاپ‬ ‫باید‬ ‫اول‬ ‫آمده‬ ‫شدن‬ ‫چاپ‬ ‫برای‬ ‫اول‬ ‫که‬ ‫فایل‬ ‫حاالت‬ ‫درین‬ .‫برود‬ ‫دومی‬‫وبه‬.‫شود‬ ‫داده‬ ‫نمایش‬ ‫صفحه‬ ‫درروی‬ ‫سپس‬ ‫و‬ ‫شده‬ ‫پراسس‬ ‫اوال‬ ‫باید‬ ‫میشود‬ ‫فشارداده‬ ‫اول‬ ‫کیبورد‬ ‫از‬ ‫که‬ ‫دکمهء‬ ‫ترتیب‬ ‫همین‬ ‫برای‬( ‫قطار‬ ‫کنترول‬queue‫های‬ ‫نام‬ ‫به‬ ‫دومتحول‬ ‫از‬ ‫ما‬ )first‫و‬last‫که‬ ‫میکنیم‬ ‫استفاده‬‫ابتدا‬ ‫در‬first=0‫و‬last=-1.‫باشد‬ ‫می‬ ‫م‬:‫ثال‬ class Queue { private int maxSize; private long[] queArray; private int first; private int last; private int nItems; public Queue(int s) { maxSize = s; queArray = new long[maxSize]; first = 0; last= -1; nItems = 0; } public void insert(long j) { if(last == maxSize - 1) last = -1; queArray[++last] = j;
  • 17.
    Page 17 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ nItems++; } public long remove() { long temp = queArray[first++]; if(first == maxSize) first = 0; nItems--; return temp; } public long peekFirst() { return queArray[first]; } public boolean isEmpty() { return (nItems ==0); } public boolean isFull() { return (nItems==maxSize); } public int Size() { return nItems; } public static void main(String[] args) { Queue theQueue = new Queue(5); theQueue.insert(10); theQueue.insert(20); theQueue.insert(30); theQueue.insert(40); theQueue.remove(); theQueue.remove(); theQueue.remove(); theQueue.insert(50); theQueue.insert(60); theQueue.insert(70); theQueue.insert(80); while( !theQueue.isEmpty() ) { long n = theQueue.remove(); System.out.print(n); System.out.print(" "); } System.out.println(" "); } }
  • 18.
    Page 18 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ Greedy Algorithm ‫است‬ ‫الگوریتم‬‫ازاینرو‬ .‫نمیکند‬ ‫را‬ ‫پراسس‬ ‫بعدی‬ ‫مراحل‬ ‫فکر‬ ‫وجه‬ ‫هیچ‬ ‫وبه‬ ‫نموده‬ ‫انتخاب‬ ‫را‬ ‫حالت‬ ‫بهترین‬ ‫پراسس‬ ‫مرحلهء‬ ‫هر‬ ‫در‬ ‫که‬ ( ‫حریص‬ ‫های‬ ‫الگوریتم‬ ‫نام‬ ‫به‬greedy algorithm‫داشته‬ ‫زیاد‬ ‫استعمال‬ ‫موارد‬ ‫ها‬ ‫الگوریتم‬ ‫نوع‬ ‫این‬ .‫میشوند‬ ‫یاد‬ )‫اپلیکیشن‬ ‫مثال‬ ‫بطور‬ ‫از‬ ‫ها‬ ‫پرابلم‬ ‫حل‬ ‫منظور‬ ‫به‬ ‫ذیل‬ ‫های‬greedy algorithm:‫میکنند‬ ‫استفاده‬ MST (Minimum Spanning Tree) OSPF (Open Shortest Path First) File Compression & Hoffman Algorithm A simple scheduling algorithm Greedy algorithm‫مانند‬ ‫های‬ ‫ساختار‬ ‫در‬graph‫و‬Tree.‫شود‬ ‫تطبیق‬ ‫میتواند‬ Graph ( ‫میموری‬ ‫در‬ ‫دیتا‬ ‫ذخیره‬ ‫های‬ ‫ازروش‬ ‫یکی‬data structure‫سایر‬ ‫برخالف‬ ‫و‬ ‫میگردد‬ ‫استفاده‬ ‫زیاد‬ ‫مسایل‬ ‫در‬ ‫که‬ ‫باشد‬ ‫می‬ ) ‫شکل‬ ‫به‬ ‫دیتارا‬ ‫خواندیم‬ ‫که‬ ‫سترکچرهای‬non linear‫میموری‬ ‫در‬represent.‫میکند‬‫جا‬ ‫عناصر‬ ‫درآن‬ ‫که‬ ‫میموری‬ ‫های‬ ‫قسمت‬ ‫یعنی‬ ‫شده‬ ‫ثبت‬ ‫مسلسل‬ ‫غیر‬ ‫شکل‬ ‫وبه‬ ‫حافظه‬ ‫از‬ ‫مختلف‬ ‫های‬ ‫درقسمت‬ ‫بلکه‬ ‫نگردیده‬ ‫ذخیره‬ ‫پیوسته‬ ‫شکل‬ ‫وبه‬ ‫مستقیم‬ ‫خط‬ ‫یک‬ ‫باالی‬ ‫میگیرد‬ ‫تباط‬ ‫ار‬ ‫شان‬ ‫همجوار‬ ‫عناصر‬ ‫طریق‬ ‫از‬ ‫ویاهم‬ ‫مستقیم‬ ‫لینک‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫یا‬ ‫شان‬ ‫دیگر‬ ‫باهم‬ ‫عناصر‬ ‫ولی‬.‫دارند‬ ‫مجموعهء‬ ‫از‬ ‫که‬ ‫است‬ ‫ساختار‬ ‫گراف‬ ‫که‬ ‫میتوانیم‬ ‫گفته‬ ‫پس‬node‫و‬ ) ‫(عناصر‬ ‫ها‬edge‫این‬ ‫و‬ ‫است‬ ‫شده‬ ‫ها)ساخته‬ ‫(لینک‬ ‫ها‬node ‫شان‬ ‫بایکدیگر‬ ‫ها‬‫توسط‬edge‫ها‬.‫دارند‬ ‫ارتباط‬‫ویا‬‫اصطالحات‬ ‫اگر‬child‫و‬parent‫از‬binary tree‫هر‬ ‫طوریکه‬ ‫شود‬ ‫حذف‬ ‫عناصر‬ ‫از‬ ‫هریکی‬ ‫به‬ ‫بتواند‬ ‫عنصر‬(‫میگردد‬ ‫یاد‬ ‫گراف‬ ‫بنام‬ ‫ذیل‬ ‫ساختار‬ ‫شود‬ ‫وصل‬ ‫دیگر‬binary tree‫هر‬ ‫که‬ ‫است‬ ‫ساختار‬child ‫یک‬ ‫تنها‬parent‫چندین‬ ‫و‬child‫میتوا‬ ‫داشته‬‫ند‬.) Vertices or Nodes Node‫یک‬ ‫آن‬ ‫کدام‬ ‫هر‬ ‫که‬ ‫باشد‬ ‫حافظه‬ ‫از‬ ‫های‬ ‫موقعیت‬ ‫میتواند‬ ‫هرکدام‬ ‫عناصر‬ ‫ویا‬ ‫ها‬task‫اکثرا‬ ‫عناصر‬ ‫این‬ ‫و‬ .‫میدهد‬ ‫رانشان‬ ‫منحیث‬object.‫شود‬ ‫تمثیل‬ ‫جاوا‬ ‫های‬ ‫کالس‬ ‫در‬‫آن‬ ‫از‬ ‫سپس‬ ‫و‬ ‫بسازیم‬ ‫هارا‬ ‫کالس‬ ‫عناصر‬ ‫بخاطر‬ ‫باید‬ ‫ما‬ ‫یعنی‬object‫بسازیم‬ ‫وهر‬object‫یک‬ ‫منحیث‬node.‫میگردد‬ ‫معرفی‬ Edges‫دو‬ ‫که‬ ‫های‬ ‫الین‬ ‫از‬ ‫مجموعهء‬ :node‫نام‬ ‫به‬ ‫میکند‬ ‫وصل‬ ‫باهم‬ ‫را‬edge‫میگر‬ ‫یاد‬‫درصورتیکه‬ .‫دد‬edge‫دار‬ ‫جهت‬ ‫ها‬ (directed edge‫کدام‬ ‫که‬ ‫دهد‬ ‫می‬ ‫نشان‬ ‫باشند‬ )task‫ویا‬node‫از‬ ‫قبل‬task.‫شود‬ ‫پراسس‬ ‫دیگری‬ Adjacency vertices‫یک‬ ‫توسط‬ ‫که‬ ‫میشوند‬ ‫گفته‬ ‫همجوار‬ ‫زمانی‬ ‫دوعنصر‬ :edge.‫باشد‬ ‫داشته‬ ‫ارتباط‬ ‫مستقیم‬ ‫شکل‬ ‫به‬ Path‫از‬ ‫مجموعه‬ :vertices‫دو‬ ‫که‬ ‫متصل‬ ‫های‬node‫نام‬ ‫به‬ ‫میسازد‬ ‫وصل‬ ‫باهم‬ ‫را‬path‫بین‬ ‫ارتباط‬ ‫ذیل‬ ‫درشکل‬ ‫مثال‬ .‫میگردد‬ ‫یاد‬ ‫عناصر‬G‫و‬A‫هم‬ ‫به‬ ‫متصل‬ ‫عناصر‬ ‫از‬ ‫استفاده‬ ‫با‬D‫و‬B‫گرفته‬ ‫صورت‬‫نام‬ ‫به‬ ‫مسیر‬ ‫این‬ ‫که‬path.‫میشود‬ ‫نامیده‬
  • 19.
    Page 19 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ Completed or connected Graph‫زمانی‬ ‫ها‬ ‫گراف‬ :completed‫هر‬ ‫که‬ ‫میشوند‬ ‫نامیده‬node‫تمام‬ ‫به‬node‫دیگر‬ ‫های‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫درگراف‬edges:‫باشند.مثال‬ ‫داشته‬ ‫ارتباط‬ ‫جداگانه‬ ‫های‬ Directed Graph ‫جهات‬ ‫که‬ ‫اند‬ ‫های‬ ‫گراف‬edge‫تحت‬ ‫دیگری‬ ‫عنصر‬ ‫از‬ ‫قبل‬ ‫عنصر‬ ‫کدام‬ ‫که‬ ‫میدهد‬ ‫نشان‬ ‫وجهات‬ .‫است‬ ‫مشخص‬ ‫عناصر‬ ‫بین‬ ‫ها‬ .‫قرارگیرد‬ ‫پراسس‬ Undirected Graph‫ج‬ ‫که‬ ‫اند‬ ‫های‬ ‫گراف‬ :.‫باشد‬ ‫نگردیده‬ ‫مشخص‬ ‫عناصر‬ ‫بین‬ ‫هت‬ Weighted Graph( ‫ها‬ ‫لینک‬ ‫درآن‬ ‫که‬ ‫های‬ ‫گراف‬ :edges‫نام‬ ‫به‬ ‫باشد‬ ‫وزن‬ ‫دارای‬ )weighted Graph‫میتواند‬ ‫میگردد.وزن‬ ‫یاد‬ .‫باشد‬ ‫وغیره‬ ‫قیمت‬ ، ‫فاصله‬:‫مثال‬ )‫نیست‬ ‫منطقی‬ ‫والیات‬ ‫موقعیت‬ ‫شود‬ ‫واضح‬ ‫دار‬ ‫وزن‬ ‫های‬ ‫گراف‬ ‫تا‬ ‫است‬ ‫مثال‬ ‫یک‬ ‫فوق‬ ‫(شکل‬
  • 20.
    Page 20 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫معرفی‬‫درمیموری‬ ‫گراف‬ ‫ونمایش‬ .‫پردازیم‬ ‫می‬ ‫ها‬ ‫پروگرام‬ ‫در‬ ‫فوق‬ ‫اجزای‬ ‫از‬ ‫یک‬ ‫هر‬ ‫معرفی‬ ‫چگونگی‬ ‫به‬ ‫حال‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫است‬ ‫بهتر‬ ‫گراف‬ ‫عناصر‬ ‫کردیم‬ ‫ذکر‬ ‫قبال‬ ‫همانطوریکه‬object‫دا‬ ‫نمایش‬ ‫ها‬‫دارای‬ ‫عناصر‬ ‫تمام‬ ‫دیگر‬ ‫طرف‬ ‫واز‬ .‫شود‬ ‫ده‬ ‫بناء‬ ‫باشند‬ ‫می‬ ‫مشابه‬ ‫مشخصات‬ ‫و‬ ‫خواص‬object‫شکل‬ ‫به‬ ‫ها‬array‫داشته‬ ‫را‬ ‫کالس‬ ‫یک‬ ‫باید‬ ‫اوال‬ ‫که‬ ‫است‬ ‫واضح‬ .‫میگردد‬ ‫معرفی‬ ‫آن‬ ‫از‬ ‫بتوانیم‬ ‫تا‬ ‫باشیم‬object.‫میکنیم‬ ‫دیزاین‬ ‫ذیل‬ ‫طور‬ ‫عناصر‬ ‫برای‬ ‫را‬ ‫کالسی‬ ‫بناء‬ .‫کنیم‬ ‫معرفی‬ ‫هارا‬ ( ‫ها‬ ‫راه‬ ‫تمثیل‬ ‫برای‬edges‫از‬ ).‫میگردد‬ ‫استفاده‬ ‫ذیل‬ ‫روش‬ ‫دو‬ Adjacency Matrix‫(یا‬array)‫دوبعدی‬ ‫های‬ Adjacency list Adjacency matrix‫درحقیقت‬two dimensional Array‫راه‬ ‫عنصر‬ ‫دو‬ ‫بین‬ ‫آیا‬ ‫که‬ ‫کند‬ ‫می‬ ‫مشخص‬ ‫آن‬ ‫جزء‬ ‫هر‬ ‫که‬ ‫باشد‬ ‫می‬ ‫دارای‬ ‫گراف‬ ‫ویاخیر.ودرصورتیکه‬ ‫دارد‬ ‫وجود‬N‫کامل‬ ‫تمثیل‬ ‫برای‬ ‫ما‬ ‫درینصورت‬ ‫باشد‬ ‫عنصر‬edge‫باید‬ ‫میموری‬ ‫در‬ ‫ها‬NxN dimensional array‫نمایی‬ ‫معرفی‬ ‫را‬.‫م‬‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫گرفته‬ ‫مدنظر‬ ‫میباشد‬ ‫عنصر‬ ‫چهار‬ ‫دارای‬ ‫راکه‬ ‫ذیل‬ ‫گراف‬ ‫مثال‬ ‫بطور‬ adjacency matrix.‫میدهیم‬ ‫نشان‬ ‫را‬ ‫عناصر‬ ‫ارتباط‬ ‫ذیل‬ ‫طوری‬ A B C D A 0 1 1 1 B 1 0 0 1 C 1 0 0 0 D 1 1 0 0
  • 21.
    Page 21 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ .‫دهیم‬ ‫شرح‬ ‫گراف‬ ‫در‬ ‫را‬ ‫افغانستان‬ ‫مختلف‬ ‫شهر‬ ‫چند‬ ‫میخواهیم‬ :‫مثال‬ ‫بطور‬ ‫بناء‬‫دارای‬ ‫که‬ ‫باشد‬ ‫می‬ ‫ها‬ ‫شهر‬ ‫گراف‬ ‫این‬ ‫در‬ ‫عناصر‬ ‫و‬ ‫نگهدارد‬ ‫درخود‬ ‫را‬ ‫عناصر‬ ‫خصوصیات‬ ‫که‬ ‫میسازیم‬ ‫را‬ ‫کالس‬ ‫اوال‬ .‫میکنیم‬ ‫اکتفا‬ ) ‫شده‬ ‫دیده‬ ‫شهر‬ ‫(آیا‬ ‫و‬ )‫شهر‬ ‫(نام‬ ‫آن‬ ‫مشخصه‬ ‫دو‬ ‫به‬ ‫تنها‬ ‫ما‬ ‫باشدولی‬ ‫می‬ ‫زیاد‬ ‫خصوصیات‬ ‫نام‬ ‫به‬ ‫را‬ ‫دیگری‬ ‫کالس‬ ‫وحال‬graph‫کالس‬ ‫از‬ ‫که‬ ‫میسازیم‬Vertices‫و‬ ‫نموده‬ ‫استفاده‬edges.‫نماید‬ ‫تمثیل‬ ‫هارا‬ .‫کنیم‬ ‫اضافه‬ ‫درآن‬ ‫راهارا‬ ‫و‬ ‫شهرها‬ ‫که‬ ‫میسازیم‬ ‫را‬ ‫کالس‬ ‫مرحله‬ ‫درین‬
  • 22.
    Page 22 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ ‫گراف‬ ‫در‬ ‫جستجو‬Search in Graph ‫شامل‬ ‫میشود‬ ‫عناصر‬ ‫که‬ ‫است‬ ‫عناصر‬ ‫دربین‬ ‫جستجو‬ ‫شود‬ ‫ارایه‬ ‫گراف‬ ‫توسط‬ ‫میتواند‬ ‫که‬ ‫اساسی‬ ‫بسیار‬ ‫عملیات‬ ‫از‬ ‫یکی‬Object‫های‬ ‫ها‬ ‫شبکه‬ ‫جستجوی‬ ‫یعنی‬ ‫ها‬ ‫روتر‬ ‫جستجوی‬ ‫که‬ ‫کند‬ ‫تمثیل‬ ‫درشبکه‬ ‫را‬ ‫روتر‬ ‫میتواند‬ ‫عناصر‬ ‫مثال‬ ‫باشد‬ ‫مختلف‬‫روت‬ ‫کدام‬ ‫واینکه‬‫باهم‬ ‫ها‬ ‫ر‬ ‫دارند‬ )‫(همجوار‬ ‫مستقیم‬ ‫ارتباط‬.‫کند‬ ‫تمثیل‬ ‫نقشه‬ ‫یک‬ ‫در‬ ‫را‬ ‫شهرها‬ ‫میتواند‬ ‫عناصر‬ ‫ترتیب‬ ‫همین‬ ‫به‬ .‫از‬ ‫استفاده‬ ‫با‬ ‫که‬searching ‫دریابیم‬ ‫میتوانیم‬‫ویاخیر؟‬ ‫است‬ ‫موجود‬ ‫راه‬ ‫شهر‬ ‫دو‬ ‫بین‬ ‫آیا‬ ‫که‬ .‫میکند‬ ‫استفاده‬ ‫ستراتیژی‬ ‫دو‬ ‫از‬ ‫گراف‬ ‫کار‬ ‫این‬ ‫وبرای‬ ‫شود‬ ‫دیده‬ ‫مکمل‬ ‫بطور‬ ‫گراف‬ ‫باید‬ ‫عنصر‬ ‫یک‬ ‫جستجوی‬ ‫برای‬‫عبارتن‬ ‫که‬:‫از‬ ‫د‬ DFS (Depth-First Search) BFS (Breadth-First Search) ‫می‬ ‫بررسی‬ ‫را‬ ‫گراف‬ ‫یک‬ ‫موجود‬ ‫عناصر‬ ‫تمام‬ ‫ذیل‬ ‫روش‬ ‫هردو‬‫ولی‬ ‫کند‬DFS‫از‬ ‫عملیه‬ ‫اجرای‬ ‫برای‬Stack‫درحالیکه‬ ‫میکند‬ ‫استفاده‬ BFS‫از‬Queue.‫میکند‬ ‫استفاده‬
  • 23.
    Page 23 of23 "‫"امان‬ ‫هللا‬ ‫محب‬ :‫وترتیب‬ ‫تهیه‬ DFS (Depth-First Search) ‫دراین‬( ‫آغاز‬ ‫نقطهء‬ ‫یک‬ ‫اوال‬ ‫که‬ ‫میگیرد‬ ‫صورت‬ ‫طوری‬ ، ‫گراف‬ ‫در‬ ‫جستجو‬ ‫روش‬node)‫شروع‬ ‫جستجو‬ ‫ازآن‬ ‫باید‬ ‫که‬‫مثال‬A‫را‬ ‫و‬ ‫نموده‬ ‫انتخاب‬‫اولین‬ ‫به‬ ‫سپس‬node‫همجوار‬A‫رفته‬‫مثال‬B‫آنرا‬ ‫و‬visit.‫میکنیم‬ ‫نشانی‬ ‫و‬ ‫نموده‬‫وسپس‬‫همسایه‬ ‫اولین‬ ‫به‬B‫ر‬‫فته‬ ‫وآنرا‬visit‫وبدین‬ .‫میکنیم‬ ‫ونشانی‬‫مید‬ ‫ادامه‬ ‫ترتیب‬.‫هیم‬‫و‬‫درهرمرحله‬node‫در‬ ‫هارا‬Stuck( ‫داخل‬push)‫تا‬ .‫میکنیم‬‫به‬ ‫زمانیکه‬ ‫آخرین‬node‫رسیدیم‬node‫هارا‬pop‫تا‬ .‫بیاییم‬ ‫عقب‬ ‫به‬ ‫و‬ ‫نموده‬‫تمام‬Node.‫شود‬ ‫جستجو‬ ‫همجوار‬ ‫های‬