درس اول: مفاهیم فلوچارت و الگوریتم برای افراد مبتدی

Algorithm and Flowchart for Beginners

24 شهریور 1399
فلوچارت و الگوریتم: مفاهیم فلوچارت و الگوریتم برای افراد مبتدی (قسمت 01)

آشنایی با این سری کوتاه

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

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

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

نکته: کلمه «الگوریتم» به معنای عمومی آن «تحلیل قدم به قدم فرآیند حل مشکل» است که همان منظور ما در این دوره است. از نظر فنی، یک تابع دو خطی نیز یک الگوریتم حساب می شود اما «الگوریتم» به معنای پیشرفته تر آن، به دسته بندی های خاصی می رسد (مانند الگوریتم های گراف، الگوریتم های ترتیبی، الگوریتم های بازگشتی و غیره). شما می توانید لیستی از این الگوریتم ها را در این صفحه ویکی پدیا ببینید. من در این دوره به سراغ مباحث پیشرفته نمی روم و در سطح مبتدی کار خواهیم کرد. اگر دوست دارید با مباحث پیشرفته تر آشنا شوید به دوره «الگوریتم و داده ساختار» در روکسو مراجعه کنید.

آشنایی با الگوریتم و فواید آن

کلمه الگوریتم (به انگلیسی: algorithm) از نام محمد بن موسی خوارزمی ریاضیدان، ستاره‌شناس، فیلسوف، جغرافیدان و مورخ شهیر ایرانی در دوره عباسیان آمده است. نام خوارزمی در لاتین به شکل Algoritmi نوشته می شد و سپس در انگلیسی به کلمه algorithm تغییر پیدا کرد. در حال حاضر کلمه الگوریتم به معنی «فرآیند» یا «تکنیک» می باشد و مهندسین نرم افزار از آن برای برنامه ریزی و حل مشکلات سیستم استفاده می کنند اما اگر بخواهیم دقیق تر صحبت کنیم، الگوریتم در علوم کامپیوتر به مجموعه دستوراتی ترتیبی و صریح اشاره می کند که در زمانی محدود نتیجه ای را تولید کرده و سپس از بین می رود. هر الگوریتم دارای خصوصیات زیر است:

  • Input یا ورودی: هر الگوریتم می تواند ورودی بگیرد و می تواند بدون ورودی باشد.
  • output یا خروجی: هر الگوریتم حداقل باید یک نتیجه تولید کند.
  • definiteness یا قطعیت: هر دستور باید واضح و عاری از هر گونه ابهام باشد.
  • Finiteness یا تناهی: هر الگوریتم پس از طی کردن مراحل مختلف باید به پایان برسد (متناهی باشد).

هر الگوریتم و فلوچارت دارای سه دسته ساختار کنترل کننده زیر می باشد:

  • Sequence: به معنی «ترتیب». در ساختار sequence دستورات یکی پس از دیگری نوشته شده و اجرای آن ها از بالا به پایین خواهد بود.
  • Branching یا Selection: به ترتیب به معنی «شاخه گذاری» و «انتخاب». در کنترل شاخه یک «شرط» وجود دارد و بر اساس آن یک تصمیم true (صحیح) یا false (غلط) گرفته می شود. در صورتی که شرط true باشد، وارد آن شاخه خواهیم شد و در صورت false بودن وارد شاخه دیگر می شویم. معمولا از عبارت "IF-THEN" برای نشان دادن این ساختار کنترل کننده استفاده می شود اما در زبان های مختلف شکل های متفاوتی مانند IF-ELSE نیز دارد.
  • Loop یا Repetition: به معنی «حلقه» و «تکرار». این ساختارهای کنترل کننده به دستورات اجازه می دهند که چندین مرتبه و پشت سر هم اجرا شوند تا زمانی که شرط خاصی false شود.

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

  • هر الگوریتم نمادی از راه حل به صورت قدم به قدم است بنابراین درک کردن آن بسیار ساده است.
  • الگوریتم ها definite (قاطع و واضح) هستند بنابراین ابهام را از مسئله دور کرده و روش حل مسئله را کاملا روشن می کنند.
  • الگوریتم ها از زبان های برنامه نویسی مستقل هستند و به هیچ زبانی وابسته نیستند بنابراین برای تمام افراد قابل درک هستند، حتی افرادی که هیچ زبان برنامه نویسی را یاد ندارند.
  • هر مرحله از یک الگوریتم دارای منطق ترتیبی مجزا است بنابراین debug کردن (رفع خطا) ساده می باشد.

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

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش فلوچارت و الگوریتم به زبان ساده توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.