لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
[تحسين] الحلقات loops
إذا كنت تريد أن تكتب برنامجا يطبع على الشاشة الأرقام من 1 إلى 100 بدون إستخدام الحلقات loops ليس هناك طريقة غير أنك تكتب المئة رقم داخل الدالة التي تنفذ أمر الطباعه أي سيكون هكذا:
document.write("1 </br>")
document.write("2 </br>")
document.write("3 </br>")
document.write("4 </br>")
document.write("5 </br>")
وهكذا تظل تكرر الكود حتى تصل للمئة بعد عمر طويل!!
...
document.write("100 </br>")
و بالطبع لا يمكن أن تكون البرمجة شيئا مملا و عقيما هكذا . إن كنت تريد أن تكتب برنامجا يطبع على الشاشة 100 رقم فيمكنك بإستخدام الحلقات loops أن تكتب برنامج من سطرين يقوم بهذه المهمة .فما هي بالضبط الحلقات؟ هي أداة أو بناء (أي مجموعة كلمات وعلامات) تمكنك من تكرار أمر معين أو مجموعة من الأوامر موضوعة بين قوسين مجموعة {} عدد من المرات حسب ما تريد أو حسب شروط تقوم بتحديدها وهي في المجمل نوعين
  • حلقة for
  • حلقة while
و لك واحدة منهم مميزاتها و الأكثر شيوعا هي for

أولا :جملة for .

يكون بناء حلقة for هكذا:
for ([العملية ]; [الشرط]; [تعريف القيمة الإبتدائية])
الأمر أو مجموعة الأوامر.
ولكي يتضح المعنى نوضحه بمثال و ليكن حل المشكلة التي عرضناها أول الدرس أي برنامج يقوم بطباعة الأرقام من واحد لمئة بإستخدام جملة for يكون البرنامج هكذا:
for loop
<html>
  <script type="text/javascript">
    
    for(var i=1;i<=100;i=i+1)
    {
      document.write(i+"<br>")
        }
    
  </script>
  
</html>

حاول بنفسك »اضغط على "حاول بنفسك" لكى ترى كيف تعمل فى الحقيقة

و من خلال المثال يمكننا أن نفهم أن القيمة الإبتدائية هي القيمة التي يبدأ من عندها العد فهنا عرفنا المتغير i ووضعنا فيه القيمة الإبتدائية تساوي 1. أما الشرط و الذي يوضع بعد فاصلة منقوطة ; من تعريف البداية هو الشرط الذي يستمر تكرار الأوامر مدام هو متحقق فهنا يستمر التكرار طالما قيمة i أقل من أو تساوي 100. أما العملية فهي العملية التي يتم إجرائها على المتغير الذي قمنا بتعريف قيمته الإبتدائية بعد كل دورة . فكود طباعة المئة رقم يتم تنفيذه بهذا الترتيب :
  • يتم اختبار الشرط i<=100 هل هو متحقق ؟
  • إن كان متحقق يتم تنفيذ الأوامر الموجودة داخل الحلقة لمرة
  • ثم يتم تنفيذ العملية و التي هي إضافة 1 إلى المتغير i في مثالنا
  • ثم إعادة الإختبار هل i<=100 ؟
  • و مدام الشرط متحقق يستمر الأمر في التكرار حتى تصبح قيمة i تساوي 101 و عندها عندما يتم إختبار الشرط يكون غير متحقق
  • فتنتهي الدورة ولا يتكرر الأمر ثانية .
و مثال آخر على إستخدام for :
for loop 2
<html>
<script>    
 var number1 = 1
var number2 = 1
    
for (var counter = 1; counter <=10 ; counter++)
  
{
  
document.write(number1 + " ")
  
number2 = number2 + number1

number1 = number2 - number1  
  
}
</script> 
</html>

حاول بنفسك »اضغط على "حاول بنفسك" لكى ترى كيف تعمل فى الحقيقة

حاول أنت ان تفهمه و تعدل فيه كتمرين و يمكن أن نستخدم حلقة for داخل حلقة for أخرى مثل هذا المثال:
for داخل for
<html>
  
  <script>
    for (var i = 1; i <= 10; i++)
{
for (var j = 1; j <= 25; j++)
{
document.write("*")
}
document.write("<BR>")
}
  </script>
</html>

حاول بنفسك »اضغط على "حاول بنفسك" لكى ترى كيف تعمل فى الحقيقة

تنفذ الحلقة الداخلية كاملة أي ينفذ الأمر الخاص بها 25 مرة في كل دورة من دورات الأولى و بذلك تجد في كل سطر أفقي 25 نجمة تم رسمهم بالحلقة الداخلية بينما هناك 10 سطور من النجوم تتحكم في عددهم الحلقة الخارجية . و يمكن أيضا عمل حلقة تعمل دائما ولا تنتهي بهذه الطريقة :
for ( ; ; )
الأمر 

ثانيا :جملة while

و هي أبسط من جملة for و تكوينها كالتالي:
while (الشرط)
{
...statements...
}
فهي لا تحتاج إلا إلى شرط طالما هو متحقق أي ناتجه true فإن الأمر يستمر في التكرار حتى لا يتحقق الشرط و يصبح الناتج false و يمكن عمل برنامج طباعة المئة رقم بـwhile أيضا هكذا:
حلقة while
<html>
  <script type="text/javascript">
    var i=1
        
    while(i<=100)
    {
     
      document.write(i+"<br>")
    i=i+1
        }
    
  </script>
  
</html>

حاول بنفسك »اضغط على "حاول بنفسك" لكى ترى كيف تعمل فى الحقيقة

و يمكن إستخدام أداة تسمى do مع while بهذا الشكل :
do while
<html>
  
  <SCRIPT LANGUAGE="javascript">
    
var i = 0
    
do
  
{
  
document.write("Testing Do-While loop");
  
}
    
while(i != 0)
  
</SCRIPT>
  
</html>

حاول بنفسك »اضغط على "حاول بنفسك" لكى ترى كيف تعمل فى الحقيقة

و ستلاحظ في المثال أن الشرط (i != 0) غير متحقق من البداية و لكن مع ذلك تم تنفيذ الأمر لمرة واحده حيث أن جملة Do-While يتم فيها أولا تنفيذ الأمر الموضوع داخلها ثم بعد ذلك اختبار الشرط إن كان صحيحا تكمل و إن كان خطأ تتوقف و لذلك يتم تنفيذ أمر الطباعة الموجود داخل الحلقة لمرة واحده رغم أن الشرط غير متحقق
6 / نوفمبر / 2011 الساعة 13:33