check home phone-call search send

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

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

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

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

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

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

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

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

واژه الگوریتم از کجا آماده است؟

الگوریتم نام های دیگری مثل الگوریتمی، خوارزمیک یا خوارزمی دارد. واژه الگوریتم از نام ریاضیدان و ستاره‌شناس و جغرافی‌دان نامی ایرانی، ابوجعفر محمد بن موسی خوارزمی (الخوارزمی)، گرفته شده است.
در قرن ۱۳ میلادی واژه الگوریسموس(algorismus) به معنای (سیستم شمارش عربی (دهدهی)) (یعنی اعداد ۱ تا ۹ به علاوه صفر، و نیز مفهوم اعشار) بود؛ که هنوز هم یکی از معانی واژه الگوریسم(algorism) است. معنای دیگر الگوریسم «حساب کردن با کمک اعداد عربی» است؛ یعنی فن انجام أعمال حسابی پایه، مانند جمع و ضرب، با قرار دادن اعداد در زیر هم و إعمال قواعدی خاص، که جایگزین به کارگیری اعداد رومی و استفاده از چرتکه شد. حتی روش انجام دستی تقسیم و جذر گرفتن (رادیکال) هم الگوریسم نامیده می‌شود. در قرن ۱۹ این کلمه در فرانسوی به algorithme تغییر شکل پیدا کرد، البته معنایش ثابت ماند. طولی نکشید که این کلمه به شکل algorithm وارد زبان انگلیسی شد؛ ولی فقط در اواخر قرن ۱۹ میلادی بود که معنای عام‌تر امروزی‌اش را یافت، و به «هر مجموعه قواعدی برای انجام یک رویه محاسباتی یا روال رایانه‌ای به کار رود» الگوریتم گفته شد.

تبدیل نام الخوارزمی به الگوریسم و سپس الگوریتم احتمالاً تحت تأثیر واژه یونانی arithmos (به معنای عدد) و arithmetic (به معنای محاسباتی) بوده است. برخی منابع هم کلمه لگاریتم را هم در تبدیل الگوریسم و الگوریتم بی تأثیر ندانسته‌اند.

الگوریتم

خصوصیات یک الگوریتم

تمام الگوریتم‌ها باید شرایط و معیارهای زیر را دارا باشند:

  • ورودی:
    یک الگوریتم باید هیچ یا چندین پارامتر را به عنوان ورودی بپذیرد؛
  • خروجی:
    الگوریتم بایستی حداقل یک کمیت به عنوان خروجی (نتیجه عملیات) تولید کند؛
  • قطعیت:
    دستورهای الگوریتم باید با زبانی دقیق، و بی‌ابهام بیان شوند. هر دستورالعمل نیز باید انجام‌پذیر باشد. دستورهایی نظیر «مقدار ۶ یا ۷ را به x اضافه کنید» یا «حاصل تقسیم پنج بر صفر را محاسبه کنید» مجاز نیستند؛ چرا که در مورد مثال اول، معلوم نیست که بالاخره چه عددی باید انتخاب شود، و در خصوص مثال دوم هم تقسیم بر صفر در ریاضیات تعریف نشده‌است.
  • محدودیت:
    الگوریتم باید دارای شروع و پایان مشخصی باشد، به نحوی که اگر دستورهای آن را دنبال کنیم، برای تمامی حالات، الگوریتم پس از طی مراحل شمارا و متناهی خاتمه یابد. به علاوه، زمان لازم برای خاتمه الگوریتم هم باید به گونه‌ای معقول، کوتاه باشد.

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

  • مفهوم الگوریتم را معمولاً با تشبیه به دستور آشپزی توضیح می‌دهند. مثلاً اگر بخواهیم آبگوشت درست کنیم (عمل مورد نظر) با فرض اینکه مواد خام را داریم (حالت اولیه) مراحل مشخصی را باید طبق دستور آشپزی طی کنیم (دستورالعمل‌ها) تا به آبگوشت آماده (حالت پایانی) برسیم. البته الگوریتم‌ها معمولاً پیچیده‌تر از این هستند.
  • الگوریتم گاه دارای مراحلی است که تکرار می‌شود (در مثال آبگوشت مثلاً چند بار باید نمک زد یا آب اضافه کرد) و یا در مرحله‌ای نیازمند تصمیم‌گیری است (اگر نمک کافی است دیگر نمک نمی‌زنیم، اگر کافی نیست نمک می‌زنیم).
  • اگر الگوریتم برای عمل مورد نظر مناسب نباشد و یا غلط باشد به نتیجه مورد نظر نمی‌رسیم. مثلاً اگر الگوریتم آبگوشت را با مواد اولیه کباب انجام دهیم واضح است که به آبگوشت نمی‌رسیم.
  • باید بدانیم برای هر الگوریتم تعریف متغیرها و طراحی مرحله به مرحله بسیار مهم است. زیرا الگوریتم باید بداند بر روی چه متغیرهایی، چه اعمالی را انجام دهد و نتیجه را در غالب چه متغیرها یا پارامترهایی نشان دهد.

نکته جالب: در بعضی کشورها، مثل آمریکا اگر تعبیه فیزیکی الگوریتمی ممکن باشد (برای مثال، یک الگوریتم ضرب که می‌شود آن را در واحد محاسبهٔ یک ریز پردازنده تعبیه کرد) می‌شود آن الگوریتم را به ثبت رساند.

نکاتی که باید هنگام نوشتن الگوریتم در نظر داشته باشید:

  • مراحل را به ترتیب و پشت سرهم بنویسید (اجرا از بالا به پایین)
  • قدم‌های ضروری را در نظر گرفته و آن‌ها را در طرح خود به کار ببرید.
  • از بیان جزئیات بیهوده پرهیز کرده و سعی کنید تا حد امکان مراحل را ساده و در عین حال کامل بنویسید.
  • از زبانی ساده برای نوشتن الگوریتم استفاده کنید، طوری که افراد مختلف برداشت متفاوتی از آن نداشته باشند.
  • هر الگوریتم تنها یک نقطه شروع دارد که اولین دستوالعمل از آن شروع میشود، ولی میتواند چندین پایان داشته باشد.
  • الگوریتم باید جامع باشد، طوری که در حالت‌های خاص نیز نتیجه‌ی مناسب را به شما بدهد.
  • اولویت عملگرهای ریاضی را هنگام نوشتن طرحتان در نظر داشته باشید (به عنوان مثال محاسبه حاصل ضرب نسبت به محاسبه حاصل جمع در اولویت است)

مثال برای الگوریتممثال: به عنوان مثال فرض کنید میخواهیم مراحل رفتن به دانشگاه را به صورت مرحله به مرحله بنویسیم !

  • شروع
  • بیدار شدن از خواب
  • شستن دست و صورت
  • خوردن صبحانه
  • پوشیدن لباس مناسب
  • برداشتن وسایل مورد نیاز (کتاب و …)
  • خروج از خانه
  • رفتن به دانشگاه
  • ورود به کلاس
  • پایان

همانگونه که مشاهده میکنید این دستورات باید به ترتیب انجام شوند، در غیر این‌صورت امکان بروز خطا وجود دارد.

Avatar
پشتیبان سورس ایران 2180 مطلب منتشر شده

در مجموعه سورس ایران سعی می کنیم علاوه بر آموزش برنامه نویسی، به مسائل مرتبط و مهارت های نرم بپردازیم تا بعدهای مختلف را پوشش دهیم.

دیدگاه کاربران

تعداد دیدگاه های کاربران : 19 دیدگاه
Avatar
OMiD
پاسخ دهید

سلام و درود
بسیار عالی و روان توضیح دادین.
واقعا ممنون 💙

Avatar
غزل
پاسخ دهید

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

Avatar
kian
پاسخ دهید

مقاله رو تکمیل کنید با ذکر چند مثال ساده،متوسط،سخت، ممنون از سایت خوبتون

Avatar
Zizi
پاسخ دهید

تشکر بابت مطلب مفیدتون🌹

Avatar
parsa
پاسخ دهید

vaghean bi nazire khyli ali

Avatar
مونا
پاسخ دهید

افرین چ ساده گفتی

Avatar
Mahsa
پاسخ دهید

ولی درهرصورت انصافاخیلی زیباو راحت توضیح دادید حتی از استادای دانشگاه خیلی بهترگفتید.
بازم خیلی ممنونم از زحماتتون

Avatar
Mahsa
پاسخ دهید

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

    Avatar
    پشتیبان سورس ایران در پاسخ Mahsa
    پاسخ دهید

    سلام
    شاید قبلا خاطره بد دارید از برنامه نویسی یا الگوریتم نویسی
    به خاطر اونه به احتمال زیاد
    بعضی وقت ها مدرس ها و اساتید دانشگاه اینقد بد توضیح میدن که اون موضوع به شدت حال بهم زن میشه

Avatar
نسیم
پاسخ دهید

سلام متشکرم از بیان و روان و آسان

Avatar
حسن زاده
پاسخ دهید

در تکمیل مقاله‌ خوبتون:
الگوریتم ها انواع مختلفی دارند . مثلا الگوریتمهای شرطی حلقه ها و…
اما به طور کلی الگوریتم های شرطی برای نوشتن دستورات if در برنامه نویسی استفاده میشن و الگوریتم حلقه ها هم همونطوری که از اسمشون مشخصه برای نوشتن حلقه های for و while به کار میرن.

Avatar
علی
پاسخ دهید

ممنونم از شما عالی بود

Avatar
Abbaszadeh
پاسخ دهید

کامپایلر چ تاثیری در اجرای الگوریتم دارد؟؟

Avatar
؟
پاسخ دهید

سلام تفاوت الگوریتم و سورس کد چیه؟!

    Avatar
    پشتیبان سورس ایران در پاسخ ؟
    پاسخ دهید

    الگوریتم که همینه که توضیحاتش رو نوشتیم
    سورس کد هم یعنی کدهای منبع
    وقتی نرم افزاری رو می نویسم این نرم افزار از کدهایی تشکل شده است که بهش سورس کد می گن

Avatar
Behrouz alborzi
پاسخ دهید

مقاله خوب و مفیدی بود خیلی ممنون از زحمات شما عزیزان


شما با موفقیت در خبرنامه ما عضو شدید