الگوریتم چیست؟ (به همراه چند مثال ساده از کاربرد الگوریتم ها)
- بتوانند مفهوم الگوریتم را توضیح دهند.
- اگر قبلاً با الگوریتم های Sort (مرتب سازی) آشنا نبودهاند، کمی در خلوت خود برای فکر کردن به آنها بر اساس سوال مطرح شده در درس وقت بگذارند.
- بتوانند چند مورد از الگوریتم های رایج را نام ببرند.
همهی ما – حتی کسانی که تا کنون برنامه نویسی نکردهاند – میدانیم که کامپیوترها و سیستمهای کامپیوتری برای انجام هر کاری نیاز به برنامه (Program) دارند.
اما برنامه نویسی معمولاً با نوشتن برنامه آغاز نمیشود. قبل از نوشتن برنامه لازم است گام به گام، کارهایی را که باید برنامه انجام دهد تعریف کنیم.
به این تعریف گام به گام یک عملیات، طراحی الگوریتم (Algorithm) گفته میشود.
میتوان گفت کسانی که کدنویسی بلدند، الگوریتم را به یک برنامه قابل اجرا در کامپیوترها تبدیل میکنند.
کسانی که در محیطهای سازمانی فعالیت میکنند، با تصور فرایندهای عملیاتی کسب و کار میتوانند تا حد زیادی مفهوم الگوریتم را درک کنند.
فرایندی که یک نامه یا سند از رسیدن به دبیرخانه تا طبقه بندی و بررسی و ارجاع و اقدام و بایگانی طی میکند، در الگوی ذهنی برنامه نویسان یک الگوریتم محسوب میشود: گامهای متوالی با تعریف مشخص و تقدم و تأخر مشخص که از نقطهای شروع میشوند و در نقطهای به پایان میرسند و ممکن است دهها و صدها و هزاران بار تکرار شوند.
دانشآموزان هم احتمالاً با مرور مراحل ضرب دو عدد ده رقمی در یکدیگر، میتوانند به خوبی مفهوم الگوریتم را درک و تصور کنند.
مثال الگوریتم در زندگی روزمره
بسیاری از کارهای شخصی ما دارای الگوریتم مشخص و روتین از پیش تعیین شده هستند.
این نکتهای است که در درس نظم شخصی هم تحت عنوان روتینهای شخصی به آن اشاره کردیم.
[ درس مرتبط: روتین شخصی چیست و چرا اهمیت دارد؟ ]
گاهی اوقات هم، ما ناآگاهانه الگوریتم مشخصی را انتخاب و استفاده میکنیم.
اما وقتی مقیاس فعالیتها و مسئلهها بزرگتر میشود، بیش از هر زمان دیگری احساس میکنیم که نیازمند الگوریتم هستیم.
اگر پیش از این با الگوریتم و مفهوم آن آشنا نبودهاید، شاید بد نباشد در همینجا کمی به مرتب کردن دانشآموزان به ترتیب قد فکر کنید و اینکه اگر شما باشید چگونه این کار را انجام میدهید.
برای اینکه کمی پیچیدگیهای طراحی الگوریتم را – حتی در همین مثال ساده – تجربه کنید، میتوانید دو حالت زیر را به صورت جداگانه در نظر بگیرید:
- میخواهید این کار در سریعترین زمان ممکن انجام شود.
- میخواهید مجموع مسافتی که دانشآموزان برای این مرتبسازی طی میکنند، کوتاه باشد. در واقع میان دو الگوریتم متفاوت، گزینهای را ترجیح میدهید که مجموعاً دانشآموزان را به تحرک کمتری وادار کند.
شما با عضویت ویژه در متمم، میتوانید به درسها و آموزشهای بسیاری از جمله موضوعات زیر دسترسی کامل داشته باشید:
موضوعات زیر، برخی از درسهایی هستند که در متمم آموزش داده میشوند:
دوره MBA (یادگیری منظم درسها)
استراتژی | کارآفرینی | مدل کسب و کار | برندسازی
فنون مذاکره | مهارت ارتباطی | هوش هیجانی |تسلط کلامی
توسعه فردی | مهارت یادگیری | تصمیم گیری | تفکر سیستمی
کوچینگ | مشاوره مدیریت | کار تیمی | کاریزما
عزت نفس | زندگی شاد | خودشناسی | شخصیت شناسی
مدیریت بازاریابی | دیجیتال مارکتینگ | سئو | ایمیل مارکتینگ
اگر با فضای متمم آشنا نیستید و دوست دارید دربارهی متمم بیشتر بدانید، میتوانید نظرات دوستان متممی را دربارهی متمم بخوانید و ببینید متمم برایتان مناسب است یا نه. این افراد کسانی هستند که برای مدت طولانی با متمم همراه بوده و آن را به خوبی میشناسند:
روش نمایش الگوریتم ها
گاهی اوقات الگوریتمهای ساده را میتوان به صورت گام به گام با چند شماره گذاری شرح داد.
وقتی الگوریتمها پیچیدهتر میشود از فلوچارت (Flowchart) برای نمایش آنها استفاده میشود. فلوچارت در زبان فارسی به روندنما ترجمه شده است.
طبیعتاً کسانی که به برنامه نویسی علاقه دارند، گاهی از کدهای برنامهنویسی و نیز برنامههای سمبلیک هم برای نمایش الگوریتم استفاده میکنند.
برنامههای سمبلیک برای اجرا در یک زبان برنامهنویسی خاص نوشته نشدهاند، اما برای کسانی که برنامهنویسی میدانند آشنا و قابل درک هستند.
در اینجا چند خط برنامه جنریک (یا برنامه سمبلیک) را برای نمایش یک الگوریتم مشاهده میکنید:
چند مثال از الگوریتمهای رایج
معمولاً آموزش الگوریتم را با الگوریتم های مرتب کردن (اصطلاحاً: Sorting) آغاز میکنند.
مثالی هم که در ابتدای این درس برای مرتب کردن دانشآموزان بر اساس قد مطرح شد، از همین جنس بود.
اما دنیای تکنولوژی انبوهی از الگوریتمها را در اطراف ما قرار داده که معمولاً بدون اینکه به آنها توجه کنیم، از نتایجشان استفاده میکنیم.
در اینجا تنها از چند نمونه نام میبریم و در درسهای دیگر بسته به نیاز، بحث مربوط به الگوریتمها را بازتر خواهیم کرد:
الگوریتمهای مورد استفاده در موتورهای جستجو برای پیدا کردن بهترین پاسخها برای پرسش کاربران
در شکل کلیتر، الگوریتمهای پیشنهاددهنده که در بسیاری از نرمافزارها از جمله شبکه های اجتماعی و خرده فروشی های دیجیتال (مثل آمازون و دیجی کالا) دائماً از آنها استفاده میکنیم (یا آنها از ما استفاده میکنند).
الگوریتمهای رمزنگاری که میکوشند امنیت تبادل اطلاعات در شبکههای ارتباطی را افزایش دهند.
الگوریتمهای فشرده سازی اطلاعات که حجم دادهها را تا حد امکان کاهش میدهند.
بدیهی است بحث الگوریتم دانشی تخصصی است که گوشهای از آن میتواند برنامه حرفهای عمر کامل یک متخصص را به خود اختصاص دهد.
بنابراین، طبیعی است آنچه در اینجا اشاره شد، نکاتی بسیار ابتدایی – گاه به قیمت حذف جزئیات و دقت علمی – بود تا صرفاً این مفهوم برای دوستان عزیز شفافتر شود.
اگر با بحث الگوریتمها آشنا هستید، چه نکات دیگری به ذهنتان میرسد که مناسب میدانید برای دوستان خود که به تازگی با این مفهوم آشنا شدهاند مطرح کنید؟
طبیعتاً انتظار ما توضیحات تخصصی یا کپی مطلب از سایتهای دیگر نیست. بلکه توضیحاتی ساده و مبتنی بر تجربه است که فکر میکنید میتواند در حد درسهای سواد دیجیتال مفید باشد.
ترتیبی که متمم برای خواندن مطالب سری سواد دیجیتال به شما پیشنهاد میکند:
- سواد دیجیتال | سواد فناورانه برای زندگی دیجیتالی بهتر
- شکاف دیجیتالی چیست؟
- پنج سطح آشنایی با فرصتها و ابزارهای دیجیتال
- معنی آفلاین، آنلاین، فیزیکی، دیجیتال و مجازی چیست؟
- تعریف وب | تعریف شبکه | تفاوت اینترنت و اینترانت
- موزه تاریخ کامپیوتر | نگاهی به تاریخچه کامپیوتر
- قیمت آیفون در سال ۱۹۷۵ | ظرفیت محاسباتی چقدر افزایش یافته است؟
- معنی ایموجی، استیکر، اسمایلی و اموتیکون
- انتخاب رمز عبور | اهمیت استفاده از پسوردهای قوی، سخت، متنوع و امن
- اینترنت اشیا چیست؟ کاربردهای اینترنت اشیا در کجاست؟
- واقعیت مجازی چیست؟ واقعیت افزوده چیست؟ کاربرد آنها در کجاست؟
- QR Code چیست؟ روش ساخت QR Code (بارکد دو بعدی)
- پایگاه داده یا دیتابیس چیست؟ تعریف و کاربرد پایگاه داده
- آدرس IP چیست و از آی پی چه استفادهای میشود؟
- HTML چیست و چه کاربردی دارد؟ تاریخچه HTML
- URL چیست؟ چگونه URL بسازیم و از آن استفاده کنیم؟
- کوکی چیست؟ چرا و چگونه کوکی را غیر فعال و پاک کنیم؟
- وب دو (Web 2.0) چیست؟ آشنایی با ابزارهای وب دو
- فناوری اطلاعات چیست؟ | کاربردهای فناوری اطلاعات در مدیریت
- فضای ابری چیست؟ ذخیره سازی ابری اطلاعات چه کاربردی دارد؟
- دراپ باکس | ابزاری برای ذخیره سازی ابری اطلاعات
- انتقال فایل از گوشی به کامپیوتر و بالعکس
- حافظه کش چیست؟ کش کردن به چه معناست؟ (Cache)
- نکاتی در مورد دسته بندی فایلها و فولدرها در کامپیوتر و موبایل
- تحول دیجیتال یا دیجیتالی شدن چیست؟ تعریف دگردیسی دیجیتال
- تعریف اقتصاد دیجیتال چیست (+ مقاله و مثال)
- مراقبت از باتری گوشی موبایل و لپ تاپ | راههای افزایش عمر باتری لپ تاپ و وسایل دیگر
- دیجیتال بیزینس | انواع کسب و کارها بر اساس سهم تکنولوژی دیجیتال در آنها
- الکسا چیست؟ آیا رتبه الکسا همیشه مهم است؟
- پایان الکسا و دغدغهٔ افزایش و کاهش رتبه | جایگزین و مشابه الکسا چیست؟
- کلیک کلیک کلیک کلیک
- راهنمای تمرینهای درس سواد دیجیتال
- معرفی مرکز مطالعات اقتصاد دیجیتال دانشگاه MIT
- اندرو مک افی – محقق در زمینه نقش فناوری اطلاعات در کسب و کارها
- جورج وسترمن (نویسنده کتاب تحول دیجیتال)
- دان تاپسکات – نویسنده و متفکر حوزه تکنولوژی و اقتصاد دیجیتال
- کتاب تحول دیجیتال (رهبری دیجیتال) جورج وسترمن
- کتاب ناخدایی دیجیتال | کتابی ایرانی دربارهی تحول دیجیتال
- مدل Open Source یا متن باز چیست؟ نرم افزارهای متن باز چگونه رشد کردند؟
- الگوریتم چیست؟ (به همراه چند مثال ساده از کاربرد الگوریتم ها)
- رمزنگاری چیست؟ تاریخچه و انواع رمزنگاری | الگوریتمهای رمزنگاری متقارن و نامتقارن
- معنی باگ در نرم افزار چیست؟ (مروری بر تاریخچه لغت باگ)
- نسخه بتا چیست؟ تفاوت نسخه بتا و اصلی در کجاست؟
- مدل قطب و اقمار (هاب و اسپوک) چیست؟
- پلاگین چیست و چه کاربردی دارد؟
- RSS چیست | چگونه از RSS استفاده کنیم؟
- تفاوت میان شخصی سازی و سفارشی سازی
- دربارهی ارزش و اعتبار ویکی پدیا | لری سنگر و یرون لنیر
- SaaS چیست؟
- RFID چیست؟ تکنولوژی RFID چه کاربردهایی دارد؟
- معرفی پادکست TechStuff | همه چیز دربارهی تکنولوژی و حاشیههایش
- هاستینگ چیست؟ سرویس هاست یا میزبانی وب به چه معناست؟
- DIY Citizenship | چرا خودت انجامش نمیدهی؟
- حباب دات کام | ترکیدن حباب شرکتهای اینترنتی و تجارت الکترونیکی
- کم عمق ها | اینترنت با مغز ما چه می کند؟
- تعریف دولت الکترونیک چیست؟ دولت الکترونیک در ایران چه وضعی دارد؟
- گزارشهای مدیریتی | وضعیت اقتصاد دیجیتال و کسب و کارهای اینترنتی در جهان
- کتاب آینده نزدیک | کوین کلی (خلاصه کتاب و نقد آن)
چند مطلب پیشنهادی از متمم:
سوالهای پرتکرار دربارهٔ متمم
متمم مخففِ عبارت «محل توسعه مهارتهای من» است: یک فضای آموزشی آنلاین برای بحثهای مهارتی و مدیریتی.
برای کسب اطلاعات بیشتر میتوانید به صفحهٔ درباره متمم سر بزنید و فایل صوتی معرفی متمم را دانلود کرده و گوش دهید.
فهرست دوره های آموزشی متمم را کجا ببینیم؟
هر یک از دوره های آموزشی متمم یک «نقشه راه» دارد که مسیر یادگیری آن درس را مشخص میکند. با مراجعه به صفحهٔ نقشه راه یادگیری میتوانید نقشه راههای مختلف را ببینید و با دوره های متنوع متمم آشنا شوید.
همچنین در صفحههای دوره MBA و توسعه فردی میتوانید با دوره های آموزشی متمم بیشتر آشنا شوید.
هزینه ثبت نام در متمم چقدر است؟
شما میتوانید بدون پرداخت پول در متمم به عنوان کاربر آزاد عضو شوید. اما به حدود نیمی از درسهای متمم دسترسی خواهید داشت. پیشنهاد ما این است که پس از ثبت نام به عنوان کاربر آزاد، با خرید اعتبار به عضو ویژه تبدیل شوید.
اعتبار را میتوانید به صورت ماهیانه (۱۶۰ هزار تومان)، فصلی (۴۲۰ هزار تومان)، نیمسال (۷۵۰ هزار تومان) و یکساله (یک میلیون و ۲۰۰ هزار تومان) بخرید. لطفاً برای اطلاعات بیشتر به صفحه ثبت نام مراجعه کنید.
آیا در متمم فایل های صوتی رایگان هم برای دانلود وجود دارد؟
مجموعه گسترده و متنوعی از فایلهای صوتی رایگان در رادیو متمم ارائه شده که میتوانید هر یک از آنها را دانلود کرده و گوش دهید.
همچنین دوره های صوتی آموزشی متنوعی هم در متمم وجود دارد که فهرست آنها را میتوانید در فروشگاه متمم ببینید.
با متمم همراه شوید
آیا میدانید که فقط با ثبت ایمیل و تعریف نام کاربری و رمز عبور میتوانید به جمع متممیها بپیوندید؟
نویسندهی دیدگاه : شهرزاد راسخ
برای خودِ من به تجربه ثابت شده که هر وقت در مورد یک مسئله برنامه نویسی، قبل از هر اقدامی، مسئله ی موجود رو به خوبی تجزیه و تحلیل میکردم و برای نوشتنِ الگوریتم با دقت و به اندازه ی کافی وقت می گذاشتم، برنامه نویسی بر اساس اون الگوریتم و بعد فلوچارتش، برام بسیار راحت تر و شیرین تر میشد.
الگوریتم نویسی به ما کمک میکنه که اول نیازمندیهای مسئله مون رو مشخص کنیم، بعد مسئله رو تحلیل کنیم، بعد الگوریتم اش رو طراحی کنیم، و در نهایت الگوریتم رو با فلوچارت پیاده سازی و سپس بر اساسش برنامه نویسی کنیم.
وقتی فلوچارت میکشیم، برای هر نوع دستور از یک شکل هندسی استفاده میکنیم. مثلاً برای شروع و پایان از بیضی، و از متوازی الاضلاع برای نمایش داده های ورودی و خروجی استفاده میکنیم.
یکی از کتابهایی هم که در دانشگاه، خیلی در زمینه یادگیری الگوریتم و فلوچارت به ما کمک کرد، کتاب برنامه نویسی به زبان C و ++C دکتر جعفرنژاد قمی بود.
در کل، مانند مثال قشنگی که متمم زد، به نظر من اگر بتونیم عادت کنیم که با مدل ذهنی یک برنامه نویس، برای هر تصمیمی که میخواهیم بگیریم یا برای حل هر مسئله ای که در زندگیمون باهاش روبرو هستیم، یک الگوریتم طراحی کنیم؛ این میتونه به ما کمک کنه که تصمیم گیری یا حل مسئله برامون راحت تر بشه.
به اینصورت که مجموعه ای از اقدامات در راستای حل مسئله ای در زندگی مون رو برای خودمون تعریف کنیم، بعد به هر اقدام یک شماره اختصاص بدیم و سپس اونها رو به ترتیب اجرا کنیم.