قسمت اول رُ کامل متوجه شدم و ممنون
در مورد استفاده از } { ها، یعنی اگه ما چند تا دستور داشته باشیم تو یه برنامه باید بعد هر if و شرطی که تو پرانتز قرار دادم یه
} باز کنم و بعد اتمام دستور cout همون دستور باید
{ رُ ببندم، درست متوجه شدم؟؟
اگه درست متوجه نشدم میشه با یه مثال توضیح بدید؟
برای چند دستور داخل برنامه نه، اما اگه چند دستور داخل if یا for و ... دارید، بله، الزاما باید از { و } استفاده کنید. البته این مختص if نیست، اغلب دستورات شرطی و حلقه ای
مثل if و for و do while و while می توانند یک یا چند دستور رو داخل بدنه خودشون اجرا کنند، اگه داخل بدنه شون فقط یک دستور باشه، نیازی به { و } نیست، اختیاری ئه،
اما برای چند دستور حتما باید { و } نوشته بشه وگرنه یا فقط دستور اول شامل میشه، یا با خطای کامپایلر مواجه می شوید.
فرضا شرط می کنیم که اگر x از 1 بزرگتر بود، یک واحد از x کم کن. کم کردن یک واحد از x با دستور --x قابل انجامه که یک دستور بیشتر نیست، پس استفاده از { و } برای
کد if ای که --x رو داخلش می نویسیم اختیاری ئه، می توانیم قرار بدهیم یا ندهیم :
اما وقتی صحبت از چند دستور داخل if باشه، دیگه وجود { و } الزامی ئه، اگر بخواهیم با همون شرط قبلی هم از x یک واحد کم کنیم و هم مقدار x رو چاپ کنیم،
از { و } برای مشخص کردن محدوده دو دستور استفاده می نماییم :
کد:
if (x > 1)
{
x--;
cout << x;
}
اگه اون { و } را از قلم بندازید، اولین دستوری که بعد از ) ئه if قرار گرفته با شرط if اجرا خواهد شد، اما دستورات بعدی ربطی به if و شرط اش ندارند و همواره اجرا می شوند :
کد:
if (x > 1)
x--;
cout << x;
اگه جای دستوری که بعد از ( ئه if نوشته میشه، کاراکتر ; درج بشه، انتهای دستور if همونجا خواهد شد، یعنی if بدون دستور برای اجرا.
پس دستورات بعدی ربطی به if و شرط اش ندارند و همواره اجرا می شوند :
کد:
if (x > 1);
x--;
cout << x;
اینکه داخل محدوده { و } چند تا کاراکتر ; درج بشه، شاید بسته به موقعیت شون روی دستورات بین { و } تاثیری بگذارند، اما برای دستوری مثل if که قبل از } نوشته شده
بی تاثیر اند :
کد:
if (x > 1)
{
;
;;x--;;
;
;cout << x;;
;;
;
}
مهم اینه که جایی که قراره یک دستور بدون { و } یا چند دستور با { و } نوشته بشه، نباید کاراکتر ; قرار بگیره مگر اینکه واقعا بخواهید دستوری برای اون بخش اجرا نشه.
کد زیر وقتی مقدار x را نمایش میده که شرط برقرار نباشه، یعنی برابر 5 یا از 5 کوچکتر باشه :
کد:
if (x > 5)
x--;
else
cout << x;
حالا اگر بعد از else یک کاراکتر ; قرار بگیره، به این مفهومه که ما برای else نمی خواهیم دستور خاصی اجرا کنیم، cout << x تحت هر شرایطی اجرا میشه،
چه x از 5 بزرگتر باشه و چه نباشه :
کد:
if (x > 5)
x--;
else;
cout << x;
یعنی عملا با این کد فرقی نداره :
کد:
if (x > 5)
x--;
cout << x;
بعد از اون else نیازی به { و } نبود، چون cout << x یک دستور بیشتر نیست. اگر بخواهیم وقتی x از 5 بزرگتر نیست، هم مقدارش رو نمایش بدهیم و هم مقدارش
رو یک واحد افزایش بدهیم، باید از { و } استفاده کنیم، چون کد درون else دیگه یک دستور نیست، دو دستور ئه :
کد:
if (x > 5)
x--;
else
{
x++;
cout << x;
}