PDA

View Full Version : سوال: تحلیل این کد رو نمیفهمم



mojtaba5
دوشنبه 13 آذر 1391, 01:29 صبح
int x = 0 ;
if (x>=0)
Console.WriteLine("***");
else
Console.WriteLine("###");
Console.WriteLine("***");

چرا خروجی این برنامه
***
***
هست؟
در صورتی که شرطمون True هست و باید سه تا ستاره چاپ بشه.

harani
دوشنبه 13 آذر 1391, 01:35 صبح
کد زیر else اضافی اونو پاکش کنید درست میشه .

mojtaba5
دوشنبه 13 آذر 1391, 01:39 صبح
چون دوباره زیر else گفتید که ستاره چاپ کنه این یعنی که چه شرط درست بود یا نبود سه تا ستاره چاپ کن .
خب مگه else وقتی اجرا نمیشه که شرط درست نباشه؟

harani
دوشنبه 13 آذر 1391, 01:43 صبح
چون شما شرط else رو داخل بلوک {} نذاشتید .else فقط شامل دستور زیرش میشه . و کد
Console.WriteLine("***");//a


پس از دستور if-else هستش و کاری به شرط نداره .

mojtaba5
دوشنبه 13 آذر 1391, 01:45 صبح
خب زیر else دو تا دستور هست چرا فقط ستاره رو چاپ میکنه؟
کد اشتباه نیست سوال امتحانیه.

harani
دوشنبه 13 آذر 1391, 01:52 صبح
عزیز خب شرط شما تو همون if قبول میشه و به else نمیرسه اون 3 ستاره که چاپ میشه مربوطه به دستور if نه کد آخری .
چون اومدین شما دو مرتبه سه تاره گفتین چاپ بشه دو تا سه تا 3 ستاره چاپ میشه .

mojtaba5
دوشنبه 13 آذر 1391, 02:00 صبح
ببخشید اینقدر سوال میکنم ولی منظورتون رو نمیفهمم
اگه به else نمیرسه پس چرا 2 بار ستاره چاپ میکنه؟

MohammadReza.OmidAllah
دوشنبه 13 آذر 1391, 02:00 صبح
در جهت تکمیل گفته های جناب harani (http://barnamenevis.org/member.php?256621-harani)

ساختار دستور if اینجوریه که یا باید واسش آکولاد بزاری اینجوری


if(){

}
else
{

}


یا اگر آکولاد نداشته باشه تنها یک دستور زیر خودس رو شامل میشه یعنی بعد از else فقط خط اول جزو else هست


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




int x = 0 ;
if (x>=0){
Console.WriteLine("***");
}
else{
Console.WriteLine("###");
Console.WriteLine("***");
}

mojtaba5
دوشنبه 13 آذر 1391, 02:11 صبح
در جهت تکمیل گفته های جناب harani (http://barnamenevis.org/member.php?256621-harani)

ساختار دستور if اینجوریه که یا باید واسش آکولاد بزاری اینجوری


if(){

}
else
{

}


یا اگر آکولاد نداشته باشه تنها یک دستور زیر خودس رو شامل میشه یعنی بعد از else فقط خط اول جزو else هست


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




int x = 0 ;
if (x>=0){
Console.WriteLine("***");
}
else{
Console.WriteLine("###");
Console.WriteLine("***");
}

دوست عزیز کد مشکلی نداره سوال امتحانی تستی هست و من تحلیلش رو نمیفهمم
اگه فقط خط زیر else اجرا میشه پس چرا ### رو چاپ نمیکنه؟

harani
دوشنبه 13 آذر 1391, 02:15 صبح
آقا به جای یکی از سه ستاره ها بذار @@@ و برنامتو اجرا کن خودت میگیری .

MohammadReza.OmidAllah
دوشنبه 13 آذر 1391, 02:15 صبح
چون گفتی if (x>=0) این خط به فارسی میشه (اگر متغیر ایکس بزرگتر و یا مساوی با صفر بود ) خب x>0 که نیست ولی برابر با 0 هست بنابر این else اجرا نمیشه else زمانی اجرا میشه که شرط if صادق نباشه حالا که شرط درسته پس کد زیر if اجرا میشه و خط اخر هم که جزو شرط ما نیست پس روی صحه نمایش

***
***

چاپ میشه

mojtaba5
دوشنبه 13 آذر 1391, 02:19 صبح
من دقیقا نمیفهمم چرا دوباره ستاره ها رو چاپ میکنه
if درسته پس یک بار ستاره ها رو باید چاپ کنه.

harani
دوشنبه 13 آذر 1391, 02:26 صبح
آقا چرا مسئله رو اینقدر پیچیدش میکنی گفتم به جای @@@ بذار میفهمی دیگه .

mojtaba5
دوشنبه 13 آذر 1391, 02:27 صبح
آقا چرا مسئله رو اینقدر پیچیدش میکنی گفتم به جای @@@ بذار میفهمی دیگه .
الان دسترسی به کامپایلر ندارم.

MohammadReza.OmidAllah
دوشنبه 13 آذر 1391, 02:31 صبح
الان دسترسی به کامپایلر ندارم.
اگه بجا ستاره اولیه @@@ بزاری و کمپایل کنی خروجیت میشه این

@@@
***

گرفتی چی شد ؟

r_s1389@yahoo.com
دوشنبه 13 آذر 1391, 10:05 صبح
داداش من چون تو برای else محدوده تعیین نکردی ({ } ) پس یک خط از برنامه ات اجرا میشه و خط بعدی درون شرط شما ( else) اجرا میشه