معامل باقي القسمة (Modulo)
جزء من قسم Fundamentals في رحلة Java على Coddy — الدرس 16 من 73.
عامل باقي القسمة % يعطي باقي عملية القسمة. في لغة Java، يتم استخدامه بصيغة بسيطة:
result = dividend % divisor;- المقسوم: العدد الذي يتم تقسيمه.
- المقسوم عليه: العدد الذي يقسم المقسوم.
- النتيجة: باقي عملية القسمة.
على سبيل المثال:
result = 10 % 3;هنا، يتم تقسيم 10 على 3. الرقم 3 يتكرر في 10 ثلاث مرات، مع بقاء 1. لذا، ستكون قيمة result هي 1.
ماذا لو كان المقسوم أصغر من المقسوم عليه؟ في هذه الحالة، يتكرر المقسوم عليه 0 مرة، لذا يكون الباقي هو ببساطة المقسوم نفسه. على سبيل المثال، 2 % 3 يساوي 2، لأن 3 تتكرر في 2 صفر من المرات مع بقاء 2.
عادةً ما يُستخدم عامل باقي القسمة (modulo) للتحقق مما إذا كان الرقم زوجياً أم فردياً:
- إذا كان الرقم زوجياً، فإن قسمته على 2 ستترك باقياً قدره 0.
- إذا كان الرقم فردياً، فإن قسمته على 2 ستترك باقياً قدره 1.
عند استخدام المعامل modulo مع الأرقام ذات الفاصلة العائمة (doubles)، فإنه يعمل بشكل مشابه للأعداد الصحيحة ولكنه يحافظ على الدقة العشرية. على سبيل المثال:
double result = 5.5 % 2.0;
// result هو 1.5إليك كيف يعمل الأمر: 2.0 تتكرر في 5.5 مرتين (4.0)، والباقي هو 1.5 (5.5 - 4.0 = 1.5).
ملاحظة: يتم تخزين قيم double كتقريبات، لذا فإن بعض البواقي تُطبع مع خطأ ضئيل. على سبيل المثال 5.2 % 2.0 تطبع 1.2000000000000002 بدلاً من 1.2. هذا سلوك طبيعي للفاصلة العائمة (floating-point)، وليس خطأً في الكود الخاص بك.
مثال آخر:
double result = 7.5 % 3.5;
// النتيجة هي 0.5التحدي
مبتدئاكتب كوداً يقوم بتهيئة ثلاثة متغيرات، a (int) و b (double) و c (int) بالقيم 9 و 2.6 و 11 (على التوالي).
بعد ذلك، قم بتهيئة المتغيرات التالية:
d (int)الذي سيحمل نتيجةamodulo2e (int)الذي سيحمل نتيجةamodulo3f (double)الذي سيحمل نتيجةbmodulo1.5g (double)الذي سيحمل نتيجةbmodulo3.9h (int)الذي سيحمل نتيجةcmodulo10
تحقق من النتيجة وشاهد كيف تؤثر القيم المختلفة للمقسوم والمقسوم عليه على النتيجة.
جرّب بنفسك
public class Main {
public static void main(String[] args) {
// اكتب الكود الخاص بك أدناه
// لا تغير السطر أدناه
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("d = " + d);
System.out.println("e = " + e);
System.out.println("f = " + f);
System.out.println("g = " + g);
System.out.println("h = " + h);
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
دوال System.outتنسيق المخرجاتكلاس Scannerمراجعة - حتى 120مراجعة - صح أم خطأ5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع3المتغيرات - الجزء الثاني
الثوابتقواعد التسميةمراجعة - تهيئة المتغيراتتحويل الأنواع - الجزء الأولتحويل الأنواع - الجزء الثاني6اتخاذ القرار
جملة Ifجملة If - Elseجملة Switchالمعامل الثلاثيمراجعة - If Elseجملة If - Else المتداخلة