العوامل في الخوارزميات

مفهوم العوامل و أنواعها في الخوارزميات

عامل : تعني Operator في اللغة الإنجليزية, و العامل عبارة عن رمز له معنى محدد في البرمجة.

ملاحظة: هناك الكثير من العوامل و كل عامل يمكن إستخدامه لغرض محدد مع الإشارة إلى أنك لست مضطراً لأن تتعلمهم كلهم.
ستتعرف في هذا الدرس على العوامل الأكثر إستخداماً و التي تستخدم في الشروط و الحلقات.

أدرس جميع الأمثلة و التمارين الموضوعة حتى لا تفوتك أي فكرة قد تحتاجها مستقبلاً.


نصيحة

عند دراسة الأمثلة الموضوعة, قم بتغيير قيم المتغيرات و حاول أن تتلاعب بالكود لأن ذلك سيجعلك تفهم أكثر و سيجعل فكرة العوامل ترسخ في ذاكرتك.

العوامل التي تستخدم في العمليات الحسابية Arithmetic Operators

إسم العامل رمزه طريقة إستخدامه إستخدامه
Assignment = a = b أعطي a قيمة b
Addition + a + b أضف قيمة b على قيمة a
Subtraction - a - b إطرح قيمة b من قيمة a
Unary plus + +a أضرب قيمة a بالعامل +
Unary minus - -a أضرب قيمة a بالعامل -
Multiplication * a * b أضرب قيمة a بقيمة b
Division / a / b أقسم قيمة a على قيمة b
Modulo % a % b للحصول على آخر رقم يبقى عندما نقسم قيمة a على قيمة b
Increment ++ a++ لإضافة 1 على قيمة a و تستخدم في الحلقات
Decrement -- a-- لإنقاص 1 من قيمة a و تستخدم في الحلقات

أمثلة و ملاحظات حول طريقة إستخدام و فائدة كل عامل مذكور في الجدول.

 

العوامل التي تستخدم في العمليات الحسابية في الخوارزميات

مثال حول العامل = (Assignment Operator)

العامل = يستخدم لإعطاء قيمة للمتغير.

مثال
		public class Assignment {

		public static void main (String[] args) {

        int b = 20;
        int a = b;

		}

		}
	  


مثال حول العامل + (Addition Operator)

العامل + يستخدم لإضافة قيمة على قيمة, أي في عمليات الجمع.

مثال
		public class Addition {

		public static void main (String[] args) {

        int a = 20;
        int b = 14;

        int c = a + b;   // b و a تحتوي على ناتج جمع القيمتين c

		}

		}
	  


مثال حول العامل - (Subtraction Operator)

العامل - يستخدم لإنقاص قيمة من قيمة, أي في عمليات الطرح.

مثال
		public class Subtraction {

		public static void main (String[] args) {

        int a = 20;
        int b = 14;

        int c = a - b;   // b و a تحتوي على الفرق بين القيمتين c

		}

		}
	  


مثال حول العامل + (Unary-Plus Operator)

يعني ضرب القيمة بالعامل +.

مثال
		public class UnaryPlus {

		public static void main (String[] args) {

        // positive أكبر من صفر, أي قيمة a المثال الأول: إذا كانت قيمة
        int a = 10;
        int b = +a;                     // a لقيمة UnaryPlus تحتوي على الـ b
        System.out.print( b + "\n" );


        // negative أصغر من صفر, أي قيمة a المثال الثاني: إذا كانت قيمة
        a = -10;
        b = +a;                         // a لقيمة UnaryPlus تحتوي على الـ b
        System.out.print( b + "\n" );

		}

		}
	  
نتيجة التشغيل


مثال حول العامل - (Unary-Minus Operator)

يعني ضرب القيمة بالعامل -.

مثال
		public class UnaryMinus {

		public static void main (String[] args) {

        // positive أكبر من صفر, أي قيمة a المثال الأول: إذا كانت قيمة
        int a = 10;
        int b = -a;                     // a لقيمة UnaryMinus تحتوي على الـ b
        System.out.print( b + "\n" );


        // negative أصغر من صفر, أي قيمة a المثال الثاني: إذا كانت قيمة
        a = -10;
        b = -a;                         // a لقيمة UnaryMinus تحتوي على الـ b
        System.out.print( b + "\n" );

		}

		}
	  
نتيجة التشغيل


مثال حول العامل * (Multiplication Operator)

العامل * يستخدم لضرب قيمة بقيمة, أي في عمليات الضرب.

مثال
		public class Multiplication {

		public static void main (String[] args) {

        int a = 6;
        int b = 5;

        int c = a * b;               // b و a تحتوي على ناتج ضرب القيمتين c

		}

		}
	  


مثال حول العامل / (Division Operator)

العامل / يستخدم لقسمة قيمة على قيمة, أي في عمليات القسمة.

مثال
		public class Divison {

		public static void main (String[] args) {

        int a = 8;
        int b = 5;

        int c = a / b;               // b على قيمة a تحتوي على ناتج قسمة قيمة c

        System.out.print( c + "\n" );

		}

		}
	  
نتيجة التشغيل

إنتبه

لو كانت المتغيرات a و b و c معرفة كـ double لكانت القيمة النهائية للمتغير c تساوي 1.6 و ليس 1.
إذاً هنا عندما قمنا بتعريف المتغيرات كـ int خسرنا كل القيم التي بعد الفاصلة.

معلومة
الآلة الحاسبة التي نستخدمها في المدرسة أو العمل تعطينا الجواب دائماً كـ double لأنها لا تتجاهل أي رقم موجود بعد الفاصلة.



مثال حول العامل % (Modulo Operator)

العامل % يقال له الـ Modulo و يسمى Remainder في الرياضيات و هو آخر رقم يبقى من علمية القسمة.
إذاً نستخدم الـ Modulo للحصول على آخر رقم يبقى من عملية القسمة.
و له فوائد كثيرة, فمثلاً يمكنك أن تعرف أيضاً إذا كان الرقم مفرد أو مزدوج ( أي Even or Odd ) من خلاله.

في هذا المثال سنقوم بتخزين الرقم الذي يبقى من القسمة في المتغير c.

مثال
		public class Modulo {

		public static void main (String[] args) {

        int a = 8;
        int b = 5;

        int c = a % b;               // b على a تحتوي على الباقي من قسمة c

        System.out.print( c + "\n" );

		}

		}
	  
نتيجة التشغيل
شرح الكود
  • المتغير a قيمته 8.

  • المتغير b قيمته 5.


  • الآن أنظر إلى الكود التالي:

  • 			int c = a % b;
    		  

  • إذا وضعنا قيم المتغيرات مكان أسمائهم سيبدو الكود كالتالي:

  • 			int c = 8 % 5;
    		  

  • الآن أنظر كيف أتى جواب الـ Modulo


لمعرفة إذا كان العدد مفرد أو مزدوج أنظر إلى الباقي من عملية قسمة هذا الرقم على 2 فقط.

  • أي عدد تقسمه على 2 و يبقى منه 1, فهذا يعني أن هذا العدد هو عدد مفرد.

  • أي عدد تقسمه على 2 و يبقى منه 0 ( أي لا يبقى منه شيء ) , فهذا يعني أن هذا العدد هو عدد مزدوج.

لاحظ الصورة التالية.



مثال حول العامل ++ (Increment Operator)

العامل ++ يستخدم لزيادة قيمة المتغير واحداً, و هذا الأسلوب يستخدم كثيراً في الحلقات لزيادة قيمة العداد واحداً في كل دورة بكود أقل.

مثال
		public class Increment {

		public static void main (String[] args) {

        for ( int i=1; i <=5; i++ )
        {
		System.out.print( i +"\n");
        }

		}

		}
	  
نتيجة التشغيل
شرح الكود
  • أنشأنا حلقة تتكرر من 1 إلى 5 أي أنشأنا حلقة تتكرر5 مرات.

  • في كل دورة قمنا بطباعة قيمة العداد i.


  • الآن أنظر إلى الفارق في الحلقة:

  • 			for ( int i=1; i <=5; i++ )
    		  
  • سابقاً كنا نكتبها هكذا:

  • 			for ( int i=1; i <=5; i=i+1 )
    		  

  • إذاً i++ هي فقط إختصار للكود i = i + 1.



مثال حول العامل -- (Decrement Operator)

العامل -- يستخدم لإنقاص قيمة المتغير واحداً, و هذا الأسلوب يستخدم كثيراً في الحلقات لإنقاص قيمة العداد واحداً في كل دورة بكود أقل.

مثال
		public class Decrement {

		public static void main (String[] args) {

        for ( int i=5; i>=1; i-- )
        {
		System.out.print( i +"\n");
        }

		}

		}
	  
نتيجة التشغيل
شرح الكود
  • أنشأنا حلقة تتكرر من 5 إلى 1 أي أيضاً أنشأنا حلقة تتكرر5 مرات.

  • هنا أعطينا العداد قيمة أولية تساوي 5, في كل دورة سيسأل الكمبيوتر نفسه هذا السؤال: هل قيمة الـ i أكبر أو تساوي 1؟

  • إذا كانت قيمة العداد أكبر أو تساوي 1 سيقوم البرنامج بطباعة قيمة العداد i.

  • هنا لاحظ أننا قمنا بإنقاص قيمة العداد 1 في كل دورة و هذا ما يسمى Decrement.


  • يمكنك أيضاً إنقاص قيمة العداد 1 في بعد كل دورة من الحلقة أيضاً بطريقتين:

    • الطريقة الأولى:

    			for ( int i=5; i>=1; i-- )
    		  
    • الطريقة الثانية:

    			for ( int i=5; i>=1; i=i-1 )
    		  

  • إذاً i-- هي فقط إختصار للكود i = i - 1.


ملاحظة

من الآن فصاعداً مع الحلقات سنختصر الكود i = i + 1 بالكود i++.
و الكود i = i - 1 بالكود i--.

العوامل التي تستخدم للمقارنة Comparison Operators

إسم العامل رمزه طريقة إستخدامه إستخدامه
Equal to == a == b لمعرفة إذا كانت قيمة a تساوي قيمة b
Not equal to =! a != b لمعرفة إذا كانت قيمة a لا تساوي قيمة b
Greater than a > b لمعرفة إذا كانت قيمة a أكبر من قيمة b
Less than > a < b لمعرفة إذا كانت قيمة a أصغر من قيمة b
Greater than or equal to = a >= b لمعرفة إذا كانت قيمة a أكبر أو تساوي قيمة b
Less than or equal to => a <= b لمعرفة إذا كانت قيمة a أصغر أو تساوي قيمة b

أمثلة و ملاحظات حول طريقة إستخدام و فائدة كل عامل مذكور في الجدول.

العوامل التي تستخدم للمقارنة في الخوارزميات Comparison Operators

مثال حول العامل == (Equal To Operator)

العامل == يستخدم لتنفيذ كود معين إذا كانت قيمة المتغير الأول تساوي قيمة المتغير الثاني.

مثال
		public class EqualTo {

		public static void main (String[] args) {

        int a = 10;
        int b = 10;

        if( a == b )
        {
		System.out.print("a is Equal To b");
        }

        System.out.print("\n");

		}

		}
	  
نتيجة التشغيل


مثال حول العامل != (Not Equal To Operator)

العامل != يستخدم لتنفيذ كود معين إذا كانت قيمة المتغير الأول لا تساوي قيمة المتغير الثاني.

مثال
		public class NotEqualTo {

		public static void main (String[] args) {

        int a = 10;
        int b = 1234;

        if( a != b )
        {
		System.out.print("a is Not Equal To b");
        }

        System.out.print("\n");

		}

		}
	  
نتيجة التشغيل


مثال حول العامل > (Greater Than Operator)

العامل > يستخدم لتنفيذ كود معين إذا كانت قيمة المتغير الأول أكبر من قيمة المتغير الثاني.

مثال
		public class GreaterThan {

		public static void main (String[] args) {

        int a = 50;
        int b = 14;

        if( a > b )
        {
		System.out.print("a is Greater Than b");
        }

        System.out.print("\n");

		}

		}
	  
نتيجة التشغيل


مثال حول العامل < (Less Than Operator)

العامل < يستخدم لتنفيذ كود معين إذا كانت قيمة المتغير الأول أصغر من قيمة المتغير الثاني.

مثال
		public class LessThan {

		public static void main (String[] args) {

        int a = 5;
        int b = 20;

        if( a < b )
        {
		System.out.print("a is Less Than b");
        }

        System.out.print("\n");

		}

		}
	  
نتيجة التشغيل


مثال حول العامل >= (Greater Than or Equal To Operator)

العامل >= يستخدم لتنفيذ كود معين إذا كانت قيمة المتغير الأول أكبر أو تساوي قيمة المتغير الثاني.

مثال
		public class GreaterThanOrEqualTo {

		public static void main (String[] args) {

        // b أكبر من قيمة a إذا كانت قيمة
        int a = 20;
        int b = 10;

        if( a >= b )
        {
		System.out.print("a is Greater Than Or Equal To b");
        }
        System.out.print("\n");


        // b تساوي قيمة a إذا كانت قيمة
        a = 10;
        b = 10;

        if( a >= b )
        {
		System.out.print("a is Greater Than Or Equal To b");
        }
        System.out.print("\n");

		}

		}
	  
نتيجة التشغيل


مثال حول العامل <= (Less Than or Equal To Operator)

العامل <= يستخدم لتنفيذ كود معين إذا كانت قيمة المتغير الأول أصغر أو تساوي قيمة المتغير الثاني.

مثال
		public class LessThanOrEqualTo {

		public static void main (String[] args) {

        // b أصغر من قيمة a إذا كانت قيمة
        int a = 4;
        int b = 16;

        if( a <= b )
        {
		System.out.print("a is Less Than Or Equal To b");
        }
        System.out.print("\n");


        // b تساوي قيمة a إذا كانت قيمة
        a = 4;
        b = 4;

        if( a <= b )
        {
		System.out.print("a is less Than Or Equal To b");
        }
        System.out.print("\n");

		}

		}
	  
نتيجة التشغيل

العوامل التي تستخدم لوضع شروط منطقية Logical Operators

إسم العامل رمزه طريقة إستخدامه إستخدامه
AND && condition-1 && condition-2 يستخدم لتنفيذ كود معين إذا تحقق الشرط الأول و الشرط الثاني
OR || condition-1 || condition-2 يستخدم لتنفيذ كود معين إذا تحقق الشرط الأول أو الشرط الثاني

أمثلة و ملاحظات حول طريقة إستخدام و فائدة كل عامل مذكور في الجدول.

العوامل التي تستخدم لوضع شروط منطقية في الخوارزميات Logical Operators

مثال حول العامل && (AND Operator)

العامل && يستخدم لتنفيذ كود معين إذا تحققت جميع الشروط الموضوعة.

مثال
		public class And {

		public static void main (String[] args) {

        int note = 15;

        if( note > 9 && note  <= 20 )       // إذا تحقق الشرط الأول و الشرط الثاني سيتم تنفيذ الكود
        {
		System.out.print(note +" is between 10 and 20, so you succeed");
        }

        else if( note >= 0 && note < 10 )  // إذا تحقق الشرط الأول و الشرط الثاني سيتم تنفيذ الكود
        {
		System.out.print(note +" is between 0 and 9, so you failed");
        }

        else if( note < 0 )
        {
		System.out.print(note +" , note can't be a negative number !!!");
        }

        else
        {
		System.out.print(note +" note can't be more than 20 !!!");
        }

        System.out.print("\n");

		}

		}
	  
نتيجة التشغيل
العوامل التي تستخدم لوضع شروط منطقية في الخوارزميات Logical Operators

لو وضعنا قيمة المتغير note تساوي 7

العوامل التي تستخدم لوضع شروط منطقية في الخوارزميات Logical Operators

لو وضعنا قيمة المتغير note تساوي -5

العوامل التي تستخدم لوضع شروط منطقية في الخوارزميات Logical Operators

لو وضعنا قيمة المتغير note تساوي 21

العوامل التي تستخدم لوضع شروط منطقية في الخوارزميات Logical Operators


مثال حول العامل || (OR Operator)

العامل || يستخدم لتنفيذ كود معين إذا تحقق أحد الشروط الموضوعة.
هنا يكفي أن يتحقق شرط واحد حتى يتم تنفيذ الأوامر الموضوعة.

مثال
		public class Or {

		public static void main (String[] args) {

        String name = "Ziad";

        if( name == "Ziad" || name == "Hamada" )     // إذا تحقق الشرط الأول أو الشرط الثاني أو كلاهما سيتم تنفيذ الكود
        {
		System.out.print(name +" is my brother.");
        }

        else
        {
		System.out.print("Sorry " +name+ ", I don't know you !!!");
        }

        System.out.print("\n");

		}

		}
	  
نتيجة التشغيل
العوامل التي تستخدم لوضع شروط منطقية في الخوارزميات Logical Operators

لو وضعنا قيمة المتغير name تساوي Hamada.

العوامل التي تستخدم لوضع شروط منطقية في الخوارزميات Logical Operators

لو وضعنا قيمة المتغير name تساوي Ahmad.

العوامل التي تستخدم لوضع شروط منطقية في الخوارزميات Logical Operators

تمارين شاملة حول إستخدام العوامل في الحلقات و الشروط


العوامل في الخوارزميات - التمرين الأول

المطلوب

أكتب برنامج مهمته جمع جميع الأعداد المفردة بين 1 و 10.

العوامل في الخوارزميات - التمرين الأول

لا تستخدم الـ Modulo.
إجعله يظهر قيمة العداد و قيمة المتغير S في كل دورة.


النتيجة المطلوبة
العوامل في الخوارزميات - التمرين الأول
طريقة التحليل
العوامل في الخوارزميات - التمرين الأول
  • إذاً هنا قررنا جعل قيمة العداد الأولية تساوي 1 و في نهاية كل دورة سيتم إضافة 2 عليها و هكذا ستظل دائماً قيمة العداد مفردة.

الخوارزمية
كود الجافا
		public class Sum_Odd_Numbers {

		public static void main (String[] args) {

        int S=0;

        for (int i=1; i<11 i="" n="" pre="" s="S" system.out.print="">
    
شرح الكود

    			int S=0;
    		  
  • هنا قمنا بتعريف المتغير S لتخزين المجموع لذلك أعطيناه القيمة 0 كقيمة أولية.



  • 			for (int i=1; i<11 i="i+2)" pre="">
    		  
  • هنا أنشأنا حلقة تبدأ من 1 إلى ما قبل الرقم 11 (أي من 1 إلى 10) و في نهاية كل دورة تزيد 2.

  • إذا كتبنا i<11 code=""> كأننا كتبنا تماماً i <=10 لأن الحلقة في الحالتين ستتوقف عندما تصبح قيمة العداد i تساوي 10.

  • هنا كما تلاحظ أعطينا العداد رقم 1 كقيمة أولية و أضفنا عليه 2 في نهاية كل دورة, و هكذا إستطعنا جعل قيمة الـ i مفردة في كل دورة.



  • 			System.out.print("S = " +S+ " + " +i+ " = " +(S+i)+ "\n");
    		  
  • كل شيء مكتوب بين " " سيظهر كما هو عند تشغيل البرنامج, و كل شيء بدونهم ستظهر قيمته الحالية عند التشغيل.


  • طريقة كتابة هذا البرنامج تعتبر ممتازة, لأنك جعلت العداد يعمل بطريقة تجعلك تحصل على الأرقام المفردة بـ 5 دورات فقط.



العوامل في الخوارزميات - التمرين الثاني

المطلوب

أكتب برنامج مهمته جمع جميع الأعداد المفردة بين 1 و 10.

إستخدم الـ Modulo لتمييز الأعداد المفردة عن المزدوجة.
إجعله يظهر قيمة العداد و قيمة المتغير S في كل دورة.


النتيجة المطلوبة
طريقة التحليل
  • إذاً, هنا قررنا إنشاء حلقة تتألف من 10 دورات و في نهاية كل دورة تزيد قيمة العداد فيها 1.

  • الفكرة المهمة هنا أننا سنفحص قيمة العداد في كل دورة, إذا كانت عبارة عن عدد مفرد سنضيفها على المتغير S, و إذا لم تكن كذلك لن نفعل شيئ.

الخوارزمية
كود الجافا
		public class Sum_Odd_Numbers {

		public static void main (String[] args) {

        int S=0;

        for (int i=1; i<11 1="" i="" if="" n="" pre="" s="S" system.out.print="">
	
شرح الكود

    			int S=0;
    		  
  • هنا قمنا بتعريف المتغير S لتخزين المجموع لذلك أعطيناه القيمة 0 كقيمة أولية.



  • 			for (int i=1; i<11 1="" i="" if="" n="" pre="" s="S" system.out.print="">
    		  
  • الحلقة for (int i=1; i<11 code="" i=""> تعني أنه عندنا 10 دورات و في نهاية كل دورة تزيد قيمة العداد 1.

  • جملة الشرط if (i%2 == 1) تعني أنه إذا كانت قيمة العداد i عبارة عن عدد مفرد, سيتم تنفيذ أمر الطباعة و إضافة قيمة العداد على قيمة المتغير S.



العوامل في الخوارزميات - التمرين الثالث

المطلوب

أكتب برنامج مهمته جمع جميع الأعداد المزدوجة بين 1 و 10.

لا تستخدم الـ Modulo.
إجعله يظهر قيمة العداد و قيمة المتغير S في كل دورة.


النتيجة المطلوبة
طريقة التحليل
  • إذاً هنا قررنا جعل قيمة العداد الأولية تساوي 2 و في نهاية كل دورة سيتم إضافة 2 عليها و هكذا ستظل دائماً قيمة العداد مزدوجة.

كود الجافا
		public class Sum_Odd_Numbers {

		public static void main (String[] args) {

        int S=0;

        for (int i=2; i<11 i="" n="" pre="" s="S" system.out.print="">
    
شرح الكود

    			int S=0;
    		  
  • هنا قمنا بتعريف المتغير S لتخزين المجموع لذلك أعطيناه القيمة 0 كقيمة أولية.



  • 			for (int i=2; i<11 i="i+2)" pre="">
    		  
  • هنا أنشأنا حلقة تبدأ من 2 إلى ما قبل الرقم 11 (أي من 2 إلى 10) و في نهاية كل دورة تزيد 2.

  • إذا كتبنا i<11 code=""> كأننا كتبنا تماماً i <=10 لأن الحلقة في الحالتين ستتوقف عندما تصبح قيمة العداد i تساوي 10.

  • هنا كما تلاحظ أعطينا العداد رقم 2 كقيمة أولية و أضفنا عليه 2 في نهاية كل دورة, و هكذا إستطعنا جعل قيمة الـ i مزدوجة في كل دورة.



  • 			System.out.print("S = " +S+ " + " +i+ " = " +(S+i)+ "\n");
    		  
  • كل شيء مكتوب بين " " سيظهر كما هو عند تشغيل البرنامج, و كل شيء بدونهم ستظهر قيمته الحالية عند التشغيل.


  • طريقة كتابة هذا البرنامج تعتبر ممتازة, لأنك جعلت العداد يعمل بطريقة تجعلك تحصل على الأرقام المزدوجة بـ 5 دورات فقط.



العوامل في الخوارزميات - التمرين الرابع

المطلوب

أكتب برنامج مهمته جمع جميع الأعداد المزدوجة بين 1 و 10.

إستخدم الـ Modulo لتمييز الأعداد المزدوجة عن المفردة.
إجعله يظهر قيمة العداد و قيمة المتغير S في كل دورة.


النتيجة المطلوبة
طريقة التحليل
  • إذاً, هنا قررنا إنشاء حلقة تتألف من 10 دورات و في نهاية كل دورة تزيد قيمة العداد فيها 1.

  • الفكرة المهمة هنا أننا سنفحص قيمة العداد في كل دورة, إذا كانت عبارة عن عدد مزدوج سنضيفها على المتغير S, و إذا لم تكن كذلك لن نفعل شيئ.

الخوارزمية
كود الجافا
		public class Sum_Even_Numbers {

		public static void main (String[] args) {

        int S=0;

        for (int i=1; i<11 0="" i="" if="" n="" pre="" s="S" system.out.print="">
	
شرح الكود

    			int S=0;
    		  
  • هنا قمنا بتعريف المتغير S لتخزين المجموع لذلك أعطيناه القيمة 0 كقيمة أولية.



  • 			for (int i=1; i<11 0="" i="" if="" n="" pre="" s="S" system.out.print="">
    		  
  • الحلقة for (int i=1; i<11 code="" i=""> تعني أنه عندنا 10 دورات و في نهاية كل دورة تزيد قيمة العداد 1.

  • جملة الشرط if (i%2 == 0) تعني أنه إذا كانت قيمة العداد i عبارة عن عدد مزدوج, سيتم تنفيذ أمر الطباعة و إضافة قيمة العداد على قيمة المتغير S.



العوامل في الخوارزميات - التمرين الخامس

المطلوب

أكتب برنامج لحساب قيمة المتغير 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.
    &nbsp&nbsp يسأل نفسه: هل هي عدد مفرد ؟
    &nbsp&nbsp إذا لم تكن عدد مفرد ينتقل إلى الشرط الثاني, فيسأل نفسه: هل هي عدد مزدوج؟
    &nbsp&nbsp - إذا كانت قيمة العداد i مفردة سيقوم بزيادتها على قيمة الـ S.
    &nbsp&nbsp - إذا كانت قيمة العداد i مزدوجة سيقوم بإنقاصها من قيمة الـ S.



  • ملاحظة: في المنطق إذا لم يكن الرقم مفرد فإنه حتماً مزدوج.
    &nbsp&nbsp إذاً كان بإمكاننا وضع جملة else بدل جملة الـ else if.
    &nbsp&nbsp في الواقع هنا يفضل وضع else لكي لا تجعل الكمبيوتر يقوم بتحليل قيمة العداد ليعرف إذا كانت مزدوجة أم لا.
    &nbsp&nbsp لأنها حتماً ستكون مزدوجة إذا قام بفحصها أولاً و لم يجدها مفردة.


  • إذا أردت أن يكون الكود ممتازاً فعليك كتابة البرنامج بهذه الطريقة:

  • 			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");
    
    			}
    
    			}
    		  


العوامل في الخوارزميات - التمرين السادس

المطلوب

أكتب برنامج لحساب قيمة المتغير S النهائية.


إرشادات

إذا ركزت قليلاً في عمليات القسمة الظاهرة في الصورة فستجد أن ناتج عمليات القسمة سيكون في كل مرة على الأغلب يحتوي على فاصلة عشرية كالتالي:
1, -0.5, 0.33, -0.25, 0.2.

  • لذلك بما أننا ننوي تخزين ناتج عمليات قسمة في المتغير S فهذا يعني أنه يجب أن يكون معرف كـ double حتى لا نخسر أي رقم يحتوي على فاصلة عشرية يضاف عليه أو يطرح منه.

  • و بما أن قيمة العداد i ستدخل في كل عملية قسمة يتم إجراءها فهذا يعني أنه يجب أن يكون أيضاً معرف كـ double حتى لا نخسر أي رقم يحتوي على فاصلة عشرية ينتج عن عملية القسمة.


النتيجة المطلوبة
طريقة التحليل
  • الرقم الموجود في الأعلى هو دائماً الرقم 1.

  • الرقم الموجود في الأسفل يبدأ من 1 وصولاً إلى 100 و هو عبارة عن قيمة العداد المستخدم في الحلقة في كل دورة.

الخوارزمية
كود الجافا
		public class Sum_Odd_And_Even_Numbers {

		public static void main (String[] args) {

        double S=0;

        for (double i=1; i <=100; i++)
        {
		if ( i%2 == 1)
		{
		S = S + (1/i);
		}
		else if ( i%2 == 0)
		{
		S = S - (1/i);
		}
        }

        System.out.print("S= " +S+ "\n");

		}

		}
	  
شرح الكود

    			double S=0;
    		  
  • هنا قمنا بتعريف المتغير S لتخزين المجموع لذلك أعطيناه القيمة 0 كقيمة أولية.



  • 			for (double i=1; i <=100; i++)
    			{
    			if ( i%2 == 1)
    			{
    			S = S + (1/i);
    			}
    			else if ( i%2 == 0)
    			{
    			S = S - (1/i);
    			}
    			}
    		  
  • هنا قمنا بإنشاء حلقة من 1 إلى 100 و في كل دورة تزيد قيمة العداد 1.

  • في كل دورة يقوم البرنامج بفحص قيمة العداد i كالتالي:

    • يبدأ بالشرط الأول فيسأل نفسه, هل هي عدد مفرد؟
      &nbsp &nbsp إذا كان الجواب نعم, سيتم زيادة (الناتج من قسمة 1 على i) على قيمة S القديمة, ثم تخزين الناتج النهائي في S من جديد.

    • إذا لم تكن عدد مفرد ينتقل إلى الشرط الثاني, فيسأل نفسه: هل هي عدد مزدوج؟
      &nbsp &nbsp إذا كان الجواب نعم, سيتم إنقاص (الناتج من قسمة 1 على i) من قيمة S القديمة, ثم تخزين الناتج النهائي في S من جديد.



  • ملاحظة: أيضاً في المنطق إذا لم يكن الرقم مفرد فإنه حتماً مزدوج.
    &nbsp&nbsp إذاً كان بإمكاننا وضع جملة else بدل جملة else if.
    &nbsp&nbsp في الواقع هنا يفضّل وضع else لكي لا تجعل الكمبيوتر يقوم بتحليل قيمة العداد ليعرف إذا كانت مزدوجة أم لا.
    &nbsp&nbsp لأنها حتماً ستكون مزدوجة إذا قام بفحصها أولاً و لم يجدها مفردة.


  • إذا أردت أن يكون الكود ممتازاً فعليك كتابة البرنامج بهذه الطريقة:

  • 			public class Sum_Odd_And_Even_Numbers {
    
    			public static void main (String[] args) {
    
    			double S=0;
    
    			for (double i=1; i <=100; i++)
    			{
                if ( i%2 == 1)
                {
    			S = S + (1/i);
                }
                else
                {
    			S = S - (1/i);
                }
    			}
    
    			System.out.print("S= " +S+ "\n");
    
    			}
    
    			}