الخوارزمياتالعوامل - التمرين الخامس
المطلوب
أكتب برنامج لحساب قيمة المتغير 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"); } }