الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عقلي توقف مع فهم كيفية عمل هذا الكود

بدأه ahmed arkan في 17 مارس 2011 · 5 رد · 675 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

وانا اقرأ كتاب [2008] - Beginning Microsoft Visual C# 2008 [Wrox] وصلت الى برنامج لايجاد قيمة الفكتوريال .... لم افهمه ... هذا الكود

 {
            int x=5;
            int i;
            int f=1;

            for ( i = x ; i >= 1 ; i-- )
            {
                f = f * i;        
            }                      
            Console.WriteLine(f);
            Console.ReadKey();
        }

لا استطيع فهمه الرجاء شرحة بصورة واضحة .... طبعاً الـــ looping فاهمه جيداً ... لكن في كيفية تعويض القيم لم افهمه وخاصتاً عند ضرب الناتج مع الرقم التنازلي ..

تم تعديل هذه المشاركة بواسطة ahmed arkan في 17 مارس 2011 في 19:32

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#2

البرنامج يتألف من خمس حلقات ......... في الدورة الاولى

//the value of f now is 1
i=5
f=f*i=1*5=5

//the value of f now is 5

في الدورة الثانية

// the value of F now is 5

i=4
f=f*i=5*4=20

//the value of f now is 20

في الدورة الثالثة

// the value of F now is 20

i=3
f=f*i=20*3=20

//the value of f now is 60

في الدورة الرابعة

// the value of F now is 60

i=2
f=f*i=60*2=120

//the value of f now is 120

في الدورة الخامسة والأخيرة

// the value of F now is 120

i=1
f=f*i=120*1=120

//the value of f now is 120

انتهت الحلقة

1

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#3

مع كل دورة داخل الـloop يتم إنقاص قيمة i بواحد حتى تصبح قيمته 1. داخل الحلقة يتم ضرب قيمة f بقيمة i. والناتج يعاد إسناده إلى المتغير f. بهذا الشكل:

الـiteration الأول:

f=1

i=5

f * i = 1 * 5 = 5

f=5

الـiteration الثاني:

f=5

i=4

f * i = 5 * 4 = 20

f=20

الـiteration الثالث:

f=20

i=3

f * i = 20 * 3 = 60

f=60

.

.

.

إلخ

#4

حسناً ... اشكركم على الرد لكن بالنسبة لقيمة الـ i ... اليس من المفروض عند الدوارة الاولى تصبح 4 ؟ .... لانها دخلت على الدوارة بالكود

for ( i = x ; i >= 1 ; i-- )

يعني لو اقوم بالتعويض هكذا

for ( i =(قيمته 5) x ; 5 >= 1 ; 5-- )

انظرو كم اصبحت قيمة الـ i الان ..

لان الكود يعمل بشكل تتابعي بحيث قيمة ال5 من المفروض ان تكون ناقص 1 يعني تكون 4 وتدخل على المعادلة بانها 4 ... اليس من المفروض ان يكون هكذا ؟

تم تعديل هذه المشاركة بواسطة ahmed arkan في 17 مارس 2011 في 23:26

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#5
ahmed arkan كتب:

حسناً ... اشكركم على الرد لكن بالنسبة لقيمة الـ i ... اليس من المفروض عند الدوارة الاولى تصبح 4 ؟ .... لانها دخلت على الدوارة بالكود

for ( i = x ; i >= 1 ; i-- )

يعني لو اقوم بالتعويض هكذا

for ( i =(قيمته 5) x ; 5 >= 1 ; 5-- )

انظرو كم اصبحت قيمة الـ i الان ..

لان الكود يعمل بشكل تتابعي بحيث قيمة ال5 من المفروض ان تكون ناقص 1 يعني تكون 4 وتدخل على المعادلة بانها 4 ... اليس من المفروض ان يكون هكذا ؟

الطرف الثالث --i لا يتم تنفيذها إلا بعد إنتهاء الدورة الأولى.

#6
اقتباس
الطرف الثالث --i لا يتم تنفيذها إلا بعد إنتهاء الدورة الأولى.
:lol: :lol: :lol:

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

مواضيع مشابهة