فهرست سرفصل‌های ++C
خانه (HOME) مقدمه (Intro) شروع کار (Get Started) نحوه نگارش (Syntax) دستورات (Statements) چاپ متن (Print Text) چاپ اعداد (Print Numbers) خط های جدید (New Lines) کامنت ها (Comments) اعلان متغیرها (Declare Variables) متغیرهای متعدد (Multiple Variables) شناسه ها (Identifiers) ثابت ها (Constants) نمونه های دنیای واقعی (Real-Life Examples) ورودی کاربر (User Input) انواع داده پایه (Basic Data Types) اعداد (Numbers) بولی ها (Booleans) کاراکترها (Characters) رشته ها (Strings) کلیدواژه auto (The auto Keyword) نمونه عملی (Real-Life Example) عملگرها (Operators) حسابی (Arithmetic) انتساب (Assignment) مقایسه (Comparison) منطقی (Logical) اولویت (Precedence) مقدمه رشته ها (Strings Intro) به هم چسباندن (Concatenation) اعداد و رشته ها (Numbers and Strings) طول رشته (String Length) دسترسی به رشته ها (Access Strings) کاراکترهای ویژه (Special Characters) ورودی کاربرِ رشته ها (User Input Strings) حذف فضای نام (Omitting Namespace) رشته های سبک C (C-Style Strings) ریاضی (Math) مقادیر بولی (Boolean Values) عبارات بولی (Boolean Expressions) نمونه عملی (Real-Life Example) شرط ها If...Else (If...Else) else (else) else if (else if) اگر کوتاه (Short hand if..else) تودر تو (Nested if) عملگرهای منطقی (Logical Operators) سوییچ (Switch) حلقه While (While Loop) حلقه Do/While (Do/While Loop) نمونه های عملی (Real-Life Examples) حلقه For (For Loop) حلقه های تو در تو (Nested Loops) حلقه foreach (The foreach Loop) نمونه های عملی (Real-Life Examples) شکستن/ادامه (Break/Continue) آرایه ها (Arrays) آرایه ها و حلقه ها (Arrays and Loops) حذف اندازه آرایه (Omit Array Size) گرفتن اندازه آرایه (Get Array Size) نمونه عملی (Real-Life Example) آرایه های چندبعدی (Multidimensional Arrays) ساختارها (Structures) گزاره شمار/Enums (Enums) ارجاع ها (References) ساخت ارجاع (Create References) آدرس حافظه (Memory Address) اشاره گرها (Pointers) ایجاد اشاره گر (Create Pointers) ارجاع زدایی (Dereferencing) تغییر اشاره گرها (Modify Pointers) مدیریت حافظه (Memory Management) new و delete (new and delete) توابع (Functions) پارامترهای تابع (Function Parameters) پارامتر/آرگومان ها (Parameters/Arguments) پارامتر پیش فرض (Default Parameter) پارامترهای متعدد (Multiple Parameters) مقادیر بازگشتی (Return Values) ارسال با ارجاع (Pass By Reference) ارسال آرایه ها (Pass Arrays) ارسال ساختارها (Pass Structures) نمونه عملی (Real-Life Example) بارگذاری هم نام (Function Overloading) بازگشت/بازگشتی (Recursion) لامبدا (Lambda) برنامه نویسی شی گرا OOP (OOP) کلاس ها/اشیاء (Classes/Objects) متدهای کلاس (Class Methods) سازنده ها (Constructors) سازنده سربار (Constructor Overloading) مشخصه های دسترسی (Access Specifiers) کپسوله سازی (Encapsulation) توابع دوست (Friend Functions) ارث بری (Inheritance) ارث بری چندسطحی (Multilevel Inheritance) ارث بری چندگانه (Multiple Inheritance) مشخصه های دسترسی در ارث بری (Access Specifiers) چندریختی (Polymorphism) توابع مجازی (Virtual Functions) قالب ها (Templates) فایل ها (Files) تاریخ (Date) اشکال زدایی (Debugging) استثناها (Exceptions) اعتبارسنجی ورودی (Input Validation) ساختارهای داده و STL (Data Structures & STL) وکتورها (Vectors) لیست (List) پشته ها (Stacks) صف ها (Queues) دک (Deque) مجموعه ها (Sets) نقشه ها (Maps) الگوریتم ها (Algorithms) فضای نام ها (Namespaces) پروژه ها (Projects) جمع دو عدد (Add Two Numbers) اعداد تصادفی (Random Numbers)
++C

++C — تودر تو (Nested if)

آخرین بروزرسانی: 1404/08/04

تودر تو (Nested if)

گاهی یک شرط داخل شرط دیگر لازم داریم. به این می گوییم «تودر تو». یعنی اول یک شرط چک می شود. سپس فقط اگر درست بود، شرط بعدی بررسی می شود. مثل نگهبانِ اول، بعد نگهبانِ دوم.

شرط تودر تو چیست؟

در شرط تودر تو، if داخل if قرار می گیرد. بنابراین شرط دوم فقط وقتی اجرا می شود که شرط اول درست باشد.

if (condition1) {
  // code to run if condition1 is true
  if (condition2) {
    // code to run if both condition1 and condition2 are true
  }
}

مشاهده در ادیتور

نمونه ساده از تودر تو

اول x را می سنجیم. سپس، اگر درست بود، y را می سنجیم.

int x = 15;
int y = 25;
if (x > 10) {
  cout << "x is greater than 10\n";
  if (y > 20) {
    cout << "y is also greater than 20\n";
  }
}

مشاهده در ادیتور

نمونه نزدیک به زندگی

اول سن را چک می کنیم. سپس تابعیت را می سنجیم. نتیجه مرحله ای است.

int age = 20;
bool isCitizen = true;
if (age >= 18) {
  cout << "Old enough to vote.\n";
  if (isCitizen) {
    cout << "And you are a citizen, so you can vote!\n";
  } else {
    cout << "But you must be a citizen to vote.\n";
  }
} else {
  cout << "Not old enough to vote.\n";
}

مشاهده در ادیتور

نکته: می توانید چند if را تودر تو کنید؛ اما زیاد عمقی نشود. خوانایی سخت می شود.

هشدار: برای تصمیم های پیچیده، ترکیب else if و else معمولاً شفاف تر است.

تمرین مرحله ای

  1. یک متغیر (Variable) کلاس بساز: grade و absences.
  2. اگر grade >= 90، پیام «عالی» بده.
  3. سپس اگر absences > 3، پیام «ولی غیبت زیاد» هم چاپ کن.

برای مقایسه، صفحات شرط ها If...Else و اگر کوتاه را هم ببین. این ها کنار هم بهتر جا می افتند.

جمع بندی سریع

  • تودر تو یعنی if داخل if.
  • شرط دوم وابسته به شرط اول است.
  • برای مراحل وابسته عالی است.
  • زیاده روی، خوانایی را کم می کند.
  • پیچیدگی زیاد را با else if بساز.