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

c++ارجو المساعده في فهمت خطوات عمل fot loop

بدأه ahmed_ghanem في 6 يناير 2014 · 2 رد · 1,612 مشاهدة · في C++.Net
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته


 


في كود بسيط وحاب افهم  خطوات عمله :)


    for(int i=1;i<=5;i++)

    {

        for(int j=1;j<=i;j++)

        cout<<"*";

        cout<<endl;


        }

*

**

***

****

*****

طيب انا اشوف انه يدخل لوب الثانيه ويطبع *


وينزل سطر >endl


بعد هالخطوه وين يروح لوب الاولى او يبقى في الثانيه؟


وكيف طبع لي **


هذا سؤالي  والله يجزاك خير ولايحرمك الاجر يارب


#2

انظر أخي الكريم 

حلقة for تعمل كما يلي

for ( عمل نقوم به أول مرة نصادف الحلقة فقط ;  شرط نتحقق منه عند كل دورة للحلقة ; عمل نقوم به كلما انتهينا من دورة للحلقة )
{
العمل الذي نقوم به عند الدخول للحلقة
}

عند بدء الحلقة الأولى يكون i = 1

وبما أن 1 أصغر أو يساوي 5 نتابع

 

والآن ندخل الحلقة الداخلية

ونبداً بـ j = 1

هل j أصغر أو يساوي i  التي تساوي 1 ؟ نعم

إذا ندخل الحلقة ونطبع *

ثم نزيد J فتصبح 2

هل J أصغر أو تساوي 1 ؟ لا , إذا نخرج من الحلقة الداخلية

ويبقى أن نطبع نهاية السطر .

 

والآن صرنا في الحلقة الخارجية  , ونريد إنهاء الدورة , ماذا نفعل ؟ نزيد العداد i  فيصبح 2

والآن نختبر شرط الحلقة الخارجية . هل i التي صارت 2 أصغر أو يساوي 5  ؟ نعم

إذاً نكرر العمل , ولكن ما هو العمل الذي يجب القيام به داخل الحلقة الكبيرة ؟ إنه الدخول للحلقة الصغيرة

نضع j=1  ونختبر هل 1 أصغر أو تساوي i التي تساوي 2 ؟   نعم , إذا نطبع *

نزيد j  فتصبح 2

نختبر الشرط  :  هل j التي أصبحت 2 أصغر أو تساوي i  التي قيمتها 2  ?  نعم  , إذا نكرر الحلقة ونطبع * أخرى

نزيد j  فتصير 3 

هل 3 أصغر أو تساوي i التي قيمتها  2 ? لا ,, إذا نخرج من الحلقة الداخلية , وننفذ تعليمة طباعة نهاية السطر

ثم تنتهي الحلفة الخارجية ..

نزيد i  فتصبح 3  ...

وهكذا في كل مرة .. إلى ان تصبح  i = 6  عندها لا يتحقق الشرط الخاص بالحلقة الخارجية , ونخرج منها

 

لتفادي عدم فهم الكود بشكل صحيح , اكتبه كما يلي

for(int i=1;i<=5;i++)
{
    for(int j=1;j<=i;j++)
    {
        cout<<"*";
    }
cout<<endl;
}

والله ولي التوفيق

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 6 يناير 2014 في 19:27

#3

الله يعطيك العافيه ,شرحك واضح

 

واعتذر منك على الاطاله الشرح الحمد لله :) وصلت الفكره

:lol: الاقواس { }  فرقت كثير

لاني هنا ماحطيت اقواس في لوب الثاني ومانفذ الامر سطر جديدendl

عشان يطبه ** بعد ماخلص من الوب نفذ endl

#include <iostream>
using namespace std;
int main()
{
    for(int i=1;i<=5;i++)
    {
    for(int j=1;j<=i;j++)
    cout<<"*";
    cout<<endl;
    }
    return 0;

}

واذا حطيت قوس للوب الثاني

#include <iostream>
using namespace std;
int main()
{
    for(int i=1;i<=5;i++)
    {
    for(int j=1;j<=i;j++){
    cout<<"*";
    cout<<endl;
    }
    }
    return 0;
}

راح يطبع المخرجات بشكل خاطئ لانه يحسب cout<<endl;

 

الكود الي حطيه افضل مع الاقواس :)

#include <iostream>
using namespace std;
int main()
{
    for(int i=1;i<=5;i++)
    {
    for(int j=1;j<=i;j++){
    cout<<"*";
    }
    cout<<endl;
    }
    return 0;
}

اشكرك اخي العزيز والمعذره على الاطاله

ومره وحده الي مايعرفه هالشي يستفيد :wub: وبالتوفيق للجميع :thumbup:

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