شرط مردودی و قبولی

Mili+

New Member
وقتتون بخیر
من چند تا سوال در حد مبتدی و کارای کلاسمو دارم
میتونید کمکم کنید؟
سوال ها در حد مبتدیه و من تا مقدار زیادیشو مینویسم ولی یه سریاشو نمیتونم درست انجام بدم، امکانش هست کمکم کنید؟

مثال:
برنامه ای بنویسید که نمره را از ورودی دریافت کنید و مشخص کند که قبول شده یا خیر؟

بعد include ها و void main اینطور ادامه دادم:
float x;
cin>>x;
if x<10;
cout<<"x مردود";
else
cout<<"x قبول";
getch()}


میخواستم ببینم درست انجامش دادم؟
 

the_king

مدیرکل انجمن
وقتتون بخیر
من چند تا سوال در حد مبتدی و کارای کلاسمو دارم
میتونید کمکم کنید؟
سوال ها در حد مبتدیه و من تا مقدار زیادیشو مینویسم ولی یه سریاشو نمیتونم درست انجام بدم، امکانش هست کمکم کنید؟

مثال:
برنامه ای بنویسید که نمره را از ورودی دریافت کنید و مشخص کند که قبول شده یا خیر؟

بعد include ها و void main اینطور ادامه دادم:
float x;
cin>>x;
if x<10;
cout<<"x مردود";
else
cout<<"x قبول";
getch()}


میخواستم ببینم درست انجامش دادم؟

سوالات رو در مبحث های جداگانه مطرح کنید، مبحثی که مربوط به ارائه یک سری آموزش خاص ئه را برای یک سوال جدید و نامربوط بکار نبرید.

پست به مبحث جدید منتقل گردید.

1) مقدار شرط ها باید داخل پارانتز ( ) قرار بگیرند، if x < 10 باید بصورت (if (x < 10 نوشته شود.
2) اگر بعد از شرط یک کاراکتر ; درج شود، بلوک شرط بسته می شود و روی دستورات بعدی تاثیر نخواهد داشت،
فرضا در شرط زیر اگر x کوچکتر از 10 باشد پیغامی نمایش داده می شود :
کد:
    if (x < 10)
        cout << "Mardood";
اما با درج کاراکتر ; بعد از شرط (x < 10) دیگر if روی دستور بعدی تاثیری نخواهد داشت و پیغام همواره نمایش داده می شود،
چه x کوچکتر از 10 باشد و چه نباشد :
کد:
    if (x < 10);
        cout << "Mardood";

کد:
    float x;
    cin >> x;
    if (x < 10)
        cout << "Mardood";
    else
        cout << "Ghabool";
    getch();
 

Mili+

New Member
سوالات رو در مبحث های جداگانه مطرح کنید، مبحثی که مربوط به ارائه یک سری آموزش خاص ئه را برای یک سوال جدید و نامربوط بکار نبرید.

پست به مبحث جدید منتقل گردید.

1) مقدار شرط ها باید داخل پارانتز ( ) قرار بگیرند، if x < 10 باید بصورت (if (x < 10 نوشته شود.
2) اگر بعد از شرط یک کاراکتر ; درج شود، بلوک شرط بسته می شود و روی دستورات بعدی تاثیر نخواهد داشت،
فرضا در شرط زیر اگر x کوچکتر از 10 باشد پیغامی نمایش داده می شود :
کد:
    if (x < 10)
        cout << "Mardood";
اما با درج کاراکتر ; بعد از شرط (x < 10) دیگر if روی دستور بعدی تاثیری نخواهد داشت و پیغام همواره نمایش داده می شود،
چه x کوچکتر از 10 باشد و چه نباشد :
کد:
    if (x < 10);
        cout << "Mardood";

کد:
    float x;
    cin >> x;
    if (x < 10)
        cout << "Mardood";
    else
        cout << "Ghabool";
    getch();

اول از همه ممنون از پاسختون، لطف کردید

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

مورد دیگه اینکه من احساس کردم نباید تاپیک بی مورد باز کنم ، بهمین منظور اونجا سوالمو مطرح کردم! سری بعد انجامش نمیدم :rose:

توضیحاتتون واضح بود فقط من 2 تا سوال دیگه داشتم!

اول اینکه گفتید شرط باید تو ( ) قرار بگیره و بعدش ; قرار نگیره چون همواره پیغام اول نمایش داده میشه، میخواستم بدونم اگه دستورات تو در تو هم باشن به هیچ وجه بعد شرط ها ; قرار نمیگیره؟ درسته؟؟
حتی اگه چندین و چند شرط باشه بعد هیچ if و شرطی ; قرار نمیگیره!؟

و سوال دوم اینکه: اگه تو این مورد شخصی که میخواد نمره وارد کنه، نمره بالای 20 وارد کنه و من بخوام یه پیغام خطا یا هشدار نشونش بدم باز باید شرط تعریف کنم؟
چون از 10 تا چند رُ، براش تعیین نکردم!
اگه بخوام این مورد رُ اضافه کنم کدوم قسمت با چه دستوری باید اضافه کنم ؟

ممنون از زحمتتون :rose:
 

the_king

مدیرکل انجمن
دستوراتی مثل for و if بعد از پارانتز ها شون کد اجرایی شون قرار می گیره، که یا باید یک دستور باشه، یا یک بلوک کد که بین { و } قرار می گیره.
اگر بعد از پارانتز-بسته کاراکتر ; قرار بگیره، مفهومش تمام شدن دستور ئه و ارتباط اش با دستورات بعدی قطع خواهد شد.

این دو تا if تو در تو اند و فقط زمانی پیغام نمایش داده میشه که هم x کوچکتر از 10 باشه و هم x برابر y باشه :
کد:
    if (x < 10)
        if (x == y)
            cout << "yes";
در دستور بالا if دوم برای if اول حکم دستور اجرایی رو داره. دستور cout هم برای if دوم حکم دستور اجرایی رو داره.

این دو تا if هم تو در تو اند، مشابه بالایی :
کد:
    if (x < 10)
        if (x == y)
        {
            cout << "y";            
            cout << "e";            
            cout << "s";            
        }
در دستور بالا if دوم برای if اول حکم دستور اجرایی رو داره. سه دستور cout هم برای if دوم حکم بلوک کد رو داره.

اما این دو تا if تو در تو نیستند، پیغام yes به شرط تساوی x و y نمایش داده می شود، مستقل از اینکه x کوچکتر از 10 باشد یا نباشد :
کد:
    if (x < 10);
        if (x == y)
        {
            cout << "y";            
            cout << "e";            
            cout << "s";            
        }
در دستور بالا if اول دستور اجرایی نداره. به همین جهت ارتباطی با if دوم نخواهد داشت.

و شکل واقعی آن چنین است :
کد:
    if (x < 10);
    if (x = y)
    {
        cout << "y";            
        cout << "e";            
        cout << "s";            
    }

در هر بخش که قراره دستوری نوشته بشه می توانید با یک if یا if else اجرا رو به مسیر های متفاوت تفکیک کنید :
کد:
    if (x < 10)
        cout << "Mardood";
    else
        if (x <= 20)
            cout << "Ghabool";
        else
            cout << "Error";
جاهایی که یک دستور اجرایی بیشتر نیست الزامی به استفاده از { و } نیست، اما برای اینکه مسیر ها رو بهتر درک کنید استفاده از { و } توصیه میشه :
کد:
    if (x < 10)
    {
        cout << "Mardood";
    }
    else
    {
        if (x <= 20)
        {
            cout << "Ghabool";
        }
        else
        {
            cout << "Error";
        }
    }
 

Mili+

New Member
قسمت اول رُ کامل متوجه شدم و ممنون :rose:
در مورد استفاده از } { ها، یعنی اگه ما چند تا دستور داشته باشیم تو یه برنامه باید بعد هر if و شرطی که تو پرانتز قرار دادم یه } باز کنم و بعد اتمام دستور cout همون دستور باید { رُ ببندم، درست متوجه شدم؟؟
اگه درست متوجه نشدم میشه با یه مثال توضیح بدید؟
 

the_king

مدیرکل انجمن
قسمت اول رُ کامل متوجه شدم و ممنون :rose:
در مورد استفاده از } { ها، یعنی اگه ما چند تا دستور داشته باشیم تو یه برنامه باید بعد هر if و شرطی که تو پرانتز قرار دادم یه } باز کنم و بعد اتمام دستور cout همون دستور باید { رُ ببندم، درست متوجه شدم؟؟
اگه درست متوجه نشدم میشه با یه مثال توضیح بدید؟
برای چند دستور داخل برنامه نه، اما اگه چند دستور داخل if یا for و ... دارید، بله، الزاما باید از { و } استفاده کنید. البته این مختص if نیست، اغلب دستورات شرطی و حلقه ای
مثل if و for و do while و while می توانند یک یا چند دستور رو داخل بدنه خودشون اجرا کنند، اگه داخل بدنه شون فقط یک دستور باشه، نیازی به { و } نیست، اختیاری ئه،
اما برای چند دستور حتما باید { و } نوشته بشه وگرنه یا فقط دستور اول شامل میشه، یا با خطای کامپایلر مواجه می شوید.

فرضا شرط می کنیم که اگر x از 1 بزرگتر بود، یک واحد از x کم کن. کم کردن یک واحد از x با دستور --x قابل انجامه که یک دستور بیشتر نیست، پس استفاده از { و } برای
کد if ای که --x رو داخلش می نویسیم اختیاری ئه، می توانیم قرار بدهیم یا ندهیم :
کد:
    if (x > 1)
        x--;

کد:
    if (x > 1)
    {
        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;
    }
 

جدیدترین ارسال ها

بالا