while & do while

الجملة while :

يؤدي الأمر while الى تنفيذ الشفرة البرمجية مراراً وتكرارً طالما ان الشرط متحقق بـTrue

while( condition)
 {
 statements
 .
 .
 counter
 }

هنا افترضنا ان المتغير قيمته ٢ ومن ثم قلنا طالما أن i اقل من ١٠ قم بطباعة قيمة ، حسنا ولكن ماذا تعني i++ هذا يعني أننا نريد زيادة العدد ومن ثم نختبره مرة أخرى حتى يصل إلى ٩ يقوم بطباعته ومن ثم يتوقف البرنامج لماذا؟ لأن الشرط يريد طباعة الاعداد التي تقل عن ١٠ فعندما نصل للعشرة لن يتحقق الشرط أي يصبح غير صحيح ومن ثم يتوقف ، لو اننا قلنا الشرط هكذا i<=10 هنا سوف يتحقق من قيمة ١٠ ومن ثم يتوقف وذلك لأن علامة المساواة متواجدة أي هل الرقم اقل

من ١٠ او يساويها اذا كان نعم فالشرط صحيح وإذا العكس فتوقف .

var i=2
 while(i<10)
 {
 println(i)
 i++
 }

nested while

المهم هو ان لا ننسى كتابة العداد  x++,y++   وعندما لا نكتبها كليها او احدهما سوف يقوم بطباعة للما لانهاية لان الرقم لن يتغير وسيضل صحيح وهي ما تسمى بـ infinitive loop .

var x =1
 var y =1
 while(x<=5)
 {
 while(y<=3)
 {
 println("$x*$y="+x*y)
 y++
 }
 x++
 }

الجملة do…while :-

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

هنا في البداية عرفنا المتغير x وقيمته ٥ ، البرنامج سوف يدخل إلى do في البداية وينفذ ما بداخلها وهي طباعة القيمة ولا ننسى أيضا هنا كتابة العداد الذي هو الزيادة ومن ثم يقوم بالتحقق من الشرط وهو قيمة x بعد الزيادة هل هي اكبر من ١٠ ام لا والشرط هنا غير متحقق لان ٦ اصغر من ١٠ فيتوقف البرنامج وبذلك يكون فقط القراءة الأولى هي التي تتنفذ بدون النظر إلى الشرط .

var x = 5
do{
 println(x)
 x++
 }
 while(x>10)

هنا فتحنا do   ومن ثم طلبنا من المستخدم ادخال سلسلة نصية اسمه وسوف يقوم بطباعته ومن ثم يقوم بالدخول إلى while للتحقق من الشرط في حال ان المستخدم ادخل اسم حروفه تتجاوز ١٠ احرف سوف تتكرر ظهور الرسالة ، ولكن لو ادخل اسم حروفه اقل من ١٠ سوف يتوقف البرنامج لأن الشرط لم يتحقق .

do{
 println("please enter your name :")
 var x:String= readLine()!!
 println(x)

}
 while(x.length >10)