إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

درس[7] حلقات الدوران Loops فى الـ php

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • درس[7] حلقات الدوران Loops فى الـ php

    [frame="20 95"]
    السلام عليكم ورحمة الله وبركاته
    بعد ان تعرفنا على كافة اشكال المشروطات المعتادة. وكيفية جعل برامجنا قادرة على اتخاذ القرار. وتحديد اى الأكواد التى سيتم اخذها فى مختلف الحالات.

    حان وقت استعراض بعض حلقات الدوران او مايعرف بإسم Loops فى الـ php

    حلقات الدوران:-
    هى نوعا ما مشروطات ايضا, وهى تمكنك من جعل برنامجك يكرر كود ما او مهمة ما الى الأجل الذى تحدده انت.

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

    وتكتب بالشكل التالى
    كود PHP:
    while(expression){
    //do something

    طول ما حالة الـ expression هى true سيستمر ماداخل حلقة الـ while بالتكرار.

    اليك مثال توضيحى مثلا. نريد ان نطبع الأرقام من 1 الى 10 مع فصل بين كل رقم بسطر جديد (<br />)

    بإستخدام الطرق الثابتة سنكتبه بالشكل التالى
    كود PHP:
    1<br />2<br />3<br />
    الخ 
    لكن مع حلقات الدوران الأمر ابسط من هذا بكثير
    مجرد 3 اسطر صغيرين.
    كود PHP:
    $i 1;
    while(
    $i <= 10){
        echo 
    $i "<br />";
        
    $i++;

    بالأول حددنا القيمة 1 للمتغير i

    بعدها بدأنا حلقة الدوران while وقولنا لها نفذى الكود الذى بداخلك
    طول ما متغير الـ i اصغر من او متساوى مع الرقم 10
    شرح الكود الذى بداخلها.
    اول شئ طلبنا منه ان يطبع قيمة المتغيير i ويضف اليه وسم بداية السطر الجديد وهو الـ <br />
    السطر الأخر (هذا يعتبر جديد عليك) اضفنا للمتغير i العامل ++

    هذا العامل يجعل من المتغيير i يساوى i+1 بكل مرة يتم استدعائه.
    وبما اننا طلبنا 9 مرات (من 1 الى 10) فإنه سيستمر فى اضافة 1 الى المتغيير i
    حتى يصل المتغيير i الى القيمة 10 وبعدها ستتوقف
    حلقة الـ while عن العمل لأننا اشترطنا عليه ان تستمر فى العمل طول مالمتغيير i اصغر من او يساوى 10

    لا اظن ان حلقة الدوران while تحتاج للشرح اكثر من هذا فهى بسيطة وواضحة كما ترى

    سأشرح العامل ++ مرة اخرى وايضا العامل -- فهم الأثنين شئ واحد مع اختلاف التطبيق الحسابى (جمع وطرح).
    العامل ++ يضيف 1 الى المتغير
    العامل -- يطرح واحد من المتغير.
    اليك مثال توضيحى
    كود PHP:
    $x 10;
    $x++;
    echo 
    $x;
    $x--;
    echo 
    $x
    ستلاحظ ان امر الطباعة الأول طبع 11 والثانى طبع 10
    شرح الكود. السطر الأول اعطينة المتغير x القيمة 10
    بعدها اضفنا العامل ++ للمتغيير x فأضاف اليه 1 فأصبحت قيمة المتغير x هى 11
    بعدها اضفنا العامل -- للمتغير x فتم طرح 1 من اخر قيمة له (وهى 11) فأصبحت قيمته مرة اخرى هى 10.

    يمكن ايضا كتابة هذه العوامل قبل او بعد المتغير
    يعنى يمكن ان يكتب العامل ++ بالأشكال التالية
    كود PHP:
    $x++;
    //or
    ++$x
    الفرق بين الأثنين بسيط
    واليك المثالين التاليين للتوضيح
    كود PHP:
    $x 10;
    echo 
    $x++; 
    فى المثال السابق ستلاحظ ان امر الطباعة (echo) طبع قيمة المتغيير x الحقيقية
    قبل ان يضيف اليها 1. لماذا؟ لأن العامل ++ جاء بعد المتغير وليس قبله.
    بالتالى فهو ينفذ الأمر عليه (امر الطباعة فى هذا المثال)
    بعدها يضيف 1 الى قيمته.
    لكن اذا نظرنا للمثال التالى
    كود PHP:
    $x 10;
    echo ++
    $x
    ستلاحظ انه طبع القيمة 11, هذا لأنه بالأول اضاف 1 الى قيمة المتغير الأصلية, بعدها نفذ عليه امر الطباعة.
    ونفس الشئ بالنسبة للعامل -- لا اظن انه يحتاج لأن يتم شرحه ايضا.

    لنعود لموضوعنا حلقات الدوران.

    بعد ان تعرفنا للمشروطة الدورانية while

    يأتى شرح الـ do .. while
    وتكتب بالشكل التالى
    كود PHP:
    do{
        
    //any thing
    }while(expression); 
    وهى عملها تمام مثل while
    بإستثناء فرق بسيط
    while لن تنفذ مابداخلها نهائيا
    الا عند تحقق الشرط الذى وضعناه لها.
    لكن do.. while
    سوف تنفذ مابداخلها على الأقل مرة واحدة اذا لم تتحقق المشروطة.
    بمعنى هل 10 اصغر من 9 ؟ بالطبع لا. ولذلك اذا شغلنا الإسكريبت التالى لن يتم تنفيذه
    كود PHP:
    while( 10 9){
    echo 
    "ok";

    لكن مع do..while سوف عمل مابداخل الحلقة حتى ولو لم تتحقق المشروطة
    كود PHP:
    do{
    echo 
    "ok";
    }while(
    10 9); 
    هذا هو الفرق بين الإثنين.

    هناك ايضا الحلقة الدورانية for
    وهى اكثر تعقيدا بعض الشئ عن while و do..while
    لكن هذا التعقيد لن يكون الا عند النظرة الأولى فقط. لكن بعد فهمها سترى انها بسيطة.
    for تأخذ ثلاث مدخلات.
    الأول هو عادة يكون بداية العد (بداية عداد)
    الثانى هو المشروطة التى لا يجب ان تتخطاها الدالة (الحد الأقصى)
    الثالث هو التغير الذى سيتم على العداد.
    كامثال توضيحى
    كود PHP:
    for($i 1$i <= 10$i++){
    //do something

    الكود اعلاه معناه. ان المتغيير i له القيمة 1
    المدخل الثانى (المشروطة) تشترط ان المتغير i لا يتعدى الرقم 10
    الثالث يطلب اضافة 1 للمتغيير i.
    تماما مثل اول مثال لنا بإستخدام while

    الكلمة break واستخدامها فى الحلقات الدورانية.
    الكلمة break تعنى قف, او كسر, وفى الحلقات الدورانية تعنى توقف عن الدوران.

    كامثال على استخدام الكلمة break
    هو اذا كان لدينا متغير ما يتم ادخاله بواسطة المستخدم مثلا
    ونحن نريد من الحلقة الدورانية ان تنفذ كود ما بعدد الرقم الذى يدخله المستخدم. لكن نريد وضع حد اقصى لهذا التكرار (حتى لا يتسبب التكرار الكثير فى زيادة الضغط على السيرفر)

    يمكننا تنفيذ هذا بإستخدام المشروطة if داخل حلقة الدوران التى سنتستخدمها ولنفترض انها while
    كود PHP:
    //$var هى القيمة التى يدخلها المستخدم ونحن نجهلها
    $i 1;
    while(
    $i $var){
        echo 
    $i."<br />";
        
    $i++;
        if(
    $i 10){
            break;
        }

    لاحظ فى الكود اعلاه. انه اذا كانت قيمة $var اكبر من 10 فلن تعمل الحلقة الدورانية while عندما تصل قيمة $i الى 10
    وهذا بسبب اننا اشترطنا انه فى حالة ان قيمة المتغيير $i تعدت 10 ان يتم نداء الكلمة break والتى تتسبب فى ايقاف الحلقة عن العمل.

    هناك ايضا الكلمة continue وهى تعنى استمر. لكن بحلقات الدوران تعنى تخطى هذا, او استثنى.
    كامثال توضيحى بإستخدام الحلقة الدروانية for مع مشروطة if جرب التالى
    كود PHP:
    for($i 1$i 10$i++){
        if(
    $i == 3){
            continue;
        }
        echo 
    $i ."<br />";

    سترى ان الإسكريبت طبع من 1 الى 10 بإستثناء الرقم 3
    وهذا لأننا اشترطنا ان يتم تنفيذ الأمر continue عندما تكون قيمة المتغير $i هى 3

    لاحظ ايضا انه يمكنك استخدام حلقة الدوران for داخل حلقة دروان for او while او العكس.
    على حسب احتياجك.

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

    اتمنى ان يكون الدرس كان بسيط واذا كان لديك اى استفسار لا تتردد بالسؤال وان شاء الله نكون عند حسن ظنك.

    منقول
    [/frame]

  • #2
    رد: درس[7] حلقات الدوران Loops فى الـ php

    شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

    تعليق


    • #3
      رد: درس[7] حلقات الدوران Loops فى الـ php

      جزاك الله خيرا اخي محمود وبارك الله فيك

      .

      تعليق


      • #4
        رد: درس[7] حلقات الدوران Loops فى الـ php

        شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

        تعليق


        • #5
          رد: درس[7] حلقات الدوران Loops فى الـ php

          حياكم الله جميعا

          تعليق


          • #6
            رد: درس[7] حلقات الدوران Loops فى الـ php

            شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

            تعليق


            • #7
              رد: درس[7] حلقات الدوران Loops فى الـ php

              بارك الله فيك أخى محمود

              لك أجمل تحية على هذا الجهد والمتابعة المستمرة

              تعليق


              • #8
                حياكم الله جميعا
                بإذن الله سنكمل الدورة إبتداءً من اليوم

                تعليق


                • #9
                  جزاك الله خيرا اخي محمود

                  تعليق

                  مواضيع تهمك

                  تقليص

                  المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                  المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                  المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                  المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                  المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                  يعمل...
                  X