boka

الدرس السادس: دورة C++.NET Programming BV4HE-s6k1_481546872


انضم إلى المنتدى ، فالأمر سريع وسهل

boka

الدرس السادس: دورة C++.NET Programming BV4HE-s6k1_481546872

boka

هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.
boka

مرحبا بك معنا يا زائر في boka


2 مشترك

    الدرس السادس: دورة C++.NET Programming

    العقرب 18
    العقرب 18
    عضو قدير


    عدد الرسائل : 29
    الذولة : maroc
    عارضة طاقة :
    الدرس السادس: دورة C++.NET Programming Left_bar_bleue29 / 10029 / 100الدرس السادس: دورة C++.NET Programming Right_bar_bleue

    السٌّمعَة : 4
    تاريخ التسجيل : 04/10/2007

    الدرس السادس: دورة C++.NET Programming Empty الدرس السادس: دورة C++.NET Programming

    مُساهمة من طرف العقرب 18 الجمعة نوفمبر 02, 2007 1:55 am

    دورة في الــــ
    C++.NET Programming


    المحاضرة السادسة بعنوان :
    الـ While Loop
    الـ Arrays
    ---------------------

    قبل أن أخوض في التفاصيل هذه المحاضرة, أحببت أن أوضح نقطة, أنه إلى هنا نحن نتحدث عن الأساسيات, أو قل البديهيات.. لذلك تراني أسرع في هذا الجزء من الدورة.

    وسنستمر على هذا المنوال إلى أن نصل إلى المحاضر الثامنة أو التاسعة..

    ومن بعدها ..

    سندخل بأمور أكثر متعه.. وهي البرمجة الكائنية, ذلك المصطلح الذي يظن البعض أنه جاء من الفضاء, أو أنه من الصعوبة ما لا يفهمه إلا بروفوسور أو دكتور في الجامعة, نعم سنكشف في هذه الدورة أن (ليس كل ما يلمع ذهب)...

    ------------------


    الـ While Loop

    تكلمنا في الدرس الماضي عن الـ for , وهي زميلة الـ while فكلاهما يعتبر من الجمل التكرارية,

    تستخدم هذه الجملة عندما لا نعرف عدد المرات التكرار.

    يعني على سبيل المثال أريد من البرنامج أن يستمر في عدد غير محدد من التكرارت ويقف عندما أضغط على الرقم صفر. في هذه الحالة نستخدم الـ while ,

    يعني على سبيل المثال, إذا أردنا عمل برنامج يبدأ بي قائمة وفيها, إضغط على الرقم 1 لتشغيل الضوء, إضغط على الرقم 0 لإطفاء الضوء, إطفاء الضوء يعني الخروج من البرنامج, فسيكون كالتالي:


    كود:
    #include

    using namespace std;

    int main()
    {
    int enter = 0;
    bool light = false;

    while (!light)
    {
    cout << "Enter 0 For Off the light, Enter 1 for on the light: ";
    cin >> enter;

    if (enter == 1)
    {
    cout << "Light On" << endl;
    }
    else if (enter == 0)
    {
    cout << "Light Off" << endl;
    light = true;
    }
    else
    {
    cout << "Enter 1 or 0" << endl;
    }
    }

    }
    نلاحظ من الكود:

    قمنا بالبداية بي تعريف المتغير enter وهو الذي يمثل الرقم الذي يدخلة المستخدم.

    ومن ثم المتغير light وهو من نوع الـ Boolean أي أنه يأخذ قيمتين إما true والمتمثلة ب الرقم 1 وإما false والمتمثلة بي الرقم 0, ونلاحظ بأننا قمنا بإعطائة القيمة false وذلك لأننا لا تريد الخروج من الحلقة التكرارية أزل ما يعمل البرنامج..

    وبعدها وبداخل القوسين في الجملة while والتي تمثل ((الشرط)) قمنا بإدخال المتغير light بها, وجعلنه يأخذ القيمة false أي أننا نستطيع كتابة هذه الجملة أيضاُ بالشكل التالي

    كود:
    while (light == false)
    إلى هنا قمت بإغلاق الحلاقة, وسيستمر البرنامج بالدوران إلى أن يصل إلى جملة الخروج وهي :

    كود:
    light = true;
    عندها سيخرج البرنامج من حلقة الـ while .

    نلاحظ في هذاالبرنامج, أننا لا نعلم متى سيضغط المستخدم على الرقم صفر من أجل الخروج لذلك إستخدمنا الـ while , حيث اننا لا نستطيع عمل هذا بي الـ for


    وأيضاً بواسطة جملة الـ while نستطيع عمل برامج نعرف متى نهايتها, يعني أنها تعمل مثل جملة الـ for إليك هذا البرنامج يطبع من الصفر إلى 9 .


    كود:
    #include

    using namespace std;

    int main()
    {
    int a = 0;

    while (a<=9)
    {
    cout << a;
    a++;
    }
    }
    --------------------------------------

    لنأخذ هذا البرنامج الأخير..

    وهو عبارة عن Nesting Loops أي أنه جملة تكرارية بداخل جملة آخرى, سيكون البرنامج كالتالي:
    سيطبع الأرقام من 1 إلى 10, وبعدها يسأل المستخدم إذا كنت تريد طباعتها مرة آخري فضغط على الحرف Y , أما إذا كنت لا تريد فضغط على الحرف N ,

    ضغتك على الحرف N سيعني بالضرورة خروجك من البرنامج ..


    أول ما نفكر به هو عمل الحلقة التكرارية .. while , لماذا إخترتها .. لأننا كما قنا تستخدم عند عدم معرفة عدد مرات التكرار التي سيجريها المستخدم. فأنا لا أعلم متى يريد هو الخروج من البرنامج.

    يمثل هذا حجر الأساس.

    كود:
    #include

    using namespace std;

    int main()
    {
    bool quite =false;

    while (!quite)
    {

    }
    }
    وبعدها ,, طلبنا من البرنامج أنه عند الضغط على y أو Y سيقوم بالطباعة الأرقام, وإلا فإنه سيخرج من البرنامج.

    كود:
    #include

    using namespace std;

    int main()
    {
    bool quite =false;
    char enter = '0';

    while (!quite)
    {
    cout << "Print the number for 1 to 10" << endl;
    cout << "Enter Y for Yes, Enter N for No: ";
    cin >> enter;

    if (enter == 'Y' || enter == 'y')
    {
    for (int i =0;i<= 10;i++)
    {
    cout << i << " " << endl;
    }
    }
    else
    {
    cout << "Exting..." << endl;
    quite = true;
    }

    }
    }
    الـ Arrays (المصفوفات)

    وجدت لتحل لنا عدة مشاكل من بينها, لنفرض أني أريد حجر 100 متغير, ففي الوضع الطبيعي سيكون هذا العمل كالتالي:

    Int x1
    Int x2
    Int x3
    Int x4
    ….
    ….
    Int x100

    كما نلاحظ بأن هذا الأمر غير منطقي. وأيضاً في حال أردت ترتيب هذه العناصر أو معاملتها كقطعة واحدة فلت أستطيع ذلك إلا بإستخدام المصفوفة.

    أقصد بي جملة معاملتها كقصطهة واحدة, لأنه في حالة التصريح عن مصفوفة فإن المترجم يقوم بحجز مكان واحد بحجم المصفوفة, ويكون توضع هذه العناصر بجاننب بعضهات البعض.

    كود:
    float arr[100];
    لنأخذ مثال لطباعة خمسة أرقام بداخل المصفوفة ..

    كود:
    #include

    using namespace std;

    int main()
    {
    float arr[5] = {10,20,30,40,50};

    for (int i =0;i< 5;i ++)
    {
    cout << arr[i] << " " << endl;
    }
    }
    نلاحظ في المثال, حددنا حجم المصفوفة بي الرقم (5) , ومن ثم صرحنا بخمسة أرقام هم 10 , 20 , 30, 49, 50 , ومن أجل طباعة هذه الأرقام الخمس, قمنا بوضعها بداخل جملة تكرارية وهي الـ for


    لنأخذ الآن مثال آخر وهو عن جمع مصفوفتين .

    كود:
    #include

    using namespace std;

    int main()
    {
    float arr1[5] = {4,20,22,53,5};
    float arr2[5] = {3,6,91,3,11};

    for (int i =0;i< 5;i ++)
    {
    cout << arr1[i] + arr2[i] << " " << endl;
    }
    }
    --------------

    هناك نوع آخر من المصفوفات يسمونه Multidimensional Arrays
    وموضوعة بسيط, يستخدم بكثرة عند التعامل مع الـ Martix ,

    كود:
    #include

    using namespace std;

    int main()
    {
    int matrix[3][4] =
    {

    {1,2,3,4},
    {5,6,7,8},
    {9,1,2,3}

    };

    //Row
    for (int i =0;i< 3;i ++)
    {
    //Column
    for (int j =0;j < 4;j++)
    {
    cout << matrix[i][j] << " " ;
    }
    cout << endl;
    }
    }
    نلاخظ بأن المدى الأول وهو الرقم 3 يمثل عدد الصفوف, والثاني وهو العدد 4 يمثل عدد الأعمدة.


    ومن أجل طباعة هذه المصفوفة نقوم بعمل جملتان للـ for الأولي تتولي أمر الصفوف والأخرى للأعمدة.


    --------------------------


    نأتي إلى الأسئلة:

    الأول:
    أكتب برنامج, يسال المستخدم بأن يضغط على الرقم 1 لكتابة إسمة, والرقم 0 للخروج من البرنامج .. أنظر إلى الشكل بالأسفل.

    الدرس السادس: دورة C++.NET Programming EX1

    الثاني:
    أكتب برنامج يقوم بسؤال المستخدم كم عدد الأرقام التي يريد أن يدخلها , ومن ثم يقوم بحساب المتوسط الحسابي لهذه الأرقام...

    قانون: المتوسط الحسابي: مجموع الأرقام / عددها.


    أنظر إلي الشكل بالأسفل.

    الدرس السادس: دورة C++.NET Programming EX2
    الثالث:
    أكتب برنامج يقوم بجمع two matrix وهم

    كود:
    A = 3 4 5
    5 3 6
    كود:
    B = 9 7 2
    1 4 7
    يعني ستكون 9 + 3
    و الـ 4 + 7
    والـ 5 + 6
    وهكذا...


    الرابع:
    أطلب من المستخدم إدخال عشرة أرقام ومن ثم رتب هذه الأرقام مرة تصاعدي ومرة تنازلي.


    حاول أن تحل هذه الأسئلة بشتى الطرق, أن أعرف بأن بعضها لم أشرحة ولأكن تستطيع مع المحاولات أن تقترب من الحل.

    وصدقني بأن السي بلس بلس تريد الكثير من التطبيق لكي تتعلمها, فلذلك حاول وحاول, وأي غموض سأوضحة لك.


    إنتهينا ...
    boukaissi
    boukaissi
    Admin


    الدرس السادس: دورة C++.NET Programming SuNm1-07AV_344220972

    العمر : 40 عدد الرسائل : 315
    الذولة : maroc
    عارضة طاقة :
    الدرس السادس: دورة C++.NET Programming Left_bar_bleue100 / 100100 / 100الدرس السادس: دورة C++.NET Programming Right_bar_bleue

    السٌّمعَة : 15
    تاريخ التسجيل : 04/08/2007

    الدرس السادس: دورة C++.NET Programming Empty رد: الدرس السادس: دورة C++.NET Programming

    مُساهمة من طرف boukaissi الخميس يناير 14, 2010 6:31 pm

    شكرا علي المجهود الجباروالشرح الرائع واصل بالتوفيق

    تحيه خاصه
    من
    boukaissi

      الوقت/التاريخ الآن هو السبت نوفمبر 23, 2024 8:56 am