الخوارزمياتالحلقتين while و do while - التمرين الأول
- المطلوب
- الطريقة الأولى لحل التمرين باستخدام الحلقة
for - الطريقة الثانية لحل التمرين باستخدام الحلقة
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سيظهر لك خطأ.