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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 31-03-2020, 10:53 AM المشاركة 1   
افتراضي الدرس الثالث عشر عبارات switch و break Twitter FaceBook Google+



دورة برمجة الاردوينو : الدرس الثالث عشر
عبارات switch و break : Arduino switch and break Statements


عبارة switch تشبه استخدام if مع عدة أبنية else-if . يتم استخدام switch بالتزامن (مقترنة) مع break التى سيتم شرحها أيضًا في هذا الدرس .
استخدام switch بدلاً من العديد من أبنية else-if أسهل في القراءة ولديها المزيد من المرونة.

مثال عبارة switch :
يوضح برنامج اردوينو التالي عبارة switch التى يتم استخدامها بالاقتران مع عبارة break .
قم بتحميل البرنامج إلى Arduino ثم ابدأ تشغيل نافذة الشاشة التسلسلية. سيؤدي إرسال 1 من نافذة الشاشة التسلسلية إلى Arduino إلى تشغيل الليد الموجود على اللوحة ، بينما يؤدي إرسال 2 إلى إيقاف تشغيل الليد .
سيعرض إرسال 3 قائمة الخيارات التي يعمل عليها البرنامج . سيؤدي إرسال أي حرف آخر إلى ظهور رسالة افتراضية توضح أن الخيار الذي تم اختياره غير صالح.

كود:
void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);  // LED on pin 13 of UNO
}

char rx_byte = 0;

void loop() {
  if (Serial.available() > 0) {    // is a character available?
    rx_byte = Serial.read();
  
    switch (rx_byte) {
      case '1':
        digitalWrite(13, HIGH);
        Serial.println("LED is ON");
      break;
      
      case '2':
        digitalWrite(13, LOW);
        Serial.println("LED is OFF");
      break;
      
      case '3':
        Serial.println("------- MENU -------");
        Serial.println("1. Switch LED on.");
        Serial.println("2. Switch LED off.");
        Serial.println("3. This menu.");
        Serial.println("--------------------");
      break;
      
      default:
        Serial.println("Invalid option");
      break;
    } // end: switch (rx_byte)
  } // end: if (Serial.available() > 0)
}

سيتم شرح كيفية عمل البرنامج لاحقًا ، ولكن يجب علينا أولاً أن ننظر إلى بنية عبارة switch وكيف تعمل عبارة break .

بناء عبارة switch : Structure of the switch Statement
توضح الصورة أدناه بناء عبارة switch .



تحتوي عبارة switch على متغير (switch_var في الصورة أعلاه أو rx_byte في المثال السابق ) يمكن أن يكون متغيرًا صحيحًا (int) أو حرفًا (char).
سيتم اختبار متغير switch مقابل القيمة في كل حالة case لمعرفة ما إذا كانت متطابقة. عندما يتم العثور على حالة تطابق ، سيتم تشغيل العبارات الموجودة أسفل الحالة case حتى يتم الوصول إلى الكلمة الأساسية break . سيؤدي ذلك إلى كسر تدفق البرنامج خارج جسم عبارة switch وسيستمر تنفيذ البرنامج أسفل قوس إغلاق عبارة switch .
إذا لم يتم العثور على حالة case مطابقة ، فسيتم تشغيل الكود الموجود أسفل الكلمة الرئيسية default حتى يتم العثور على عبارة break .

كيف يعمل برنامج المثال :
في برنامج المثال، يتم وضع عبارة switch داخل عبارة if في الحلقة الرئيسية. عندئذٍ ، يتم تشغيل عبارة switch فقط في حالة استقبال حرف جديد من نافذة Serial Monitor.
عند استقبال حرف من نافذة Serial Monitor ، ستتحقق عبارة switch من وجود قيمة حالة case مطابقة. في حالة استقبال الحرف '1' ، يتم تشغيل الليد ويتم عرض رسالة في نافذة الشاشة التسلسلية.
إذا تم استقبال '2' ، يتم إيقاف تشغيل الليد . يعرض '3' قائمة بالخيارات المتاحة في البرنامج .
إذا تم إرسال أي حرف لا يتطابق مع الأحرف الموجودة في أي من عبارات الحالة case ، يتم تشغيل الكود الموجود في الجزء الافتراضي default من جسم switch والذي يعرض رسالة افتراضية.

عبارة break : The break Statement
يتم استخدام عبارة break في برنامج المثال للخروج من جسم عبارة switch .
يمكن أيضًا استخدام break للخروج من أي حلقة مثل while أو for . على سبيل المثال ، يمكن اختبار شرط معين في حلقة باستخدام عبارة if وإذا تم تقييم العبارة إلى true ، يمكن تشغيل عبارة break للخروج من الحلقة.

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً سعيد قادر ( شكر العضو على هذه المشاركة )
اعجاب سعيد قادر ( أعجبته المشاركة )
اعلانات
إضافة رد

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

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

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


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

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