الخوارزمياتالعوامل - التمرين السادس
المطلوب
أكتب برنامج لحساب قيمة المتغير S
النهائية.
إرشادات
إذا ركزت قليلاً في عمليات القسمة الظاهرة في الصورة فستجد أن ناتج عمليات القسمة سيكون في كل مرة على الأغلب يحتوي على فاصلة عشرية كالتالي:
1, -0.5, 0.33, -0.25, 0.2.
- لذلك بما أننا ننوي تخزين ناتج عمليات قسمة في المتغير
S
فهذا يعني أنه يجب أن يكون معرف كـ double حتى لا نخسر أي رقم يحتوي على فاصلة عشرية يضاف عليه أو يطرح منه. - و بما أن قيمة العداد
i
ستدخل في كل عملية قسمة يتم إجراءها فهذا يعني أنه يجب أن يكون أيضاً معرف كـ double حتى لا نخسر أي رقم يحتوي على فاصلة عشرية ينتج عن عملية القسمة.
النتيجة المطلوبة
طريقة التحليل
- الرقم الموجود في الأعلى هو دائماً الرقم 1.
- الرقم الموجود في الأسفل يبدأ من 1 وصولاً إلى 100 و هو عبارة عن قيمة العداد المستخدم في الحلقة في كل دورة.
الخوارزمية
كود الجافا
شرح الكود
- هنا قمنا بتعريف المتغير
S
لتخزين المجموع لذلك أعطيناه القيمة 0 كقيمة أولية.
- هنا قمنا بإنشاء حلقة من 1 إلى 100 و في كل دورة تزيد قيمة العداد 1.
- في كل دورة يقوم البرنامج بفحص قيمة العداد
i
كالتالي:- يبدأ بالشرط الأول فيسأل نفسه, هل هي عدد مفرد؟
إذا كان الجواب نعم, سيتم زيادة (الناتج من قسمة 1 علىi
) على قيمةS
القديمة, ثم تخزين الناتج النهائي فيS
من جديد. - إذا لم تكن عدد مفرد ينتقل إلى الشرط الثاني, فيسأل نفسه: هل هي عدد مزدوج؟
إذا كان الجواب نعم, سيتم إنقاص (الناتج من قسمة 1 علىi
) من قيمةS
القديمة, ثم تخزين الناتج النهائي فيS
من جديد.
- يبدأ بالشرط الأول فيسأل نفسه, هل هي عدد مفرد؟
- ملاحظة: أيضاً في المنطق إذا لم يكن الرقم مفرد فإنه حتماً مزدوج.
إذاً كان بإمكاننا وضع جملة else بدل جملة else if.
في الواقع هنا يفضّل وضع else لكي لا تجعل الكمبيوتر يقوم بتحليل قيمة العداد ليعرف إذا كانت مزدوجة أم لا.
لأنها حتماً ستكون مزدوجة إذا قام بفحصها أولاً و لم يجدها مفردة. - إذا أردت أن يكون الكود ممتازاً فعليك كتابة البرنامج بهذه الطريقة: