algorithm-flowchart

 

 

تاریخچه ای از طراحی الگوریتم

از نظر واژه‌شناسی کلمه الگوریتم از الگوریزم (algorism) به دست آمده که خود از نام ریاضیدان شایسته ایرانی ابوجفعر محمدبن موسی الخوارزمی و به پاس خدمات او به توسعه دانش بشری اقتباس شده است. کلمه «الجبرا» در انگلیسی نیز از روی کتاب مشهور او به نام الجبر و مقابله گرفته شده است. ابوجعفر محمد بن موسی خوارزمی از دانشمندان شهیر ایران است که در نیمه دوم قرن دوم و اوایل قرن سوم هجری شمسی می‌زیسته و در علوم ریاضی و هیأت سرآمد دانشمندان دوران خود بوده است.

 

ساختار منطقی الگوریتم

بر اساس یک طبقه ­بندی الگوریتم­ها در ۳ گروه دنباله­ای، شاخه­ای و حلقه­ای قرار می­گیرند. الگوریتم دنباله­ای (Sequence) ساختاری مرحله به مرحله دارد و ترتیب گام­ها برای رسیدن به پاسخی معتبر در آن مشخص شده است. در این نوع از الگوریتم، عناصر ورودی بطور پیوسته پردازش شده و عنصر به عنصر متن را تولید می­کنند.

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

ویژگی­های یک الگوریتم کاربردی 

  • زبان ساده، دقیق و قابل فهم

وقتی از یک جمله برداشت­های متفاوت و مبهمی صورت گیرند، یعنی دقیق و یا واضح نبوده است. تمام تلاش یک الگوریتم و فلوچارت اجرای یک الگوی یکسان است و در صورتی که زبان آن ساده، دقیق و قابل فهم باشد می­توان انتظار داشت که از آن برداشت­های یکسانی صورت گیرند. اگر این ویژگی لحاظ نشود، برداشت­های متفاوت به دستورالعمل­های متفاوت ختم خواهند شد. این یعنی الگوریتم اصلاً به هدف خود نزدیک هم نشده است. لازم به ذکر است که زبان الگوریتم می­تواند نوعی زبان گفتاری یا نوشتاری اعم از فارسی، انگلیسی و… باشد.

  • جزئیات کافی

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

  • شروع و پایان الگوریتم

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

  • ترتیب انجام دستورالعمل­ها

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

از کارهای کوچک تا داده های بزرگ

یک مسئله ساده را می توان با یک الگوریتم ایجاد شده در چند دقیقه حل کرد. با این حال مسئله ها با سطح پیچیدگی بسیار بزرگ و طولانی وجود دارد که سال ها یا حتی قرن ها است که محققان و ریاضیدانان را دچار مشکل کرده اند.

سیستم های مدرن با مسائلی در این سطح در زمینه هایی مانند امنیت سایبری و همچنین مدیریت داده های بزرگ روبرو می شوند-مرتب سازی موثر و کامل مجموعه داده های بزرگی که حتی یک سیستم استاندارد هم نمی تواند آنها را در زمان مناسب پردازش کند. نمونه هایی از داده های بزرگ مثل “هر مقاله در ویکیپدیا”، “صفحه وب بایگانی شده در سال ۱۹۹۸” یا “خریدهای آنلاین انجام شده در شش ماه گذشته در ایران”.

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

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

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

اهمیت الگوریتم ها در علوم کامپیوتر

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

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

 

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

 

آموزش الگوریتم و فلوچارت برای چه کسانی مناسب است ؟

  • علاقه مندان به شروع برنامه نویسی
  • افراد تازه کار که قصد فراگرفتن ذهینت برنامه نویسی را دارند
  • کسانی که به دنبال یادگیری پیش نیاز های برنامه نویسی هستند
  • افرادی که در رشته هایی جز نرم افزار فعالیت داشته و با برنامه نویسی آشنا نیستند
  • کسانی که قصد آموزش اصولی برنامه نویسی را دارند
  • افراد علاقه‌مند به آموزش الگوریتم و فلوچارت

 

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

زبان های برنامه نویسی سطح بالا مانند C، C++، جاوا و پایتون به برنامه نویسان اجازه می دهتد تا برنامه های بسیار پیچیده را با کدهای نسبتا کوتاه بنویسند. به عنوان مثال یک برنامه C++ برای اجرا الگوریتم جستجوی خطی همه عناصر یک آرایه را فقط در دو یا سه خط کد بررسی کند اما تعداد دستورالعمل های نوشته شده در زبان اسمبلی ممکنه به ۲۰ یا ۳۰ خط کد نیز برسد.

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

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

ما در آکادمی آنلاین قاسمی این امکان را فراهم نموده ایم تا با سبکی کاملا متفاوت و اصولی شما را از آغاز تا پایان دوره طراحی الگوریتم و فلوچارت همراهی کنیم و موفقیت شما را در این درس شاهد باشیم.
آموزش آنلاین طراحی الگوریتم, آموزش درس طراحی الگوریتم, استاد برای طراحی الگوریتم, درس طراحی الگوریتم, طراحی الگوریتم چیست, طراحی الگوریتم و فلوچارت, لیسانس نرم افزار
نوشتهٔ پیشین
اصول و مبانی برنامه نویسی
نوشتهٔ بعدی
MCSA

پست های مرتبط

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

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

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

You cannot copy content of this page

error: Content is protected !!