کتاب C# Data Structures and Algorithms, 2nd Edition: Harness the power of C# to build a diverse range of efficient applications (ساختارهای داده و الگوریتمهای سی شارپ، ویرایش دوم: از قدرت سی شارپ برای ایجاد طیف متنوعی از برنامههای کاربردی کارآمد استفاده کنید) در 10 فصل مختلف به شما آموزش برنامهنویسی سیشارپ جهت ساختارهای داده و الگوریتمهای متنوع را میدهد.
در ادامه مقدمهای از کتاب C# Data Structures and Algorithms را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب C# Data Structures and Algorithms:
سلام، من مارسین هستم!
آشنایی با شما و دعوتتان به سفری هیجانانگیز در دنیای انواع ساختارهای داده و الگوریتمهای ارائه شده در این کتاب، بسیار خوشحالکننده است. همانطور که احتمالاً میدانید، توسعهی اپلیکیشن قطعاً کار هیجانانگیزی است، اما در عین حال چالشبرانگیز هم هست، به خصوص زمانی که نیاز به حل مسائل پیچیده داشته باشید. در چنین مواقعی، اغلب باید به عملکرد (performance) اهمیت دهید تا اطمینان حاصل کنید که راهحل شما روی دستگاههای با منابع محدود به طور روان کار کند.
چنین کاری میتواند واقعاً دشوار باشد و نیازمند دانش قابل توجهی نه تنها در مورد زبان برنامهنویسی، بلکه در مورد ساختارهای داده و الگوریتمها باشد. با این حال، آیا تا به حال عمیقاً در مورد آنها و تأثیرشان بر عملکرد برنامههای خود فکر کردهاید؟ اگر نه، وقت آن رسیده است که به این موضوع نگاهی بیندازید، و این کتاب نقطهی شروع عالیای است!
آیا میدانستید که حتی جایگزین کردن یک ساختار داده با ساختار دیگر میتواند باعث افزایش صدها برابری یا حتی بیشتر نتایج عملکردی شود؟ به نظر غیرممکن میرسد؟ شاید، اما حقیقت دارد! به عنوان مثال، میخواهم داستان کوتاهی دربارهی یکی از پروژههایی که مدتی پیش در آن مشارکت داشتم برایتان تعریف کنم. هدف، بهینهسازی الگوریتم برای یافتن اتصالات بین بلوکها در یک نمودار گرافیکی بود.
چنین اتصالاتی باید به محض اینکه هر بلوکی در نمودار حرکت کرد، به طور خودکار دوباره محاسبه، بهروزرسانی و بازطراحی شوند. بدیهی است که اتصالات نمیتوانند از بلوکها عبور کنند و روی خطوط دیگر همپوشانی نداشته باشند و تعداد تقاطعها و تغییرات جهت باید محدود باشد. بسته به اندازه و پیچیدگی نمودار، نتایج عملکردی به طور قابل توجهی متفاوت است.
بیشتر بخوانید: کتاب Data Structures and Algorithms with the C++ STL
با این حال، در حین انجام تستها، برای یک مورد آزمایشی مشابه، نتایجی در محدودهی ۱ میلیثانیه تا تقریباً ۸۰۰ میلیثانیه به دست آوردیم. شاید شگفتانگیزترین جنبه این بود که چنین پیشرفت عظیمی عمدتاً با… تغییر ساختار دادههای دو مجموعه به دست آمد.
آیا علاقهمند به دانستن تأثیر انتخاب ساختار دادهی مناسب بر عملکرد برنامهی خود هستید؟ آیا میخواهید بدانید که چگونه میتوانید با انتخاب الگوریتم همراه مناسب، کیفیت و عملکرد راهحل خود را افزایش دهید؟ آیا در مورد سناریوهای دنیای واقعی که میتوان در آنها از ساختارهای دادهی مختلف استفاده کرد، و همچنین الگوریتمهایی که میتوان برای حل برخی مشکلات رایج به کار برد، کنجکاو هستید؟ متأسفانه پاسخ به چنین سؤالاتی ساده نیست.
با این حال، در این کتاب اطلاعات زیادی در مورد ساختارهای داده و الگوریتمها پیدا خواهید کرد که در متن زبان برنامهنویسی C# ارائه شده است، با بسیاری از مثالها، قطعههای کد، تصاویر و توضیحات مفصل. چنین محتوایی میتواند به شما در پاسخ به سؤالات فوق در حین توسعهی راهحلهای عالی بعدی که میتواند توسط بسیاری از مردم در سراسر جهان مورد استفاده قرار گیرد، کمک کند!
آیا برای شروع ماجراجویی خود با ساختارهای داده و الگوریتمها آماده هستید؟ اگر چنین است، به کشتی این کتاب خوش آمدید!
این کتاب بسیاری از ساختارهای داده را پوشش میدهد، با شروع از موارد ساده، به طور خاص آرایهها و چند مورد از انواع آنها، به عنوان نمایندهی ساختارهای داده با دسترسی تصادفی. سپس لیستها به همراه نسخههای مرتبشده، پیوندی و حلقوی آنها معرفی میشوند. این کتاب همچنین ساختارهای دادهی با دسترسی محدود را بر اساس پشتهها و صفها، از جمله صف با اولویت و صف حلقوی، توضیح میدهد.
در ادامه، شما را با ساختار دادهی فرهنگ لغت (dictionary) آشنا میکنیم که به شما امکان میدهد کلیدها را به مقادیر نگاشت دهید و جستجوی سریع انجام دهید. همچنین از نسخهی مرتبشدهی فرهنگ لغت نیز پشتیبانی میشود. اگر میخواهید از عملیات مربوط به مجموعه با عملکرد بالا بهرهمند شوید، میتوانید از ساختار دادهی دیگری به نام مجموعهی هش (hash set) استفاده کنید.
یکی از قدرتمندترین ساختارها، درخت است که در انواع مختلفی از جمله درخت دودویی، درخت جستجوی دودویی، درخت خود-متعادلکننده، درخت پیشوندی (trie)، توده (heap) و گراف و همچنین الگوریتمهای همراه آنها، مجموعهی گستردهای از موضوعات را در صفحات بعدی برایتان به ارمغان میآورند! بیایید این ماجراجویی را آغاز کنیم و اولین قدم را برای تسلط بر ساختارهای داده و الگوریتمها برداریم، که امیدوارم تأثیر مثبتی روی پروژهها و حرفهی شما به عنوان یک توسعهدهندهی نرمافزار داشته باشد!
کتاب C# Data Structures and Algorithms برای چه کسانی است؟
این کتاب برای توسعهدهندگانی نوشته شده است که میخواهند در مورد ساختارهای داده و الگوریتمهایی که میتوان از آنها با زبان برنامهنویسی C# در انواع مختلف برنامهها، از جمله راهحلهای وب و موبایل، استفاده کرد، بیاموزند. موضوعات ارائه شده در اینجا برای برنامهنویسانی با سطوح مختلف تجربه مناسب است و حتی افراد مبتدی نیز مطالب جالبی پیدا خواهند کرد. با این حال، داشتن حداقل دانش اولیه از زبان برنامهنویسی C#، مانند برنامهنویسی شیءگرا، یک مزیت اضافی خواهد بود.
قابل ذکر است که کتاب C# Data Structures and Algorithms ممکن است برای آسانتر کردن درک موضوع، برخی سادهسازیها را دربرداشته باشد. علاوه بر این، برخی از ساختارهای داده تنها به طور خلاصه، بدون توضیحات یا نمونههای دقیق ذکر شدهاند.
هدف کتاب C# Data Structures and Algorithms علاقهمند کردن شما به موضوع ساختارهای داده و الگوریتمها است تا بتوانید دانش خود را با کتابهای دیگر، مقالات تحقیقاتی یا منابع آنلاین گسترش دهید.
برای درک آسان محتوای کتاب C# Data Structures and Algorithms، از تصاویر و نمونههای متعددی استفاده شده است. علاوه بر این، کد منبع پروژههای جانبی به فصلها پیوست شده و در مخزن گیتهاب (GitHub) در دسترس است. بنابراین، میتوانید به راحتی برنامههای نمونه را اجرا کنید و بدون نوشتن کد خودتان آنها را اشکالزدایی کنید.
شایان ذکر است که کد میتواند ساده شده باشد و ممکن است با بهترین شیوهها متفاوت باشد. نمونهها میتوانند دارای محدودیتهای قابل توجهی در امنیت یا حتی بدون هیچگونه بررسی امنیتی و عملکردی باشند. قبل از انتشار برنامهی خود با استفاده از محتوای ارائه شده در کتاب C# Data Structures and Algorithms، باید برنامه را به طور کامل آزمایش کنید تا مطمئن شوید در شرایط مختلف، مانند سناریوی عبور دادن دادههای نادرست، به درستی کار میکند.
کتاب C# Data Structures and Algorithms چه چیزی را پوشش میدهد؟
فصل ۱، انواع داده، شما را با موضوع انواع دادهی در دسترس در هنگام توسعهی برنامهها در زبان برنامهنویسی C# آشنا میکند، که شامل انواع مقداری و مرجعی میشود. شما در مورد انواع دادهی مقداری داخلی مانند اعداد صحیح یا اعداد اعشاری، و همچنین ثابتها، شمارشگرها، تاپلهای مقداری، انواع ساختار تعریفشده توسط کاربر و انواع دادهی مقداری قابل قبول null، یاد خواهید گرفت. در مورد انواع دادهی مرجعی، انواع آبجکت و رشته، کلاسها، رکوردها، رابطها و انواع delegate و پویا، و همچنین انواع مرجعی قابل قبول null را مشاهده خواهید کرد.
فصل ۲ کتاب C# Data Structures and Algorithms، مقدمهای بر الگوریتمها، تعریف الگوریتم و برخی نمونههای دنیای واقعی از زندگی روزمره را به شما ارائه میدهد. سپس، چند نمادگذاری برای الگوریتمها را یاد خواهید گرفت، از جمله زبان طبیعی، فلوچارت، شبهکد و یک زبان برنامهنویسی. انواع مختلف الگوریتمها نیز نشان داده شدهاند، از جمله بازگشتی، تقسیم و فتح، عقبگرد (backtracking)، حریصانه (greedy)، 启发انه (heuristic)، جستجوی فراگیر (brute force) و برنامهنویسی پویا. پیچیدگی محاسباتی، از جمله پیچیدگی زمانی، نیز ارائه و توضیح داده شده است.
فصل ۳ کتاب C# Data Structures and Algorithms، آرایهها و مرتبسازی، سناریوهای ذخیرهی داده را با استفاده از برخی نمایندگان ساختارهای داده با دسترسی تصادفی، یعنی آرایهها، پوشش میدهد.
ابتدا، سه نوع آرایه توضیح داده میشود: تکبعدی، چندبعدی، و دندانهدار. همچنین با هفت الگوریتم محبوب مرتبسازی آشنا خواهید شد، از جمله مرتبسازی انتخابی، مرتبسازی درج، مرتبسازی حبابی، ادغام، مرتبسازی شل، مرتبسازی سریع و مرتبسازی ت heap. تمام این الگوریتمها با تصاویر، کد پیادهسازی و توضیحات مفصل نشان داده شدهاند.
فصل ۴ کتاب C# Data Structures and Algorithms، انواع لیستها، به سایر نمایندگان ساختارهای داده با دسترسی تصادفی میپردازد، یعنی چند نوع لیست. لیستها شبیه آرایهها هستند، اما در صورت نیاز امکان افزایش پویای اندازهی مجموعه را فراهم میکنند. چند نوع لیست، از جمله لیست پیوندی ساده، لیست پیوندی دوطرفه، لیست پیوندی دایرهای ساده و لیست پیوندی دایرهای دوطرفه
فصل ۵ کتاب C# Data Structures and Algorithms، پشتهها و صفها، نحوهی استفاده از دو نوع ساختار داده با دسترسی محدود، به نام پشته و صف را توضیح میدهد، که شامل صفهای با اولویت و صفهای حلقوی میشود.
این فصل نشان میدهد که چگونه عملیات وارد کردن (push) و خارج کردن (pop) را روی یک پشته انجام دهیم، و همچنین عملیات قرار دادن در صف (enqueue) و خارج کردن از صف (dequeue) را در مورد یک صف توصیف میکند. برای کمک به درک این موضوعات، چند مثال ارائه شده است، از جمله بازی برج هانوی و برنامهای که یک مرکز تماس با چندین مشاور و تماسگیرنده را شبیهسازی میکند.
فصل ۶ کتاب C# Data Structures and Algorithms، فرهنگ لغتها و مجموعهها، بر ساختارهای دادهای متمرکز است که امکان نگاشت کلیدها به مقادیر، جستجوی سریع و انجام عملیات مختلف روی مجموعهها را فراهم میکند.
این فصل از کتاب C# Data Structures and Algorithms، شما را با انواع غیرعمومی و عمومی جدول درهمسازی (hash table)، فرهنگ لغت مرتبشده، و راهحل با عملکرد بالا برای عملیات مجموعه که به شما امکان گرفتن اجتماع، اشتراک، تفاضل و اختلاف متقارن را میدهد، آشنا میکند. مفهوم «مجموعهی مرتبشده» نیز نشان داده شده است.
فصل ۷، انواع درختها، چند موضوع مرتبط با درخت را شرح میدهد. ابتدا یک درخت پایهای را به همراه پیادهسازی آن در C# و نمونههایی که عملکرد آن را نشان میدهند، ارائه میکند.
این فصل از کتاب C# Data Structures and Algorithms، همچنین شما را با درختهای دودویی، درختهای جستجوی دودویی و درختهای خود-متعادلکننده، به طور خاص درختهای AVL و درختهای قرمز-سیاه، آشنا میکند. سپس، تزیهای (trie) را خواهید دید که رویکردی عالی برای انجام عملیات مرتبط با رشته است. باقیماندهی فصل به مقدمهای کوتاه در مورد موضوع تودههای دودویی (heap) به عنوان دیگر ساختارهای مبتنی بر درخت اختصاص داده شده است.
فصل ۸، کاوش در گرافها، حاوی اطلاعات زیادی در مورد گرافها است، با توضیحی در مورد مفاهیم اساسی آنها، از جمله گرهها و چند نوع یال شروع میشود. پیادهسازی گراف مبتنی بر C# نیز پوشش داده شده است.
این فصل از کتاب C# Data Structures and Algorithms، شما را با دو روش پیمایش گراف، یعنی جستجوی عمق-اول (depth-first) و جستجوی عرض-اول (breadth-first) آشنا میکند. سپس موضوع درختهای پوشای کموزن (minimum spanning tree) را با استفاده از الگوریتمهای کروسکال و پریم، مسئلهی رنگآمیزی گرهها، و یافتن کوتاهترین مسیر در یک گراف با استفاده از الگوریتم دیکسترا ارائه میدهد.
فصل ۹ کتاب C# Data Structures and Algorithms، مشاهده در عمل، چند نمونه از انواع مختلف الگوریتمها را ارائه میدهد. شما یک روش بازگشتی برای محاسبهی یک عدد از سری فیبوناچی، با بهینهسازی برنامهریزی پویا، خواهید دید. سپس، رویکرد حریصانه (greedy) برای مسئلهی کمترین تعداد سکه را یاد خواهید گرفت، روشی از نوع تقسیم و فتح برای یافتن نزدیکترین جفت نقاط، روشی بازگشتی برای تولید فراکتالها، روش بازگشتی و عقبگرد (backtracking) برای حل کردن معماهای موش در ماز و سودوکو، و همچنین یک الگوریتم ژنتیکی و حدس زدن رمز عبور با رویکرد جستجوی فراگیر (brute-force) را مشاهده خواهید کرد.
فصل ۱۰ کتاب C# Data Structures and Algorithms، نتیجهگیری، جمعبندی کل دانشی است که از فصلهای قبل به دست آمده است. این فصل طبقهبندی مختصری از ساختارهای داده را نشان میدهد و آنها را به دو گروه خطی و غیرخطی تقسیم میکند.
در نهایت، این فصل از کتاب C# Data Structures and Algorithms، در مورد تنوع کاربردهای ساختارهای دادهی مختلف صحبت میکند. هر ساختار داده با توضیحی کوتاه ارائه میشود و برخی از آنها نیز با تصاویر نشان داده شدهاند تا به شما در به خاطر سپردن اطلاعات آموختهشده در حین خواندن نه فصل قبل کمک کند.
سرفصلهای کتاب C# Data Structures and Algorithms:
- C# Data Structures and Algorithms
- Contributors
- About the author
- About the reviewer
- Preface
- Chapter 1: Data Types
- Chapter 2: Introduction to Algorithms
- Chapter 3: Arrays and Sorting
- Chapter 4: Variants of Lists
- Chapter 5: Stacks and Queues
- Chapter 6: Dictionaries and Sets
- Chapter 7: Variants of Trees
- Chapter 8: Exploring Graphs
- Chapter 9: See in Action
- Chapter 10: Conclusion
- Index
- Other Books You May Enjoy
جهت دانلود کتاب C# Data Structures and Algorithms میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.