اهداف و انتظارات آموزشی متمم در این درس
کد درس: ۶۱۹۱۳
از دوستان عزیز متممی انتظار میرود پس از مطالعه درس الگوریتم
- بتوانند مفهوم الگوریتم را توضیح دهند.
- اگر قبلاً با الگوریتم های Sort (مرتب سازی) آشنا نبودهاند، کمی در خلوت خود برای فکر کردن به آنها بر اساس سوال مطرح شده در درس وقت بگذارند.
- بتوانند چند مورد از الگوریتم های رایج را نام ببرند.
فشار ذهنی هنگام مطالعه
نیاز به مشارکت شما
کسب و کار
زندگی
همهی ما – حتی کسانی که تا کنون برنامه نویسی نکردهاند – میدانیم که کامپیوترها و سیستمهای کامپیوتری برای انجام هر کاری نیاز به برنامه (Program) دارند.
اما برنامه نویسی معمولاً با نوشتن برنامه آغاز نمیشود. قبل از نوشتن برنامه لازم است گام به گام، کارهایی را که باید برنامه انجام دهد تعریف کنیم.
به این تعریف گام به گام یک عملیات، طراحی الگوریتم (Algorithm) گفته میشود.
میتوان گفت کسانی که کدنویسی بلدند، الگوریتم را به یک برنامه قابل اجرا در کامپیوترها تبدیل میکنند.
کسانی که در محیطهای سازمانی فعالیت میکنند، با تصور فرایندهای عملیاتی کسب و کار میتوانند تا حد زیادی مفهوم الگوریتم را درک کنند.
فرایندی که یک نامه یا سند از رسیدن به دبیرخانه تا طبقه بندی و بررسی و ارجاع و اقدام و بایگانی طی میکند، در الگوی ذهنی برنامه نویسان یک الگوریتم محسوب میشود: گامهای متوالی با تعریف مشخص و تقدم و تأخر مشخص که از نقطهای شروع میشوند و در نقطهای به پایان میرسند و ممکن است دهها و صدها و هزاران بار تکرار شوند.
دانشآموزان هم احتمالاً با مرور مراحل ضرب دو عدد ده رقمی در یکدیگر، میتوانند به خوبی مفهوم الگوریتم را درک و تصور کنند.
مثال الگوریتم در زندگی روزمره
بسیاری از کارهای شخصی ما دارای الگوریتم مشخص و روتین از پیش تعیین شده هستند.
این نکتهای است که در درس نظم شخصی هم تحت عنوان روتینهای شخصی به آن اشاره کردیم.
[ درس مرتبط: روتین شخصی چیست و چرا اهمیت دارد؟]
گاهی اوقات هم، ما ناآگاهانه الگوریتم مشخصی را انتخاب و استفاده میکنیم.
اما وقتی مقیاس فعالیتها و مسئلهها بزرگتر میشود، بیش از هر زمان دیگری احساس میکنیم که نیازمند الگوریتم هستیم.
اگر پیش از این با الگوریتم و مفهوم آن آشنا نبودهاید، شاید بد نباشد در همینجا کمی به مرتب کردن دانشآموزان به ترتیب قد فکر کنید و اینکه اگر شما باشید چگونه این کار را انجام میدهید.
برای اینکه کمی پیچیدگیهای طراحی الگوریتم را – حتی در همین مثال ساده – تجربه کنید، میتوانید دو حالت زیر را به صورت جداگانه در نظر بگیرید:
- میخواهید این کار در سریعترین زمان ممکن انجام شود.
- میخواهید مجموع مسافتی که دانشآموزان برای این مرتبسازی طی میکنند، کوتاه باشد. در واقع میان دو الگوریتم متفاوت، گزینهای را ترجیح میدهید که مجموعاً دانشآموزان را به تحرک کمتری وادار کند.
روش نمایش الگوریتم ها
گاهی اوقات الگوریتمهای ساده را میتوان به صورت گام به گام با چند شماره گذاری شرح داد.
وقتی الگوریتمها پیچیدهتر میشود از فلوچارت (Flowchart) برای نمایش آنها استفاده میشود. فلوچارت در زبان فارسی به روندنما ترجمه شده است.
طبیعتاً کسانی که به برنامه نویسی علاقه دارند، گاهی از کدهای برنامهنویسی و نیز برنامههای سمبلیک هم برای نمایش الگوریتم استفاده میکنند.
برنامههای سمبلیک برای اجرا در یک زبان برنامهنویسی خاص نوشته نشدهاند، اما برای کسانی که برنامهنویسی میدانند آشنا و قابل درک هستند.
در اینجا چند خط برنامه جنریک (یا برنامه سمبلیک) را برای نمایش یک الگوریتم مشاهده میکنید:
چند مثال از الگوریتمهای رایج
معمولاً آموزش الگوریتم را با الگوریتم های مرتب کردن (اصطلاحاً: Sorting) آغاز میکنند.
مثالی هم که در ابتدای این درس برای مرتب کردن دانشآموزان بر اساس قد مطرح شد، از همین جنس بود.
اما دنیای تکنولوژی انبوهی از الگوریتمها را در اطراف ما قرار داده که معمولاً بدون اینکه به آنها توجه کنیم، از نتایجشان استفاده میکنیم.
در اینجا تنها از چند نمونه نام میبریم و در درسهای دیگر بسته به نیاز، بحث مربوط به الگوریتمها را بازتر خواهیم کرد:
الگوریتمهای مورد استفاده در موتورهای جستجو برای پیدا کردن بهترین پاسخها برای پرسش کاربران
در شکل کلیتر، الگوریتمهای پیشنهاددهنده که در بسیاری از نرمافزارها از جمله شبکه های اجتماعی و خرده فروشی های دیجیتال (مثل آمازون و دیجی کالا) دائماً از آنها استفاده میکنیم (یا آنها از ما استفاده میکنند).
الگوریتمهای رمزنگاری که میکوشند امنیت تبادل اطلاعات در شبکههای ارتباطی را افزایش دهند.
الگوریتمهای فشرده سازی اطلاعات که حجم دادهها را تا حد امکان کاهش میدهند.
بدیهی است بحث الگوریتم دانشی تخصصی است که گوشهای از آن میتواند برنامه حرفهای عمر کامل یک متخصص را به خود اختصاص دهد.
بنابراین، طبیعی است آنچه در اینجا اشاره شد، نکاتی بسیار ابتدایی – گاه به قیمت حذف جزئیات و دقت علمی – بود تا صرفاً این مفهوم برای دوستان عزیز شفافتر شود.
اگر با بحث الگوریتمها آشنا هستید، چه نکات دیگری به ذهنتان میرسد که مناسب میدانید برای دوستان خود که به تازگی با این مفهوم آشنا شدهاند مطرح کنید؟
طبیعتاً انتظار ما توضیحات تخصصی یا کپی مطلب از سایتهای دیگر نیست. بلکه توضیحاتی ساده و مبتنی بر تجربه است که فکر میکنید میتواند در حد درسهای سواد دیجیتال مفید باشد.
شما تاکنون در این بحث مشارکت نداشتهاید.
برخی از دوستان متممی که به این درس علاقه مندند: ، ، ، ،
ترتیبی که متمم برای خواندن مطالب سری سواد دیجیتال به شما پیشنهاد میکند:
سری مطالب حوزه سواد دیجیتال