قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 28-03-2020, 11:09 AM المشاركة 1   
افتراضي الدرس السابع حلقة for للاردوينو The Arduino for Loop Twitter FaceBook Google+



دورة برمجة الاردوينو : الدرس السابع
حلقة for للاردوينو The Arduino for Loop


لقد تناولنا بالفعل نوع واحد من الحلقات ، وهى الحلقة الرئيسية main loop للاردوينو في الدرس الثانى .
في هذا الدرس ، نتناول نوع آخر من الحلقات يسمى حلقة "for".
في حين أن العبارات أو التعليمات البرمجية في الحلقة الرئيسية للاردوينو ستعمل باستمرار ولا تخرج أبدًا من الحلقة ، فإن حلقة for تسمح لنا بالتكرار loop من خلال التعليمات البرمجية لعدد معين من المرات قبل الخروج من الحلقة.
من الطرق الشائعة لاستخدام حلقة for هي مع عامل الزيادة الذي تمت تغطيته في الدرس السابق .

استخدام حلقة for Using the for Loop
يوضح البرنامج (الاسكيتش) التالي استخدام حلقة for.

كود:
void setup() {
  int i;
  
  Serial.begin(9600);
  
  for (i = 0; i < 10; i++) {
    Serial.print("i = ");
    Serial.println(i);
  }
}

void loop() {
}

قم بتحميل البرنامج إلى Arduino الخاص بك لمعرفة كيف يعمل .

كيف تعمل حلقة for How the for Loop Works :
توضح الصورة أدناه أجزاء حلقة for .



أجزاء حلقة for فى برنامج الاردوينو :
• بناء حلقة for :
تبدأ حلقة for الأساسية على النحو التالي:

كود:
for () {
}

يتم إضافة ثلاثة تعبيرات expressions بين قوسي الفتح والإغلاق () لتحديد عدد مرات تشغيل العبارات في الحلقة قبل الخروج من الحلقة. عند الخروج من الحلقة ، يستمر تنفيذ البرنامج أسفل الحلقة - أي يتم تنفيذ العبارات خارج الحلقة وأسفلها من أعلى إلى أسفل.
يحتوي جسم body الحلقة بين أقواس الفتح والإغلاق {} على العبارات التى سوف يتم تشغيلها في الحلقة.
تسمى التعابير بين الأقواس () تعبير التهيئة initialize expression وتعبير الاختبار test expression وتعبير الزيادة increment expression .
يجب تعريف متغير لاستخدامه في تعبيرات الحلقة الثلاثة. في المثال أعلاه ، يتم استخدام متغير صحيح integer يسمى i.
يجب أن تظهر تعبيرات الحلقة الثلاثة بالترتيب: التهيئة والاختبار والتزايد. يتم فصلها بفواصل منقوطة (. لا ينتهي تعبير الزيادة بفاصلة منقوطة.

1- تعبير التهيئة Initialize Expression :
يتم تشغيل تعبير التهيئة مرة واحدة فقط في الوقت الذي تبدأ فيه الحلقة. يقوم بتهيئة المتغير i الخاص بنا إلى الصفر (0) في المثال .

2- تعبير الاختبار Test Expression
يحدد تعبير الاختبار متى نخرج من الحلقة. يتم استخدامه لتعيين عدد المرات التي يتم فيها تشغيل العبارات في جسم الحلقة.
عندما يتم تقييم تعبير الاختبار إلى true ، سيتم تشغيل العبارات في جسم الحلقة. عندما يتم تقييم تعبير الاختبار على أنه false ، فلن يتم تشغيل الحلقة مرة أخرى ، ولكن سيتم الخروج منها.
يتم تقييم تعبير الاختبار في كل مرة يبدأ فيها التنفيذ في الجزء العلوي من الحلقة.

3- تعبير الزيادة Increment Expression
يستخدم تعبير الزيادة لتغيير القيمة التي يحملها المتغير i. يتم تشغيله في كل مرة يبدأ فيها التنفيذ في الجزء العلوي من الحلقة.

تدفق البرنامج في الحلقة Program Flow in the Loop :
توضح الصورة أدناه كيفية عمل تدفق البرنامج في حلقة for.



تدفق برنامج حلقة for :

1- المرة الأولى من خلال الحلقة :
في المرة الأولى من خلال الحلقة ، تتم تهيئة i على 0 ، ويختبر تعبير الاختبار ما إذا كان i < 10 (0 < 10) صحيحًا true ، لذلك سيتم تشغيل العبارات في الحلقة.
نظرًا لاستخدام عامل الزيادة اللاحقة مع المتغير ، فلن يتم زيادة i إلا في نهاية الحلقة. العبارات في الحلقة تعمل وتطبع قيمة i بالقيمة 0 لأنه لم يتم زيادتها بعد.
لذلك لدينا ما يلى :

كود:
i is initialized to 0
i contains 0
i < 10 evaluates to true or 1 because i is less than 10
The two statements in the loop run, print i as 0
At the end of the loop i is incremented so i == 1

2- المرة الثانية من خلال الحلقة :
في المرة الثانية من خلال الحلقة ،i الآن تحتوي على 1 حيث تم زيادتها في الجزء السفلي من الحلقة. يختبر تعبير الاختبار الآن ما إذا كان i < 10 (1 < 10) صحيحًا true ، لذلك سيتم تشغيل العبارات في الحلقة مرة أخرى. سيتم زيادة المتغير i فقط إلى 2 في الجزء السفلي من الحلقة ، لذلك تتم طباعة 1 إلى نافذة جهاز العرض التسلسلي.
لدينا الآن :

كود:
i is not initialized again
i contains 1
i < 10 evaluates to true or 1 because i is less than 10
The two statements in the loop run, print i as 1
At the end of the loop i is incremented so i == 2

3- المرة الأخيرة من خلال الحلقة :
سيستمر تنفيذ الحلقة وسوف تتزايد i في كل مرة.
في المرة الأخيرة من خلال الحلقة ، يكون لدينا:

كود:
i is not initialized again
i contains 9
i < 10 evaluates to true or 1 because i is less than 10
The two statements in the loop run, print i as 9
At the end of the loop i is incremented so i == 10

يبدأ التنفيذ من أعلى الحلقة مرة أخرى ، ويتم اختبار تقييم تعبير الاختبار .
لدينا الآن :

كود:
 i is not initialized again
i contains 10
i < 10 evaluates to false or 0 because i is not less than 10 (it is equal to 10)
The statements in the loop are not run again
The loop is exited
The statement below the closing bracket of the loop will be run

طريقة بديلة لكتابة حلقة for
البرنامج التالي يوضح أن المتغير المستخدم في تعبيرات الحلقة يمكن تعريفه أيضًا في الحلقة ولا يجب تعريفه خارج الحلقة كما فعلنا فى البرنامج السابق.

كود:
 void setup() {
  Serial.begin(9600);
  
  for (int i = 0; i < 10; i++) {
    Serial.print("i = ");
    Serial.println(i);
  }
}

void loop() {
}

يعمل هذا البرنامج تمامًا مثل البرنامج السابق ويخرج الأرقام من 0 إلى 9.

حلقة داخل حلقة A Loop Within a Loop
يستخدم البرنامج التالي حلقة for داخل الحلقة الرئيسية للاردوينو Arduino.

كود:
void setup() {
  Serial.begin(9600);
}

void loop() {
  for (int i = 0; i < 10; i++) {
    Serial.print("i = ");
    Serial.println(i);
  }
  delay(1000);
}

تعمل حلقة for بنفس الطريقة التي كانت تعمل بها من قبل ، ولكن الآن بعد خروجها ، يتم تشغيل الدالة delay() لإعطاء تأخير لمدة ثانية واحدة. يتم الوصول إلى نهاية الحلقة الرئيسية للاردوينو ، بحيث يتم تشغيل حلقة for مرة أخرى.
عند تشغيل حلقة for مرة أخرى ، تتم تهيئة i إلى 0 لأن حلقة for تبدأ من الأعلى مرة أخرى. ثم يتم تشغيلها مرة أخرى كما هو موضح سابقًا.
سيتم تشغيل حلقة for والدالة delay() باستمرار لأن الحلقة الرئيسية للاردوينو لا تخرج أبدًا.

ملاحظات على أمثلة برامج حلقة for :
لاحظ ما يلي حول أمثلة البرامج في هذا الدرس .
• تعبير التهيئة Initialize Expression
ليس من الضروري تهيئة تعبير التهيئة في حلقة for إلى صفر (0) ، ولكن يمكن تهيئته إلى أي قيمة صحيحة integer ، أو حتى قيمة سالبة.

• تعبير الزيادة Increment Expression
يُستخدم تعبير الزيادة لتغيير قيمة المتغير الذي يختبره تعبير الاختبار. لا يجب أن يكون هذا عامل زيادة ، ولكن يمكن أن يكون عامل إنقاص decrement (يطرح 1 من المتغير) أو أي تعبير حسابي آخر.
تم استخدام عامل الزيادة في البرامج للحفاظ على بساطة الأمور في البداية ، ولأنها طريقة شائعة لاستخدام حلقة for. سنلقي نظرة على طرق أخرى لاستخدام حلقة for لاحقًا .

• العد من الصفر (0) Counting from Zero (0)
لاحظ أنه في الأمثلة ، تتم تهيئة القيمة التي يحتوي عليها المتغير i على 0 وليس 1. وبالتالي ، فإننا نطبع قيمة عدد تبدأ من 0 وتنتهي عند 9.
يتم تشغيل الحلقة في الواقع 10 مرات وليس 9 مرات. هذا لأننا نبدأ من 0 ، من 0 إلى 9 تكون 10 أرقام ، لكن من 1 إلى 9 تكون 9 أرقام ، ومن 1 إلى 10 تكون 10 أرقام .
تعرض القائمة التالية عدد المرات خلال الحلقة على اليسار وقيمة i على اليمين.




اعلانات
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 03:25 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025