برای روشن کردن ترمینال، کلیک کن یا هر کلیدی را بزن

پرش به محتوای اصلی
>_

بر پایه جزوهٔ واقعی ++C

آموزش گام‌به‌گام ### به زبان فارسی

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

ACTIVITYنقشهٔ فعالیت — ۱۶ هفتهٔ اخیردرس کامل کن تا نقشه روشن شود
main.cppg++ -Wall -std=c++17C++17
1// یادگیری C++ از صفر، قدم‌به‌قدم
2#include <iostream>
3
4int main() {
5 int knowledge = 0;
6 while (learning) {
7 knowledge++; // هر روز یک درس
8 }
9}
0
درس کامل
0
بخش آموزشی
0
تمرین عملی
0
دسته‌بندی
// 01

سرفصل‌های دوره

مبانی و مقدمات

الگوریتم، فلوچارت، متغیرها، انواع داده، عملگرها، کاراکتر‌ها و ASCII، عملگر‌های مقایسه‌ای و منطقی، if/else، switch و حلقه for — از صفر برای تازه‌کار‌ها.

۱۰ درس۰ تکمیل‌شده0%
>_درس بعدی: الگوریتم و فلوچارت چیست؟

حلقه‌ها و کنترل جریان

حلقه‌های for و while، تمرین‌های عملی، فاکتوریل، اعداد اول، فیبوناچی، کار با ارقام عدد و محاسبات پیشرفته ریاضی.

۶ درس۰ تکمیل‌شده0%
>_درس بعدی: مرور حلقه for و معرفی while

آرایه‌ها و رشته‌ها

آرایه‌های یک‌بعدی و دو‌بعدی، هیستوگرام، رشته‌ها در ⁦C++⁩، الگوهای نجومی، مرتب‌سازی و توابع کتابخانه‌ای رشته.

۶ درس۰ تکمیل‌شده0%
>_درس بعدی: آرایه‌های یک‌بعدی

گرافیک و ماتریس

مقدمه گرافیک در ⁦C++⁩، رسم اشکال و چندضلعی‌ها، و عملیات ماتریسی شامل ضرب، ماتریس مثلثی و اعداد تصادفی.

۳ درس۰ تکمیل‌شده0%
>_درس بعدی: مقدمه گرافیک در ⁦C++⁩

توابع و اشاره‌گر‌ها

تعریف و فراخوانی توابع، ارجاع، ارسال آرایه به تابع، اشاره‌گرها، حافظه پویا، struct و توابع بازگشتی.

۵ درس۰ تکمیل‌شده0%
>_درس بعدی: توابع: تعریف، فراخوانی و مثال‌ها

نقشه راه دوره

۰٪ تکمیل شده
  1. ۱
    مبانی و مقدمات۱۰ درسادامه از اینجاست

    الگوریتم، فلوچارت، متغیرها، انواع داده، عملگرها، کاراکتر‌ها و ASCII، عملگر‌های مقایسه‌ای و منطقی، if/else، switch و حلقه for — از صفر برای تازه‌کار‌ها.

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

    ۰٪
  2. ۲
    حلقه‌ها و کنترل جریان۶ درس

    حلقه‌های for و while، تمرین‌های عملی، فاکتوریل، اعداد اول، فیبوناچی، کار با ارقام عدد و محاسبات پیشرفته ریاضی.

    درس بعدی: مرور حلقه for و معرفی while

    ۰٪
  3. ۳
    آرایه‌ها و رشته‌ها۶ درس

    آرایه‌های یک‌بعدی و دو‌بعدی، هیستوگرام، رشته‌ها در ⁦C++⁩، الگوهای نجومی، مرتب‌سازی و توابع کتابخانه‌ای رشته.

    درس بعدی: آرایه‌های یک‌بعدی

    ۰٪
  4. ۴
    گرافیک و ماتریس۳ درس

    مقدمه گرافیک در ⁦C++⁩، رسم اشکال و چندضلعی‌ها، و عملیات ماتریسی شامل ضرب، ماتریس مثلثی و اعداد تصادفی.

    درس بعدی: مقدمه گرافیک در ⁦C++⁩

    ۰٪
  5. ۵
    توابع و اشاره‌گر‌ها۵ درس

    تعریف و فراخوانی توابع، ارجاع، ارسال آرایه به تابع، اشاره‌گرها، حافظه پویا، struct و توابع بازگشتی.

    درس بعدی: توابع: تعریف، فراخوانی و مثال‌ها

    ۰٪
// 02

همه دروس

01

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

قدم به قدم با اولین زبان مشترک انسان و کامپیوتر

مقدماتی۱۸ دقیقه
02

متغیر‌ها و انواع داده

جعبه‌های حافظه، انواع داده و چرایی مقداردهی اولیه

مقدماتی۲۰ دقیقه
03

اولین برنامه ⁦C++⁩

ساختار برنامه، Hello World، cout و cin، کامنت‌ها و کامپایل

مقدماتی۱۶ دقیقه
04

عملگر‌ها و عبارات

از جمع و تفریق تا تقسیم اعشاری، باقی‌مانده و ترجمه فرمول‌های ریاضی به کد ⁦C++⁩

مقدماتی۲۵ دقیقه
05

عملگر‌های افزایش و انتساب مرکب

از ++ و -- تا +=، -=، *=، /=، %=: نوشتن خلاصه‌تر و خواناتر برای شمارش و انباشت

مقدماتی۲۰ دقیقه
06

کاراکتر‌ها و کدهای ASCII

از نوع char تا کدهای اسکی، تبدیل حروف بزرگ/کوچک و خواندن کلید بدون Enter با getch

مقدماتی۲۵ دقیقه
07

عملگر‌های مقایسه‌ای و دستور if

از == تا if/else: اولین گام در مسیر تصمیم‌گیری در برنامه

مقدماتی۲۰ دقیقه
08

عملگر‌های منطقی و if تودرتو

ترکیب شرط‌ها با &&، || و ! و ساختار‌بندی تصمیمات پیچیده

متوسط۲۵ دقیقه
09

دستور switch و case

ساختار تمیز برای انتخاب چندحالته — از ماشین‌حساب تا کلید‌های جهت‌نما

متوسط۱۸ دقیقه
10

حلقه for — شروع تکرار

اولین قدم در دنیای حلقه‌ها: از چاپ اعداد تا فاکتوریل و شمارش زوج/فرد

مقدماتی۲۰ دقیقه
11

مرور حلقه for و معرفی while

از مجموع اعداد تا شمارش ارقام: گام نخست با حلقه‌های تکرار

مقدماتی۱۴ دقیقه
12

تمرین‌های عملی حلقه while

از چاپ اعداد شرطی تا ماشین حساب تعاملی و میانگین‌گیری از اعداد خاص

مقدماتی۱۶ دقیقه
13

فاکتوریل، اعداد اول و فیبوناچی

سه الگوریتم کلاسیک که هر برنامه‌نویسی باید بداند

متوسط۱۸ دقیقه
14

کار با ارقام عدد: مجموع، معکوس و پالیندروم

تکنیک‌های کلاسیک پردازش ارقام با عملگر‌های % و /

متوسط۲۰ دقیقه
15

محاسبات پیشرفته: π، sin، cos و ب.م.م

سری‌های نامتناهی لایبنیتس و تیلور، الگوریتم اقلیدسی و تجزیه اول

پیشرفته۲۵ دقیقه
16

حلقه‌های تودرتو و الگوهای نجومی

رسم مثلث، مربع، لوزی، ضربدری و صلیب با ستاره‌ها به کمک حلقه‌های تودرتو

متوسط۳۵ دقیقه
17

آرایه‌های یک‌بعدی

تعریف، مقداردهی، پیمایش، یافتن ماکزیمم و شمارش تکرار‌ها در آرایه

متوسط۴۰ دقیقه
18

هیستوگرام و آرایه‌های کاراکتری

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

متوسط۳۵ دقیقه
19

رشته‌ها (string) در ⁦C++⁩

std::string، cin در برابر getline، شمارش کلمات، تبدیل حروف، یافتن زیررشته و استخراج اعداد

متوسط۴۵ دقیقه
20

آرایه‌های دو‌بعدی

ماتریس، قطر اصلی و فرعی، پیمایش و الگوهای مثلثی

متوسط۴۰ دقیقه
21

مرتب‌سازی: Bubble Sort و Selection Sort

دو الگوریتم کلاسیک مرتب‌سازی آرایه‌ها به همراه پیاده‌سازی صحیح و تحلیل پیچیدگی

متوسط۳۵ دقیقه
22

توابع کتابخانه‌ای رشته C (string.h)

آشنایی با strlen، strcpy، strcat و strcmp به همراه اصلاح اشتباهات رایج جزوه

متوسط۳۰ دقیقه
23

مقدمه گرافیک در ⁦C++⁩

آشنایی با کتابخانه graphics.h، سیستم مختصات، رنگ‌ها و رسم دایره از روی قطر

پیشرفته۴۰ دقیقه
24

رسم اشکال و چندضلعی‌ها

دایره محاطی، تقسیم مثلث، چندضلعی منتظم، دایره‌های تصادفی و هم‌مرکز

پیشرفته۴۰ دقیقه
25

ماتریس‌ها و عملیات ماتریسی

پیمایش، ضرب، یافتن ماکزیمم سطر، ماتریس مثلثی و تولید تصادفی

پیشرفته۴۵ دقیقه
26

توابع: تعریف، فراخوانی و مثال‌ها

از مفهوم تابع تا پیاده‌سازی فاکتوریل، عدد اول و ترکیب

متوسط۴۵ دقیقه
27

ارجاع، ارسال آرایه به تابع و معکوس رشته

متغیر‌های ارجاعی، تابع swap و ارسال آرایه‌های یک و دو بُعدی

متوسط۴۵ دقیقه
28

اشاره‌گر‌ها و حافظه پویا

از مفهوم اشاره‌گر تا تخصیص پویا و اشاره‌گر به اشاره‌گر

پیشرفته۶۰ دقیقه
29

struct و ساختار‌ها

گروه‌بندی داده‌ها، آرایه ساختار‌ها و توابع عضو

پیشرفته۵۰ دقیقه
30

توابع بازگشتی (Recursion)

از فاکتوریل تا فیبوناچی، توان و مجموع — با تحلیل پشته

پیشرفته۶۰ دقیقه
// 03

یک نگاه به محتوای دوره

حلقه while
// lesson 21
// شمارش تعداد ارقام یک عدد
int n, count = 0;
cin >> n;
while (n > 0) {
    n = n / 10;
    count++;
}
cout << count;
تابع بازگشتی
// lesson 40
// فاکتوریل با بازگشت
long long fact(int n) {
    if (n <= 1) return 1;   // شرط پایه
    return n * fact(n - 1); // بازگشت
}
اشاره‌گر و حافظه پویا
// lesson 38
// آرایه پویا با new/delete
int* arr = new int[n];
for (int i = 0; i < n; i++)
    cin >> arr[i];
delete[] arr; // آزادسازی
ارجاع و Swap
// lesson 37
// جابجایی با ارجاع
void swap(int& a, int& b) {
    int t = a;
    a = b;
    b = t;
}
// 04

سوالات متداول

این دوره برای چه سطحی مناسب است؟
این دوره از سطح مقدماتی (حلقه‌ها) شروع می‌شود و تا مباحث پیشرفته‌ای مثل اشاره‌گرها و توابع بازگشتی ادامه می‌یابد. اگر برنامه‌نویسی ⁦C++⁩ را تازه شروع کرده‌اید یا می‌خواهید مباحث پایه را مرور کنید، این دوره مناسب شماست. هر درس با سطح دشواری (مقدماتی/متوسط/پیشرفته) علامت‌گذاری شده است.
آیا برای استفاده از این دوره نیاز به نصب نرم‌افزار خاصی دارم؟
برای خواندن محتوا و دیدن کدها فقط به یک مرورگر وب نیاز دارید. ساده‌ترین راه اجرا، همان ویرایشگر داخلی همین سایت است — دکمهٔ «اجرا در ویرایشگر» روی هر کد درس، بدون نصب هیچ‌چیز. راه‌های دیگر: کامپایلرهای آنلاین رایگان (مثل OnlineGDB یا Compiler Explorer) یا یک کامپایلر ⁦C++⁩ محلی مثل GCC یا Clang.
آیا پیشرفت من ذخیره می‌شود؟
بله. وقتی درسی را به‌عنوان «تکمیل‌شده» علامت می‌زنید، این اطلاعات به‌صورت محلی در مرورگر شما ذخیره می‌شود (localStorage). نیازی به ثبت‌نام یا حساب کاربری نیست. اگر مرورگر را ببندید و دوباره باز کنید، پیشرفت شما حفظ می‌شود. برای پاک کردن پیشرفت، از دکمه «پاک کردن پیشرفت» در فوتر استفاده کنید.
چطور می‌توانم سریع به درس خاصی بروم؟
برای جستجوی سریع، کلید Ctrl + K (یا Cmd + K در مک) را فشار دهید تا Command Palette باز شود. سپس نام یا موضوع درس را تایپ کنید. همچنین می‌توانید از فهرست درس‌ها در نوار کناری سمت راست استفاده کنید.
می‌توانم لینک مستقیم یک درس را به دیگران بدهم؟
بله. هر درس یک آدرس اختصاصی دارد (مثل /lesson/first-cpp-program). می‌توانید با دکمه اشتراک‌گذاری (آیکون Share در هدر هر درس) لینک مستقیم آن درس را کپی کنید و با دیگران به اشتراک بگذارید. وقتی کسی روی لینک کلیک کند، همان درس مستقیماً باز می‌شود.
آیا کدهای این دوره قابل اعتماد هستند؟
محتوای این دوره بر اساس یک جزوه آموزشی تهیه شده، اما در طول تبدیل، تمام اشتباهات کد و توضیحات اصلاح شده‌اند. کدها به استاندارد مدرن ⁦C++⁩ بازنویسی شده‌اند (شامل هدرهای کامل، int main، مقداردهی اولیه متغیر‌ها و...). هر جا باگ اصلی وجود داشته، نسخه اشتباه و اصلاح‌شده کنار هم نمایش داده شده‌اند.
// 05

نکات ایمنی C++

main.cppg++ -Wall main.cpp
warning:متغیر مقداردهی‌نشده— متغیر‌ها را قبل از استفاده مقداردهی کنید؛ متغیر مقداردهی‌نشده رفتار نامشخص (Undefined Behavior) دارد.
warning:نشت حافظه— هر new باید با delete (یا delete[] برای آرایه) همراه شود — وگرنه حافظه در طول اجرا نشت می‌کند.
warning:دسترسی خارج از بازه آرایه— اندیس آرایه را کنترل کنید یا از std::vector استفاده کنید؛ خواندن/نوشتن خارج از بازه، خطرناک‌ترین خطای آرایه‌هاست.
warning:نادیده گرفتن هشدار کامپایلر— کامپایل را با -Wall انجام دهید و هشدارها را جدی بگیرید؛ هر هشدار معمولاً یک باگ بالقوه است.
warning:include نکردن هدر— برای هر تابع کتابخانه‌ای، هدر مناسب را include کنید (مثل <cmath> برای sqrt) — بدون آن، کد کامپایل نمی‌شود.
warning:حلقه بی‌نهایت— در while مطمئن شوید شرط پایان برقرار می‌شود؛ فراموش کردن گام افزایش، رایج‌ترین علت توقف‌نکردن حلقه است.
note:این‌ها همان هشدارهایی هستند که کامپایلر واقعی هم به شما می‌دهد؛ عادت به خواندنشان کنید.

درباره این دوره

این دوره بر پایه جزوه‌ای ++C نوشته شده است. اشتباهات کد و توضیحات جزوه اصلاح و کدها به استاندارد مدرن ++C (int main()، #include کامل، مقداردهی اولیهٔ متغیر‌ها و...) بازنویسی شده‌اند. هر جا باگ اصلی وجود داشته، نسخهٔ اشتباه و اصلاح‌شده را کنار هم گذاشته‌ایم تا تفاوتشان را ببینید. محمد این دوره را آماده کرده است.

~ % ./start --lesson-01

اولین برنامه‌ات را همین‌جا بنویس

نه نصبی لازم است، نه ثبت‌نام — اولین درس همین حالا توی مرورگر شما باز می‌شود.

از درس اول شروع کن

جستجوی سریع در درس‌ها

نام درس، موضوع یا کلمه کلیدی را بنویسید و با Enter به آن بروید