الگوریتم ها در برنامه نویسی
زمان مطالعه 3 دقیقه
۲۷ مهر ۱۴۰۰
نویسنده پایدار سامانه
تعداد کامنت 1

معرفی الگوریتم های برنامه نویسی

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

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

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

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

با فرض اینکه می خواهید با دوست خود در فرودگاه ملاقات کرده و او را از فرودگاه به خانه او ببرید، روش های زیادی (الگوریتم) وجود دارد که می تواند برای انجام این کار استفاده شود.

با تاکسی:

  1. تاکسی را نگه دارید
  2. سوار تاکسی شوید
  3. آدرس را به راننده بدهید
  4. صبر کنید تا مقصد برسید

با اجاره ماشین:

  1. برای دریافت ماشین به جایی بروید
  2. یک ماشین اجاره کنید
  3. عازم فرودگاه شوید

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

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

تعریف الگوریتم در برنامه نویسی

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

مطالعه الگوریتم های کامپیوتری به دو عامل مهم مربوط می شود:

پیچیدگی زمانی (Time complexity)

یکی پیچیدگی زمانی که آن را Time complexity می گوییم، یعنی زمانی که کامپیوتر در اجرای الگوریتم صرف می کند.

پیچیدگی زمانی الگوریتم یا Time-complexity
پیچیدگی زمانی الگوریتم یا Time-complexity

پیچیدگی فضایی (Space complexity)

عامل دیگر پیچیدگی فضایی یا Space complexity است که میزان حافظه مورد استفاده برنامه برای پیاده سازی الگوریتم را در نظر می گیرد و با آن دید به الگوریتم نگاه می کند.

پیچیدگی فضایی الگوریتم یا Space complexity
پیچیدگی فضایی الگوریتم یا Space complexity

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

به عنوان مثال مرتب سازی یا Sorting یکی از انواع الگوریتم های کامپیوتر است که اغلب برای مرتب سازی عناصر موجود در یک لیست استفاده می شود، بنابراین الگوریتم های زیادی وجود دارد که کار مرتب سازی را انجام می دهند، و اینها معروف ترین آنها هستند:

  • Bin sort
  • Merge sort
  • Bubble sort
  • Shell sort
  • Quick sort

هر یک از این روشها برای یک مورد خاص مناسب است. برای مثال، اگر می خواهید یک میلیون عدد از نوع Integer یا عدد صحیح را مرتب کنید، الگوریتم Bin Sort برای آن مناسب است، اما اگر می خواهید یک میلیون عنوان کتاب را به ترتیب بچینید، شاید الگوریتم Quick Sort را بهتر است برای مرتب سازی انتخاب کنید، و باید با درک نقاط قوت و ضعف، مناسب ترین الگوریتم را برای کار مورد نظرتان انتخاب کنید. در شرایط مختلف یک الگوریتم دارید که می تواند از همه بهینه تر عمل کند.

عوامل کیفیت الگوریتم

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

مزایای یادگیری الگوریتم در برنامه نویسی

یادگیری الگوریتم ها برای یادگیری برنامه نویسی ضروری است و اینها برخی از مزایای یادگیری الگوریتم ها هستند:

کاهش زمان

همان وظیفه می تواند بیش از یک راه حل داشته باشد، اما تفاوت ممکن است در زمان اجرای هر یک از آنها باشد. زمان اجرای الگوریتم اهمیت زیادی می تواند داشته باشد. در بسیاری از موارد (تقریبا همیشه) با کاهش زمان لازم برای اجرای الگوریتم می توانیم همان کارایی را داشته باشیم.

مقیاس پذیری

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

فرض کنید ما می خواهیم یک کلاس درس برای 50 دانش آموز ایجاد کنیم، شما می گویید خوب، بیایید یک اتاق اجاره کنیم، چند تخته وایت برد و ماژیک بگیریم، و مشکل حل می شود. خوب، فرض کنید تعداد به 200 دانش آموز افزایش یابد. در این حالت، راه حل هنوز معتبر است، اما با افزایش منابع، شاید یک اتاق بزرگتر و یک پروژکتور یا تخته ی بزرگتر، مشکل حل می شود. فرض کنید تعداد به 1000 افزایش یافته است. در این حالت، راه حل با شکست مواجه می شود یا وقتی حجم مشکل افزایش می یابد به منابع زیادی نیاز دارد. در نتیجه، این راه حل مقیاس پذیر نیست و محدودیت هایی دارد.

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

حفظ حافظه

حافظه یکی از منابع حیاتی است که هنگام نوشتن هر الگوریتمی باید آن را در نظر داشته باشیم، بنابراین سعی می کنیم الگوریتمی را بنویسیم که کمترین میزان حافظه را اشغال کند.

به عنوان مثال: هنگام ذخیره داده های مربوط به افراد، می توانید حافظه مورد استفاده را تنها با ذخیره سن و نه تاریخ تولد کاهش دهید. و اگر به تاریخ تولد نیاز دارید، همیشه می توانید آن را با استفاده از سن و تاریخ فعلی خود محاسبه کنید.

حرف آخر در مورد الگوریتم ها

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

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

این مقاله درباره الگوریتم های برنامه نویسی بود که امیدوارم در ارائه آنها موفق بوده باشم. اگر سوال، نظر یا ایده ای دارید که می خواهید با ما در میان بگذارید، در بخش نظرات زیر را با ما آن را در میان بگذارید

اشتراک گذاری در شبکه های اجتماعی

یک نظر برای «معرفی الگوریتم های برنامه نویسی»

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *