البرمجة

تحسين أداء اختبار الضرب في جافا

في هذا القطعة من الكود، يبدو أن هناك مشكلة في مكان تعريف متغير “correctAnswers”. هذا المتغير يُعيد تعريفه في كل تكرار من التكرارات، وذلك بسبب أنه يتم وضع تعريفه داخل حلقة الـ “while”. هذا يعني أنه في كل تكرار، يتم تعيين قيمة “correctAnswers” إلى الصفر مرة أخرى، ويتم زيادتها فقط عندما يتم إدخال إجابة صحيحة. وعندما يصل التكرار إلى النهاية، يتم طباعة نسبة الإجابات الصحيحة وهي في هذه الحالة تكون دائمًا 1 أو 0 بناءً على ما إذا كانت الإجابة الأخيرة صحيحة أم لا.

لحل هذه المشكلة، يجب أن نقوم بنقل تعريف المتغير “correctAnswers” خارج حلقة الـ “while”، حتى لا يتم إعادة تعريفه في كل تكرار. بذلك سيتم الاحتفاظ بقيمته بين التكرارات، وسيتم زيادته بشكل صحيح كلما كانت الإجابة صحيحة. لنقم بتعديل الكود ليصبح كالتالي:

java
private static void multiplicationTest(int maxNumber, int minNumber) { int i = 1; int correctAnswers = 0; // نقل تعريف المتغير إلى خارج حلقة الـ "while" while(i != 11) { int firstNumber = (minNumber + (int)(Math.random() * ((maxNumber - minNumber) + 1)) ), secondNumber = (minNumber + (int)(Math.random() * ((maxNumber - minNumber) + 1)) ); int inputAnswer, answer = (firstNumber * secondNumber); System.out.print("Question " + i + ".)\t" + firstNumber + " * " + secondNumber + " = "); inputAnswer = input.nextInt(); if(inputAnswer == answer) { correctAnswers++; System.out.print("\tcorrect\n"); } else { System.out.print("\tincorrect --- " + firstNumber + " * " + secondNumber + " = " + answer + "\n"); } if(i == 10) { System.out.println("\nYou scored " + correctAnswers + " out of 10 - " + (correctAnswers * 10) + "%."); } i++; } }

بهذا التعديل، ستبقى قيمة “correctAnswers” تزيد بشكل صحيح بين التكرارات، وستكون قيمتها النهائية صحيحة عندما تتم طباعتها في النهاية.

المزيد من المعلومات

بالطبع، دعنا نواصل توسيع المقال لشرح الكود بشكل أكبر وتوضيح المفاهيم المتعلقة به.

في الكود السابق الذي قدمته، تم تقديم وظيفة باسم “multiplicationTest” تقوم بإجراء اختبار ضرب بسيط. يستقبل هذا الدالة عددين كمدخلات: “maxNumber” و “minNumber”، والتي تحددان النطاق الذي سيتم فيه إنشاء الأرقام لعملية الضرب.

الدالة تبدأ بتهيئة متغير التكرار “i” إلى القيمة 1، ثم تدخل في حلقة “while” تستمر حتى يصل “i” إلى القيمة 11. داخل كل تكرار من الحلقة، يتم إنشاء رقمين عشوائيين للضرب، وتخزين الإجابة الصحيحة في متغير “answer”.

بعد ذلك، يطلب من المستخدم إدخال إجابته عبر مدخل البيانات. وفي هذه النقطة، يتم التحقق مما إذا كانت الإجابة التي قدمها المستخدم تتطابق مع الإجابة الصحيحة المحسوبة مسبقًا. إذا كانت الإجابة صحيحة، يتم زيادة متغير “correctAnswers” بواحد، ويتم طباعة رسالة تؤكد الصحة. أما إذا كانت الإجابة غير صحيحة، فيتم طباعة رسالة توضح الإجابة الصحيحة.

عندما يصل “i” إلى القيمة 10 (التي تشير إلى نهاية الاختبار بعد إجراء 10 عمليات ضرب)، يتم طباعة نتيجة الاختبار بالاعتماد على قيمة متغير “correctAnswers”، وهو عدد الإجابات الصحيحة التي قدمها المستخدم.

التعديل الذي قمنا به في المقال، والذي يتمثل في نقل تعريف متغير “correctAnswers” إلى خارج حلقة “while”، يحل مشكلة تعريف هذا المتغير مرارًا وتكرارًا داخل كل تكرار من التكرارات، مما يؤدي إلى إعادة تهيئته إلى القيمة الصفرية في كل مرة. بعد التعديل، يتم الاحتفاظ بقيمة “correctAnswers” بين التكرارات، مما يسمح بحساب نتيجة الاختبار بشكل صحيح في النهاية.

هذا التعديل يعكس أيضًا فهمًا أعمق لكيفية عمل البرنامج والتأثيرات المتوقعة لكل خطوة في التنفيذ. من خلال هذه العملية، يمكن للمطورين تحسين أداء التطبيقات وتجنب الأخطاء الشائعة مثل هذه.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

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