الگوریتم؛ روش گامبهگام برای حل مسئله
الگوریتم چیست و چه ویژگیهایی دارد؟
وقتی صبح از خواب بیدار میشوید، بدون اینکه فکر کنید، یک الگوریتم را اجرا میکنید: از رختخواب بلند شدن، مسواک زدن، صبحانه خوردن و آماده شدن برای مدرسه. به این ترتیب متوجه میشوید که الگوریتم فقط مخصوص کامپیوتر نیست؛ بلکه هر کاری که طبق یک روش مشخص انجام دهید، در واقع یک الگوریتم است. برای اینکه یک الگوریتم خوب باشد، باید سه ویژگی اساسی داشته باشد.
| ویژگی | توضیح | مثال روزمره |
|---|---|---|
| دقیق بودن | هر مرحله باید بدون ابهام و واضح باشد. | دستور «کمی نمک به غذا اضافه کن» دقیق نیست، اما «یک قاشق چایخوری نمک اضافه کن» دقیق است. |
| مرحلهای بودن | مراحل باید به ترتیب و پشت سر هم اجرا شوند. | برای پخت تخممرغ، اول روغن میریزیم، بعد تخممرغ را میشکنیم و بعد حرارت را کم میکنیم. |
| شرط پایان | الگوریتم باید مشخص کند که چه زمانی کار تمام میشود. | وقتی سفیده و زرده تخممرغ سفت شد، یعنی پخت تمام شده است. |
یک الگوریتم روزمره برای آماده شدن برای مدرسه
فرض کنید میخواهید صبح ها بدون دیر کردن به مدرسه برسید. برای این کار میتوانید یک الگوریتم ساده طراحی کنید. اول زمان بیدار شدن را مشخص کنید. مثلاً ساعت ۷ صبح. بعد کارهایی که باید انجام دهید را به ترتیب بنویسید: مسواک زدن، صبحانه خوردن، پوشیدن لباس مدرسه، چک کردن کیف و حرکت به سمت مدرسه. برای هر کار یک زمان تخمینی بگذارید. مثلاً مسواک ۵ دقیقه، صبحانه ۱۵ دقیقه و بقیه کارها ۱۰ دقیقه. شرط پایان این الگوریتم وقتی است که دم درب خانه بایستید و کیف خود را چک کرده باشید. اگر یکی از مراحل را جا بیندازید یا ترتیب آن را عوض کنید، ممکن است دیرتان شود یا چیزی را فراموش کنید. این دقیقاً همان کاری است که یک برنامهنویس برای طراحی یک نرمافزار انجام میدهد؛ فقط به جای کارهای روزمره، دستورالعملها را برای کامپیوتر مینویسد.
سؤالهای چالشی دربارهٔ الگوریتم
پرسش نخست: اگر در یک الگوریتم، یک مرحله را اشتباه بنویسیم، چه اتفاقی میافتد؟
پاسخ: الگوریتم یا به نتیجهٔ اشتباه میرسد یا اصلاً کار نمیکند. مثل دستور پخت کیک که اگر به جای آرد از آرد نخودچی استفاده کنید، کیک شما خوشمزه نمیشود. به همین دلیل میگویند الگوریتم باید دقیق باشد.
پرسش دوم: آیا همهٔ الگوریتمها برای کامپیوتر نوشته میشوند؟
پاسخ: خیر. هر کاری که طبق یک روش منظم انجام دهید، الگوریتم محسوب میشود. مثلاً روشی که برای تمیز کردن اتاق خود به کار میبرید، یک الگوریتم است. یا حتی روشی که برای حل کردن یک معادلهٔ ریاضی یاد گرفتهاید، یک الگوریتم است.
پرسش سوم: شرط پایان یعنی چه و چرا مهم است؟
پاسخ: شرط پایان به ما میگوید که کی باید الگوریتم را متوقف کنیم. اگر شرط پایان نداشته باشیم، الگوریتم تا ابد ادامه پیدا میکند! مثلاً اگر در دستور پخت غذا نگوییم «وقتی آب غذا به جوش آمد، حرارت را کم کن»، ممکن است غذا بسوزد یا آب آن کشیده شود. شرط پایان مثل یک خط پایان در مسابقهٔ دویدن است.
آنچه باید به خاطر بسپارید:
الگوریتم یک راهنمای گامبهگام برای حل مسئله است که سه ویژگی اصلی دارد: دقت در دستورالعملها، ترتیب در اجرای مراحل و شرط پایان برای تمام شدن کار. شما هر روز از الگوریتمهای مختلفی استفاده میکنید، از بستن بند کفش تا مطالعهٔ دروس. اگر یاد بگیرید که کارهای خود را به صورت الگوریتمی برنامهریزی کنید، هم در زمان صرفهجویی میکنید و هم کارها را بهتر و دقیقتر انجام میدهید. پس دفعهٔ بعد که میخواهید تکالیف خود را انجام دهید یا برای یک امتحان برنامهریزی کنید، یک الگوریتم بنویسید و مراحل آن را قدم به قدم پیش ببرید.