حلقه While
ابتداییترین ساختار تکرار در Ruby حلقه While است. ابتدا یک شرط را مورد بررسی قرار میدهد و تا زمانیکه شرط برقرار باشد کدهای درون بلوک اجرا میشوند. ساختار حلقه While به صورت زیر است :
while condition code to loop end
میبینید که ساختار While مانند ساختار if بسیار ساده است. ابتدا یک شرط را که نتیجه آن یک مقدار بولی است مینویسیم اگر نتیجه درست یا true باشد سپس کدهای داخل بلوک While اجرا میشوند. اگر شرط غلط یا false باشد وقتی که برنامه به حلقه While برسد هیچکدام از کدها را اجرا نمیکند. برای متوقف شدن حلقه باید مقادیر داخل حلقه While اصلاح شوند.
به یک متغیر شمارنده در داخل بدنه حلقه نیاز داریم. این شمارنده برای آزمایش شرط مورد استفاده قرار میگیرد و ادامه یا توقف حلقه به نوعی به آن وابسته است. این شمارنده را در داخل بدنه باید کاهش یا افزایش دهیم. در برنامه زیر نحوه استفاده از حلقه While آمده است :
1: counter = 1 2: 3: while counter <= 10 4: puts "Hello World!" 5: counter = counter + 1 6: end
Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World!
برنامه بالا 10 بار پیغام Hello World! را چاپ میکند. اگر از حلقه در مثال بالا استفاده نمیکردیم مجبور بودیم تمام 10 خط را تایپ کنیم. اجازه دهید که نگاهی به کدهای برنامه فوق بیندازیم. ابتدا در خط 1 یک متغیر تعریف و از آن به عنوان شمارنده حلقه استفاده شده است. سپس به آن مقدار 1 را اختصاص میدهیم چون اگر مقدار نداشته باشد نمیتوان در شرط از آن استفاده کرد.
در خط 3 حلقه while را وارد میکنیم. در حلقه while ابتدا مقدار اولیه شمارنده با 10 مقایسه میشود که آیا از 10 کمتر است یا با آن برابر است. نتیجه هر بار مقایسه ورود به بدنه حلقه While و چاپ پیغام است. همانطور که مشاهده میکنید بعد از هر بار مقایسه مقدار شمارنده یک واحد اضافه میشود (خط 5). حلقه تا زمانی تکرار میشود که مقدار شمارنده از 10 کمتر باشد.
اگر مقدار شمارنده یک بماند و آن را افزایش ندهیم و یا مقدار شرط هرگز false نشود یک حلقه بینهایت به وجود میآید. به این نکته توجه کنید که در شرط بالا به جای علامت < از <= استفاده شده است. اگر از علامت < استفاده میکردیم کد ما 9 بار تکرار میشد چون مقدار اولیه 1 است و هنگامی که شرط به 10 برسد false میشود چون 10 < 10 نیست. اگر میخواهید یک حلقه بی نهایت ایجاد کنید که هیچگاه متوقف نشود باید یک شرط ایجاد کنید که همواره درست (true) باشد.
while true #code to loop end
این تکنیک در برخی موارد کارایی دارد و آن زمانی است که شما بخواهید با استفاده از دستورات break و return که در آینده توضیح خواهیم داد از حلقه خارج شوید.