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

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

الحلقات فى لغة السى loops :

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

  • الحلقات فى لغة السى loops :

    الحلقات فى لغة السى loops :


    فى لغة السى يوجد ثلاثة أنواع من الحلقات . وظيفة الحلقة هى تكرار تنفيذ مجموعة من التعليمات داخل تلك الحلقة حتى يتحقق شرط ما , أو قد يتم التنفيذ إلى ما لانهاية .
    الحلقات هى :
    while
    do..while
    for


    سوف تقوم الحلقة بتنفيذ التعليمات بصفة دائمة طالما أن "التعبير" expression صواب (صحيح) true . فى لغة السى "صواب" true تعنى أى قيمة غير صفرية .
    حلقة while :
    الاستخدام :


    كود:
    while (expression){ statement }
    مثال :
    كود:
    PORTB=0b10101010; while(1) { PORTB = ~ PORTB; Delay_ms(500); }







    فى الكود أعلاه , سوف لا تنتهى الحلقة أبدا . يتم تنفيذ التعليمات الموجودة بين القوسين "{….}" إلى ما لا نهاية . عادة تستخدم هذه الحلقة من أجل الحلقات الرئيسية main للبرامج التى لا ينتهى .

    مثال :

    كود:
    while(PORTB.F1 == 0) { . . }






    هذه الحلقة سوف تتكرر حتى تتغير حالة الطرف PORTB.F1 , أى عندما يكون PORTB.F1=1 يتم الخروج من الحلقة .
    ملاحظة هامة :
    يتم تقييم التعبير expression قبل تنفيذ التعليمات الموجودة بين الأقواس "{…}" . فإذا كان التعبير غير صحيح false عندئذ يتم تخطى التعليمات الموجودة بين القوسين "{..}" . إذا كنت ترغب فى تنفيذ التعليمات لمرة واحدة على الأقل , عنئذ تكون بحاجة لاستخدام حلقة "do…while".

  • #2
    حلقة do…while :
    الاستخدام :

    كود:
    do { statement } while (expression);
    
    
    كما ذكرنا أعلاه , حلقة do….while تقوم بتنفيذ التعليمات الموجودة بين القوسين "{…}" مرة واحدة على الأقل قبل أن يتقرر استمرار الحلقة أو عدم استمرارها .
    مثال :
    كود:
    do { CountUp++; CountDn--; . . . } while(PORTB.F4==1) ;





    تعليق


    • #3
      حلقة for( ) :
      الاستخدام :

      كود:
      for ([init-expression]; [condition-expression]; [increment-expression]) statement
      
      
      ملاحظة :
      الأقواس المربعة "[ ]" تشير إلى "اختيارى" .
      يمكن استخدام حلقة for مثل حلقة while أو حلقة do…while , لكن يجب توخى الحذر .
      مثال :
      كود:
      for( ; ;) {
      CountUp++
      CountDd—
      .
      .
      }
      



      هذا الكود يمثل حلقة لا نهاية لها . لا يوجد سوى طريقتين للخروج من هذه الحلقة ( أو أى حلقة لا نهائية) , وهما استخدام عبارة "break" أو التفرع إلى خارج الحلقة باستخدام الأمر "goto" ويوصى بعدم استخدام "goto" . لنعود إلى حلقة for :
      "تعبير – البداية" init-expression : هو القيمة الابتدائية لمتغير عداد الحلقة التى ترغب البدء بها .
      "تعبير – الشرط " condition-expression : يجب أن تحقق الحلقة هذا الشرط للخروج .
      "تعبير – التزايد " increment-expression : هنا تقوم بتزايد أو بتناقص متغير عداد الحلقة .
      مثال :

      كود:
      signed int CountUp =0, CountDn=0; for(count=1; count <=3; count++) { ++CountUp; --CountDn; }
      قبل البدء فى الحلقة يتم تحديد متغير عداد الحلقة بواحد ( كما هو مذكور فى تعبير الحالة الابتدائية) .
      بعد ذلك يتم التحقق من أن متغير عداد الحلقة يساوى "3" ( كما هو مذكور فى تعبير الشرط) .
      يتم تزايد متغير عداد الحلقة بواحد .
      وحيث أن متغير عداد الحلقة لا يساوى "3" ( نتيجة تققيم الشرط تكون صواب ) فإنه يتم تنفيذ التعليمات الموجودة بين القوسين "{}" , والتى تؤدى إلى تزايد المتغير CountUp وتناقص المتغير CountDn .
      عندما يساوى متغير عداد الحلقة "4" يتم الخروج من الحلقة (نتيجة تقييم الشرط تكون غير صواب ) .




      تعليق


      • #4
        الموضوع بملف word بالمرفق
        الملفات المرفقة

        تعليق

        يعمل...
        X