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

لهذه العملية نستخدم التعليمة switch.

التعليمة switch / case

مثل التعليمة if، تقوم التعليمة switch…case و التي تسمى بجملة الإختبار متعدد البدائل، على التحكم في مسار البرنامج بالسماح للمبرمج تنفيذ أجزاء من نص البرنامج دون غيرها حسب بعض الشروط.

تقوم التعليمة switch بمقارنة قيمة متغير مع القيم الموجودة في التعليمة case. إذا توافقت القيمتان تنفذ التعليمات.

بواسطة التعليمة break نخرج من التعليمة switch.

توضع break في آخر كل مجموعة من التعليمات المنفصلة و ذلك لمنع تنف ما يأتي بعد من التعليمات و التي لم تحقق الشرط الحالي.

نص جملة الإختبار متعدد البدائل

switch (var) {

case etiquette1:
	// instructions
	break;
case etiquette2:
	// instructions
	break;
default:
	// instructions
}

المعاملات

var : المتغير أو التعبير المنطقي الخاضع للمقارنة مع قيم العبارات «..etiquette».
default : تنفذ إذا لم يكن أي من المقارنات موافقة (يمكن الاستغناء على هذه التعليمة).

مثال

switch (var) {

case 1:
	// نَفِذ هذه التعليمات إذا كان المتغير يساوي 1
	break;
case 2:
	// نَفِذ هذه التعليمات إذا كان المتغير يساوي 2
	break;
default:
	// نَفِذ هذه التعليمات إذا لم يكن أي من المقارنات صحيحة
    // default غير لازمة

}

إفتح واجهة التطوير و حرر نص البرنامج التالي:

int command = 0;
void setup()
{
Serial.begin(9600);
// commandes menu
Serial.println("Command Interpreter");
Serial.println("_________________________");
Serial.println(" 0 for command A ");
Serial.println(" 1 for command B ");
Serial.println(" 2 for command C ");
Serial.println(" 3 for command D ");
Serial.println(" 4 for command E ");
Serial.println("*************************");
}
void loop()
{

  if (Serial.available()) {
      executecmd();
  }
}

void executecmd(){
command = Serial.read();
switch(command){
  case '0':
    cmd_A();
    break;
  case '1':
    cmd_B();
    break;
  case '2':
    cmd_C();
    break;
  case '3':
    cmd_D();
    break;
  case '4':
    cmd_E();
    break;
  default:
    Serial.print(" invalide entry: ");
    Serial.println(command, BYTE);
    break;
}
    }
    
void cmd_A(){
      Serial.println("cmd_A execute");
      }
void cmd_B(){
      Serial.println("cmd_B execute");
      }
void cmd_C(){
      Serial.println("cmd_C execute");
      }
void cmd_D(){
      Serial.println("cmd_D execute");
      }
void cmd_E(){
      Serial.println("cmd_E execute");
      }

بقم بفحص نص البرنامج ثم إرفعه إلى اللوحة و نفّذه.

قم بتنفيذ مراقب الوصل. جرب مختلف الأوامر.

في البرنامج السابق قمنا بتعريف المتغير command الذي يقوم بتسجيل الأوامر الآتية من لوحة مفاتيح الحاسوب. بعد ذلك نظهر قائمة الأوامر على الشاشة و أخيراً ننفذ الدالة ()executecmd التي تقوم بتوجيه الأوامر حسب الشروط في التعليمة case

هذا البرنامج يمكن أن يكون أحد مكونات برامجك لمفسرات الأوامر.

ماتعلمناه

  • مفسرات الأوامر
  • جملة الإختبار متعدد البدائل  switch…case…default.