الگوریتم، تفکر منطقی و حل مسئله
دربارهی سهتا کلمهای که انگار همیشه ترسناک شنیده میشن: «الگوریتم»، «تفکر منطقی» و «حل مسئله». میخوام مثل همون دوستی باشم که کنارت نشسته، با یه دفتر شطرنجبازی جلوت، داره با خیال راحت توضیح میده. نترس، قرار نیست فرمولبازی کنیم؛ فقط میخوام ببینیم چطور میشه ذهنمون رو مثل یه کامپیوتر کوچولو، قدمبهقدم جلو ببریم.
۱) الگوریتم یعنی چی؟
تعریف ساده: «رسپی غذاست، نه بیشتر!»
وقتی میخوای قهوه ترک درست کنی، میگی:
۱) یه قاشق چایخوری پودر قهوه بریز
۲) روی شعله کم بذار
۳) هم بزن تا کف بیاد
۴) بردار قبل از اینکه سر بره
همین چهارتا مرحله یه الگوریتمه. کامپیوتر هم دقیقاً همینطور دوست داره: مرحلهبهمرحله، واضح، بینقص.
۲) تفکر منطقی = بازی «اگر اینطوری بود، چی میشد؟»
یه مثال روزمره:
فرض کن سوپرمارکت ۹ شب تعطیل میشه. الان ساعت ۸:۵۰ه و تو تازه داری از خونه میزنی بیرون.
سؤال منطقی: «اگر ۱۰ دقیقه زمان ببره تا برسم، آیا میتونم قبل از تعطیلی برسم؟»
جواب: نه، چون ۸:۵۰ + ۱۰ دقیقه = ۹:۰۰ دقیقهست، درِ مغازه هم دقیقاً همون لحظه بسته میشه.
همینه که میگن تفکر منطقی؛ میپرسی «اگر A درست باشه، B هم درسته؟» و بعد میری سراغ بررسی شرط A.
۳) حل مسئله = پازل ۱۰۰۰ تکه رو چطور میچینیم؟
کسی که پازل میچینه هیچوقت از گوشهی میز شروع نمیکنه!
اول قاب رو درست میکنه (مرزها)، بعد رنگها رو تفکیک میکنه (دستهبندی)، بعد میره سراغ بخشهای کوچیک (زیرمسئله).
حل مسئله در برنامهنویسی هم همینه:
۱) مسئله رو با زبان خودت بنویس
مثلاً: «برنامهای میخوام که بگیره یه عدد از کاربر، بگه زوجه یا فرد.»
۲) ورودی و خروجی رو مشخص کن
ورودی: یه عدد صحیح | خروجی: چاپ “زوج” یا “فرد”
۳) قدمبهقدم بشکن
۱) بخون عدد رو
۲) اگر باقیماندهی تقسیم بر ۲ برابر صفر بود → زوج
۳) وگرنه → فرد
۴) Psuedocode (شبهکد) بزن
read number
if number % 2 == 0
print "زوج"
else
print "فرد"
۵) حالا برو تبدیلش کن به زبان محبوبت (Python، JS، C++، هرچی)
چهار تا تمرین ساده که ذهنتو «قدمبهقدم» عادت بده
۱) مسئلهی معکوس رشته
ورودی: «سلام» → خروجی: «مالس»
راهنما: از آخر شروع کن حرفبهحرف چاپ کن یا توی یه متغیر جدید بچسبون.
۲) بزرگترین مقسومعلیهی مشترک (B.M.M)
ورودی: ۱۲ و ۱۸ → خروجی: ۶
راهنما: از کوچیکترین عدد به سمت پایین بیا، اولین عددی که هر دو رو بخشپذیره همون B.M.Mه.
۳) فاکتوریل
ورودی: ۵ → خروجی: ۱۲۰
راهنما: ۵×۴×۳×۲×۱؛ هم میتونی حلقه بزنی هم بازگشتی.
۴) جمع اعداد زوج ۱ تا n
ورودی: ۱۰ → خروجی: ۲+۴+۶+۸+۱۰ = ۳۰
راهنما: حلقه بزن، اگر عدد % ۲ == ۰ بود به جمع اضافهاش کن.
دو تا اصل طلایی که همیشه بچسبون به دیوار اتاقت
۱) KISS: Keep It Simple, Stupid!
هرچی سادهتر، کمنقصتر.
۲) DRY: Don’t Repeat Yourself
اگر دیدی داری کد تکراری مینویسی، یه تابع بساز، یه حلقه بزن، یه کلاس درست کن؛ هرچی دوست داری فقط تکرار نکن.
چطور ذهنم رو تمرین بدم؟
- سایتهای معروف:
– LeetCode (سادهش رو بزن تگ Easy)
– HackerRank (دستهی Algorithms)
– Codeforces (برای وقتی حرفهایتر شدی) - کتاب ساده فارسی: «الگوریتمها و ساختار دادهها» – دکتر سمیعیپور؛ زبانش روانه.
- اپ موبایل: Grasshopper یا Encode (برنامهنویسی اندروید) هم تمرین منطقی دارن.
- روزانه ۱۵ دقیقه قدیمیترین بازی منطقی: سودoku! واقعاً ذهنتو عادت میده به «اگر اینجا ۵ بیاد، اون خونه دیگه نمیتونه ۵ باشه».
یه داستان کوتاه آخر
یه برنامهنویس تازهکار از استادش پرسید: «چرا دارم الگوریتم میخونم؟ میخوام فقط اپ اندروید بسازم!»
استاد یه خودکار و کاغذ برداشت، نقاشی یه خونه کشید، فقط پنجرهها رو نه. گفت: «الگوریتم، پنجرهست؛ بدونش خونهت سقف داره، دیوار داره، ولی نور نداره.»
پس بذار این پنجرهها رو یاد بگیری؛ بعد هر خونهای خواستی میسازی.
پست های مرتبط
27 آبان 1404
27 آبان 1404
27 آبان 1404
27 آبان 1404