mcse
مرحباا بك في منتدى mcse
تشكرك الادارة على هده الزيارة


انضم إلى المنتدى ، فالأمر سريع وسهل

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

(18) أوامر التحكّم - التكرار

اذهب الى الأسفل

(18) أوامر التحكّم - التكرار Empty (18) أوامر التحكّم - التكرار

مُساهمة من طرف Ebisu الأربعاء يونيو 16, 2010 11:51 am

لسلام
عليكم
و رحمة الله و بركاته


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



مقدّمة:
لنفترض
أننا نرغب في طباعة الجملة "
I
am a muslim"
أربع مرات. طبعاً ستقولون أنه يمكننا أن نكتب البرنامج التالي و سيقوم
بالمطلوب:

<blockquote>
(18) أوامر التحكّم - التكرار PrintThem01
</blockquote>
فعلاً هذا صحيح، البرنامج يكتب الجملة 4 مرات، و
لكن
لاحظ معي البرنامج مرة أخرى، ستجد أننا قمنا بكتابة الأمر(18) أوامر التحكّم - التكرار PrintStatement
أربع مرات. و هذا قد يكون حلاً مناسباً لأن عدد مرات التكرار كان 4، و
لكن
لنتصور أننا نريد أن نطبع الجملة 100 مرة أو ربما 1000 مرة. أو ربما
نرغب في
تكرارها عدداً من المرات يعتمد على تحقيق شرط معين. بالطبع لابد لنا
عندها أن
نستخدم أدوات التحكم التي تقوم بتكرار الأوامر. و توفّر لك لغة جافا
ثلاث طرق
لتكرار الأوامر. سنتعرّف عليها فيما يلي :-)




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

يكتب كود الـ for loop على
هذا الشكل:

<blockquote>

for(
initialization
;

condition
;

increment)
{

Statement 1;
..

}
</blockquote>


لاحظ أن كل ما هو أحمر، لابد من كتابته
بنفس الشكل و الطريقة، و الآن لنفسّر الألغاز الثلاثة الموجودة في
السطر الأول
و التي تفصل بينها فواصل منقوطة (و ليست فواصل عادية):





  • initialization:


    نضع في هذا الجزء متغير، و نعطيه القيمة المبدئية التي يبدأ منها
    التكرار. و
    سنرى بعد قليل كيف يفيدنا هذا. ويمكنك أن تنشئ متغيراً جديداً و
    تعطيه القيمة
    المبدئية



  • condition:

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



  • increment:

    هنا نضع جملة الزيادة (أو
    النقصان) و نعني
    بذلك، الرقم الذي نزيد المتغير الذي عرّفناه في قسم initialization.



ثم تلاحظ أن جملة for
لها قوسا مجموعة يحصران بينهما مجموعة الأوامر المراد تكرارها.


لنحاول تطبيق ذلك على مثال
عملي:


<blockquote>


(18) أوامر التحكّم - التكرار For

</blockquote>

كيف
تعمل جملة
for في المثال السابق؟

اتبع الخطوات حتى تعرف كيف تعمل جملة for:


  1. أول ما يصل
    البرنامج لأمر for
    يقوم بادئ ذي بدء بتنفيذ الجملة التالية:

    (18) أوامر التحكّم - التكرار Init
    حيث يقوم بحجز مساحة للمتغير (i) و يعطيه
    القيمة
    (0).


  2. يتحقق من الشرط الموجود في هذه الجملة:

    (18) أوامر التحكّم - التكرار Condition
    إذا أرجع الشرط قيمة (true) أي أنه
    بلغة
    البشر كان صحيحاً فسينفّذ الخطوة رقم 3. أما إذا أرجع القيمة
    false، أي أن الجملة كانت خاطئة فسيقفز
    حتى الخطوة
    5.

  3. سينفذ الأوامر المحصورة بين قوسي المجموعة
    بالترتيب
    حتى يصل إلى القوس الذي يغلق جملة for،
    و
    في حالتنا سيقوم بتنفيذ أمر الطابعة. هكذا:

    (18) أوامر التحكّم - التكرار Print

  4. سيعود التنفيذ إلى سطر جملة for الأول
    مرة
    أخرى، و هذه المرة، سيقوم بتنفيذ الجزء الثالث من جملة
    for و هو:

    (18) أوامر التحكّم - التكرار Inc
    حيث سيقوم بزيادة قيمة المتغير (i) -في
    هذه الحالة
    بواحد- أي أنه ستصبح قيمة (i) الجديدة هي
    (1) بعد
    أن كانت صفراً. ثم سيعود لتنفيذ الخطوة 2 مرة أخرى.

  5. إذا وصلت إلى هذه الخطوة معنى ذلك أن الشرط في الخطوة 2 لم
    يتحقق، و أعاد
    لي القيمة false عندها، سنخرج من جملة
    for، ونقوم بالبدء في تنفيذ الأوامر التي
    تليها، و
    في حالتنا الأمر الذي يطبع كلمة Hala
    هكذا:

    (18) أوامر التحكّم - التكرار Finish


أرجو
أن تكون الخطوات قد أوضحت جملة for بشكل تام
:-)

<blockquote>



نقطة توقّف..


  • من الممكن الاستغناء
    عن أقواس
    المجموعة في جملة for إذا كان
    الأمر
    المراد تكراره واحداً فقط، و لكن من الأفضل أن يتم التعوّد
    على وضع
    الأقواس، حتى يصبح برنامجك أوضح عند قراءته.

  • يمكنك تجربة أن تطبع
    المتغير
    (i) مع الجملة. و حاول
    بناءً على
    نفس المنهاج أن تطبع جدول الضرب.

  • المتغير (i)
    سيكون مجاله فقط في داخل الـ for
    ولن يمكن
    استخدامه خارجها، إلا مع إشهاره من جديد.

  • يمكن عمل جملة for

    داخل جملة for أخرى، و سيتم تنفيذ
    جملة
    for الداخلية كل مرة من البداية
    مع كل
    تنفيذ لجملة for الخارجية.

  • من الممكن أن ننقص
    قيمة
    المتغير i في جزء الـ Increment.
    ليتم العد تنازلياً إذا بدأنا من قيمة كبيرة للـ (i).




</blockquote>


while

loop:
في هذا
النوع من التكرار في الجافا، يتم تكرار مجموعة
الأوامر بناءً على تحقق شرط معيّن. وهذا هو الشكل العام لجملة
while:

<blockquote>

while(
condition
)
{

Statement 1;

Statement 2;

..

[size=9]}
[/size]
</blockquote>


فتحقق الشرط الموجود في ما بين القوسين
بعد كلمة
while (يعني تكون قيمته المنطقية
true) يعني أنه سيتم تنفيذ
Statement 1
و
Statement
2
و هكذا. لنفترض
أننا
نريد أن نكتب برنامجاً يقوم بعرض مجموع الأرقام المتتالية حتى رقم
محدد، لننظر
للبرنامج التالي:

<blockquote>


(18) أوامر التحكّم - التكرار While
</blockquote>

لاحظ في المثال، في البداية
قمنا باشهار
ثلاثة متغيرات: المتغير (
i) ووضعنا فيه القيمة صفر،
و المتغير (max) ووضعنا فيه القيمة 4،و
المتغير
sum و أعطيناه القيمة صفر.


ثم بدأنا نكتب جملة while،
ووضعنا في مكان الـ condition الجملة
المنطقية (i<=max),
في هذه الجملة، نقارن قيمة المتغير (i)
بقيمة
(max). فإذا كانت فعلاً أصغر منها أو تساويها فإن
الجملة
المنطقية ستكون صحيحة true و سيتم الدخول
إلى جملة
while و تنفيذ السطرين التاليين:

<blockquote>


(18) أوامر التحكّم - التكرار While01
</blockquote>

والآن تتبع معنا الخطوات التالي
بالضغط
على زر إبدأ:

<blockquote>


<table id="AutoNumber1" style="border-collapse: collapse;" border="0" bordercolor="#111111" cellpadding="0" cellspacing="0" height="89">
<tr>
<td align="middle" height="28"> </td>
<td align="middle" height="28">


sum</td>
<td align="middle" height="28">
i </td>
</tr>
<tr>
<td width="80" align="middle" height="122">


</td>
<td colspan="2" align="middle" height="122">
(18) أوامر التحكّم - التكرار Start


</td>
</tr>
<tr>
<td align="middle" height="40">
ماذا يحدث:
</td>
<td colspan="2" align="middle" height="40">

</td>
</tr>
</table>
<blockquote>
</blockquote>


</blockquote>

أتمنى أن تكون طريقة تنفيذ الـ
while loop قد اتضحت
من الشكل السابق.

<blockquote>
<blockquote>



نقطة توقّف..


  • لاحظ
    أننا
    قمنا بتغيير قيمة (i) داخل جملة

    while و زيادتها. و هكذا هي جاهزة
    للمقارنة من
    جديد، و لو لم نقم بذلك، ستظل الجملة صحيحة، و سيظل
    البرنامج ينفذ
    الأوامر.

  • إذا لم
    يتحقق الشرط في جملة while
    فلن يتم تنفيذ الأوامر داخل الجملة أبداً.




</blockquote>
</blockquote>


do

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

تكتب جملة do..while هكذا:

<blockquote>

do
{

Statement 1;

Statement 2;

..

[size=9]} while(


condition

)
[/size]
</blockquote>

يمكنك
تطبيق الأمثلة في الجمل السابقة على هذه الجملة.


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

:-)
Ebisu
Ebisu
مبرمج جيد
مبرمج جيد

عدد المساهمات : 45
السٌّمعَة : 50
تاريخ التسجيل : 11/06/2010
العمر : 43

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى