مبانی کامپیوتر · فصل ۰۵
بخش خوانده‌شده۰/ ۶
الگوریتم و فلوچارت · منبع: 05.pdf (۴ اسلاید)

الگوریتم و فلوچارت

زبان مشترک انسان و ماشین: چگونه مسئله را به گام‌های دقیق و پایان‌پذیر تبدیل کنیم و آن را به‌شکل نقشه‌ای قابل‌اجرا بکشیم.

پیش‌نیاز برنامه‌نویسی C++ در فصل بعد · نمودارها برداری و متن‌خوان هستند.

۶بخش۶جدول۱قطعه‌کد≈۹ دقیقهمطالعهمنبع05.pdf
ALG-05 · ماشین الگوریتم
شروعx,y را بخوانs ← x + ys را چاپ کن
از الگوریتم به فلوچارت، از فلوچارت به کد. algorithm → flowchart → program
۵.۱
بخش ۵.۱

الگوریتم چیست؟

What is an algorithm

الگوریتم مجموعه‌ای از دستورالعمل‌ها برای حل یک مسئله است که چهار شرط اساسی دارد:

  1. ۱به زبان دقیق و غیرمبهم گفته شود؛ هر گام فقط یک تفسیر داشته باشد.
  2. ۲جزئیات کامل حل مسئله را داشته باشد؛ هیچ گام مهمی حذف نشود.
  3. ۳ترتیب مراحل مشخص باشد؛ جای گام‌ها قابل جابه‌جایی نباشد.
  4. ۴شرط خاتمهٔ عملیات مشخص باشد؛ الگوریتم پس از تعداد متناهی گام پایان یابد.
تفاوت الگوریتم و برنامه: الگوریتم مستقل از زبان و ماشین است؛ برنامه، پیاده‌سازی الگوریتم در یک زبان خاص (مانند C++) و برای یک ماشین خاص است. یک الگوریتم می‌تواند چند برنامهٔ متفاوت داشته باشد.
۵.۲
بخش ۵.۲

مراحل حل یک مسئله

Problem-solving pipeline

مسیر استاندارد از صورت مسئله تا برنامهٔ کارکننده — همان روندی که در طول درس بارها تکرار می‌کنیم.

  1. ۱فهم مسئله: داده‌های ورودی چیست؟ خروجی مطلوب کدام است؟ شرط‌ها و محدودیت‌ها چه هستند؟
  2. ۲طراحی الگوریتم: نوشتن گام‌های دقیق و شماره‌گذاری‌شده؛ انتخاب نام متغیرهای معنادار.
  3. ۳ردگیری دستی (trace): اجرای الگوریتم روی یک مثال عددی کوچک و نوشتن مقدار متغیرها در هر گام — کشف خطا پیش از نوشتن کد.
  4. ۴ترسیم فلوچارت: تبدیل گام‌های الگوریتم به شکل‌های استاندارد و پیکان‌های جریان.
  5. ۵نوشتن برنامه: پیاده‌سازی در زبان اصلی (در این درس C++).
  6. ۶ترجمه و اجرا: کامپایل، اجرا و مقایسهٔ خروجی با انتظار.
  7. ۷آزمون و اصلاح: امتحان حالت‌های مرزی (ورودی صفر، منفی، بزرگ) و اصلاح الگوریتم.
تحلیلطراحیردگیریفلوچارتکدنویسیاجراآزموناشکال‌زدایی
۵.۳
بخش ۵.۳

مثال و جدول ردگیری

Worked example & trace table

مسئله: الگوریتمی بنویسید که دو عدد را دریافت کند، مجموع آن‌ها را محاسبه و چاپ کند. نام متغیرها: x و y برای ورودی‌ها و s برای حاصل‌جمع.

گامدستور
۰شروع
۱x و y را بخوان
۲s ← x + y
۳s را چاپ کن
۴پایان

ردگیری گام‌به‌گام (trace)

برای x = 3 و y = 4 در هر گام مقادیر متغیرها را می‌نویسیم:

گامxysخروجی
ورود34تعریف‌نشده—
۲ (انتساب)۳۴7—
۳ (چاپ)۳۴۷۷
چرا ردگیری روی کاغذ؟ چون خطاهای منطقی (جای اشتباه یک گام، شرط نادرست، حلقهٔ بی‌پایان) در کاغذ ارزان و سریع کشف می‌شوند و در کد گران و کند. این مهارت در همهٔ فصل‌های برنامه‌نویسی تمرین می‌شود.
همان الگوریتم در C++
#include <iostream>
int main() {
    int x, y, s;
    std::cin >> x >> y;   // گام ۱: خواندن
    s = x + y;            // گام ۲: انتساب
    std::cout << s;       // گام ۳: چاپ
    return 0;             // گام ۴: پایان
}
ورودی ۳ و ۴ ← خروجی ۷
۵.۴
بخش ۵.۴

بیان الگوریتم با شکل‌ها: فلوچارت

Flowcharts

تعریف گرافیکی الگوریتم را فلوچارت گویند. فلوچارت یک نقشه است و الگوریتم آدرسی که در آن نوشته شده؛ این دو مکمل یکدیگرند. ابتدا الگوریتم نوشته می‌شود، سپس به فلوچارت تبدیل می‌شود.

شروع / پایان ورودی / خروجی انتساب / محاسبه s = x + y شرط بیضی — سر و ته نمودار متوازی‌الاضلاع — خواندن یا چاپ مستطیل — پردازش لوزی — تصمیم دو‌راهی ۱ اتصال‌دهنده جهت جریان توضیح یا یادداشت
نمادهای استاندارد فلوچارت: بیضی برای شروع و پایان، متوازی‌الاضلاع برای ورودی و خروجی، مستطیل برای محاسبه و انتساب، لوزی برای شرط، و پیکان برای جهت جریان.

نماد هر کار

نمادکاربردنکته
بیضی (terminal)شروع و پایان الگوریتمهر فلوچارت دقیقاً یک شروع و یک پایان دارد
متوازی‌الاضلاع (input/output)خواندن ورودی، چاپ خروجیداخل آن با فعل «بخوان» یا «چاپ کن» نوشته می‌شود
مستطیل (process)محاسبه و انتسابمثل s ← x + y
لوزی (decision)شرط دو‌راهییک خروجی «درست» و یک خروجی «نادرست» با برچسب
اتصال‌دهنده (connector)ادامهٔ نمودار در جای دیگر صفحهبرای جلوگیری از خطوط شلوغ؛ به‌کارگیری در حلقه‌ها
ابزار ترسیم: در منبع درسی از نرم‌افزار Flowgorithm برای رسم فلوچارت‌ها استفاده می‌شود. جریان کار: نوشتن الگوریتم ← ترسیم فلوچارت ← تبدیل به کد.
۵.۵
بخش ۵.۵

نمونه‌های کامل

Complete examples

سه نمونهٔ کامل: یک الگوریتم سادهٔ خطی، یک الگوریتم با شرط، و یک الگوریتم با حلقه. مقایسهٔ این سه، اسکلت همهٔ برنامه‌های بعدی شماست.

الف) مجموع دو عدد — الگوریتم خطی

شروع x , y را بخوان s = x + y s را چاپ کن پایان مثال عددی x = 3 y = 4 s = 7 متغیرها x y s
فلوچارت مجموع دو عدد: شروع ← خواندن x و y ← محاسبهٔ s=x+y ← چاپ s ← پایان. کادر نقطه‌چین سمت راست، ردگیری عددی همان مثال (۳ و ۴ ← ۷) را نشان می‌دهد.

ب) بزرگ‌ترین دو عدد — الگوریتم با شرط

شروع x , y را بخوان x > y ? بله خیر y را چاپ کن x را چاپ کن پایان در لوزی، هر شرط دو راه دارد
فلوچارت شرطی: پس از خواندن دو عدد، شرط x > y بررسی می‌شود؛ مسیر «بله» مقدار x را چاپ می‌کند و مسیر «خیر» مقدار y را. سپس هر دو مسیر به «پایان» می‌رسند — ساختار انتخاب دو‌شاخه‌ای.

ج) مجموع اعداد ۱ تا n — الگوریتم با حلقه

شروع n را بخوان i=1 , s=0 i <= n ? بله خیر s=s+i , i=i+1 بازگشت به شرط پایان خروج از حلقه: شرط نادرست شود شمارنده افزایش می‌یابد ادامهٔ مسیر
فلوچارت تکرار: پس از خواندن n و مقداردهی اولیه، تا وقتی شرط i ≤ n درست است بدنه اجرا می‌شود (افزودن به مجموع و افزایش شمارنده) و دوباره به شرط برمی‌گردیم؛ با نادرست شدن شرط، خروج از حلقه و ادامهٔ مسیر.
ساختارنماد کلیدیمعادل در کد
ترتیبیمستطیل‌های پشت سر هم، بدون انشعابدستورهای پیاپی در main
انتخابی (شرط)لوزی با دو خروجیif / else
تکرار (حلقه)بازگشت مسیر به لوزیِ شرطwhile یا for

در فلوچارت، نماد لوزی نشان‌دهندهٔ چیست؟

  • خواندن ورودی
  • محاسبه و انتساب
  • شرط و تصمیم دو‌راهی
  • شروع و پایان
نمایش پاسخ
۵.۶
بخش ۵.۶

به‌روزرسانی با دانش امروز

2026 update

مفاهیم الگوریتم و فلوچارت تغییر نکرده‌اند؛ آنچه عوض شده، زبان توصیف، ابزار ترسیم و معیار سنجش کیفیت است.

مفهومدر اسلایدهای منبعامروز (۲۰۲۶)
تعریف الگوریتمچهار شرط: دقیق، کامل، مرتب، دارای شرط خاتمههمان چهار شرط در منابع امروزی به‌شکل پنج ویژگی صورت‌بندی می‌شود: ورودی، خروجی، روشنی، متناهی‌بودن و کارآمدی؛ و برای برنامه‌های بزرگ به بحث تحلیل پیچیدگی (مرتبهٔ زمانی و حافظه) افزوده می‌شود.
زبان بیان الگوریتممتن فارسی و شماره‌گذاری‌شده؛ سپس فلوچارتشبه‌کد (pseudocode) و زبان پایتون به‌عنوان «شبه‌کد اجراپذیر»؛ فلوچارت هنوز برای آموزش ساختار و گفت‌وگوی تیمی به‌کار می‌آید.
استاندارد نمادهانمادهای کلاسیک فلوچارت (بیضی، مستطیل، لوزی)نمادها همان‌اند و در استاندارد ISO 5807 تعریف شده‌اند؛ در صنعت نمودارهای UML (نمودار فعالیت، توالی، حالت) و BPMN برای فرایندهای کسب‌وکار جای آن‌ها را در مستندات فنی گرفته‌اند.
ابزار ترسیمFlowgorithm روی رایانهٔ شخصیابزار مرورگری، نمودار متنی با Mermaid و PlantUML (قابل نگه‌داری در Git)، draw.io، Excalidraw، و تولید خودکار نمودار از سوی دستیارهای هوش مصنوعی.
ردگیری و اشکال‌زداییاجرای دستی روی کاغذ (trace)ردگیری دستی همچنان مهارت پایه است، اما امروز با دیباگر (نقاط توقف، اجرای گام‌به‌گام، دیدن متغیرها)، آزمون یکا و ابزارهای پویش خطا کار می‌کنیم.
معیار کیفیت«کار می‌کند» به‌عنوان معیار کافیکیفیت = درستی + کارآمدی. دو الگوریتم درست می‌توانند مرتبهٔ زمانی متفاوت داشته باشند؛ مثلاً یافتن عدد در فهرست مرتب با جست‌وجوی دودویی در حداکثر حدود ۲۰ گام برای یک میلیون عدد، در برابر تا یک میلیون گام در جست‌وجوی خطی.
منبع الگوریتمالگوریتم را انسان می‌نویسدبخشی از الگوریتم‌ها امروز توسط یادگیری ماشین ساخته می‌شوند: مدل، «قواعد» را از داده استخراج می‌کند. اما همچنان باید ورودی، خروجی، شرط خاتمه و سنجهٔ درستی را انسان تعریف کند — همان چهار شرط این فصل.
جمع‌بندی فصل: الگوریتم، دستور دقیق و متناهی برای حل مسئله است؛ باید روشن، کامل، مرتب و پایان‌پذیر باشد. مسیر کار: فهم مسئله ← الگوریتم ← ردگیری ← فلوچارت ← برنامه ← آزمون. فلوچارت زبان تصویری الگوریتم است و سه ساختار اصلی را نشان می‌دهد: ترتیب، انتخاب، تکرار. این سه ساختار، اسکلت فصل بعد (برنامه‌نویسی C++) است.
نقشهٔ پوشش منبع — کدام بخش این صفحه از کدام اسلاید استخراج شده است.
بخش این صفحهاسلایدهای منبع
۵.۱ الگوریتم چیستاسلاید ۲
۵.۲ مراحل حل مسئلهاسلاید ۲
۵.۳ مثال و ردگیریاسلاید ۳
۵.۴ فلوچارت و نمادهااسلاید ۴
۵.۵ نمونه‌های کاملافزودهٔ سرویراستار (نمونه‌های شرط و حلقه)
۵.۶ به‌روزرسانی‌هاافزودهٔ سرویراستار (دانش ۲۰۲۶)
جمع‌بندی تعاملی

پازل مفاهیم فصل

Chapter puzzle — match the concepts

همهٔ مفاهیم این فصل، یک‌جا و به‌شکل یک بازی: هر مفهوم را انتخاب کنید و به تعریف درستش وصل کنید — جفت درست همان لحظه سبز می‌شود و به آسمانِ جدول می‌پرد، جفت اشتباه با یک جرقه باز می‌شود. وقتی همهٔ جفت‌ها کامل شد، «بررسی پاسخ‌ها» را بزنید تا بالن‌ها بترکند و در آسمانِ جدول به هم گره بخورند. هر وقت خواستید پاسخ‌نامه را ببینید، دکمهٔ «نمایش پاسخ‌ها» آن را کامل نشان می‌دهد.

🧩 جدول تطبیق مفاهیم — ۱۶ جفت ۰ از ۱۶

مفاهیم

تعریف‌ها

یک مفهوم را انتخاب کنید، سپس تعریفش را بزنید.