JavaScript / الدوال

تدريب على الدوال

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

في سباق تتابع للسباحة يسبح كل فريق ثلاثة أنواع، ونريد زمن كل فريق الكلي. نكتب دالة بثلاثة معاملات مفصولة بفواصل، ونمرّر عند الاستدعاء ثلاثة وسائط بنفس الترتيب. ويمكن حفظ القيمة المُرجعة في متغير لنستخدمها بعد ذلك:

JavaScript
function sum(freestyle, breaststroke, backstroke) {
  let time = freestyle + breaststroke + backstroke;
  return time;
}
let teamRed = sum(39.5, 60.5, 58.5);
let teamBlue = sum(40, 62, 58);
console.log(teamRed);
console.log(teamBlue);
console.log("The fastest time is " + Math.min(teamRed, teamBlue));
وحدة التحكم
158.5
160
The fastest time is 158.5
المصطلحفي المثال
المعاملات: أسماء في التعريفfreestyle, breaststroke, backstroke
الوسائط: قيم في الاستدعاء39.5, 60.5, 58.5
حفظ الناتج في متغيرlet teamRed = sum(39.5, 60.5, 58.5);
الوسائط يمكن أن تكون متغيرات، مثل Math.min(teamRed, teamBlue). وأسماء المعاملات تخص الدالة وحدها، فلا علاقة لها بأسماء المتغيرات خارجها.

حلقة وشرط داخل دالة

في سحب المدرسة تفوز التذكرة إذا كان رقمها يقبل القسمة على 7، أي أن باقي قسمته على 7 صفر: num % 7 == 0. لنعدّ التذاكر الفائزة من 0 إلى 999 نحتاج إلى عدّاد يبدأ من 0، وحلقة تمر على كل الأرقام، وشرط يزيد العدّاد، ثم نطبع العدّاد بعد الحلقة:

JavaScript
let count = 0;
for (let i = 0; i <= 999; i++) {
  if (i % 7 == 0) {
    count++;
  }
}
console.log(count);
وحدة التحكم
143

نضع البرنامج نفسه داخل دالة، ونجعل آخر رقم معاملًا، فنستطيع إعادة استخدامه لأي عدد من التذاكر:

JavaScript
function countWinners(lastNum) {
  let count = 0;
  for (let i = 0; i <= lastNum; i++) {
    if (i % 7 == 0) {
      count++;
    }
  }
  return count;
}
console.log(countWinners(999));
console.log(countWinners(100));
وحدة التحكم
143
15

وبعض الدوال تطبع النتيجة بنفسها، فلا تحتاج إلى return. نستدعيها في سطر مستقل دون console.log:

JavaScript
function printWinners(from, to) {
  for (let i = from; i <= to; i++) {
    if (i % 7 == 0) {
      console.log(i + " wins");
    }
  }
}
printWinners(120, 150);
وحدة التحكم
126 wins
133 wins
140 wins
147 wins
اكتب return count; بعد الحلقة. لو وضعتها داخلها لخرجت الدالة في أول دورة وأرجعت عددًا خاطئًا، لأن return تُنهي الدالة فورًا.

تدريبات

1أكمل الفراغتدريب المنهج

أنشئ الدالة calculation3 بالمعاملات a وb وc تُرجع حاصل ضربها a * b * c، فيُطبع 24.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
function ___(___) {
  let result = ___;
  return result;
}
console.log(calculation3(2, 3, 4));
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
2عدّل البرنامجتدريب المنهج

قبل السطر الأخير أعلن المتغير num1 وأسند إليه ناتج calc3(5, 10, 15). ثم في النهاية أعلن num2 بناتج calc3(4, 4, 4) واطبعه.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
function calc3(a, b, c) {
  let result = a * b * c;
  return result;
}

console.log(num1);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
3أكمل الفراغتدريب المنهج

أعلن teamGreen بناتج sum(41, 59.5, 60)، ثم أكمل السطر الأخير ليطبع أصغر زمن بين المتغيرات الثلاثة teamRed و teamBlue و teamGreen.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
function sum(freestyle, breaststroke, backstroke) {
  let time = freestyle + breaststroke + backstroke;
  return time;
}
let teamRed = sum(39.5, 60.5, 58.5);
let teamBlue = sum(40, 62, 58);
let teamGreen = ___;
console.log("The fastest time is " + Math.min(___));
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
4عدّل البرنامجتدريب المنهج

أكمل البرنامج ليعدّ التذاكر الفائزة في سحب أصغر من 0 إلى 500: حلقة for يبدأ فيها i من 0 ما دام i <= 500، وبداخلها إذا كان باقي قسمة i على 7 يساوي 0 زِد count بمقدار 1. يُطبع 72.

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

console.log(count);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
5أكمل الفراغتدريب المنهج

اكتب الشرط: إذا كان i يقبل القسمة على 3 يُطبع i.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
for (let i = 1; i < 10; i++) {
  if (___) {
    console.log(i);
  }
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
6اكتب البرنامجتدريب إضافي

أنشئ دالة timesTable بالمعامل n تطبع جدول ضرب n من 1 إلى 5 بالشكل 7 x 1 = 7. ثم استدعها بـ 7.

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

أنشئ دالة countPrizes بمعاملين students وevery تُرجع عدد الطلاب الفائزين بجائزة: الطلاب مرقمون من 1 إلى students، ويفوز كل طالب رقمه يقبل القسمة على every. اطبع countPrizes(40, 4) ثم countPrizes(100, 6) (الناتج 10 ثم 16).

تلميحعدّاد يبدأ من 0، وحلقة من 1 إلى students، وreturn count; بعد الحلقة.
JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.

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

  • دالة بعدة معاملات function f(a, b, c) تُستدعى بنفس عدد الوسائط وترتيبها: f(1, 2, 3).
  • احفظ الناتج في متغير: let x = f(1, 2, 3);، ومرّر المتغيرات كوسائط.
  • يمكن وضع حلقة وشرط داخل الدالة؛ وn % 7 == 0 تعني أن n يقبل القسمة على 7.
  • return تُنهي الدالة فورًا، فضعها بعد الحلقة؛ والدالة التي تطبع بنفسها لا تحتاج إليها.