الخوارزمياتالعوامل - التمرين الخامس
المطلوب
أكتب برنامج لحساب قيمة المتغير S
النهائية.
إجعل البرنامج يظهر لك قيمة العداد و قيمة المتغير S
في كل دورة.
النتيجة المطلوبة
طريقة التحليل
الخوارزمية
كود الجافا
public class Sum_Odd_And_Even_Numbers { public static void main (String[] args) { int S=0; for (int i=1; i <=10; i++) { if ( i%2 == 1) { System.out.print("S = " +S+ " + " +i+ " = " +(S+i)+ "\n"); S = S + i; } else if ( i%2 == 0) { System.out.print("S = " +S+ " - " +i+ " = " +(S-i)+ "\n"); S = S - i; } } System.out.print("\n"); } }
شرح الكود
int S=0;
- هنا قمنا بتعريف المتغير
S
لتخزين المجموع لذلك أعطيناه القيمة 0 كقيمة أولية.
for (int i=1; i <=10; i++) { if ( i%2 == 1) { System.out.print("S = " +S+ " + " +i+ " = " +(S+i)+ "\n"); S = S + i; } else if ( i%2 == 0) { System.out.print("S = " +S+ " - " +i+ " = " +(S-i)+ "\n"); S = S - i; } }
- هنا قمنا بإنشاء حلقة من 1 إلى 10 و في كل دورة تزيد قيمة العداد 1.
- في كل دورة يقوم البرنامج بفحص قيمة العداد
i
.
يسأل نفسه: هل هي عدد مفرد؟
إذا لم تكن عدد مفرد ينتقل إلى الشرط الثاني, فيسأل نفسه: هل هي عدد مزدوج؟
- إذا كانت قيمة العدادi
مفردة سيقوم بزيادتها على قيمة المتغيرS
.
- إذا كانت قيمة العدادi
مزدوجة سيقوم بإنقاصها من قيمة المتغيرS
. - ملاحظة: بالمنطق إذا لم يكن العدد مفرداً فإنه حتماً مزدوج. إذاً كان بإمكاننا وضع جملة
else
بدل الجملةelse if
.
في الواقع هنا يفضّل وضعelse
لكي لا تجعل الكمبيوتر يقوم بتحليل قيمة العداد ليعرف إذا كانت مزدوجة أم لا لأنها حتماً ستكون مزدوجة إذا قام بفحصها أولاً و لم يجدها مفردة. - إذا أردت أن يكون الكود ممتازاً فعليك كتابة البرنامج بهذه الطريقة:
public class Sum_Odd_And_Even_Numbers { public static void main (String[] args) { int S=0; for (int i=1; i <=10; i++) { if ( i%2 == 1) { System.out.print("S = " +S+ " + " +i+ " = " +(S+i)+ "\n"); S = S + i; } else { System.out.print("S = " +S+ " - " +i+ " = " +(S-i)+ "\n"); S = S - i; } } System.out.print("\n"); } }