«فلوچارت» (Flowchart) هنگام طراحی و برنامهریزی «فرآیند» (Process) یا پردازش، میتواند به شما در شناسایی مراحل ضروری آن کمک کند و همزمان تصویر بزرگتری را از فرآیند مربوطه ارائه دهد. فلوچارت وظایف را به ترتیبِ زمانی سازماندهی میکند و آنها را بر اساس نوع فرآیند اعم از تصمیم، داده و غیره شناسایی میکند. این نمودار میتواند به یافتن ویژگیهای کمتر آشکار شده فرآیند کمک کند و در نتیجه موجب اصلاح «گلوگاهها» (Bottlenecks)، «نواقص» (Flaws)، مراحل غیرضروری و همینطور موجب بهبود «کارایی» (Efficiency) در آن فرایند شود. در این نوشتار میخواهیم به این موضوع بپردازیم که فلوچارت چیست و چه کاربردی در برنامه نویسی دارد.
فلوچارت چیست؟
فلوچارت نموداری است که یک فرآیند، سیستم یا الگوریتم کامپیوتری را نشان میدهد. فلوچارت نمایشی نموداری از راه حل مسئله است، اما مهمتر از آن، تجزیه و تحلیل مراحل ضروری برای حل مسئله را ارائه میدهد. فلوچارتها به طور گسترده در زمینههای مختلف برای مستندسازی، مطالعه، برنامهریزی، بهبود و ارتباط فرآیندهای اغلب پیچیده در قالب نمودارهای واضح و قابل درک به کار گرفته میشوند. فلوچارتها به صورت «نمودارهای جریان» (Flow Chart) قابل تفسیر هستند و در آنها برای تعیین مرحله از نمادهای مستطیل، بیضی، لوزی و شکلهای بالقوه متعدد دیگر و برای تعریف جریان و ترتیب از پیکانهای جهتدار استفاده میشود.
فلوچارت فقط توضیح میدهد که در هر مرحله چه اتفاقی باید بیفتد، چه ورودیهایی لازم است و خروجی آن مرحله چیست، اما چیزی در مورد نحوه اجرا در آن مرحله نمیگوید و در واقع مراحل فلوچارتی مستقل از پیادهسازی هستند. ترسیم فلوچارتها را میتوان به صورت ساده و دستی یا به کمک کامپیوتر و به گونهای جامع شامل مراحل و مسیرهای متعدد انجام داد. فلوچارتها با توجه به شکلها و حالتهای مختلف، یکی از متداولترین نمودارها به حساب میآیند که هم توسط افراد فنی و هم غیر فنی در زمینههای متعدد استفاده میشوند. فلوچارتها دارای برخی اسامی تخصصی دیگر نیز هستند که در ادامه برخی از این اسامی نام برده شدهاند.
- «نمودار جریان فرآیند» (Process Flowchart) یا (Process Flow Diagram | PFD)
- «نقشه فرآیند» (Process Map)
- «نمودار جریان عملکردی» (Functional Flowchart)
- «نقشه فرآیند کسب و کار» (Business Process Mapping)
- «مدلسازی و نشانهگذاری فرآیند کسب و کار» (Business Process Modeling and Notation | BPMN)
همچنین نمودارهایی مانند «نمودارهای جریان داده» (Data Flow Diagram | DFD) و نمودارهای فعالیت «زبان مدلسازی یکپارچه» (Unified Modeling Language | UML) ارتباط نزدیکی با فلوچارت دارند.
تاریخچه فلوچارت چیست ؟
فلوچارتها برای مستندسازی فرآیندهای تجاری در دهههای 1920 و 30 مورد استفاده قرار گرفتند. در سال 1921، مهندسان صنایع «فرانک» (Frank) و «لیلیان گیلبرت» (Lillian Gilbreth)، «نمودار فرآیند جریان» (Flow Process Chart) را به انجمن مهندسین مکانیک آمریکا (ASME) معرفی کردند.
در اوایل دهه 1930، مهندس صنایع «آلن اچ. مورگنسن» (Allan H. Morgensen) از ابزارهای گیلبرت برای ارائه کنفرانسهایی پیرامون کارآمدتر کردن فرایند کار برای مدیران کسب و کار در شرکتش استفاده کرد. در دهه 1940، دو دانشجوی مورگنسن، «آرت اسپینجر» (Art Spinanger) و «بن اس. گراهام» (Ben S. Graham)، این روشها را به طور گستردهتر توسعه دادند. اسپینجر روشهای سادهسازی کار را به شرکت Procter and Gamble معرفی کرد. گراهام، مدیر «استاندارد ثبت صنعتی» (Standard Register Industrial)، نمودارهای فرآیند جریان را برای پردازش اطلاعات اصلاح کرد و تطبیق داد. در سال 1947، ASME «سیستم نمادی» (Symbol System) را برای نمودارهای فرآیند جریان، برگرفته از کار اصلی گیلبرت اتخاذ کرد.
همچنین در اواخر دهه 40، «هرمان گلدستاین» (Herman Goldstine) و «جان ون نویمان» (John Van Neumann) از فلوچارتها برای توسعه برنامههای کامپیوتری استفاده کردند و نمودارسازی خیلی سریع برای برنامهها و الگوریتمهای کامپیوتری محبوبیت پیدا کرد. امروزه از فلوچارتها برای برنامه نویسی استفاده میشود. همچنین از «شبه کد» (Pseudocode) نیز که ترکیبی از کلمات و زبان برنامه نویسی است، اغلب برای به تصویر کشیدن سطوح عمیقتری از جزئیات و نزدیک شدن به محصول نهایی استفاده میشود.
نمادهای فلوچارت چیست ؟
در اینجا برخی از نمادهای رایج فلوچارت آورده شده است. این سمبلها شامل گرههای پایانه، فرایند، تصمیم، سند، داده، پایگاه داده، پیکان جهتدار، یادداشت، فرایند از پیش تعریف شده، رابط و مرجع «برصفحه» (On Page)، رابط و مرجع «خارج از صفحه» (Off Page) میشود که تصاویر آنها را در شکل زیر ملاحظه میکنید.
در ادامه به شرح هر یک از این نمادها پرداختهایم.
- «پایانه» (Terminal): یا ترمینال با نماد بیضی شکل، «شروع» و «توقف» را در جریان منطقی برنامه نشان میدهد. توقف معمولاً در منطق برنامه در صورت بروز خطا مورد استفاده قرار میگیرد. ترمینال اولین و آخرین نماد در فلوچارت محسوب میشود.
- «ورودی/خروجی» (Input/Output): با نماد متوازی الاضلاع، هر تابعی از نوع ورودی/خروجی را نشان میدهد. دستورالعملهای برنامهای دریافتیها را از دستگاههای ورودی میگیرند و برونداد را روی دستگاههای خروجی نمایش میدهند. این دستورالعملها در نمودار جریان با نماد متوازی الاضلاع نشان داده میشوند.
- «پردازش» (Process): یا فرایند با نماد مستطیل، نشان دهنده دستورالعملهای محاسباتی است. تمام فرآیندهای حسابی مانند جمع، تفریق، ضرب و تقسیم با نماد فرآیند نشان داده میشوند.
- «تصمیم» (Decision): با نماد لوزی، نشان دهنده یک نقطه تصمیمگیری است. عملیات مبتنی بر تصمیم مانند سوالات «بله/خیر» یا «درست/غلط»، با این نماد در فلوچارت نشان داده میشوند.
- «اتصال دهندهها» (Connectors) : هر زمان که فلوچارت پیچیده شود یا در بیش از یک صفحه گسترش یابد، استفاده از رابطها برای جلوگیری از هرگونه سردرگمی میتواند مفید واقع شود. رابطها با نماد دایره نشان داده میشود.
- «خطوط جریان» (Flow Lines): خطوط جریان نشان دهنده توالی دقیقی است که دستورالعملها مطابق با آنها اجرا میشوند. فلشها جهت جریان کنترل و رابطه بین نمادهای مختلف را در فلوچارت نشان میدهند.
برنامه نویسی با استفاده از فلوچارت چیست ؟
در نوشتن یک برنامه یا الگوریتم و توضیح آن برای دیگران و برای نمایش بصری جریان داده، میتوان از فلوچارت استفاده کرد. در واقع شما میتوانید از «فلوچارت الگوریتمی» (Algorithm Flowchart) برای بیان منطق پشت برنامه، قبل از شروع به کد نویسی فرآیند خودکار استفاده کنید. این میتواند به سازماندهی تفکر تصویر بزرگ کمک کند و در زمان کدنویسی همانند یک راهنما عمل کند. به طور خاص تر، فلوچارتها کارکردهای زیر را دارند.
- نحوه سازماندهی کد را نشان میدهند.
- اجرای کد را در یک برنامه مصور میسازند.
- ساختار وبسایت یا برنامه را نشان میدهند.
- نحوه حرکت کاربران در یک وبسایت یا برنامه را ترسیم میکنند.
اغلب، برنامه نویسان ممکن است شبه کد را توسعه دهند که ترکیبی از زبان طبیعی و زبان کامپیوتری است و توسط افراد قابل درک و قابل خواندن است. شبه کد میتواند جزئیات بیشتری را نسبت به فلوچارت ارائه دهد و به عنوان جایگزینی برای فلوچارت و به عنوان گام بعدی در توسعه کد واقعی عمل میکند.
معرفی فیلم های آموزش مهندسی نرم افزار
با رشد و توسعه فناوری اطلاعات و رسوخ آن در شاخههای مختلف صنعت و کسب و کار، برنامه نویسی و توسعه نرم افزار و آموزشهای وابسته به آنها، چه در فضای اشتغال و چه در فضای دانشگاهی مورد نیاز مبرم قرار گرفته است. پیشبینیها حاکی از این موضوع است که نیاز به مهندسی نرم افزار و مهارتهای وابسته به آن در سالهای پیش رو به صورت فزایندهای رشد خواهد کرد. تم آف به عنوان پلتفرم ارائه دهنده ویدیوهای آموزشی، با تدوین و انتشار مجموعه فیلمهای آموزشی مهندسی نرم افزار سعی در رفع نیاز موجود دارد. در تصویر بالا، تنها چند نمونه از آموزشهای این مجموعه را ملاحظه میکنید.
- برای شروع یادگیری مهندسی نرم افزار و دسترسی به تمام دورههای این مجموعه + اینجا کلیک کنید.
مفهوم الگوریتم و ارتباط آن با فلوچارت چیست ؟
کلمه «الگوریتم» (Algorithm) به معنی مجموعهای از قوانین یا دستورالعملهای متناهی است که باید در محاسبات یا سایر عملیات حل مسئله دنبال شوند یا روشی برای حل یک مسئله ریاضی در تعداد محدودی از مراحل که اغلب شامل عملیات بازگشتی است. بنابراین الگوریتم به دنبالهای از مراحل محدود برای حل مسئلهای خاص اشاره دارد.
الگوریتمها میتوانند بسته به آنچه میخواهید به دست آورید، ساده یا پیچیده باشند. یک الگوریتم خوب باید از نظر زمان و مکان بهینه شود. انواع مختلف مسائل نیازمند انواع مختلفی از روشهای الگوریتمی هستند تا به بهترین شکل حل شوند. با استفاده از فلوچارت میتوان نحوه کارکرد الگوریتمها را به صورت بصری نمایش داد.
الگوریتم در برنامه نویسی چیست ؟ — به زبان ساده
ویژگیهای الگوریتم چه هستند؟
برخی از مهمترین ویژگیهای الگوریتمها در زیر نام برده شده است.
- واضح و بدون ابهام: الگوریتم باید واضح و بدون ابهام باشد. هر یک از مراحل آن باید از همه جهات روشن باشد و تنها به یک معنا منتهی شود.
- ورودیهای به خوبی تعریف شده: اگر الگوریتمی دارای ورودی باشد،باید ورودیهای کاملاً تعریف شده باشند.
- خروجیهای به خوبی تعریف شده: الگوریتم باید به وضوح مشخص کند که چه خروجی به دست میآید و همچنین باید به خوبی تعریف شود. الگوریتم باید حداقل یک خروجی تولید کند.
- محدود بودن: الگوریتم باید متناهی باشد، یعنی باید پس از یک زمان محدود خاتمه یابد.
- امکان پذیر: الگوریتم باید ساده، عمومی و کاربردی باشد تا بتوان با منابع موجود آن را اجرا کرد.
- مستقل از زبان: الگوریتم طراحیشده باید مستقل از زبان باشد، یعنی باید حاوی دستورالعملهای سادهای باشد که بتوان در هر زبانی پیادهسازی کرد.
انواع الگوریتم کدامند؟
در ادامه به برخی از مهمترین انواع الگوریتمها اشاره شده است. ابتدا این الگوریتمها را فهرست کردهایم و سپس هر کدام را در به طور خلاصه شرح داده و معرفی کردهایم.
- الگوریتم بروت فورس
- الگوریتم بازگشتی
- الگوریتم تصادفی
- الگوریتم مرتبسازی
- الگوریتم جستجو
- الگوریتم هش
الگوریتم بروت فورس Brute Force
الگوریتم Brute Force روشی ساده برای حل مسئله است که بر قدرت محاسباتی محض تکیه میکند و هر امکانی را به جای تکنیکهای پیشرفته برای بهبود کارایی امتحان میکند. برای مثال فرض کنید قفل پین 4 رقمی وجود دارد که میخواهیم رمز آن را با ارقام بین ۰ تا ۹ بیابیم. با استفاده از روش Brut Force، تمام ترکیبات ممکن را یکی یکی امتحان میکنیم، مانند 0001، 0002، 0003، 0004، و غیره تا زمانی که پین مناسب را بدست آوریم. در بدترین حالت، 10000 تلاش برای یافتن ترکیب مناسب لازم خواهد بود.
Brute Force چیست ؟ | بررسی زوایای حمله بروت فورس — به زبان ساده
الگوریتم بازگشتی
الگوریتم «بازگشتی» (Recursive) مبتنی بر «بازگشت» (Recursion) است. در این نوع الگوریتم، مسئله با شکستن آن به مسائل فرعی از همان نوع و فراخوانی دوباره و دوباره ادامه مییابد تا زمانی که مسئله با کمک یک شرط پایه حل شود. برخی از مسائل رایجی که با استفاده از الگوریتمهای بازگشتی حل میشوند شامل فاکتوریل یک عدد، سری فیبوناچی، برج هانوی و غیره است.
الگوریتم تقسیم و حل: در الگوریتمهای «تقسیم و حل» (Divide and Conquer)، ایده این است که مسئله را در دو بخش حل کنیم، بخش اول مسئله را به مسائل فرعی از همان نوع تقسیم میکند. بخش دوم این است که مسئله کوچکتر را به طور مستقل حل کنیم و سپس نتیجه ترکیبی را برای ایجاد پاسخ نهایی به مسئله اضافه کنیم. برخی از مشکلات رایج که با استفاده از الگوریتمهای تقسیم و غلبه حل میشوند عبارتند از جستجوی دودویی، مرتبسازی ادغامی، مرتبسازی سریع، ضرب ماتریس استراسن و غیره.
الگوریتم های برنامه نویسی پویا: این نوع الگوریتم همچنین به عنوان تکنیک حافظهسازی شناخته میشود، زیرا در این ایده، نتیجه محاسبهشده قبلی برای جلوگیری از محاسبه مجدد آن ذخیره میشود. در برنامه نویسی پویا، مسئله پیچیده را به زیرمشکلهای کوچکتر همپوشانی تقسیم و نتیجه را برای استفاده در آینده ذخیره میکنیم. مسائلی را که میتوان با استفاده از الگوریتم برنامه ریزی پویا حل کرد، شامل «مسئله کوله پشتی» (Knapsack Problem)، زمانبندی کار وزندار، «الگوریتم فلویدوارشال» ( Floyd Warshall Algorithm) و غیره میشود.
الگوریتم حریصانه: در «الگوریتم حریصانه» (Greedy Algorithm)، راه حل، قسمت به قسمت ساخته میشود. تصمیمگیری برای انتخاب قسمت بعدی بر اساس فواید موجود در آن مرحله است. هرگز به انتخابهایی که قبلاً انجام شده است توجه نمیشود. برخی از مسايل رایجی که میتوان از طریق الگوریتم حریصانه حل کرد شامل الگوریتم کوتاهترین مسیر «دایجسترا» (Dijkstra)، الگوریتم «پریم» (Prim)، الگوریتم «کروسکال» (Kruskal)، «کدگذاری هافمن» (Huffman Coding) و غیره میشود.
الگوریتم عقبگرد: در الگوریتم «عقبگرد» (Backtracking)، مسئله به روش افزایشی حل میشود، در واقع، الگوریتم عقبگرد الگوریتم حل مسئلهای است که از رویکرد Brute Force برای یافتن خروجی مورد نظر استفاده میکند. اصطلاح عقبگرد نشان میدهد که اگر راه حل فعلی مناسب نیست، پس به عقب بروید و راهحلهای دیگر را امتحان کنید. بنابراین، در این رویکرد از بازگشت استفاده میشود. از این رویکرد برای حل مسائلی استفاده میشود که راهحلهای متعددی دارند. برخی از مسائل رایجی که میتوان از طریق الگوریتم عقبگرد حل کرد، شامل «چرخه همیلتونی» (Hamilton Cycle)، مسئله رنگآمیزی گراف، مسئله N وزیر (N Queens Problem) و غیره میشود.
الگوریتم تصادفی
«الگوریتم تصادفی» (Randomized Algorithm) الگوریتمی است که درجهای از تصادفی بودن را به عنوان بخشی از منطق یا رویه خود به کار میگیرد. الگوریتم معمولاً از بیتهای تصادفی یکنواخت به عنوان ورودی کمکی برای هدایت رفتار خود استفاده میکند، به این امید که عملکرد خوبی در «مورد متوسط» نسبت به همه انتخابهای احتمالی تصادفی تعیینشده توسط بیتهای تصادفی داشته باشد.
بنابراین یا زمان اجرا، یا خروجی (یا هر دو) متغیرهای تصادفی هستند. از جمله مسائل مهمی که میتوان با استفاده از الگوریتم تصادفی حل کرد، مسئله «مرتبسازی سریع» (Quicksort) است.
الگوریتم مرتب سازی
«الگوریتم مرتبسازی» (Sorting Algorithm) برای چیدن دادهها به صورت صعودی یا نزولی استفاده میشود. مسائل رایج مرتبسازی شامل مرتبسازی حبابی، مرتبسازی درجی (Insertion Sort)، «مرتبسازی ادغامی» (Merge Sort)، مرتبسازی انتخابی و مرتبسازی سریع میشوند.
الگوریتم جستجو
«الگوریتم جستجو» (Search Algrithm) الگوریتمی است که برای جستجوی کلید خاص در دادههای مرتب شده یا مرتب نشده استفاده میشود. برخی از الگوریتمهای رایج جستجو شامل جستجوی باینری و جستجوی خطی میشود
الگوریتم هش
«الگوریتمهای هش» (Hash Algorithm) مانند الگوریتم جستجو عمل میکنند، اما حاوی شاخصی با شناسه کلید، و در واقع به صورت جفت کلید-مقدار هستند. در هش، یک کلید به دادههای خاص تخصیص داده میشود. الگوریتمهای هش در مسائل تايید رمز عبور کاربرد دارند.
روش های ابراز الگوریتم و ارتباط آن با فلوچارت چیست ؟
برخی روشهای تبیین الگوریتم شامل موارد زیر میشود.
- زبان طبیعی: در این روش ما الگوریتم را به زبان طبیعی بیان میکنیم. درک الگوریتم به این روش سخت است.
- فلوچارت: در این روش ما الگوریتم را با نمایش گرافیکی/تصویری از آن بیان میکنیم. درک آن آسانتر از زبان طبیعی است.
- شبه کد: در این روش، الگوریتم به صورت حاشیهنویسی متن آموزشی به زبان طبیعی ساده بیان میشود که بسیار شبیه به کد واقعی است اما از آنجایی که مانند هیچ کدام از زبانهای برنامه نویسی سینتکس ندارد، نمیتوان آن را کامپایل کرد یا توسط کامپیوتر تفسیر میشود. این بهترین راه برای ابراز یک الگوریتم است زیرا حتی برای افراد غیرمستقیم با دانش برنامه نویسی در سطح مبتدی قابل درک است.
تبدیل الگوریتم به فلوچارت و قوانین ایجاد فلوچارت چیست ؟
فلوچارت نمایشی گرافیکی از یک الگوریتم است. هنگام ایجاد فلوچارت باید از برخی قوانین پیروی کرد که در زیر به به آنها اشاره شده است.
- قانون 1: سرآغاز فلوچارت باید کلمه کلیدی «شروع» باشد.
- قانون 2: بخش پایانی فلوچارت باید کلمه کلیدی «پایان» همراه باشد.
- قانون 3: تمام نمادهای موجود در فلوچارت باید با خطوط جریان و خط پیکان متصل و مرتبط شوند.
- قانون 4: نماد تصمیمگیری در فلوچارت با پیکان جهتدار همراه نیست.
تفاوت بین الگوریتم و فلوچارت چیست ؟
در جدول زیر مقایسه بین الگوریتم و فلوچارت را ملاحظه میکنید. در این جدول تفاوتها بیان شده است.
الگوریتم |
فلوچارت |
|
|
مزایای فلوچارت چیست ؟
در ادامه به برخی از مزایای فلوچارت در برنامه نویسی اشاره شده است.
- فلوچارتها راه بهتری برای بیان منطق سیستم هستند.
- فلوچارتها همانند یک راهنما در طول طراحی برنامه عمل میکنند.
- فلوچارتها به فرآیند «دیباگ کردن» (شکلهازدایی | Debugging) کمک میکنند.
- با کمک فلوچارت برنامهها به راحتی قابل تجزیه و تحلیل هستند.
- مستندات بهتری ارائه میدهد.
- به عنوان مستندسازی مناسب عمل میکنند.
- ردیابی خطاها در نرم افزار آسان است.
- به آسانی قابل درک است.
- در صورت بروز مشکل فلوچارت را میتوان در آینده مورد استفاده مجدد قرار داد.
- به ارائه منطق صحیح کمک میکند.
معایب فلوچارت چیست ؟
برخی معایب بکارگیری فلوچارت در برنامه نویسی شامل موارد زیر میشود.
- ترسیم فلوچارت برای برنامههای بزرگ و پیچیده دشوار است.
- هیچ استانداردی برای تعیین میزان جزئیات وجود ندارد.
- بازتولید فلوچارتها مشکل است.
- اصلاح فلوچارت دشوار است.
- تهیه فلوچارت هزینهبر است.
- برخی از توسعه دهندگان فکر میکنند که اتلاف وقت است.
- فرآیندهای نرم افزاری را کم میکند.
- اگر تغییرات در نرم افزار انجام شود، فلوچارت باید دوباره ترسیم شود.
فواید آموزش آکادمیک فلوچارت چیست ؟
فلوچارت در آموزش آکادمیک برنامه نویسی و علوم کامپیوتر، نقطه شروع ایدهآلی به حساب میآید. دانشجویان میتوانند «تفکر محاسباتی» (Computational Thinking) را بدون فشار پیچیدگیهای زیاد تمرین کنند. فلوچارت به دانشجویان اجازه میدهد وقتی برنامه را به بخشهای جداگانه تقسیم میکنند، آنها را بر اساس نوع (شروع/پایان، ورودی/خروجی، فرآیند، تصمیم) طبقهبندی کنند، جزئیات نامربوط را حذف کنند و مراحل را به ترتیب توسعه دهند.
دلیل اصلی آموزش فلوچارت به صورت آکادمیک در برنامه نویسی و علوم کامپیوتر، توسعه تفکر محاسباتی است. تفکر محاسباتی فرآیند حل مسئلهای است که دارای چهار بخش «تجزیه» (Decomposition)، «تشخیص یا بازشناسی الگو» (Pattern Recognition)، «انتزاع» (Abstraction) و الگوریتم است. هنگام طراحی فلوچارت، هر یک از این بخشها برای ایجاد فرصت یادگیری ارزشمند ترکیب میشوند.
- تجزیه: یک کار به بخشهای کوچکتر تقسیم میشود. هنگام ایجاد فلوچارت برای نشان دادن مراحل در برنامه، دانشجویان و دانشآموزان باید هر عمل و مبدا را به شکلها جدا کنند. آنها ورودی، خروجی و تصمیمات منطقی را به عناصر جداگانه تقسیم میکنند. سپس اینها با استفاده از خطوط جهتدار برای نشان دادن جریان اطلاعات به هم متصل میشوند.
- تشخیص الگو: تشخیص الگو در جستجوی شباهتها است. هنگام ترسیم بخشهای برنامه، دانشجویان باید به دستورالعملهایی که تکرار میشوند توجه کنند. در داخل فلوچارت، حلقههای تکرار با اتصال مرحله آخر به اول در یک زیرفرآیند، یک سری مراحل تکرار شونده را ایجاد میکنند.
- انتزاع: انتزاع صرفا بر اطلاعات مهم تمرکز دارد و جزئیات با اهمیت کمتر را نادیده میگیرد. طراحی فلوچارت دانش آموزان را تشویق میکند که انتزاعی بیندیشند. در این سازماندهنده گرافیکی، فضای محدودی در یک شکل برای توصیف هر مرحله وجود دارد. علاوه بر این، اغلب بر اساس اندازه صفحه یا سند محدودیت وجود دارد. این محدودیتها مستلزم آن است که دانش آموزان فقط بر جزئیات مربوطه تمرکز کنند.
- الگوریتمها: الگوریتمها دستورالعملهایی گام به گام هستند که راهحل مسئله را مشخص میکنند. آنها میتوانند شکلها مختلفی مانند توضیحات نوشتاری، نمادهای متوالی یا نمایش گرافیکی را به همراه داشته باشند. در مورد فلوچارت، الگوریتم به یک سازماندهنده بصری تبدیل میشود که مراحل برنامه را ترسیم میکند.
مثال فلوچارت برای یافتن عدد بزرگتر
برای دریافت دو عدد از کاربر و نمایش عدد بزرگتر، فلوچارت ترسیم میکنیم. منطق برنامه به این شکل است که دو عدد دریافتی با هم مقایسه میشوند. با اعمال یک «شرط» عدد بزرگتر را منظور میکنیم و آن را در خروجی چاپ میکنیم. در اینجا پس از ترسیم فلوچارت، کد این برنامه نیز توسعه داده شده است.
کد برنامه فوق را در زبانهای «جاوا» (Java) و «سیشارپ» (#C) توسعه دادهایم که در ادامه آمده است. کد توسعه فلوچارت فوق به زبان «جاوا» (Java) به شرح زیر است.
// Java program to find largest of two numbers
import java.util.Scanner;
public class largest {
public static void main(String args[])
{
int num1, num2, max;
/*Input two numbers*/
Scanner sc = new Scanner(System.in);
System.out.println("Enter two numbers:");
num1 = sc.nextInt();
num2 = sc.nextInt();
/*check whether a is greater than b or not*/
if (num1 > num2)
max = num1;
else
max = num2;
/*Print the largest number*/
System.out.println(max);
}
}
کد توسعه فلوچارت مربوط به مثال فوق به زبان «سیشارپ» (#C) به شرح زیر است.
// C# program to find largest of two numbers
using System;
using System.IO;
class GFG
{
static public void Main ()
{
int num1, num2, max;
/*Input two numbers*/
Console.WriteLine("Enter two numbers:");
num1 = Convert.ToInt32(Console.ReadLine());
num2 = Convert.ToInt32(Console.ReadLine());
/*check whether a is greater than b or not*/
if (num1 > num2)
max = num1;
else
max = num2;
/*Print the largest number*/
Console.WriteLine(max);
}
}
// This code is contributed by NamrataSrivastava1
در دوره آموزشی زیر، سورس کدهای الگوریتمی و کاربردی که معمولاً برای دانشجویان جدیدالورود (رشتههای فنی مهندسی) تدریس میشود یا به عنوان تمرین و پروژه از دانشجویان خواسته میشود، به صورت کامل و تفهیمی و به زبان برنامه نویسی سیشارپ آموزش داده شده است. پیشنهاد میکنیم برای یادگیری مبانی فلوچارت، از این دوره آموزشی استفاده و کدهای آموزش داده شده را به عنوان تمرین خودتان پیادهسازی کنید.
مثال فلوچارت برای یافتن اعداد اول
«اعداد اول» (Prime Numbers)، اعداد صحیح مثبتی هستند که فقط بر 1 یا خودشان بخشپذیر هستند. طبق تعریف، اعداد صحیح منفی، 0 و 1 اعداد اول در نظر گرفته نمیشوند. به عنوان مثال، 5 یک عدد اول است زیرا باقیمانده ۵ بر ۱ و باقیمانده ۵ بر ۵ برابر با صفر است، اما اگر 5 را بر هر عدد صحیح دیگری تقسیم کنید، باقیمانده، مقداری غیرصفر خواهد بود.
فلوچارت نشان داده شده در بالا تابعی را توصیف میکند که در آن عددی مثل i در ورودی دریافت میشود و در خروجی، اول بودن یا نبودن آن بازگردانده میشود. تابع مربوطه، «IsThisNumberPrime» نامگذاری شده است. این تابع ابتدا بررسی میکند که عدد ورودی یک عدد صحیح باشد. سپس بررسی میکند تا مطمئن شود که عدد ورودی منفی، 0 یا 1 نیست. اعداد صحیح منفی، 0 و 1 طبق تعریف اول در نظر گرفته نمیشوند.
تابع سپس سعی میکند عدد ورودی را بر i تقسیم کند، که در آن .. ,i = 2, 3, 4, 5، تا ببیند آیا حاصل تقسیم برابر با صفر است یا خیر. اگر باقیمانده غیر صفر باشد، عدد اول نیست. هنگامی که i برابر با عدد ورودی باشد، این بررسی تکرار شونده متوقف میشود. شما به تابع یک عدد میدهید و خروجی اگر عددی اول باشد، برابر با «بله» و اگر عددی غیراول باشد برابر با «خیر» خواهد بود.
مثال فلوچارت برای محاسبه فاکتوریل
فرض کنید N عدد صحیح و برابر با ورودی فلوچارت باشد. این فلوچارت دارای حلقهای است که با M = 1 شروع میشود و در هر تکرار مقدار M افزایش میيابد تاجایی که مقدار M برابر با N بشود. در اینجا !N با محاسبه هر ضرب در آن به دست میآید که یک روش Brute Force محسوب میشود.
نمودارها در مهندسی نرم افزار با استفاده از فلوچارت چیست ؟
برخی نمودارهای مورد استفاده در توسعه نرم افزارهای کامپیوتری شامل موارد زیر میشوند.
- «زبان مدلسازی یکپارچه» (Unified Modeling Language | UML)
- نمودارهای «ناسی اشنایدرمن» (Nassi-Shneiderman)
- نمودار «دراکون» (DRAKON)
زبان مدلسازی یکپارچه
«زبان مدلسازی یکپارچه» (Unified Modeling Language | UML) زبان مدلسازی توسعهای و همه منظوره در مهندسی نرمافزار به حساب میآید که هدف آن ارائه راهی استاندارد برای تجسم و مصورسازی طراحی سیستم است.
نمودارهای ناسی اشنایدرمن
نمودارهای «ناسی اشنایدرمن» (Nassi-Shneiderman) که نام دیگر آن «استراکتوگرام» (Structogram) است در برنامه نویسی کامپیوتری ساختیافته استفاده میشود. این نمودار از روی نام ابداع کنندگان آن «ایزاک ناسی» (Isaac Nassi) و «بن اشنایدرمن» (Ben Shneiderman) اقتباس شده است که آن را در سال 1972 در SUNY-Stony Brook توسعه دادند.
نمودارهای دراکون
«دراکون» (DRAKON) زبان برنامهنویسی «تصویری» (Visual) و مدلسازی بصری الگوریتمی رایگان و منبع باز است. دراکون روشی یکپارچه برای نمایش فلوچارتهایی با هر پیچیدگی ارائه میدهد که خواندن و درک آن آسان است.
ابزارهای آنلاین برای ترسیم فلوچارت چیست ؟
در زیر تعدادی از ابزارهای رایگان و آنلاین برای ترسیم فلوچارت فهرست شده است.
- Diagrams.net [+]
- SmartDraw [+]
- Visme [+]
- Canva [+]
- Lucidchart [+]
- miro [+]
- Zen Flowchart [+]
- creately [+]
- Visual Paradigm [+]
کاربرد های فلوچارت چیست ؟
فلوچارتها، فراتر از برنامه نویسی کامپیوتری، کاربردهای زیادی در زمینههای عمومی و مختلف آموزشی، بازاریابی، کسب و کار، تولید صنعتی مهندسی و دیگر موارد دارند که در زیر به آنها اشاره شده است.
کاربردهای عمومی
برخی استفادههای عمومی فلوچارت در زیر فهرست شده است.
- مستندسازی و تحلیل فرآیند
- استانداردسازی فرآیند برای کارایی و کیفیت
- ارتباط فرآیندی برای آموزش و درک سایر بخشهای سازمان
- شناسایی گلوگاهها، موارد و مراحل غیرضروری در فرآیندها و بهبود آن
کاربردهای آموزشی
کاربردهای آموزشی فلوچارت در ادامه فهرست شده است.
- برنامه ریزی درسی و الزامات تحصیلی
- ایجاد طرح درس یا ارائه شفاهی
- سازماندهی پروژه گروهی یا فردی
- نشان دادن روند قانونی یا مدنی مانند ثبت نام رایدهندگان
- برنامه ریزی و ساختاربندی نوشتن خلاقانه، مانند اشعار یا شعر
- نمایش توسعه کاراکتر در ادبیات و فیلم
- نمایش جریان الگوریتمها یا معماهای منطقی
- درک فرآیند علمی مانند چرخه «کربس» (Krebs)
- تشریح یک فرایند آناتومی مانند هضم
- ترسیم علائم و درمان بیماریها
- به اشتراک گذاری فرضیهها و نظریهها مانند سلسله مراتب نیازهای مزلو
فروش و بازاریابی
کاربرد فلوچارت در فروش و بازاریابی را در ادامه ملاحظه میکنید.
- ترسیم جریان یک نظرسنجی
- نمودار روند فروش
- برنامهریزی استراتژیهای تحقیق
- نمایش جریانهای ثبت نام
- انتشار سیاستهای ارتباطی مانند طرح روابط عمومی اضطراری
کسب و کار
کاربرد فلوچارت در کسب و کار در زیر فهرست شده است.
- درک فرآیندهای سفارش و تدارکات
- نمایش و ارائه وظایف یا کارهای روزمره کارمندان
- درک مسیرهایی که کاربران در وبسایت یا فروشگاه طی میکنند.
- توسعه طرح تجاری یا طرح تحقق محصول
- مستندسازی فرآیندی و آمادهسازی برای ممیزی
- مستندسازی فرآیند آماده سازی برای فروش یا ادغام
تولید صنعتی
کاربرد فلوچارت در تولیدات صنعتی به قرار زیر است.
- نمایش ترکیب فیزیکی یا شیمیایی یک محصول
- نمایش فرآیند تولید از ابتدا تا انتها
- کشف و حل ناکارآمدیها در فرآیند تولید یا تدارکات
مهندسی
برخی کاربردهای فلوچارت در مهندسی در زیر آمده است.
- نمایش جریانهای فرآیندی یا جریانهای سیستمی
- طراحی و به روز رسانی فرآیندهای شیمیایی و کارخانهای
- ارزیابی چرخه عمر سازه
- ترسیم جریان مهندسی معکوس
- نمایش فاز طراحی و نمونه اولیه یک ساختار یا محصول جدید
دلایل استفاده از فلوچارت چیست ؟
گاهی اوقات تجسم گرافیکی موثرتر از توصیف با کلمات است. این کاری است که فلوچارتها برای شما انجام میدهند. فلوچارتها یک فرآیند را به وضوح از طریق نمادها توضیح میدهند. علاوه بر این، فلوچارتها خلاصه جریان فرآیند را در یک نگاه به شما نشان میدهند. در زیر برخی از دلایل برجسته برای استفاده از فلوچارت آورده شده است.
رسم فلوچارت در اکسل (+ دانلود فیلم آموزش گام به گام)
مستندات فرآیند و مواد آموزشی
یکی از کاربردهای رایج فلوچارتها ایجاد مستندات فرآیند است. این کاربرد با الزامات نظارتی و مدیریت کیفیت (که در ادامه توضیح داده میشود) همپوشانی دارد. بسیاری از کسب و کارها از فلوچارتها برای مستندات خود استفاده میکنند. این مستندات شامل رویههای سطح بالا تا دستورالعملهای کاری با جزئیات و سطح پایین میشود.
ممکن است فکر کنید که این امر عمدتاً در مورد سازمانهای بزرگ صدق میکند، اما شرکتهای کوچک میتوانند تا حد زیادی از فلوچارت کردن فرآیندهای خود سود ببرند. شرکتهای کوچک باید زیرک و منظم باشند. استاندارد کردن فرآیندهای آنها راهی عالی برای رسیدن به این هدف است. مواد آموزشی اغلب با استفاده از فلوچارتها ایجاد میشوند زیرا از نظر بصری به راحتی قابل درک هستند.
مدیریت گردش کار و بهبود مستمر
برای اطمینان از اینکه نیازهای مشتریان خود را برآورده میکنید، باید فرآیندهای کسب و کار خود را کنترل کنید. اولین گام برای مدیریت گردش کار این است که وضعیت فعلی فرآیندهای خود را با ایجاد یک «فلوچارت As-Is» تعریف کنید. این به شما امکان میدهد فرآیندهای خود را از نظر «اتلاف» (Waste) و «ناکارآمدی» (Inefficiency) تجزیه و تحلیل کنید. پس از اینکه بخشهایی را برای بهبود فرآیند شناسایی کردید، میتوانید فلوچارتهای جدیدی برای مستندسازی «فرآیندهای نابتر» (Leaner Processes) ایجاد کنید.
رسم فلوچارت در پاورپوینت (PowerPoint) + دانلود فیلم آموزش رایگان
برنامه نويسي
فناوری اطلاعات تأثیر زیادی بر استفاده و گسترش فلوچارتها در قرن بیستم داشته است. در حالی که برخی کارشناسان از آنها در مدیریت کیفیت حمایت میکرند، متخصصان در دنیای پردازش داده از آنها برای تجلی منطق برنامه نویسی خود استفاده میکردند. فلوچارتها پایه اصلی «برنامه نویسی رویهای» (Procedural Programming) بودند، با این حال، با ظهور «برنامه نویسی شی گرا» (Object Oriented Programming) و ابزارهای مختلف مدلسازی، علاوه بر فلوچارت، این ابزارهای جدید نیز برای برنامه نویسی بکار گرفته میشوند.
با این حال، حتی در محدوده برنامه نویسی شی گرا، منطق برنامه پیچیده را میتوان به طور موثر با استفاده از نمودار جریان مدل کرد. علاوه بر این، ترسیم نمودار تجربه کاربری در حین حرکت در برنامه، پیشنیازی ارزشمند قبل از طراحی رابط کاربری است. بنابراین فلوچارتها هنوز جای خود را در دنیای برنامه نویسی دارند.
برنامهنویسی شیءگرا در پایتون — یک راهنمای مقدماتی برای مبتدیان
الزامات نظارتی و مدیریت کیفیت
فرآیندهای تجاری شما ممکن است مشمول الزامات قانونی باشد که مستلزم آن است که رویههای حسابداری شما به وضوح تعریف و مستند شده باشد. راهی آسان برای انجام این کار، ایجاد نمودارهای جریان حسابداری برای تمام فرآیندهای حسابداری است.
به طور مشابه، سازمان شما ممکن است تحت الزامات صدور گواهینامه برای سیستمهای مدیریت کیفیت باشد. در چنین محیطهایی، فلوچارتها نه تنها مفید هستند، بلکه در بندهای خاصی عملاً الزامی هستند.
مراحل مدیریت پروژه بر اساس PMBOK + دانلود قالب فارسی جریان فرآیندها
انواع فلوچارت چیست ؟
در ادامه به برخی از انواع فلوچارت اشاره میکنیم.
- «نمودار خط شنا» (Swimlane Diagram): برای مشخص کردن اینکه چه کسی در فرآیندهای بین تیمی چه کاری انجام میدهد.
- «نمودار جریان کار» (Workflow Flowchart): برای مستندسازی گردش کارها، که اغلب شامل وظایف، اسناد و اطلاعات در دفاتر میشود.
- «نمودار جریان زنجیره فرآیند محور» (EPC | Event-Driven Process Chain): برای مستندسازی یا برنامه ریزی فرآیند تجاری مورد استفاده قرار میگیرد
- «فلوچارت مشخصات و زبان توصیف» (Specification and Description Language | SDL): برای طوفان فکری الگوریتمهای کامپیوتری با استفاده از سه جزء اساسی تعریف سیستم، بلوک و فرآیند مورد استفاده قرا میگیرد.
- «نمودار جریان داده» (DFD | Data Flow Diagram): برای ترسیم جریان اطلاعات برای هر سیستم یا فرآیند بکار میرود
- «نمودار جریان فرآیند» (PFD | Process Flow Diagram): برای نشان دادن روابط بین اجزای اصلی در یک کارخانه صنعتی به کار میرود.
- «مدل و نماد فرآیند کسب و کار» (BPMN | Business Process Model and Notation): برای مدلسازی مراحل یک فرآیند تجاری برنامهریزی شده مورد استفاده قرار میگیرد.
نحوه برنامه ریزی و ترسیم اولیه فلوچارت چیست ؟
در ادامه به برخی نکات برای ترسیم فلوچارت اولیه اشاره شده است. نکات نام برده شده میتوانند این فرایند را برای شما تسهیل کنند.
- هدف و محدوده خود را مشخص کنید : با توجه به این که چه کاری را قصد دارید به سرانجام برسانید، برای دستیابی به هدف، آیتمهای درست را با نقطه شروع و پایان مناسب منظور کنید. در بررسی خود به اندازه کافی دقیق باشید، اما نمودارها را ساده ترسیم کنید تا با مخاطبان مورد نظر خود ارتباط برقرار کنید.
- وظایف را به ترتیب زمانی مشخص کنید: این ممکن است شامل صحبت با شرکتکنندگان، مشاهده یک فرآیند یا بررسی اسناد موجود باشد. ممکن است مراحل را به صورت یادداشت بنویسید یا ترسیم نموداری را شروع کنید.
- کارکردها را بر اساس نوع و شکل مربوطه سازماندهی کنید: که شامل فرآیند، تصمیم، داده، ورودی یا خروجی میشود.
- نمودار خود را بکشید: ترسیم را یا با دست یا با استفاده از برنامهها و اپلیکیشنهای ویژه این کار انجام دهید.
- درستی فلوچارت خود را تأیید کنید: مراحل را با افرادی که در این فرآیند شرکت میکنند مرور کنید. روند آن را دقیق بررسی کنید تا مطمئن شوید که هیچ آیتم مهمی را از قلم نینداخته باشید.
نکات بیشتر در مورد فلوچارت
- مخاطبان خود را در ذهن داشته باشید و جزئیات نمودار خود را به آنها منتقل کنید. ارتباطات شفاف هدف کلیدی فلوچارتها است.
- اگر فرآیندی که شما نمودار آن را ترسیم میکنید شامل تیمها یا بخشهای مختلفی میشود، از نمودار «خط شنا» (Swimlane) استفاده کنید تا به وضوح مسئولیتها و واگذاریها را مشخص کرده باشید.
- برای ویرایش نمودار خود و ایجاد جریان منطقی آن از «رابطهای» (Connector) «درون صفحه» (On Page) یا رابطهای «خارج از صفحه» (Off Page) استفاده کنید. این کار به شما امکان میدهد نمودار را به صفحات جداگانه تقسیم کنید در حالی که جریان نمودار به درستی و به قوت خود پابرجا است.
جمعبندی
در این مقاله به این موضوع پرداختیم که که فلوچارت چیست و چه کاربردی در برنامه نویسی دارد. در ابتدا مروری بر تاریخچه فلوچارت داشتیم و سپس نمادهای به کار رفته و متداول در فلوچارت را بررسی کردیم. بعد از آن کاربرد فلوچارت در برنامه نویسی و در ترسیم نمودارهای مهندسی نرم افزار را بررسی کردیم. این بخش شامل مباحثی چون تفاوت بین فلوچارت و الگوریتم، قوانین توسعه فلوچارت، مزایا، معایب و فواید آموزش آکادمیک فلوچارت همراه با برخی مثالها و مسائل حل شده است. در ادامه کاربردها و انواع فلوچارت به صورت عمومی و در کسب و کارها مورد بررسی قرار گرفت. در پایان با نگاهی بر روال ترسیم فلوچارت اولیه، به برخی نکات کاربردی به منظور ترسیم فلوچارت اشاره کردیم.