مجله علمی تفریحی بیبیس
0

دانلود کتاب تفکر الگوریتمی -ویرایش دوم – الگوریتم هایی را بیاموزید تا مهارت های کدنویسی خود را ارتقا دهید

بازدید 1326
  • عنوان کتاب: Algorithmic Thinking – 2 Ed, Learn Algorithms to Level up Your Coding Skills
  • نویسنده: Daniel Zingaro
  • حوزه: تفکر الگوریتمی
  • سال انتشار: 2024
  • تعداد صفحه: 622
  • زبان اصلی: انگلیسی
  • نوع فایل: pdf
  • حجم فایل: 8.91 مگابایت

من فرض می کنم که شما یاد گرفته اید که از یک زبان برنامه نویسی مانند C، C++، Java یا Python استفاده کنید. . . و من امیدوارم که شما گیر کرده باشید. توضیح اینکه چرا حل مشکلات از طریق برنامه نویسی اینقدر لذت بخش و سرگرم کننده است برای غیربرنامه نویسان سخت است. من همچنین امیدوارم که شما آماده باشید تا مهارت برنامه نویسی خود را به سطح بعدی ببرید. من این افتخار را دارم که به شما در انجام این کار کمک کنم. می‌توانم با آموزش چند تکنیک جدید فانتزی به شما شروع کنم، به شما بگویم که چرا آنها مفید هستند، و آنها را با سایر تکنیک‌های فانتزی مقایسه کنم، اما این کار را نمی‌کنم. آن ماده بی اثر می ماند، برای اندکی نگه می داشت و منتظر فرصتی بود تا به عمل بیاید – اگر در واقع فرصتی پیش بیاید. درعوض، کاری که من در سراسر این کتاب انجام می‌دهم، مشکلات مطرح است: مشکلات سخت. اینها مشکلاتی هستند که امیدوارم نتوانید آنها را حل کنید، مشکلاتی که امیدوارم رویکردهای فعلی شما را مختل کند. شما یک برنامه نویس هستید می خواهید مشکلات را حل کنید. اکنون زمان یادگیری آن تکنیک های فانتزی است. این کتاب همه چیز در مورد طرح مشکلات سخت و سپس حل آنها با ایجاد پل بین آنچه می دانید و آنچه نیاز دارید است. مشکلات کتاب درسی سنتی را در اینجا نخواهید دید. شما راه بهینه ای برای ضرب زنجیره ای از ماتریس ها یا محاسبه اعداد فیبوناچی پیدا نخواهید کرد. قول می دهم: معمای برج هانوی را حل نخواهید کرد. کتاب‌های درسی بسیار خوبی وجود دارد که این کارها را انجام می‌دهند، اما من گمان می‌کنم که بسیاری از مردم با این نوع پازل‌ها انگیزه ندارند. رویکرد من استفاده از مشکلات جدیدی است که قبلاً ندیده اید. هر ساله هزاران نفر در مسابقات برنامه نویسی شرکت می کنند و این مسابقات به مشکلات جدیدی نیاز دارد تا اندازه گیری شود که شرکت کنندگان چه چیزی می توانند خودشان به دست بیاورند نه اینکه چه کسی می تواند سریعتر در گوگل جستجو کند. این مشکلات جذاب هستند، و در عین حال با اضافه کردن پیچ و تاب و زمینه برای به چالش کشیدن افراد برای یافتن راه حل های جدید، از کلاسیک ها استفاده می کنند. یک جریان به ظاهر بی پایان از دانش برنامه نویسی و محاسباتی وجود دارد که توسط این مشکلات احاطه شده است. با انتخاب درست مسائل می توانیم هر چقدر که دوست داریم یاد بگیریم. بیایید با برخی از اصول اولیه شروع کنیم. ساختار داده راهی برای سازماندهی داده ها به گونه ای است که عملیات مطلوب سریع باشد. الگوریتم مجموعه ای از مراحل است که یک مسئله را حل می کند. گاهی اوقات می‌توانیم الگوریتم‌های سریعی را بدون استفاده از ساختارهای داده پیچیده بسازیم. در موارد دیگر، ساختار داده مناسب می تواند سرعت قابل توجهی را افزایش دهد. هدف من این نیست که شما را به یک برنامه نویس رقابتی تبدیل کنم، اگرچه من آن را به عنوان یک مزیت جانبی خوشحال می کنم. در عوض، هدف من این است که ساختارهای داده و الگوریتم‌ها را با استفاده از مشکلات دنیای برنامه‌نویسی رقابتی به شما آموزش دهم – و در حین انجام این کار لذت ببرید. می توانید با من در daniel.zingaro@gmail.com تماس بگیرید. اگر یاد گرفتید به من ایمیل بزنید. 

I’m assuming that you’ve learned to use a programming language such as C, C++, Java, or Python . . . and I’m hoping that you’re hooked. It’s hard to explain to nonprogrammers why solving problems through programming is so rewarding and fun. I’m also hoping that you’re ready to take your programming skill to the next level. I have the privilege of helping you do that. I could start by teaching you some fancy new techniques, telling you why they’re useful, and comparing them to other fancy techniques, but I won’t. That material would lay inert, holding on for a little, waiting for the opportunity to spring into action—if in fact some opportunity ever did present itself. Instead, what I do throughout this book is pose problems: hard problems. These are problems that I hope you cannot solve, problems that I hope stymie your current approaches. You’re a programmer. You want to solve problems. Now it’s time for learning those fancy techniques. This book is all about posing hard problems and then solving them by bridging between what you know and what you need. You won’t see traditional textbook problems here. You won’t find an optimal way to multiply a chain of matrices or compute Fibonacci numbers. I promise: you won’t solve the Towers of Hanoi puzzle. There are many excellent textbooks out there that do these things, but I suspect that many people are not motivated by those kinds of puzzles. My approach is to use new problems that you haven’t seen before. Each year, thousands of people participate in programming competitions, and these competitions require new problems to measure what participants can come up with on their own rather than who can google the fastest. These problems are fascinating, riffing on the classics while adding twists and context to challenge people to find new solutions. There is a seemingly endless stream of programming and computing knowledge encompassed by these problems. We can learn as much as we like by choosing the right problems. Let’s start with some basics. A data structure is a way to organize data so that desirable operations are fast. An algorithm is a sequence of steps that solves a problem. Sometimes we can make fast algorithms without using sophisticated data structures; other times, the right data structure can offer a significant speed boost. My goal is not to turn you into a competitive programmer, though I’d take that as a happy side benefit. Rather, my goal is to teach you data structures and algorithms using problems from the competitive programming world—and to have fun while doing so. You can reach me at daniel.zingaro@gmail.com. Email me if you have learned. Email me if you have laughed.

این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:

Download: Algorithmic Thinking – 2 Ed

نظرات کاربران

  •  چنانچه دیدگاه شما توهین آمیز باشد تایید نخواهد شد.
  •  چنانچه دیدگاه شما جنبه تبلیغاتی داشته باشد تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

بیشتر بخوانید