الگوریتم و فلوچارت

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

  1. الگوریتم محدود است یعنی از یه جا شروع می شود و به یه جا ختم می شود.
  2. ترتیب در الگوریتم بسیار مهم است یعنی تمام مراحل باید گام به گام, به ترتیب و پشت سر هم اجرا بشوند تا ما بتونیم به جواب برسیم.
  3. هدف الگوریتم باید مشخص باشد یعنی اینکه از خودمون بپرسیم هدف از اجرای این الگوریتم چیست؟ قراره به چی برسیم؟
  4. تمام مراحل اجرای الگوریتم باید مشخص باشد(مبهم نباشد) شاید بپرسید چرا؟ چون اگر الگوریتم مبهم و غیرقابل درک باشد کامپیوتر نمی تواند آن را اجرا کند چون وقتی ما با کامپیوتر سر و کار داریم همه چیز را باید براش مشخص کنیم و توضیح بدهیم تا بفهمه و بعد بتونه اجرا کنه در غیر اینصورت کامپیوتر نمی تونه از خودش کاری انجام بده و الگوریتم ما اجرا نخواهد شد.
what is algorithm?
what is algorithm?

حالا بیاید با هم مثال بزنیم, فرض کنید شما می خواید به دوست تون پیام بفرستید. حالا الگوریتم پیام فرستادن به دوست تون چیه؟

  1. گوشی خودتو برمی دارید
  2. به یکی از پیامرسان ها می روید
  3. پیام مدنظر خودتونو می نویسید
  4. روی دکمه ارسال کلیک می کنید تا پیام ارسال بشه

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


نکته: واژه الگوریتم اولین بار توسط دانشمند بزرگ ایرانی محمدبن خوارزمی(پدر جبر) مطرح شد که اکنون این واژه در کل جهان استفاده میشه.

محمدبن موسی خوارزمی
محمدبن موسی خوارزمی


فلوچارت

بعد از الگوریتم می رسیم به یک مفهوم دیگر تحت عنوان flowchart یا روندنما ، همانطور که از نام فارسی این کلمه یعنی روندنما پیدا است flowchart نمایش بصری روند اجرای الگوریتم ما است یعنی ما با استفاده از یکسری نمادها(symbols) می آییم و نمایش بصری از روند اجرای الگوریتم مون را طراحی می کنیم. در فلوچارت هر نماد یه معنی خاصی دارد, برای مثال در فلوچارت بیضی نماد شروع و پایان است یا از لوزی برای شرط ها(conditions) استفاده می شود یا مثلا مستطیل برای دستورات(process) هست و متوازی الاضلاع برای ورودی و خروجی است.
تصویر زیر یه نمونه فلوچارت را به نمایش گذاشته است که با همان نمادهایی که گفتیم می بینیم که فلوچارتی رسم شده و تا زمانی که c کوچکتر مساوی 5 است ، ورودی کاربر همون در اینجا(a) را در خروجی نمایش می دهد و اگر c بزرگتر از 5 شد الگوریتم پایان می یابد(stop می شود).

flowchart example
flowchart example