حلقه فور در c#

جهت طرح ابهامات و مشکلات درسی خود به این بخش مراجعه نمایید

مدیر انجمن: rosa_127

قفل شده
kale_sabz
کاربر ساده
کاربر ساده
پست: 41
تاریخ عضویت: سه‌شنبه 20 مرداد 1388, 2:16 am

حلقه فور در c#

پست توسط kale_sabz » شنبه 21 شهریور 1388, 9:16 pm

سلام بچه ها ببینید اینها چه فرقی دارن سی شارپ هم زبون آدم حالیش نیستا

کد: انتخاب همه

            for (i = 1; i <= 5; i++)
            {
                for (j = 1; j <= i; j++)
                    
                    Console.Write(j.ToString());

                Console.WriteLine();
            }

با این یکی

کد: انتخاب همه

            for (i = 1; i <= 5; i++)
            
                for (j = 1; j <= i; j++)
                    
                    Console.Write(j.ToString());

                Console.WriteLine();
            
میخوام بدونم نقش کروشه ها تو کد اول و نبودشون تو کد دوم چیه ، اگه با تریس کردن بگید ممنون میشم ، چقدر وی بی .نت قابل فهم تر بود ger:

AliMohammadi
کاربر ساده
کاربر ساده
پست: 13
تاریخ عضویت: جمعه 20 شهریور 1388, 5:49 am
محل اقامت: تهران

Re: حلقه فور در c#

پست توسط AliMohammadi » شنبه 21 شهریور 1388, 10:40 pm

سلام
وقتی از دو کاراکتر } و { یا به قول شما کروشه در برنامه C استفاده میشود، منظور این است که تعداد دستورات بیش از یک خط (با بهتر بگویم یک دستور) است.
مثلا در کد دوم شما خط پایین حلقه ی j، تنها دستور این حلقه میباشد... و تنها دستور حلقه i حلقه ی j میباشد.
اگر واضح نبود بفرمایید تا کامل تر توضیح دهم...

kale_sabz
کاربر ساده
کاربر ساده
پست: 41
تاریخ عضویت: سه‌شنبه 20 مرداد 1388, 2:16 am

Re: حلقه فور در c#

پست توسط kale_sabz » یک‌شنبه 22 شهریور 1388, 12:34 am

اگه واضح تر بگید ممنون میشم .

AliMohammadi
کاربر ساده
کاربر ساده
پست: 13
تاریخ عضویت: جمعه 20 شهریور 1388, 5:49 am
محل اقامت: تهران

Re: حلقه فور در c#

پست توسط AliMohammadi » یک‌شنبه 22 شهریور 1388, 1:53 am

ببینید برنامه نویس باید با استفاده از دو کاراکتر } و { محدوده ی دستورات حلقه را مشخص کند.
حال اگر دستوری که قرار است حلقه اجرا کند، یک خط (یا یک دستور) باشد، نیازی به استفاده از کروشه نیست. اما اگر دستوراتی که قرار است حلقه اجرا کند بیش از یک دستور باشد باید این محدوده را با کروشه مشخص کنید.
ببینید با یک مثال ساده توضیح میدهم. به کد زیر توجه کنید:

کد: انتخاب همه

for (i=1;i<=5;i++)
printf("A");
printf("B");
کد بالا را اگر چاپ کنید نتیجه این میشود:
AAAAAB
یعنی دستور پرینت اول فقط در داخل حلقه اجرا میشود و بعد از اینکه برنامه از حلقه خارج شد، دستور پرینت دوم را اجرا میکند.

حالا اگر بخواهیم هر دو دستور چاپ را در داخل حلقه قرار دهیم، باید ابتدا و انتهای دستورات را با کروشه مشخص کنیم. به صورت زیر:

کد: انتخاب همه

for (i=1;i<=5;i++)
{
printf("A");
printf("B");
}
خب نتیجه این کد به صورت زیر خواهد بود:
ABABABABAB

البته این یک قانون کلی در زبان C است. یعنی در کلیه دستورات for , while , if , ... برای نشان دادن محدوده باید از کروشه استفاده شود.

اگر با پاسکال هم کار کرده باشید، کروشه کار همان begin و end پاسکال را می کند!

kale_sabz
کاربر ساده
کاربر ساده
پست: 41
تاریخ عضویت: سه‌شنبه 20 مرداد 1388, 2:16 am

Re: حلقه فور در c#

پست توسط kale_sabz » یک‌شنبه 22 شهریور 1388, 11:57 am

کد: انتخاب همه

for (i = 1; i <= 5; i++)
            
                for (j = 1; j <= i; j++)
                    
                    Console.Write(j.ToString());

                Console.WriteLine();
ممنون دوست عزیز تشکر

اگه این کد رو واسم تریس کنی متوجه میشم ، مشکل من با حلقه تو در تو هست

AliMohammadi
کاربر ساده
کاربر ساده
پست: 13
تاریخ عضویت: جمعه 20 شهریور 1388, 5:49 am
محل اقامت: تهران

Re: حلقه فور در c#

پست توسط AliMohammadi » یک‌شنبه 22 شهریور 1388, 6:17 pm

کد: انتخاب همه

1- for (i = 1; i <= 5; i++)
           
2-                for (j = 1; j <= i; j++)
                   
3-                     Console.Write(j.ToString());

4-                Console.WriteLine();
خب کد بالا رو شماره گذاری کردم که واضح تر توضیح دهم.
تو کدی که شما قرار داده اید... خط شماره 3 فقط داخل دو حلقه اجرا میشود و پس از پایان کار دو حلقه خط شماره 4 اجرا میشود.
حلقه ی i هم تعداد دفعات تکرار حلقه ی j است که خود حلقه ی j هم، هر بار از 1 تا i بار تکرار میشود.
یعنی حلقه ی j اول 1 بار، بعد 2 بار، بعد 3 بار، بعد 4 بار، بعد 5 بار اجرا میشود و چون i بیشتر از 5 نمیشود از هر دو حلقه خارج شده و خط 4 اجرا میشود.

پیشنهاد میکنم برای درک بهتر حلقه های تو در تو با استفاده از دستور چاپ، اشکال هندسی منظمی را رسم (چاپ) کنید...
اگر هم خواستید بفرمایید تا چند شکل به همراه کد برای شما قرار دهم...

kale_sabz
کاربر ساده
کاربر ساده
پست: 41
تاریخ عضویت: سه‌شنبه 20 مرداد 1388, 2:16 am

Re: حلقه فور در c#

پست توسط kale_sabz » یک‌شنبه 22 شهریور 1388, 9:04 pm

واقعا مموونم نمیدونم چطور ازتون تشکر کنم

لطف کنین چند تا تمرین بدید اما من انجام بدم ممنون عزیز محبت میکنی
kis:

در مورد این حلقه اگه تریس کنید بهتر متوجه میشم ، مثلا زمانی که i میشه 1 مثلا J چی میشه

و.... اینجوری واضح تره ، فور رو بهتر یاد گرفتم اما نمیدونم این ترتیب عملیاتش چطوریه ger:

AliMohammadi
کاربر ساده
کاربر ساده
پست: 13
تاریخ عضویت: جمعه 20 شهریور 1388, 5:49 am
محل اقامت: تهران

Re: حلقه فور در c#

پست توسط AliMohammadi » دوشنبه 23 شهریور 1388, 2:39 am

خب با یکی دو تا مثال ساده حلقه تو در تو رو توضیح میدم. امیدوارم مفید باشد.
شما هم حتما" آنها را با توجه به توضیحاتی که میدم، سعی کنید برنامه رو بنویسید... البته منظورم تو محیط C است...

خب میخواهیم شکل زیر را با استفاده از حلقه های تو در تو چاپ کنیم... (ساده ترین حالت ممکن)

کد: انتخاب همه

*****
*****
*****
خب اگر به شکل دقت کنید... میبینید که شکل ما شامل 3 ردیف یا سطر و 5 ستون میباشد...

برای این شکل از دو حلقه استفاده میشود...
یک حلقه برای پیمایش سطر ها (مثلا i)... دیگری برای پیمایش ستون ها (مثلا j)...

خب حالا از کجا بفهمیم که حلقه اول باید از چند تا چند باشد؟ از تعداد سطرهای شکل... پس تعداد تکرار حلقه ی اول همان تعداد سطرها است... در نتیجه حلقه بیرونی برای شمارش و پیمایش سطر استفاده میشود... در این شکل باید از 1 تا 3 باشد و یکی یکی زیاد شود... (خط 1 کد)

حلقه دوم یا همان حلقه ی داخلی هم برای پیمایش در ستون ها استفاده میشود... در این شکل شمارنده حلقه داخلی از 1 تا 5 است... (خط 2 کد)

برای چاپ هم چون تمام سطرها و ستون ها یک شکل هستند (همشون کاراکتر ستاره هستند) فقط یک دستور چاپ داریم... (خط 3 کد)

نکته: حتما میدانید که برای رفتن به خط بعدی در C باید از دستور پرینت n\ استفاده شود... (خط 4 کد)

خب فکر کنم دیگه نوشتن کد با توجه به توضیحات بالا کار سختی نباشد... کد هم پایین نوشتم... سعی کنید اول خودتان بنویسید...

کد: انتخاب همه

1- for (i=1;i<=3;i++)
{
2- for (j=1;j<=5;j++)
3- printf ("*");
4- printf ("\n");
}
تو کد بالا هم علامت کروشه برای حلقه i است... چون دو دستور دارد... ( اولی حلقه j و دومی اضافه کردن خط جدید با دستور پرینت)
برای حلقه ی j هم کروشه نداریم چون یک دستور باید داخل حلقه اجرا شود... (دستور پرینت ستاره)

راستی شرمنده انقدر توضیح دادم... بنا به درخواست خود شما بود... krn:
آخرین ویرایش توسط AliMohammadi در دوشنبه 23 شهریور 1388, 3:00 am، در مجموع 1 بار ویرایش شده است.

AliMohammadi
کاربر ساده
کاربر ساده
پست: 13
تاریخ عضویت: جمعه 20 شهریور 1388, 5:49 am
محل اقامت: تهران

Re: حلقه فور در c#

پست توسط AliMohammadi » دوشنبه 23 شهریور 1388, 2:52 am

خب چند تا تمرین ساده دیگه که خواسته بودید...

شکل های زیر را با استفاده از حلقه ی تو در تو چاپ کنید...

کد: انتخاب همه

*****
*****
*****
*****
*****

کد: انتخاب همه

12345
12345
12345
12345
12345

کد: انتخاب همه

11111
22222
33333
44444
55555

کد: انتخاب همه

*
**
***
****
*****
خب اولی که ساده است... دومی و سومی هم مثل اولی هستند، با این تفاوت که به جای چاپ ستاره باید عدد چاپ شود... دقت کنید برای چاپ اعداد فقط به یک دستور پرینت نیاز دارید...
چهارمی هم تنها نکته ای که توش هست شمارنده حلقه دوم یا داخلی است... که باید از 1 تا یک متغیر تکرار شود...
راستی برای چاپ همه ی شکل های بالا، نیاز به 2 حلقه بیشتر ندارید...


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

kale_sabz
کاربر ساده
کاربر ساده
پست: 41
تاریخ عضویت: سه‌شنبه 20 مرداد 1388, 2:16 am

Re: حلقه فور در c#

پست توسط kale_sabz » دوشنبه 23 شهریور 1388, 2:48 pm

سلا م دوست عزیز از این همه مهر و محبتت ممنونم .
دوست عزیز من حلقه فور رو بلدم و همه این شکل ها رو ترسیم کردم دیروز فقط اینو تمرین نکرده بودم که انجام میدم میزارم اینجا

کد: انتخاب همه

11111
22222
33333
44444
55555
تا شما ببینید درسته یا نه !
بازم تشکر میکنم اما تاکید میکنم من این کد که کروشه نداره حالیم نمیشه که ترتیب انجام عملیات چیه ، اگه بتونین بگین زمانی که i میشه 1 j چند میشه و چی چاپ میشه تا آخره برنامه رو اینجور توضیح بدید ممنون میشم من فقط ترتیب عملیات زمانی که کروشه نداشته باشه رو نمیدونم
در ضمن عنایت کنین چند تا تمرین هم بدید
بسیار بسیار سپاسگزارم. dd:

kale_sabz
کاربر ساده
کاربر ساده
پست: 41
تاریخ عضویت: سه‌شنبه 20 مرداد 1388, 2:16 am

Re: حلقه فور در c#

پست توسط kale_sabz » دوشنبه 23 شهریور 1388, 6:34 pm

سلام اینو نوشم ممنون

کد: انتخاب همه

int i, j;
            for (i=1;i<=5;i++)
            {
                for (j=1;j<=5;j++)
                   Console.Write(i);
              Console.WriteLine();  
            }
            Console.ReadLine();

AliMohammadi
کاربر ساده
کاربر ساده
پست: 13
تاریخ عضویت: جمعه 20 شهریور 1388, 5:49 am
محل اقامت: تهران

Re: حلقه فور در c#

پست توسط AliMohammadi » دوشنبه 23 شهریور 1388, 7:07 pm

kale_sabz نوشته شده: بازم تشکر میکنم اما تاکید میکنم من این کد که کروشه نداره حالیم نمیشه که ترتیب انجام عملیات چیه
dd:
سلام
خواهش میکنم... خوشحال میشم کمکی به دوستان خوبم در این فروم بکنم...
والا من دیگه نمیدونم چجوری توضیح بدم این قضیه کروشه رو؟
شما کلا کاربرد این کروشه رو فهمیدید کجاها هست؟
در هر صورت حتما من یه خورده بد توضیح میدم... دوستان دیگر هم اگر کمک کنند ممنون میشوم...
kale_sabz نوشته شده:
اگه بتونین بگین زمانی که i میشه 1 j چند میشه و چی چاپ میشه تا آخره برنامه رو اینجور توضیح بدید ممنون میشم
dd:
ببینید تو برنامه نویسی خط به خط چاپ میشود... یعنی سطر به سطر خوانده میشود و دستورات را اجرا میکند...

مثلا جواب شکل زیر را به همراه کد آن قرار داده ام... که توضیحی که خواستید را هم میدهم...

کد: انتخاب همه

*
**
***
****
*****

1- for (i=1;i<=5;i++)
{
2- for (j=1;j<=i;j++)
3- printf ("*");
4- printf ("\n");
}
خب حالا توضیح...
وقتی برنامه وارد حلقه ی اول میشود، مقدار i مساوی یک است... بعد میرود خط بعدی را میخواند... که مقدار j هم یک است...
پس وقتی حلقه j بار اول اجرا میشود، از یک تا i بار که i همان یک است اجرا میشود... پس بار اول حلقه j یک بار میچرخد و دستور پرینت * یک بار اجرا میشود و یک ستاره چاپ میشود...
حالا برنامه از حلقه ی j خارج میشود و دستور دوم حلقه ی i را که همان پرینت n\ است را اجرا میکند...
خب رسیدیم به انتهای حلقه... اینجا برنامه بررسی میکند که آیا i کوچیک تر مساوری 5 است؟ که چون i فعلا یک است!!! دوباره برمیگردیم به خط 1 کد و i این دفعه 2 شده است...
و حلقه ی j هم از یک تا دو میچرخد و دوبار اجرا میشود و دوبار دستور پرینت * را دو بار اجرا میکند و از حلقه ی j خارج میشود و دستور دوم حلقه ی i را که پرینت n\ است را اجرا میکند... حالا دوباره بررسی میکند که آیا i که همان دو است، کوچیک تر مساوی 5 است؟ که جواب مثبت است و در نتیجه دوباره به خط یک کد برمیگردد و دوباره کد ها را اجرا میکند...
.................
.................
همین جوری حلقه کار میکند تا برسیم به وقتی که i شده 5 و حلقه ی j هم از یک تا i که همان 5 است میچرخد و 5 بار پرینت * میکند تا از حلقه خارج شود... بعد پرینت n\ را اجرا میکند...
خب چون i بزرگتر از 5 نمیشود از حلقه ی i هم خارج میشود و خط های بعدی را میخواند و اجرا میکند...

kianjoon
پست: 1
تاریخ عضویت: سه‌شنبه 28 اردیبهشت 1389, 12:03 am

حلقه فور در c#

پست توسط kianjoon » سه‌شنبه 28 اردیبهشت 1389, 12:15 am

سلام
من یه سوالی داشتم.واون اینکه اگه بخواهیم stepافزایش را در حلقه فور از عدد 1 به 0.0001تغییر دهیم

باید چه کنیم.مقصودم اینه که حلقه یک واحد یک واحد زیاد نشه و 0.0001 واحد اضافه بشه.با تشکر از شما

hosijooni
پست: 8
تاریخ عضویت: جمعه 23 مهر 1389, 2:50 pm

Re: حلقه فور در c#

پست توسط hosijooni » جمعه 23 مهر 1389, 3:04 pm

سلام بجه ها khk:

خوبید ؟
می خام یه حلقه ی for بنویسم ار 1 تا 99 . و این عدد ها رو توی lable , text box چاپ کنم
اما هر کاری می کنم فقط عدد آخرو چاپ می کنه کمککککک ger:


int a;
for (a = 1; a < 100; a++)
{
textBox1.Text =Convert.ToString(a);

اینم چیزی که خودم نوشتم ktb:

قفل شده