آشنایی با الگوریتم و فلوچارت
الگوریتم چیست؟
یک الگوریتم، روند گامبهگام یا مجموعهای از دستورالعملها برای حل یک مسئله خاص هست که ما را از ورودی های مشخص با راه حل مشخص به نتیجه مورد انتظار می رساند. برای نوشتن یک الگوریتم، باید مجموعهای از قوانین رو بهصورت شفاف و بدون ابهام تعریف کرد و نقطه توقف مشخصی رو تعیین کرد. ممکن است بیشتر از یک راه، برای حل یک مسئله وجود داشته باشه، بنابراین ممکن هست بتونیم بیش از یک الگوریتم رو برای یک مسئله بنویسیم.
مشخصات الگوریتم
هر الگوریتم باید دارای 5 خصوصیت باشد :
-
کامل بودن (تناهی)
یک الگوریتم همیشه باید پس از چند مرحله، به پایان برسه. یعنی، بعد از انجام هر مرحله، به جواب مسئله نزدیکتر میشیم و بعد از چند مرحله، الگوریتم به نقطه انتهایی می رسه. - قطعیت
باید هر مرحله از الگوریتم بهدقت تعریف بشه. لازمه توی هر مرحله، اقدامات کاملاً مشخصه بشه. همچنین دستورات باید بدون ابهام برای هر فعالیت الگوریتم، تعریف بشن. - ورودی
برای هر عملیاتی که انجام میدین، باید مقدار یا کمیتهای اولیه مرتبط با فعالیتهای مختلف در عملیات، تعیین بشه. بنابراین، مقدار/ کمیتها از ابتدا به الگوریتم اعمال میشن. - خروجی
همیشه باید انتظار داشت انتهای یک الگوریتم، به یک خروجی منجر بشه. میشه نتیجه رو در مراحل مختلف الگوریتم به دست آورد. اگر نتیجهای از مرحله میانی عملیات به دست بیاد، نتیجه میانی نامیده میشه و اگر نتیجه در انتهای الگوریتم به دست بیاد، نتیجه انتهایی حاصل میشه. انتظار داریم که خروجی دارای رابطه مشخصی با ورودی باشه. - اثر پذیری
در اصل، انتظار داریم تا به خروجی مشخص از الگوریتم در زمان محدودی برسیم. الگوریتمها باید با استفاده از عملیات اصلی، نوشته بشن. اثرپذیری الگوریتم، یکی از مبانی اصلی یک الگوریتم محسوب میشه.
انواع ساختارهای الگوریتم
انواع الگوریتمها عبارتاند از:
- توالی
منظور از توالی، قرارگیری ترتیبی عبارات و اجرای دستورات بهصورت متوالی هست. در فلوچارتها، توالی عبارات، معمولاً در یک جعبه مستطیلی ارائه میشه. - شاخهای (انتخاب)
منظور از شاخه، تصمیم دودویی بر اساس بعضی از شرایط هست. اگر شرط درست باشه، یکی از دو شاخه دنبال میشه؛ اگر شرط غلط باشه، جایگزین دیگه در نظر گرفته میشه. این حالت معمولاً با ساختار if-then در شبکه کدها و برنامهها نشون داده میشه. در فلوچارتها، این روند با شکل لوزی ارائه میشه. این ساختار، بهعنوان ساختار انتخاب شناخته میشه. - حلقه (تکرار)
حلقه، باعث میشه یک عبارت یا ترتیبی از عبارتها بر اساس شرط حلقه، تکرار بشه. این حلقه با ساختارهای while و for در بیشتر زبانهای برنامهنویسی مانند پایتون و سی شارپ و… برای حلقههای کراندار و بیکران، ارائه میشه. منظور از حلقههای بیکران، حلقههایی هستند که تعداد تکرارهای اونها بستگی به برآورده شدن شرط پایان داره. حلقههای کراندار، حلقههایی هستند که تعداد تکرارهای اون از قبل مشخص هست.
علائم مورد استفاده در الگوریتم
ما حین نگارش الگوریتمها، از علامتهای زیر برای عملیات مختلف استفاده میکنیم:
جمع | تفریق | ضرب | تقسیم | تخصیص |
‘+’ | ‘-’ | ‘*’ | ‘/’ | ‘->’ |
فلوچارت چیست؟
فلوچارت، نمایش گرافیکی یک الگوریتم هست که توالی مراحل رو بهطور تصویری نشون میدهد
نمادهای فلوچارت
6 نماد اصلی برای تهیه فلوچارت استفاده میشن: پایان، فرآیند، ورودی/ خروجی، تصمیم، اتصالدهنده و فرآیند از پیش تعریف شده.
قوانین ترسیم فلوچارت
8 قانون برای ترسیم یک فلوچارت وجود دارد
قوانین کلی ترسیم فلوچارت رو بیان میکنیم.
- کلیه جعبهها با فلش جهت دار (نه خطوط) به هم متصل میشن.
- نمادهای فلوچارت دارای یک نقطه ورودی بر روی نماد بدون نقاط ورودی دیگه هستن. نقطه خروجی برای کل نمادهای فلوچارت بهجز نماد تصمیم، در قسمت پایین قرار داره.
- نماد تصمیم (Decision) دو نقطه خروجی داره؛ این نقاط در اضلاع یا پایین و روی یک ضلع قرار دارن.
- عموماً یک فلوچارت از بالا به پایین، جریان پیدا می کنه. اما میشه جهت رو به بالا رو درصورتیکه حداکثر 3 نماد وجود داشته باشه، نشون داد.
- اتصالدهندهها برای اتصال breaks در فلوچارت استفاده میشن.
- زیرروال ها و برنامههای وقفهای، فلوچارتهای مستقلی دارن.
- تمامی فلوچارتها با نماد فرآیند پایان یا از پیش تعریف شده(برای برنامههای وقفه و زیرروال ها) شروع میشن.
- کل فلوچارتها با نماد پایان یا حلقه بحثبرانگیز، به انتها می رسن.
مزیت های استفاده از فلوچارت
- ارتباط
میشه از یک فلوچارت بهعنوان راه بهتری برای نمایش ارتباط منطق یک سیستم و مراحل لازم در پاسخ استفاده کرد. - تحلیل موثر
میشه از فلوچارت یک مسئله برای تحلیل مؤثر یک مسئله استفاده کرد. یعنی فهمید که نیازها ، ماهیت و نحوه حل آن دقیقا چگونه است و از این طریق مساله را درک کرد. - مستندسازی برنامه / سیستم
فلوچارتهای برنامه، بخش حیاتی مستندسازی یک برنامه مناسب هستن. سند برنامه برای اهداف مختلف مثل شناخت اجزاء برنامه، پیچیدگی برنامه و موارد دیگه استفاده میشه. - حفظ کارایی برنامه
با ارائه و عملیاتی شدن برنامه، باید زمانی رو برای نگهداری اختصاص داد. نگهداری برنامه با فلوچارت، راحتتر میشه. - کدنویسی
هر نوع طراحی جواب مسئله، در نهایت به یک برنامه رایانهای تبدیل میشه. با فلوچارت، نوشتن کدهای جواب، سادهتر میشه.