التحدي البرمجي1 من جمل الدوران الشرطية while .. ما الخطأ في الكود لو سمحتم وما الجواب الصحيح؟؟
انتبه لديك خطأ في شرط جملة الدوران حيث المطلوب هو مجموع الارقام من from ألى to
وبالتالي قيمة from الاصغر يجب ان تزداد حتى تصل الى قيمة مساوية لقيمة المتغير to وهذا سيشمل حالات تحقق الشرط.
عندما تصبح قيمة from اكبر من قيمة to سيختل الشرط وتتوقف جملة الدوران.
اثناء تحقق الشرط وتكرار تنفيذ جملة الدوران ستجمع قيم from ضمن sum.
انتبه لست بحاجة لأي امر طباعة ضمن الكود حيث لم يطلب ذلك في السؤال
ويمكنك قراءة معلومات عن جملة الدوران في موضوع مشابه على الرابط
استاذ فادي شكرا لردك …
لكن هذا الشرط من المساعدة كما في الصورة
و مع ذلك غيرت الشرط ليصبح
var from: Int = 10
var to: Int = 100
var sum: Int = 0
while from > 10 && to <= 100 {
sum = from += 1
}
ولم ينجح ذلك
الشرط من المساعدة صحيح وهو ان from أصغر أو تساوي to
انت كتبته في حلك بشكل معاكس لذلك.
اعد كتابة الشرط بالشكل المبسط والصحيح ولايمكنك استخدام اشارتي المساواة معا في نفس السطر حيث ليس للعملية من معنى في هذه الحالة
حاول اعادة كتابة طريقة جمع قيم from الى sum حيث انك اقتربت كثيرا من الحل
لاتنسى انك ايضا بحاجة الى زيادة قيمة from قبل انتهاء جملة الدوران
انتبه فقد قمت بزيادة قيمة from قبل جمعها الى sum
هذا سيؤدي الى خطأ في ناتج الجمع النهائي ضمن sum
المطلوب في التحدي تحديث القيمة لي sum واضافة قيمة from في كل مره
تحديث قيمة sum تكون sum = from + to
واضافة القيمة لي from تكون from +=1
كتبت الجملة كذا وطلعت خطا
sum = from + to
while from <= to {
from += 1
}
ارجوا المساعده
انتبه من اجل جمع كل القيم المطلوبة ضمن sum فمن المهم ان تكون داخل جملة الدوران.
عندما تكون sum داخل جملة الدوران فانه في كل مرة تنفذ فيها جملة الدوران ستأخذ sum قيمة جديدة عن طريق اضافة قيمة from الى قيمتها القديمة من اخر دورة في جملة دوران.
قمت باضافة جمع كل القيم داخل الدوران sum = from + to
while from <= to {
sum = from + to
from += 1
}
لازال خطا
ممتاز، الان انتبه ان المطلوب هو مجموع الارقام من from الى to
بالنظر الى حلك اجد ان اول قيمة ستأخذها sum ستكون from+to وبالتالي لم نبدأ من قيمة from كما هو مفترض.
ارجوا التوضيح اكثر لان لم يطلب اضافة المتغير sum كشرط في جملة الدوران while لذلك لم تكون خارج جملة while اذا كان طلب التحديث يكون داخال جملة الدوران من المفترض ان تكون الجملة صحيحة sum = from + to
ياريت يكون فيه توضيح اكثر …
المطلوب هو مجموع الارقام من from الى to
اي سنبدأ بقيمة From ثم سنضيف لها قيمة from+1 ثم سنضيف
from+1)+1
)
وهكذا حتى تصبح قيمة from تساوي قيمة to وعندها لن يتحقق شرط جملة الدوران وستتوقف وستكون sum تحوي مجموع القيم المطلوبة
ممكن توضيح سبب الخطأ فى التحدى البرمجى ل while loop
ممكن توضيح سبب الخطأ فى التحدى البرمجى ل while loop
قمت باضافة قيمة from الي قيمة from+1 في كل دورة الي ان يصل الي قيمة to وتكون هي مجموع القيم لـ sum ولكن يحدث خطا لدي
while from <= to {
from = (from+1)+1
sum = from
}
مرفق صورة تجربة على البلاي قراوند واضافة امر طباعة print للمتغير sum حتى اجد العدد والذي توقف عنده الدوران 102 تجاوز العدد المطلوب لقيمة to
ممتاز, شرط جملة الدوران صحيح الآن لكن انتبه المطلوب زيادة قيمة from بمقدار واحد فقط في كل مرة تنفذ فيها جملة الدوران.
في هذه الطريقة انت تزيد قيمة الواحد وايضا قيمة from السابقة قبل التعديل وبذلك لن تعمل جملة الدوران بشكل صحيح ايضا.
Sum تساوي قيمة from وبالتالي هي لا تقوم بجمع جميع قيم from.
ولست بحاجة لطباعة قيمة sum علما ان قيمتها عند انتهاء جملة الدوران ستكون اكبر بكثير من قيمة to لانها ناتج جمع جميع الاعداد من from الى to
يمكنك الاستفادة من المعلومات الموجودة في التعليقات السابقة هنا لمساعدتك.
أجل اقتربت كثيرا من الحل الصحيح.
توجد نقطتان يفضل مراعاتهما
اولا ان عداد جملة الدوران او زيادة قيمة from يفضل ان تكون في نهاية جملة الدوران.
ثانيا يجب ان تقوم بالجمع التراكمي لقيم from داخل sum ولاتكفي المساواة. حيث في هذه الحالة ستأخذ sum قيمة from في كل مرة تنفذ فيها جملة الدوارن وبالتالي ستكون قيمتها في نهاية جملة الدوران تساوي قيمة from قبل اختلال الشرط أي هي نفسها قيمة to.
التحدي البرمجي الخاص ب while loop