PDA

View Full Version : تفوات while و for



irpersian20
یک شنبه 22 مرداد 1391, 23:25 عصر
سلام
فرق بین for و while چیست؟

mousa1992
یک شنبه 22 مرداد 1391, 23:29 عصر
فک نمیکنم تفاوتی با هم داشته باشند :متفکر: برای ایجاد یک حلقه ی تکراره و شما بر اساس شرایطی که برای تکرار دارید میتوینید انتخاب کنید که از کدوم استفاده کنین

veniz2008
یک شنبه 22 مرداد 1391, 23:29 عصر
سلام. یه سرچ کوتاه توی وب داشته باشید بد نیست ها!!!!!!!!!!!!
خداییش اینا دیگه خیلی ساده و پیش پا افتاده هستن و نیازی به ایجاد تاپیک ندارن.
موفق باشید.

Y_Safaiee
یک شنبه 22 مرداد 1391, 23:38 عصر
سلام دوست من

عملا خیلی با هم فرق ندارن هردو یک کار رو انجام میدن اما بعضی وقتها for کارسازه بعضی وقتها while با ذکر مثال میگم:

مثلا وقتی چیزی انتهاش معلومه از for استفاده میشه مثلا نمره 10تا دانشجو رو بگیرین و میانگینشو حساب کنین خوب کدش این میشه :


float n, s = 0;
for (int a = 0; a < 10; a++)
{
Console.Write("Enter Number {0} : ", a+1);
n = float.Parse(Console.ReadLine());
s += n;
}

Console.WriteLine("Average is :" + s/10);
Console.ReadKey();


اما وقتی که میگن تا وقتی کاربر No رو نزده اعداد رو بگیره و در انتها میانگینو بده بهترین شیوه استفاده از while هست چون میتونین شرط پایانشو زدن N توسط کاربر بزاریم مثلا :


float n, s = 0,cnt=0;

char ans='y';
while (ans == 'y')
{

Console.Write("\nEnter Number {0} : ", cnt+1);
n = float.Parse(Console.ReadLine());
s += n;
cnt++;
Console.WriteLine("\n\nAre You Continue(y/n)?:");
ans = Console.ReadKey().KeyChar;

}

Console.WriteLine("Average is :" + s/cnt);
Console.ReadKey();


پس هرکدوم بنا به شرایط به درد میخورن

موفق باشین
بایت بایت

neda_1367_sh
یک شنبه 22 مرداد 1391, 23:44 عصر
فک نمیکنم تفاوتی با هم داشته باشند :متفکر: برای ایجاد یک حلقه ی تکراره و شما بر اساس شرایطی که برای تکرار دارید میتوینید انتخاب کنید که از کدوم استفاده کنین
چطور ممکنه!!!
نمیشه تفاوت نداشته باشن. 1 تفاوتایی دارن.
for تعداد تکرارش مشخصه اما while نه.

ali_habibi1384
یک شنبه 22 مرداد 1391, 23:47 عصر
تفاوتش در نوع پياده سازي الگوريتم شما جهت خوانايي برنامه هستند. وگرنه هر دو حلقه هستند با شرط تكرار. حتي شما ميتوني بصورت زير يك for رو به while تبديل كني


for (;i<1;)
{
...
}

mousa1992
یک شنبه 22 مرداد 1391, 23:48 عصر
چطور ممکنه!!!
نمیشه تفاوت نداشته باشن. 1 تفاوتایی دارن.

ذکر کردم که تفاوت این دو در شرط هاییست که برای تکرار تعیین میکیم

veniz2008
یک شنبه 22 مرداد 1391, 23:50 عصر
شاید بارزترین تفاوتشون در تعداد اجرای حلقه باشه . معمولا زمانیکه از قبل تعداد دفعات تکرار مشخص و معلومه از for استفاده میشه ( مثل تولید جدول ضرب استاندارد)، ولی زمانیکه تعداد اجرا مشخص نیست از while استفاده میکنن.( مثلا تا زمانیکه کاربر یک کاراکتر مشخص رو وارد نکرده باشه برنامه یه کاری رو انجام بده. در اینحالت ممکنه کاربر همون بار اول اون کاراکتر رو بزنه یا ممکنه بعد از 100 تا کاراکتر اون کاراکتر رو وارد کنه. در اینحالت تعداد دفعات تکرار از قبل مشخص نیست)

irpersian20
دوشنبه 23 مرداد 1391, 01:04 صبح
سلام دوست من

عملا خیلی با هم فرق ندارن هردو یک کار رو انجام میدن اما بعضی وقتها for کارسازه بعضی وقتها while با ذکر مثال میگم:

مثلا وقتی چیزی انتهاش معلومه از for استفاده میشه مثلا نمره 10تا دانشجو رو بگیرین و میانگینشو حساب کنین خوب کدش این میشه :


float n, s = 0;
for (int a = 0; a < 10; a++)
{
Console.Write("Enter Number {0} : ", a+1);
n = float.Parse(Console.ReadLine());
s += n;
}

Console.WriteLine("Average is :" + s/10);
Console.ReadKey();


اما وقتی که میگن تا وقتی کاربر No رو نزده اعداد رو بگیره و در انتها میانگینو بده بهترین شیوه استفاده از while هست چون میتونین شرط پایانشو زدن N توسط کاربر بزاریم مثلا :


float n, s = 0,cnt=0;

char ans='y';
while (ans == 'y')
{

Console.Write("\nEnter Number {0} : ", cnt+1);
n = float.Parse(Console.ReadLine());
s += n;
cnt++;
Console.WriteLine("\n\nAre You Continue(y/n)?:");
ans = Console.ReadKey().KeyChar;

}

Console.WriteLine("Average is :" + s/cnt);
Console.ReadKey();


پس هرکدوم بنا به شرایط به درد میخورن

موفق باشین
بایت بایت
یعنی می فرمائید مثال شماره دوم شما مربوط به while با for قابل حل نیست؟

Y_Safaiee
دوشنبه 23 مرداد 1391, 01:15 صبح
با سلام مجدد

چرا قابل پیاده سازی هست اما در مثال دوم while خواناییش بیشتره (قابل درک تره) و برای for باید یه حلقه بینهایت ساخت و وقتی کاربر n داد break داد و خارج شد.

یادتون باشه یه برنامه نویس کارش برنامه نوشتن نیست بلکه انتخاب بهترین روش,بهینه سازی روش ها , نوشتن کد ها به صورتی که برای دیگران خوانایی و قابل درک باشه و ... جز, وظایف یه برنامه نویسه.

موفق باشی
بایت بایت

irpersian20
دوشنبه 23 مرداد 1391, 01:36 صبح
با سلام مجدد

چرا قابل پیاده سازی هست اما در مثال دوم while خواناییش بیشتره (قابل درک تره) و برای for باید یه حلقه بینهایت ساخت و وقتی کاربر n داد break داد و خارج شد.

یادتون باشه یه برنامه نویس کارش برنامه نوشتن نیست بلکه انتخاب بهترین روش,بهینه سازی روش ها , نوشتن کد ها به صورتی که برای دیگران خوانایی و قابل درک باشه و ... جز, وظایف یه برنامه نویسه.

موفق باشی
بایت بایت
سلام
حق با شماست. پس با این حساب هیچ فرقی ندارن در عمل؟ چون هر دو در هر مثالی قابل پیاده سازی هستند.

ali_habibi1384
دوشنبه 23 مرداد 1391, 01:46 صبح
شاید بارزترین تفاوتشون در تعداد اجرای حلقه باشه . معمولا زمانیکه از قبل تعداد دفعات تکرار مشخص و معلومه از for استفاده میشه ( مثل تولید جدول ضرب استاندارد)، ولی زمانیکه تعداد اجرا مشخص نیست از while استفاده میکنن.( مثلا تا زمانیکه کاربر یک کاراکتر مشخص رو وارد نکرده باشه برنامه یه کاری رو انجام بده. در اینحالت ممکنه کاربر همون بار اول اون کاراکتر رو بزنه یا ممکنه بعد از 100 تا کاراکتر اون کاراکتر رو وارد کنه. در اینحالت تعداد دفعات تکرار از قبل مشخص نیست)
چيزي كه شما ميگيد رو ميشه بازهم با For پياده سازي كرد دقيقا مثل همون مثال كلي.
با توجه به صحبت كلي دوستان روي يك موضوع اتفاق نظر دارن:

بر اساس شرایطی که برای تکرار دارید میتوینید انتخاب کنید که از کدوم استفاده کنین

نوع پياده سازي الگوريتم شما جهت خوانايي برنامه هستند.

مثال شماره دوم شما مربوط به while با for قابل حل نیست؟

در مثال دوم while خواناییش بیشتره (قابل درک تره)

انتخاب بهترین روش,بهینه سازی روش ها , نوشتن کد ها به صورتی که برای دیگران خوانایی و قابل درک
انتخاب حلقه فقط به خوانا بودن و درك بهتر در بازخواني برنامه بر ميگرده.