JavaScript / اتخاذ القرار

تجميع الحالات والنفي

اجمع الحالات التي لها نفس النتيجة في switch، ووزّع بالتناوب بباقي القسمة، واعكس الشرط بالعلامة !. منهج البكالوريا

أحيانًا تحتاج قيم مختلفة إلى نفس التصرف. في هذا البرنامج "sunny" و"cloudy" تطبعان الجملة نفسها، فتكررت ثلاثة أسطر بلا داعٍ:

JavaScript
const weather = "cloudy";

switch (weather) {
  case "sunny":
    console.log("Let's go shopping");
    break;
  case "cloudy":
    console.log("Let's go shopping");
    break;
  case "rainy":
    console.log("Let's stay home");
    break;
}
وحدة التحكم
Let's go shopping

الحل: نكتب الحالات متتالية فوق بعضها، ثم التصرف مرة واحدة. في لعبة التصويب: الهدف 4 أو 8 يربح لعبة فيديو، و1 أو 7 يربح حلوى، وغير ذلك ملصق:

JavaScript
const target = 7;

switch (target) {
  case 4:
  case 8:
    console.log("Get video game");
    break;
  case 1:
  case 7:
    console.log("Get candy assortment");
    break;
  default:
    console.log("Get sticker");
    break;
}
وحدة التحكم
Get candy assortment
يعمل التجميع لأن case 1: ليس بعدها break، فيكمل التنفيذ إلى ما بعد case 7:. وكتبنا const بدل let لأن رقم الهدف لا يتغير بعد إصابته؛ const تعلن متغيرًا لا تتغير قيمته.

التوزيع بالتناوب بباقي القسمة

نوزع الطلاب على 4 مجموعات بالترتيب: الأول في A والثاني في B والثالث في C والرابع في D، ثم الخامس في A من جديد. باقي القسمة على 4 يتكرر بنفس النمط، فتكفي 4 حالات لأي رقم:

رقم الطالب12345678
num % 412301230
المجموعةABCDABCD
JavaScript
const num = 6;

switch (num % 4) {
  case 1:
    console.log("Student " + num + " is in Group A");
    break;
  case 2:
    console.log("Student " + num + " is in Group B");
    break;
  case 3:
    console.log("Student " + num + " is in Group C");
    break;
  case 0:
    console.log("Student " + num + " is in Group D");
    break;
}
وحدة التحكم
Student 6 is in Group B

النفي بالعلامة !

العلامة ! قبل شرط تعكس نتيجته: true تصبح false، وfalse تصبح true. نضع الشرط بين قوسين ثم ! قبلهما، فيصبح المعنى «إذا لم يكن…»:

JavaScript
console.log(5 > 3);
console.log(!(5 > 3));

let seat = "sold out";
if (!(seat == "available")) {
  console.log("It's sold out");
}
وحدة التحكم
true
false
It's sold out
لا تنسَ القوسين حول الشرط: !(seat == "available"). والنتيجة هنا مثل seat != "available".

تدريبات

1عدّل البرنامجتدريب المنهج

تغيّرت الجوائز: الهدف 8 أيضًا يطبع Video game Get، والهدف 7 أيضًا يطبع Candy Assortment Get. أضف case 8: وcase 7: بتجميعهما مع الحالات الموجودة، دون تكرار console.log. مع target = 7 يُطبع Candy Assortment Get.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const target = 7;

switch (target) {
  case 4:
    console.log("Video game Get");
    break;
  case 1:
    console.log("Candy Assortment Get");
    break;
  default:
    console.log("Sticker Get");
    break;
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
2اكتب البرنامجتدريب المنهج

اكتب switch على weather مع تجميع الحالات: "sunny" و"cloudy" تطبعان Let's go shopping، و"rainy" تطبع Let's stay home.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const weather = "cloudy";
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
3أكمل الفراغتدريب المنهج

أكمل الفراغين لتفحص switch باقي قسمة num على 4، فيطبع Student 7 is in Group C.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const num = 7;

___ (___) {
  case 0:
    console.log("Student " + num + " is in Group D");
    break;
  case 1:
    console.log("Student " + num + " is in Group A");
    break;
  case 2:
    console.log("Student " + num + " is in Group B");
    break;
  case 3:
    console.log("Student " + num + " is in Group C");
    break;
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
4عدّل البرنامجتدريب المنهج

أعد كتابة الشرط في السطر الثاني ليصبح نفي الشرط seat == "available"، فيطبع It's sold out.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let seat = "sold out";
if (seat == "available") {
  console.log("It's sold out");
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
5اكتب البرنامجتدريب إضافي

في مصر العطلة يوما الجمعة والسبت. اكتب switch على day مع تجميع الحالات: "Friday" و"Saturday" تطبعان Weekend، والأيام من "Sunday" إلى "Thursday" تطبع School day، وغير ذلك Not a day.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const day = "Tuesday";
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
6اكتب البرنامجتدريب إضافي

المتغير month رقم الشهر (1 إلى 12). اطبع الفصل: 12 و1 و2 Winter، و3 و4 و5 Spring، و6 و7 و8 Summer، و9 و10 و11 Autumn.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const month = 4;
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
7اكتب البرنامجتدريب إضافي

المتغير homework = "not done". باستخدام ! اطبع Finish your homework first إذا لم تكن قيمته "done".

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let homework = "not done";
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.

النقاط الرئيسية

  • لتنفيذ نفس التصرف لقيم مختلفة اكتب case 4: case 8: متتاليتين ثم التصرف مرة واحدة.
  • switch (n % 4) يوزّع الأرقام على 4 مجموعات بالتناوب.
  • !(شرط) تعكس النتيجة: true تصبح false والعكس.