دوشنبه, 28 مرداد 1398 ساعت 13:09

الگوریتم و الگوریتم نویسی چیه؟

خلاصه مطلب: وقتی وارد دنیای کامپیوتر و برنامه نویسی میشین، به مبحث الگوریتم و الگوریتم نویسی برمیخورین. توی این مقاله میخوام به زبان ساده این مبحث رو توضیح بدم.

به قول "دونالد کنوت" یکی از دانشمندان علوم کامپیوتر: «علم کامپیوتر چیزی جز مطالعه ی الگوریتم ها نیست!»

براساس این حرف میشه نتیجه گرفت که الگوریتم ها اساس برنامه های کامپیوتری هستن. حالا الگوریتم چیه و چه کاربردی در برنامه نویسی داره؟ به صورت مختصر و مفید میشه گفت که الگوریتم به روش حل مسئله میگن. این روش برای اولین بار توسط دانشمند ایرانی یعنی خوارزمی مورد توجه قرار گرفت. وقتی میخوایم یه سوال حل کنیم یا یه قطعه کد بنویسیم، معمولا ایده ای نداریم که از کجا شروع کنیم، به خاطر همین به فکر فرو میریم تا برای اون مشکل یه راه حل پیدا کنیم. به این راه حل الگوریتم میگن که به ما نشون میده از کجا شروع کنیم، چه کارایی رو به ترتیب انجام بدیم و کجا تمومش کنیم.

مثلا فکر کنید یه بچه مدرسه ای منظم و اتو کشیده هستین که قراره بره مدرسه laughing اونوقت الگوریتم اغلب شماها واسه رفتن به مدرسه اینه:

  • شروع
  • ساعت 6 صبح از خواب بیدار بشم
  • برم دستشویی و دست و صورتم رو بشورم
  • صبحونه کوفت کنم و مسواکم رو بزنم
  • لباس هامو که مامان جون اتو کشیده رو بپوشم
  • وسایل و کیفم رو که از شب قبل آماده کردم رو بردارم
  • از خونه برم بیرون و با احتیاط برم مدرسه
  • وقتی رسیدم مدرسه، سر صف وایسم
  • بعد از مراسم و مناسک صبحگاهی؛ برم سرکلاس
  • وارد کلاس بشم، وسایلم رو آماده کنم، درس هارو پیشخوانی کنم و منتظر بمونم که آقا یا خانوم معلم بیاد
  • پایان

توی برنامه نویسی هم با یه چیزی مثل این رو به رو هستیم! شما باید منطق مسئله یا پروژه رو درک کنین، اونوقت یه راه حل براش پیدا کنین و مثل چیزی که بالا گفتم، مراحل اون رو به ترتیب اجرا کنین! توی مقاله ی «برنامه نویسی به زبان آدمیزاد چیه؟» گفته بودم که یه برنامه؛ مجموعه دستوراتی است که به کامپیوتر میدیم! اگه به الگوریتم مدرسه رفتن بچه های منظم و اتو کشیده دقت کنین، هر مرحله یه دستور العمله که انجام میشه. در برنامه نویسی هم دقیقا همینطوره و دستوراتی که  به کامپیوتر میدیم دقیقا همون مراحل الگوریتم ما هستن.

الگوریتم و الگوریتم نویسی

بگذارین با یه مثال واقعی تر توضیح بدم. فرض کنیم میخوایم یه برنامه بنویسیم که اعداد زوج و فرد رو تشخیص بده:

  • شروع
  • فلان عدد رو از کاربر بگیر
  • اگه باقی مانده ی تقسیم اون عدد بر 2 برابر صفر شد، اون عدد زوجه و در غیر این صورت، اون عدد فرده
  • پایان

همون طور که دیدین، برنامه ی تشخیص اعداد زوج و فرد طبق الگوریتم یا روش بالا کار میکنه. البته تو دنیای واقعی و بازار کار، با این الگوریتم ها زیاد سر و کار نداریم! این الگوریتم هارو بیشتر تو محیط های آکادمیک مثل کلاس و دانشگاه و یا مسابقات برنامه نویسی شاهدش هستیم! خیلی ها الان با خودشون میگن چرا باید این الگوریتم هایی که توی دنیای واقعی و بازار کار باهاش سر و کار نداریم رو یاد بگیریم؟ خب میریم سراغ الگوریتم های کاربردی تر!

خب حرف بدی هم نمیگن ولی این سوالات و مسائل دانشگاهی و مسابقات هم بدک نیستن! حل و پیدا کردن الگوریتم شون باعث میشه که فکر کنین و ذهن الگوریتمیک پیدا کنین (یعنی به راه حل مشکلات به صورت الگوریتم نگاه کنین و یه راه حل قدم به قدم برای مشکلات پیدا کنین) و هنگامی که الگوریتم اون مسئله رو پیدا کردین، اونوقت برنامش رو بنویسین. این کار باعث میشه که تسلط بیشتری در برنامه نویسی و کدنویسی پیدا کنین!

حالا فرض کنین قراره یه نرم افزار کاربردی بنویسین. با خودتون تو فکر میرین و میگین خب چطوری بنویسمش؟ از کجا شروع کنم و ... درست همینجاست که دارین یه الگوریتم برای انجام پروژه پیدا می کنین! اگه همین پروژه رو به یک شخص دیگه بدن، اون شخص احتمالا یه الگوریتم دیگه برای انجامش پیدا کنه. یه مسئله یا پروژه ممکنه چندتا الگوریتم داشته باشه ولی چیزی که این وسط مهمه اینه که بهترین و بهینه ترین الگوریتم رو پیدا کنین. مسلما هرچقدر الگوریتم هایی که برای برنامه نویسی پیدا می کنیم پیچیده تر باشن، تعداد خط کد های نوشته شده افزایش پیدا میکنه و سیستم بیشتر درگیر میشه تا اون دستورات پیچیده رو انجام بده. اینجاست که ذهن الگوریتمیک و مهارت داشتن توی این زمینه به کمک افراد میاد و توی دنیای واقعی هم به افرادی نیازه که بهترین و بهینه ترین الگوریتم هارو پیدا و در برنامه نویسی استفاده کنن wink

آخرین ویرایش در سه شنبه, 26 بهمن 1400 ساعت 16:19

1 نظر

  • پیوند نظر پویا دوشنبه, 08 آذر 1400 ساعت 16:01 ارسال شده توسط پویا

    توضیح ساده و خوبی بود

نظر دادن

پر کردن بخش های ستاره دار (*) ضروری است! لطفا هنگام ارسال نظرات خود، عفت کلام را نیز رعایت فرمایید 😀