الخوارزمياتالحلقتين 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
سيظهر لك خطأ.