القائمة الرئيسية

الصفحات

الحلقات في الخوارزميات

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

مفهوم الحلقات

الحلقة تسمى Loop باللغة الإنجليزية.
تعتبر الحلقات من أهم الأشياء التي عليك التركيز عليها لأنه يمكنك إستخدامها و الإستفادة منها كثيراً في برنامجك, كما أن هناك ثلاث أنواع من الحلقات ستتعرف عليها لاحقاً.


ما هي الفائدة من الحلقات و أين يمكن أن نستفيد منهم؟

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


مثال

المثال التالي يوضح لك فقط كيف يمكن إستغلال الحلقات لإنجاز المهام بسرعة و بكود أقل.
الآن في حال أردنا طباعة جميع الأرقام من 1 إلى 100 و كل رقم منهم على سطر جديد. يوجد طريقتين لذلك.


الطريقة الأولى: كتابة جميع الأرقام التي نريد طباعتها رقماً رقماً بداخل الدالة print() كما في الصورة التالية.


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

أنواع الحلقات و طريقة تعريفهم

في البداية, كلمة Syntax تعني طريقة تعريف أي شيء في البرمجة.
الآن ستلاحظ أن كل حلقة لها طريقة تعريف مختلفة, أي لها Syntax مختلف.


For Loop

الحلقة for تستخدم لتنيفذ الأوامر عدد محدد من المرّات.
هنا يتم تحديد عدد المرات التي ستستمر الحلقة فيها في تنفيذ الكود منذ البداية.

for ( condition )
{

} 
	

While Loop

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

while ( condition )
{

}
	

Do While Loop

الحلقة do while تستخدم لتنفيذ الأوامر مرات غير محددة.
هنا الحلقة تستمر في إعادة تنفيذ الأوامر طالما أن الشرط الموضوع لم يتحقق بعد.
الفرق الوحيد بينها و بين الحلقة while أنها تنفذ الأوامر الموضوعة فيها مرّة واحدة على الأقل.

do
{

}
while ( condition );
	

ملاحظة

طريقة عمل كل حلقة من الحلقات التي ذكرناها الآن سنشرحها لك بدقة في دروس مقبلة.

طريقة حساب عدد المرات التي تم فيها تنفيذ الأوامر

طريقة البشر في العد

إذا طلبت من إنسان أن يلفظ كلمة Algo خمس مرات على سبيل المثال.
فإنه سيقول: Algo, Algo, Algo,Algo, Algo.

لاحظ أن الإنسان قد يستخدم أصابعه لكي يحسب كم مرة قال الكلمة Algo, و قد يستخدم ورقة و قلم في حال طلبت منه لفظها 100 مرات حتى لا يخطئ بالعد.


طريقة الكمبيوتر في العد

إذا أردت جعل الكمبيوتر يطبع كلمة Algo عشر مرات, عليك إستخدام حلقة تنفذ الكود الذي بداخلها 10 مرات.
الحلقة بدورها ستعتمد في عملية العد على متغير عادي يسمى عدّاد (Counter).

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

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


طريقة تحديد كيف سيتم العد في الحلقات

عند التعامل مع أي حلقة, أول شيء عليك التفكير فيه هو وضع الشرط الذي يحدد كم مرة ستقوم الحلقة بإعادة تنفيذ الكود الموضوع فيها.
فمثلاً, لجعل الحلقة تعيد تنفيذ الأوامر الموضوعة فيها 5 مرات يمكنك العد بطرق مختلفة و الحصول على نفس النتيجة.

  • إذا قمت بالعد من 1 إلى 5 كالتالي 5 - 4 - 3 - 2 - 1 ستحصل على 5 مرات.

  • إذا قمت بالعد من 0 إلى 4 كالتالي 4 - 3 - 2 - 1 - 0 ستحصل على 5 مرات.

  • إذا قمت بالعد من 6 إلى 10 كالتالي 10 - 9 - 8 - 7 - 6 ستحصل على 5 مرات.

  • إذا قمت بالعد من 23 إلى 27 كالتالي 27 - 26 - 25 - 24 - 23 ستحصل على 5 مرات.

  • إذا قمت بالعد من 100 إلى 104 كالتالي 104 - 103 - 102 - 101 - 100 ستحصل على 5 مرات.


الآن, لاحظ أنه يمكنك العد بالعكس و الحصول أيضاً على 5 مرات.

  • إذا قمت بالعد من 5 إلى 1 كالتالي 1 - 2 - 3 - 4 - 5 ستحصل على 5 مرات.

  • إذا قمت بالعد من 13 إلى 9 كالتالي 9 - 10 - 11 - 12 - 13 ستحصل على 5 مرات.

أهداف الدرس

في هذا الدرس ستتعلم كيف تعرّف الحلقة for في الخوارزميات و في جافا, كما سنوضح لك تماماً ما الذي يحدث في الذاكرة عندما يتم تنفيذ الأوامر الموضوعة في الحلقة.
ملاحظة: إبتداءاً من هذا الدرس و حتى إنتهاء باقي الدروس, ستستخدم الحلقات في معظم التمارين لذلك ركز جيداً على طريقة عملهم حتى لا تجد أي صعوبة وقتها.

طريقة عمل الحلقة for

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

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

الفيديو التالي يوضح طريقة تعريف الحلقة for في الخوارزميات, و طريقة عملها بدقة.

تمارين حول الحلقة for


الحلقة for في الخوارزميات - التمرين الأول

المطلوب

  1. عرف متغير يقبل نص كقيمة و أعطه إسم loop و لا تعطيه أي قيمة مباشرةً عند إنشائه.

  2. بعدها قم بإعطاء المتغير loop القيمة your first loop.

  3. أعرض هذه الجملة 5 مرات بإستخدام حلقة التكرار for.

  4. ثم إطبع خطا بينهم مثل هذا ---------------------------.

  5. ثم إطبع إسمك 3 مرات على نفس السطر بإستخدام حلقة التكرار for.


النتيجة المطلوبة

الخوارزمية

شرح طريقة عمل الخوارزمية بدقة

كود الجافا

		public class FirstLoop {

		public static void main (String[] args) {

        String loop;
        loop = "your first loop";

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

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

        for (int i=1; i <=3; i=i+1)
        {
		System.out.print("Mhamad ");
        }

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

		}

		}
	  

شرح الكود

  • البرنامج FirstLoop يحتوي على ست أوامر و حلقتين.



  • 			String loop;
    			loop = "your first loop";
    		  
  • هنا قمنا بتعريف المتغير loop, ثم أعطيناه القيمة your first loop.



  • 			for (int i=1; i <=5; i=i+1)
    			{
    			System.out.print(loop + "\n");
    			}
    		  
  • هنا قمنا بتعريف حلقة for مهمتها فقط تنفيذ الكود الموجود بداخلها 5 مرات.

  • في كل دورة من دورات هذه الحلقة سيتم عرض قيمة المتغير loop ثم النزول على سطر جديد.

  • معنى الأوامر المكتوبة في الحلقة:

    • الكود int i=1; يعني أن أول قيمة للعداد هي 1.

    • الكود i <=5; يعني أن الحلقة ستستمر في العمل طالما أن قيمة العداد أصغر أو تساوي 5.

    • الكود i=i+1 يعني أن قيمة العداد في الحلقة تزيد 1 في نهاية كل دورة. فعلياً هذا الكود يعني أنه سيتم إضافة 1 على قيمة المتغير i الحالية و وضع الناتج في المتغير i من جديد.



    			System.out.print("---------------------------\n");
    		  
  • هنا قمنا بطباعة ما يشبه الخط ثم جعلنا الشيء الذي يأتي بعده يظهر على سطر جديد.



  • 			for (int i=1; i <=3; i=i+1)
    			{
    			System.out.print("Mhamad ");
    			}
    		  
  • هنا قمنا بتعريف حلقة for مهمتها فقط تنفيذ الكود الموجود بداخلها 3 مرات.

  • في كل دورة من دورات هذه الحلقة سيتم عرض النص Mhamad ثم وضع مسافة فارغة بعده.



  • 			System.out.print("\n");
    		  
  • هنا وضعنا الـ \n في جملة الطباعة حتى يتم طباعة الوقت الذي إستغرقه الكمبيوتر في تنفيذ البرنامج على سطر جديد.



الحلقة for في الخوارزميات - التمرين الثاني

المطلوب

أنشئ حلقة تطبع لك جميع الأرقام من 1 إلى 10.


النتيجة المطلوبة

الخوارزمية

شرح طريقة عمل الخوارزمية بدقة

كود الجافا

		public class CountToTen {

		public static void main (String[] args) {

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

		}

		}
	  

شرح الكود

  • في هذا البرنامج قمنا فقط بتعريف حلقة for مهمتها تنفيذ الكود الموجود بداخلها 10 مرات.

  • في كل دورة من دورات هذه الحلقة سيتم عرض قيمة العداد i ثم النزول على سطر جديد.

  • معنى الأوامر المكتوبة في الحلقة:

    • الكود int i=1; يعني أن أول قيمة للعداد هي 1.

    • الكود i <=10; يعني أن الحلقة ستستمر في العمل طالما أن قيمة العداد أصغر أو تساوي 10.

    • الكود i=i+1 يعني أن قيمة العداد في الحلقة تزيد 1 في نهاية كل دورة. فعلياً هذا الكود يعني أنه سيتم إضافة 1 على قيمة المتغير i الحالية و وضع الناتج في المتغير i من جديد.



ملاحظة

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

أهداف الدرس

سنقوم الآن باستخدام الحلقات for, while, do while في كل تمرين حتى تفهمهم بشكل جيد.

ستلاحظ أيضاً أننا قمنا بتعريف العداد الذي سنستخدمه في الحلقة for قبل تعريفها, لكننا قمنا بتحديد من أي رقم تبدأ و عند أي رقم تنتهي بداخلها.
الهدف فقط من هذا الأسلوب الجديد جعلك ترى أنه يمكنك كتابة الكود بأساليب كثيرة جداً و الحصول على نفس النتيجة.


نصيحة

أعد كتابة كل تمرين مرتين على الأقل, و حاول دائماً أن تحلل و تكتب الكود قبل أن تنظر إلى الحل الجاهز.
إذا قضيت يوماً كاملاً و أنت تحاول أن تحلل التمارين, أفضل بكثير من أن تنظر إلى الحل مباشرةً.

الفرق بين الحلقات for, while, do while

في حال أردت إنشاء حلقة تتألف من 5 دورات, سيكون شكل الحلقة كالتالي.

Note


توضيح الفروقات بين الحلقات الثلاثة

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

  • في الحلقتين while و do while أنت مجبر على أن تعرف المتغير الذي ستستخدمه كعداد مع تحديد قيمته قبل كتابة الحلقة.

  • في الحلقتين while و do while أنت مجبر على أن تزيد قيمة العداد في نهاية كل دورة.

  • في الحلقتين for و while يقوم الكمبيوتر بالتشييك على قيمة العداد قبل أن يبدأ في تنفيذ الكود, و على أساسها يحدد إذا كان سيبدأ بدورة جديدة أم لا.

  • في الحلقة do while يقوم الكمبيوتر بالتشييك على قيمة العداد بعد إنتهاء الكود من أجل الدورة التالية.

  • في الحلقة do while أنت مجبر أن تضع فاصلة منقوطة بعد الـ while و إلا سيسبب لك مشكلة في الكود لأنه سيظن أنك تريد تعريف حلقة while جديدة و ليس إغلاق الحلقة do while.

المبادئ الأساسية لعمليات الجمع و الضرب في الحلقات


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

مثال

int S = 0;
		

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

مثال

int M = 1;
		

لا تقلق ستفهم فكرة القيم الأولية 0 و 1 لاحقاً من التمارين.

تمارين شاملة حول الحلقات for, while, do while


الحلقتين While و Do While في الخوارزميات - التمرين الأول

المطلوب

أكتب برنامج يقوم بجمع جميع الأرقام من 1 إلى 100 و يعرض فقط المجموع النهائي بثلاث طرق.
أكتب كل طريقة في برنامج.


إرشادات

المتغير S سنستخدمه لتخزين المجموع النهائي.
المتغير i هو العداد الذي سنستخدمه في كل حلقة و الذي سنجعل قيمته تزيد 1 في كل دورة.
إذاً قيمة المتغير S تساوي مجموع جميع القيم التي ستعطى للعداد i في أي حلقة نستخدمها.

الصورة التالية توضح كيف ستزيد قيمة العداد i و المتغير S في كل حلقة إستخدمناها.

الطريقة الأولى لحل التمرين باستخدام الحلقة for

النتيجة المطلوبة

الخوارزمية

شرح طريقة عمل الخوارزمية بدقة

كود الجافا

		public class Sum {

		public static void main (String[] args) {

        int i;
        int S = 0;

        for ( i=1; i <=100; i=i+1)
        {
		S = S + i;
        }

        System.out.print("The sum is: " + S + "\n");

		}

		}
	  

شرح الكود

  • البرنامج Sum يحتوي على أربع أوامر و حلقة.

  • هذه المرة قمنا بتعريف المتغير int i; الذي سنستخدمه كعداد في الحلقة قبل تعريف الحلقة for و ليس بداخلها, و هذا لا يؤثر أبداً في الكود.

  • في الحلقة for إستخدمنا العداد i ( لم نقم بتعريفه من جديد ) و جعلناها تبدأ من 1 إلى 100, و جعلنا العداد i يزيد 1 فقط في كل دورة.

  • قمنا بتعريف المتغير int S = 0; لأننا سنستخدمه لتخزين ناتج جميع عمليات الجمع التي سيتم إجراءها في الحلقة.
        وضعنا القيمة 0 كقيمة أولية للمتغير S لأننا مجبرين على إعطائه أي قيمة قبل إستخدامه في عملية الجمع. و القيمة 0 بطبيعة الحال لن تؤثر على عملية الجمع.

  • الكود S = S + i; الذي وضعناه في الحلقة يعني أنه في كل دورة سيتم إضافة قيمة العداد i الحالية على قيمة المتغير S ثم وضع ناتج الجمع من جديد في المتغير S.

  • في الأخير قمنا بعرض قيمة المتغير S التي تمثل ناتج جمع جميع القيم التي أعطيت للعداد i في الحلقة, و جعلنا وقت تنفيذ البرنامج يظهر على سطر جديد من خلال الـ \n.

الطريقة الثانية لحل التمرين باستخدام الحلقة while


إرشادات

هنا سيكون عليك تعريف العداد i قبل تعريف الحلقة.
ثم تضع الشرط الذي سيجعل الحلقة تتوقف.
و في نهاية الحلقة عليك زيادة قيمة العداد.


النتيجة المطلوبة

الخوارزمية

شرح طريقة عمل الخوارزمية بدقة

كود الجافا

		public class Sum {

		public static void main (String[] args) {

        int i = 1;
        int S = 0;

        while ( i <=100 )
        {
		S = S + i;
		i = i + 1;
        }

        System.out.print("The sum is: " + S + "\n");

		}

		}
	  

شرح الكود

  • البرنامج Sum يحتوي على خمس أوامر و حلقة.

  • هنا أنت مجبر على تعريف العداد الذي ستستخدمه في الحلقة و إعطائه قيمة أولية قبل تعريف الحلقة أيضاً.
        لذلك قمنا بتعريف المتغير int i = 1; الذي سنستخدمه كعداد في الحلقة قبل تعريفها.

  • قمنا بتعريف المتغير int S = 0; لأننا سنستخدمه لتخزين ناتج جميع عمليات الجمع التي سيتم إجراءها في الحلقة.
        وضعنا القيمة 0 كقيمة أولية للمتغير S لأننا مجبرين على إعطائه أي قيمة قبل إستخدامه في عملية الجمع. و القيمة 0 بطبيعة الحال لن تؤثر على عملية الجمع.

  • الحلقة while ستستمر في تنفيذ الكود الموجود فيها طالما أن قيمة العداد i ليست أصغر أو تساوي 100. و هكذا نكون جعلناها تبدأ من 1 إلى 100.

  • الكود S = S + i; الذي وضعناه في الحلقة يعني أنه في كل دورة سيتم إضافة قيمة العداد i الحالية على قيمة المتغير S ثم وضع ناتج الجمع من جديد في المتغير S.

  • الكود i = i + 1; الذي وضعناه في الحلقة يعني أنه في نهاية كل دورة سيتم إضافة 1 على قيمة العداد i.

  • في الأخير قمنا بعرض قيمة المتغير S التي تمثل ناتج جمع جميع القيم التي أعطيت للعداد i في الحلقة, و جعلنا وقت تنفيذ البرنامج يظهر على سطر جديد من خلال الـ \n.

الطريقة الثالثة لحل التمرين باستخدام الحلقة do while


إرشادات

هنا سيكون عليك تعريف العداد i قبل تعريف الحلقة.
ثم تضع الكود كله بداخل حدود الـ do مع زيادة قيمة العداد فيها أيضاً.
في الأخير, عليك وضع الشرط الذي سيجعل الحلقة تتوقف بداخل الـ while و تحت الـ do مباشرةً.


النتيجة المطلوبة

الخوارزمية

شرح طريقة عمل الخوارزمية بدقة

كود الجافا

		public class Sum {

		public static void main (String[] args) {

        int i = 1;
        int S = 0;

        do
        {
		S = S + i;
		i = i + 1;
        }
        while ( i <=100 );

        System.out.print("The sum is: " + S + "\n");

		}

		}
	  

شرح الكود

  • نفس الشرح السابق تماماً, و لكن الفرق الوحيد هنا أنه في الحلقة do while يقوم البرنامج بتنفيذ الكود الموضوع في الحلقة قبل أن ينظر إلى الشرط الذي سيجعل الحلقة تتكرر من جديد أو تتوقف.

  • إذاً في الحلقة do while الكود يتنفذ مرة واحدة على الأقل حتى لو كان الشرط يقضي بتوقيف الحلقة, لأنه ينظر إلى الشرط قبل بداية الدورة الجديدة و ليس قبل بداية أي دورة كما في الحلقتين while و for , لأن الشرط هنا يوضع في آخر الحلقة و ليس في الأول.

  • ملاحظة: في حال نسيت وضع فاصلة منقوطة ; بعد الـ while سيظهر لك خطأ.



الحلقتين While و Do While في الخوارزميات - التمرين الثاني

المطلوب

أكتب برنامج يقوم بضرب جميع الأرقام من 1 إلى 10 و يعرض فقط المجموع النهائي بثلاث طرق.


إرشادات

الـ M هو المتغير الذي سيحتوي على كل الأرقام المضروبة.
الـ i هو المتغير ( العداد ) الذي يزيد واحد في كل دورة.
الـ M تساوي ضرب كل قيم الـ i.


النتيجة المطلوبة

الخوارزمية

شرح طريقة عمل الخوارزمية بدقة

مراجعة لما حدث في الذاكرة

كود الجافا

		public class MultipleLoops {

		public static void main (String[] args) {

		// هنا قمنا بتعريف المتغيرات في أول البرنامج لأننا سنستخدمهم نفسهم في جميع الحلقات
		int i = 1;
		int M = 1;

		// " for " الطريقة الأولى باستخدام الحلقة
		System.out.print("1- using for loop:\n");
		for ( ; i <=10; i=i+1 )
		{
		M = M * i;
		}
		System.out.print("The multiple is: " + M + "\n");
		System.out.print("-----------------------------------\n");


		// " while " الطريقة الثانية باستخدام الحلقة
		System.out.print("2- using while loop:\n");
		i = 1;
		M = 1;
		while ( i <=10 )
		{
		M = M * i;
		i = i + 1;
		}
		System.out.print("The multiple is: " + M + "\n");
		System.out.print("-----------------------------------\n");


		// " do while " الطريقة الثالثة باستخدام الحلقة
		System.out.print("3- using do while loop:\n");
		i = 1;
		M = 1;
		do
		{
		M = M * i;
		i = i + 1;
		}
		while ( i <=10 );
		System.out.print("The multiple is: " + M + "\n");
		System.out.print("-----------------------------------\n");

		}

		}
	  

شرح الكود

  • ملاحظة: الشروحات الموضوعة بالعربية فوق كل كود لا تؤثر أبداً عليه لأنها موضوعة كتعليقات كما قلنا سابقاً.

  • البرنامج MultipleLoops يحتوي على ثلاث حلقات تعمل بنفس الطريقة.



  • 			int i = 1;
    			int M = 1;
    		  
  • في بداية البرنامج قمنا بتعريف المتغيرين i و M لأننا نريد استخدامهم في كل حلقة سننشأها.

  • إذاً تستطيع إنشاء المتغير الذي ستستخدمه كعداد في بداية البرنامج و تستخدمه من جديد كلما أردت ذلك.



  • 			i = 1;
    			M = 1;
    		  
  • قبل أن نستخدم المتغيرين i و M في أي حلقة كنا نعيد قيمهم إلى كما كانت عليه في البداية.



  • 			System.out.print("The multiple is: " + M + "\n");
    		  
  • بعد كل حلقة قمنا بتعريفها في البرنامج, قمنا باستخدام أمر الطباعة هذا لعرض قيمة المتغير M بعد أن تم وضع ناتج ضرب جميع الأرقام من 1 إلى 10 فيه.



  • 			for ( ; i <=10; i=i+1 )
    		  
  • هنا قمنا بتعريف عداد الحلقة for قبل تعريف الحلقة و ليس بداخلها.

  • ملاحظة
        يمكن تعريف الحلقة for بطرق مختلفة في لغات البرمجة لكن بشكل عام يجب أن يكون هناك إثنين ; ; بين أقواسها و إلا سيؤدي ذلك إلى ظهور خطأ في الكود.
        إضافةً إلى ذلك يجب المحافظة على مكان وضع العداد, الشرط, و طريقة زيادة العداد فيها.
        فمثلاً, إذا قمت بوضع الشرط في المكان المخصص لتعريف العداد كالتالي   for ( i <=10; ; i=i+1 ) سيظهر لك خطأ.



الحلقتين While و Do While في الخوارزميات - التمرين الثالث

المطلوب

أكتب برنامج يظهر القيمة النهائية لـ S.


إرشادات

سنخزن كل الناتج في المتغير S.
الـ i هو المتغير ( العداد ) الذي يزيد واحد في كل دورة.


النتيجة المطلوبة

طريقة التحليل

الخوارزمية

كود الجافا

		public class FirstFraction {

		public static void main (String[] args) {

        double S=0;

        for ( double i=1; i <=100; i=i+1 )
        {
		S = S + ( 1/i );
        }

        System.out.print("The Sum is: " + S + "\n");

		}

		}
	  

شرح الكود

  • قمنا بتسمية البرنامج FirstFraction و وضعنا فيه ثلاث أوامر و حلقة.



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



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

  • في كل دورة سيتم إضافة 1 مقسوم على قيمة العداد i على قيمة المتغير S.



  • 			System.out.print("The Sum is: " + S + "\n");
    		  
  • هنا قمنا بعرض ناتج الجمع الموجود في المتغير S.


ملاحظة

لو لم نقم بتعريف المتغير S و المتغير i كـ double لكانت النتيجة خاطئة لأنه في النوع int يتم تجاهل أي رقم بعد الفاصلة.