آموزش برنامه نویسی

1405/8/1
 
امروز
1

فلوچارت چیست و چه کاربردی در برنامه‌ نویسی دارد؟

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

مثلاً فرض کن میخوای برنامه‌ای بنویسی که یک عدد رو بگیره و مشخص کنه زوج هست یا فرد. قبل از اینکه حتی یک خط کد بنویسی، میتونی مسیر کار رو مشخص کنی: عدد رو بگیر، شرط رو بررسی کن، نتیجه رو نمایش بده و تمام. همین مسیر ساده وقتی با چند شکل و فلش نمایش داده بشه، تبدیل به یک فلوچارت میشه.

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

فلوچارت چیست؟

فلوچارت (Flowchart) یک روش تصویری برای نشون دادن مراحل انجام یک کار، فرایند یا الگوریتمه. توی فلوچارت، هر مرحله با یک شکل مشخص نمایش داده میشه و فلش‌ها هم نشون میدن که از هر مرحله باید به کدوم مرحله بعدی بریم.

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

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

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

فلوچارت در برنامه‌نویسی یعنی چه؟

در برنامه‌نویسی، فلوچارت کمک میکنه قبل از نوشتن کد بفهمیم دقیقاً قراره چه اتفاقی بیفته و برنامه چه مسیرهایی رو طی کنه. مثلاً فرض کن بخشی از یک سایت فقط باید برای افراد ۱۸ سال به بالا نمایش داده بشه. منطق برنامه میتونه این‌طوری باشه:

همین منطق ممکنه داخل کد با یک دستور if نوشته بشه، اما وقتی اون رو به شکل فلوچارت می‌کشیم، مسیر «بله» و «خیر» خیلی واضح‌تر جلوی چشممون قرار میگیره.

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

نمادهای فلوچارت و معنی هرکدوم

اگه برای اولین بار یک فلوچارت ببینی، احتمالاً با چند شکل مختلف مثل مستطیل، لوزی، بیضی و فلش روبه‌رو میشی. هرکدوم از این شکل‌ها معنی مشخصی دارن و کمک میکنن با یک نگاه بفهمیم توی هر مرحله از فرایند چه اتفاقی میفته.

لازم نیست از همون اول تمام نمادهای فلوچارت رو حفظ کنی. برای شروع، شناختن چند نماد اصلی کاملاً کافیه؛ چون بیشتر فلوچارت‌های ساده برنامه‌نویسی رو میشه با همین‌ها رسم کرد.

نماد شروع و پایان (Start / End)

این نماد نقطه شروع یا پایان فلوچارت رو نشون میده و معمولاً به شکل بیضی یا یک مستطیل با گوشه‌های کاملاً گرد رسم میشه. مثلاً در ابتدای فلوچارت عبارت Start و در انتهای اون End قرار میگیره.

نماد پردازش (Process)

مستطیل برای نشون دادن یک کار یا عملیات استفاده میشه. مثلاً:

total = price * count

یا «محاسبه مبلغ نهایی سفارش». هر وقت در یک مرحله قراره عملیاتی انجام بشه، معمولاً از این نماد استفاده میکنیم.

نماد ورودی و خروجی (Input / Output)

این نماد معمولاً به شکل متوازی‌الاضلاع رسم میشه و برای دریافت اطلاعات یا نمایش نتیجه به کار میره. مثلاً: Enter your age یا: Show result پس هر جا برنامه قراره چیزی از کاربر بگیره یا نتیجه‌ای رو نمایش بده، احتمالاً با این نماد روبه‌رو میشیم.

نماد تصمیم‌گیری (Decision)

لوزی یکی از مهم‌ترین نمادهای فلوچارته و زمانی استفاده میشه که برنامه باید یک شرط رو بررسی کنه و بر اساس نتیجه، یکی از چند مسیر رو ادامه بده. مثلاً: age >= 18 ? از این مرحله ممکنه دو مسیر خارج بشه:

شرط‌های if در برنامه‌نویسی نمونه خیلی خوبی برای درک این نماد هستن.

فلش یا مسیر جریان (Flowline)

فلش‌ها مشخص میکنن مراحل فلوچارت با چه ترتیبی اجرا میشن و بعد از هر مرحله باید به کجا بریم. مثلاً: Start ← دریافت عدد ← بررسی شرط ← نمایش نتیجه ← End

بدون فلش‌ها مشخص نیست هر مرحله به کدوم قسمت بعدی متصل میشه.

اتصال‌دهنده (Connector)

گاهی فلوچارت بزرگ میشه و اتصال مستقیم بخش‌های مختلف با فلش باعث شلوغ شدن نمودار میشه. در چنین شرایطی میتونیم از Connector استفاده کنیم.

Connector معمولاً یک دایره کوچک با یک حرف یا عدد داخله. مثلاً دو نقطه از فلوچارت که داخل هر دو حرف A قرار گرفته، به هم مرتبط هستن. این کار کمک میکنه مسیرهای طولانی رو بدون کشیدن فلش‌های زیاد و درهم نمایش بدیم.

فلوچارت چه کاربردی در برنامه‌نویسی داره؟

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

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

طراحی منطق برنامه قبل از کدنویسی

یکی از مهم‌ترین کاربردهای فلوچارت اینه که قبل از نوشتن کد، مسیر حل مسئله رو مشخص کنیم. مثلاً اگه بخوای یک سیستم ورود کاربر طراحی کنی، قبل از اینکه Controller، API یا کدهای مربوط به Login رو بنویسی، میتونی مسیر رو اینطوری مشخص کنی:

وقتی این مسیر رو به شکل فلوچارت می‌بینی، راحت‌تر میتونی تصمیم بگیری کد باید چه ساختاری داشته باشه.

نمایش شرط‌ها و مسیرهای مختلف

توی خیلی از برنامه‌ها فقط یک مسیر مستقیم نداریم. برنامه بر اساس شرایط مختلف تصمیم میگیره که چه کاری انجام بده. مثلاً:

یا:

فلوچارت کمک میکنه این مسیرها رو قبل از نوشتن شرط‌های if و else واضح ببینیم.

پیدا کردن ایرادهای منطقی

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

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

توضیح منطق برنامه به دیگران

همیشه قرار نیست فقط خودمون کدی که نوشتیم رو ببینیم. ممکنه بخوایم منطق یک بخش از سیستم رو برای برنامه‌نویس دیگه، طراح، مدیر پروژه یا حتی مشتری توضیح بدیم. در چنین شرایطی، یک فلوچارت ساده خیلی وقت‌ها از چند صفحه توضیح یا چند ده خط کد قابل فهم‌تره. مثلاً برای توضیح فرایند ثبت سفارش میشه مسیر کلی رو به شکل زیر نمایش داد:

انتخاب محصول ← افزودن به سبد خرید ← ثبت اطلاعات ← پرداخت ← تایید سفارش

بدون اینکه لازم باشه شخص مقابل وارد جزئیات کدنویسی بشه.

مستندسازی بخش‌های مهم سیستم

فلوچارت میتونه بخشی از مستندات پروژه هم باشه. مثلاً برای فرایندهایی مثل:

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

چطور فلوچارت رسم کنیم؟

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

۱. اول مشخص کن قراره چه مسئله‌ای رو حل کنی

قبل از کشیدن هر شکلی، باید دقیقاً بدونی فلوچارت قراره چه چیزی رو نشون بده. مثلاً:

هرچقدر مسئله از اول واضح‌تر باشه، رسم فلوچارت هم راحت‌تر میشه.

۲. ورودی و خروجی رو پیدا کن

بعد مشخص کن برنامه چه اطلاعاتی دریافت میکنه و در آخر چه نتیجه‌ای باید بده. مثلاً برای تشخیص زوج یا فرد:

این مرحله کمک میکنه ابتدا و انتهای مسیر رو بهتر مشخص کنی.

۳. مراحل حل مسئله رو به ترتیب بنویس

هنوز لازم نیست چیزی رسم کنی. اول مراحل رو خیلی ساده و به ترتیب بنویس.

  1. شروع
  2. دریافت عدد
  3. بررسی زوج یا فرد بودن
  4. نمایش نتیجه
  5. پایان

این لیست در واقع اسکلت اولیه فلوچارتته.

۴. شرط‌ها و تصمیم‌ها رو پیدا کن

حالا ببین کجای مسیر باید یک تصمیم گرفته بشه. در مثال زوج یا فرد، باید بررسی کنیم:

number % 2 == 0 ?

اینجا دو حالت داریم:

پس این مرحله باید با نماد Decision یا همون شکل لوزی نمایش داده بشه.

۵. برای هر مرحله نماد مناسب انتخاب کن

حالا میتونیم مراحل رو به شکل‌های فلوچارت تبدیل کنیم.

لازم نیست برای یک فلوچارت ساده از تعداد زیادی نماد مختلف استفاده کنی. همون نمادهای اصلی که در بخش قبل دیدیم برای بیشتر مثال‌های ابتدایی کافیه.

۶. مراحل رو با فلش به هم وصل کن

بعد از قرار دادن شکل‌ها، باید مسیر اجرای مراحل رو با فلش مشخص کنی.

Start ← دریافت عدد ← بررسی شرط ← نمایش نتیجه ← End

در قسمت‌های شرطی هم بهتره روی مسیرها مشخص کنی هر فلش مربوط به کدوم نتیجه است؛ مثلاً «بله» و «خیر». تا جای ممکن مسیر فلوچارت رو مرتب نگه دار تا کاربر بتونه بدون دنبال کردن فلش‌های درهم، روند اجرا رو بفهمه.

۷. در آخر مسیرها رو تست کن

 

وقتی فلوچارت تموم شد، یک بار خودت نقش برنامه رو بازی کن و از Start تا End جلو برو. مثلاً عدد 8 رو وارد کن:

حالا عدد 7 رو امتحان کن:

با همین تست ساده میتونی بفهمی آیا تمام حالت‌های مسئله رو در فلوچارت در نظر گرفتی یا نه.

نکته مهم اینه که هدف فلوچارت، پیچیده‌تر کردن مسئله نیست. برعکس، باید کمک کنه مسیر حل مسئله رو ساده‌تر و واضح‌تر ببینی. اگه فلوچارتت انقدر شلوغ شده که خودت هم برای پیدا کردن مسیرها مشکل داری، احتمالاً وقتشه اون رو ساده‌تر کنی یا به چند بخش کوچیک‌تر تقسیمش کنی.

 

 

 

20  نفر این خبر را پسندیده اند. این خبر را