منتديات برامج نت
عزيزي الزائر / عزيزتي الزائرة يرجي التكرم بتسجبل الدخول اذا كنت عضو معنا
او التسجيل ان لم تكن عضو وترغب في الانضمام الي اسرة المنتدي
سنتشرف بتسجيلك
شكرا
ادارة المنتدي
منتديات برامج نت
عزيزي الزائر / عزيزتي الزائرة يرجي التكرم بتسجبل الدخول اذا كنت عضو معنا
او التسجيل ان لم تكن عضو وترغب في الانضمام الي اسرة المنتدي
سنتشرف بتسجيلك
شكرا
ادارة المنتدي
منتديات برامج نت
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتديات برامج نت

برامج كمبيوتر و انترنت لغات برمجه و تطوير مواقع قسم خاص بالتصميم و الجرافيك
 
الرئيسيةPortalأحدث الصورالتسجيلالدرس الثامن فى الدوره الممتازه I_icon_mini_registerدخول
اهلاوسهلا بكم في منتديات برامج نت ارجو من جميع الزوار التسجيل مع تحيات $الادارة$

 

 الدرس الثامن فى الدوره الممتازه

اذهب الى الأسفل 
كاتب الموضوعرسالة
DESGINER

المدير العام...}


DESGINER



الدرس الثامن فى الدوره الممتازه Empty
مُساهمةموضوع: الدرس الثامن فى الدوره الممتازه   الدرس الثامن فى الدوره الممتازه Icon_minitimeالثلاثاء مارس 17, 2009 8:37 am

حلقات التكرار

الأهداف

For ان يستعمل المتدرب حلقة التكرار
While ان يستعمل المتدرب حلقة التكرار
Do....while ان يستعمل المتدرب حلقة التكرار
أن يقارن المتدرب بين جمل حلقات التكرار
أن يخرج المتدرب من حلقة التكرار
أن يتعرف المتدرب على كيفية تسمية حلقات التكرار
العرض

أهلا ومرحبا بكم جميعا ونواصل مسيرتنا ـ بعون الله ـ مع الجافا

مرحبا بك استاذنا وكل عام وأنت بخير بمناسبة بدء العام الخامس من عمر موقعكم ـ المدرس العربي ـ وندعو الله تعالى أن يجعله في ميزان حسناتكم

شكرا جزيلا وأرحب بك صديقي العزيز

ما عنوان درسنا اليوم ؟

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

ما المقصود بحلقات التكرار ؟

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

ما الفائدة من حلقات التكرار ؟

في برامج الجافا وبريمجاتها سوف تجد نفسك محتاجا لحلقات التكرار في كثيرا من الأمور منها
الانتظار حتى تحدث استجابة من المستخدم مثل نقر المستخدم على زر
يمكنك توظيفها لجعل الحاسب ينتظر فترة دون عمل شئ كما في برامج تحريك الرسوم
تكرار عرض نص متحرك في بريمج
تكرار عرض مسمع موسيقي في بريمج

ما هي الجمل التي تستعمل كحلقات تكرار ؟

في لغة الجافا يوجد ثلاث جمل تستعمل حلقات تكرار وهي
for while do....while

وهل تقوم هذه الجمل الثلاث بنفس العمل ؟

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

for شكرا أستاذي العزيز ولنبدأ مثلا الآن بحلقة التكرار فور

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

من فضلك استاذي الكريم أريد مثالا يبسط الموضوع ؟

لا عليك صديقي العزيز ولم أقصد بقولي عن حلقة التكرار فور بأنها أكثر تعقيدا أن أعقدك ولكن سيتضح لك المقصود بعد أن نتعرف على الجمل الثلاث ــــ ولنبدأ الآن المثال المقصود

for ( int number = 0; number < 1000; number++) {
if ( number % 14 == 0)
system.out.println("#:" + number);
}

من فضلك أريد التفسير لهذا المثال وليكن مفصلا نوعا ما ؟

لك ما تريد ولله الحمد والمنة
أولا الغرض من حلقة التكرار ـــ عرض كل الأعداد الواقعة بين 0 و 999 والتي تقبل القسمة على 14 بدون باقي
ثانيا ـ المتغير نمبر يسمى بالعداد حيث تحتوي كل حلقة تكرار فور على متغير يستعمل لتحديد متى تبدأ حلقة التكرار ومتى تنتهي
ثالثا ـ تتكون جملة حلقة التكرار فور من ثلاث أجزاء هي
جزء التمهيد ــ وفيه يتم تحديد قيمة أولية للمتغير نمبر تساوي صفرا ويمكنك في هذا الجزء إعداد المتغير العداد الذي ترغب في استعماله ضمن الجملة فور وأود أن أوضح أنك يمكنك إنشاء المتغير ضمن الجملة فور كما في المثال أو إنشاء المتغير في موضع سابق من برنامجك ولكن في كلتا الحالتين يجب تحديد قيمة أولية للمتغير في هذا الجزء من الجملة فور وبحيث تكون هذه القيمة هي قيمة المتغير عندما تبدأ حلقة التكرار
if الجزء المشروط ــ في هذا الجزء يوجد اختبار مشروط موجود في الجملة
true ونلاحظ أن الشرط يجب أن يبقى صحيحا
وذلك حتى تستمر حلقة التكرار حيث أن حلقة التكرار تتوقف عندما يصبح الشرط خطأ وفي المثال الذي نتناوله الآن تتوقف حلقة التكرار عندما تصبح قيمة المتغير نمبر أكبر من 1000 ـــــ
جزء التغيير ــ هذا الجزء عبارة عن جملة وظيفتها تغيير قيمة المتغير نمبر باستعمال مؤثر الزيادة بواحد ويتم تنفيذ هذه الجملة في كل عملية تكرار لحلقة التكرار وهنا أود التأكيد على ضرورة تغيير العداد وإلا فلن تتوقف حلقة التكرار وفي المثال يزداد المتغير نمبر بواحد باستعمال معامل الزيادة بواحد ++ واذا لم يتغير المتغير نمبر فانه سيظل عند القيمة الأولية 0 ويبقى الشرط صحيحا

عفوا أستاذي الكريم ما الذي يتم تنفيذه من هذا المثال في كل عملية تكرار ؟

في كل عملية تكرار لحلقة التكرار تنفذ الجمل الموجودة ضمن الحاصرتين { } اذا المنطقة المحددة بالحاصرتين يتم فيها العمل الرئيسي لحلقة التكرار وفي مثالنا توجد جملتين ضمن الحاصرتين

{
if ( number % 14 == 0)
system.out.println("#:" + number);
}

ونلاحظ أن هذه الجملة سوف تنفذ 1000 مرة حيث تبدأ حلقة التكرار بجعل المتغير نمبر مساويا للصفر ثم تضيف بعد ذلك 1 في كل مرة من مرات التكرار وتتوقف عندما لا تكون قيمة المتغير أصغر من 1000 وكلما كان العدد قابلا للقسمة على 14 بدون باق يعرض هذا العدد بجانب النص :#

ولكن متى يكون من الضروري وضع الحاصرات ؟

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

for (int q = 0; q < 66; q++)
system.out.println("لن أفعل هذا مرة أخرى ");

تعرض هذه الحلقة المكونة من جملة واحدة بدون حاصرات النص ــ لن أفعل هذا مرة أخرى ـ 66 مرة وهذا يذكرنا بعقاب المدرسين الأوائل للتلاميذ في المرحلة الابتدائية حيث يطلب المعلم من التلميذ أن يكرر هذه الجملة 66 مرة لعقابه على خطأ ارتكبه

طيب يا أستاذ اذا أردنا اعداد أكثر من متغير خلال جزء التمهيد فماذا نعمل ؟

اذا اردت إعداد أكثر من متغير في جزء التمهيد فعليك التفريق بينها بالفواصل ونلاحظ أن كل جزء من الحلقة فور يفصل عن الاجزاء الأخرى بفاصلة منقوطة

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

نعم يمكن أن تكون أقسام حلقة التكرار فارغة وهذا عندما تكون القيمة الأولية للمتغير العداد قد تحددت في جزء سابق من البرنامج

وقفة هنا أستاذي الكريم حيث اتذكر الآن الخطأ المنطقي والذي يدعوني الى ذلك هو الفاصلة المنقوطة فحيث أن العديد من جمل الجافا تنتهي بفاصلة منقوطة اذا يمكن وضع فاصلة منقوطة عند نهاية الجملة فور فماذا يحدث ؟

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

هل باقي حلقات التكرار تتكون من ثلاثة أجزاء ؟

while لا حلقة التكرار التي سوف نتناولها الآن لا تحتوي على أقسام وحلقة التكرار هذه هي

while حلقات التكرار

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

do....while عملية بسيطة وماذا عن حلقة التكرار

do.......while حلقات التكرار

لكي ندرك الفرق بين الحلقتين اليك هذا المثال
لنفرض مثلا أن الآنسة أروى تريد الذهاب الى الكوافير فان أمامها طريقتان
الأولى أن تذهب الى الكوافير ثم تخبر والدتها
الثانية أن تستأذن أولا من والدنها قبل أن تذهب الى الكوافير
do...while الطريقة الأولى تشبه حلقة التكرار
بمعنى أنه سوف يتم تحقق الشرط لمرة واحدة قبل أن يختبر يعني أن الآنسة أروى سوف تذهب لمرة واحدة الى الكوافير سواء وافقت والدتها أم لم توافق ومن هنا يتضح لنا أنه في حلقة التكرار دو ....هويل يتم تنفيذ الشرط أولا قبل التحقق من صحة الشرط موضع الاختبار فعندما يصل البرنامج خلال عمله للمرة الأولى الى حلقة التكرار دو فانه ينفذ الجمل الموجودة بين الجملة دو والجملة هويل بشكل تلقائي ثم يجري بعد ذلك التحقق من صحة شرط الجملة هويل فاذا كان صحيحا فن البرنامج يعاود تكرار حلقة التكرار مرة أخرى أما اذا كان الشرط غير صحيح فان حلقة التكرار سوف تتوقف

ولكن يا أستاذي كيف يمكنني الخروج من حلقة التكرار ؟

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

طيب اذا أردت أن أوقف حلقة التكرار مباشرة والشرط المختبر صحيحا فماذا أفعل ؟

يمكنك إيقاف حلقة التكرار مباشرة حتى لو كان الشرط موضع الإختبار صحيحا باستعمال الجملة بريك

while (index <= 100)
index = index +3;
if (index ==40)

break;
system.out.println("the index is"+ index);

تواصل الحلقة التكرار الى أن تصبح قيمة المتغير اندكس أكبر من 100 ولكن اذا كانت قيمة المتغير مساوية 40 فإن حلقة التكرار سوف تتوقف مباشرة

هل توجد جملة خاصة أخرى ؟

نعم توجد حالة خاصة أخرى

while (index <= 100)
index = index +3;
if (index ==40)

continue;
system.out.println("the index is"+ index);

في حلقة التكرار هذه سوف يتم تنفيذ الجمل الا اذا صارت قيمة المتغير مساوية 40 وعندها تجعلالجملة كونتينيو حلقة التكرار تعيد تنفيذ الجملة هويل

هل يمكن وضع حلقات التكرار داخل بعضها البعض ؟

نعم يمكن وضع حلقات التكرار داخل بعضها البعض كما في المثال الآتي

while ( totalprise < 1000 ){
for( int prise=0; prise <100; prise++){
totalprise = totalprise + prise;
if ( totalprise > 2000 )
brak;
}
}

ما فعل الجملة بريك في هذه الحالة؟

فعل الجملة بريك في هذه الحالة هو ايقاف حلقة التكرار ـ فور ـ عندما تساوي قيمة المتغير 2000 أو أكثر

ولكن يا صديقي العزيز هناك حالات أرغب في ايقاف حلقتي التكرار معا فكيف الطريق الى ذلك ؟

في هذه الحالة يجب أن تمنح الحلقة الخارجية اسما هذا الاسم يكتب في السطر السابق حلقة التكرار متبوعا بنقطتين : ثم استخدم هذا الاسم بعد الجملة بريك أو كونتينو
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
الدرس الثامن فى الدوره الممتازه
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» الدرس السابع فى الدوره الممتازه
» الدرس السابع فى الدوره الممتازه
» الدرس العاشر فى الدوره الممتازه
» الدوره الممتازه الدرس الاول
» الدرس الثانى فى الدوره الممتازه

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات برامج نت :: :::: المنتديات التقنيـــــه :::: :: لغات البرمجه :: لغه الجافا-
انتقل الى: