حلقه های تکرار

در فصل قبلی، با ساختار های کنترلی روبی آشنا شدیم. با استفاده از ساختارهای کنترلی توانستیم برنامه های هدفمند تر و کنترل شده تری را عرضه کنیم. در این فصل، با حلقه های تکرار آشنا خواهیم شد. گاهی نیاز است یک عملیات ریاضی، منطقی یا مقایسه ای، چندین بار روی یک ورودی انجام شده و ما نیز نیاز داریم تا هر بار، خروجی را بررسی کنیم. حلقه های تکرار، در این جا به درد ما خواهند خورد. همچنین، برای محاسبات پیچیده ریاضی که نیاز داریم تا یک عدد را چندین بار دچار دستخوش کنیم، حلقه های تکرار بسیار کاربرد خواهند داشت. برای ساخت یک منو در کنسول هم می توان از حلقه های تکرار استفاده نمود. در اینجا، با سه حلقه پرکاربرد در روبی آشنا می شویم.

حلقه while

این حلقه، پر کاربرد ترین حلقه در زبان روبی است. روش استفاده از این حلقه به این شکل است :

while CONDITION
 STATEMENT
end

فرض کنیم میخواهیم یک برنامه بنویسیم که اعداد یک تا ده را برای ما چاپ کند، باید به این شکل عمل کنیم :

n = 1
while n <= 10
  puts n
  n += 1
end

بعد از اجرای این حلقه، اعداد یک تا ده در ترمینال نمایان می شوند.

تجزیه و تحلیل برنامه

در ابتدای برنامه گفتیم n=1 یا به عبارتی عملیات initialization را انجام دادیم. سپس یک حلقه را تعریف کردیم و شرط آن را n <= 10 تعیین کردیم. در واقع تا زمانی که n مقدارش کوچکتر یا مساوی ۱۰ باشد، حلقه اجرا خواهد شد. سپس درون حلقه فرمان چاپ را صادر کردیم. برای این که حلقه در یک جای مشخص پایان یابد، یک شمارنده به صورت n += 1 نیز معرفی نمودیم. وظیفه شمارنده این است که کنترل کند حلقه حتما تمام شود.

چاپ اعضای یک آرایه با حلقه

اکنون، نوبت آن رسیده که کمی از حلقه ها بهتر استفاده کنیم. در این جا، قصد داریم با استفاده از حلقه while همه مقادیری که در یک آرایه ذخیره کرده ایم را چاپ کنیم :

n = 0
while n < array.length
  puts array[n]
  n += 1
end

این برنامه نیز مانند برنامه پیش است، با این تفاوت که مقدار n تاثیر مستقیمی در خروجی ندارد.

حلقه until

در این حلقه، بر خلاف while، شرط غلط به عنوان شرط به حلقه داده شده و حلقه، تا زمان درست شدن شرط ادامه خواهد یافت. برای مثال، برنامه چاپ اعداد را در نظر بگیرید، اکنون با استفاده از until این برنامه را باز نویسی میکنیم :

n = 0
until n > 10
 puts n
 n += 1
end

همانگونه که دیدید، شرط حلقه در اینجا شد n > 10 در واقع حلقه تا زمانی ادامه میابد که مقدار n از عدد ده بزرگتر شود.

حلقه for

این حلقه، به صورت اختصاصی برای کار با ساختمان های داده طراحی شده است. فرمت کلی حلقه به این شکل است :

for VARIABLE in DATA_STRUCTURE 
 STATEMENT
end

برای مثال، میخواهیم اعداد یک تا ده را با استفاده از این حلقه چاپ کنیم. تنها نیاز داریم از یک رنج بهره ببریم :

for n in 1..10
 puts n
end

همچنین برای چاپ اعضای یک آرایه نیز میتوان به صورت مستقیم از این حلقه استفاده نمود :

for n in array
 puts n
end

متد each

متد each یک متد است که در آرایه ها و جداول درهم سازی، به کار رفته و عملکرد آن دقیقا حلقه for است. برای مثال اگر بخواهیم مقادیر موجود در یک آرایه را با این متد چاپ کنیم به این شکل عمل میکنیم :

array.each do |x| 
 puts x
end

همچنین برای چاپ مقادیر درون یک جدول درهم سازی کافیست به این شکل عمل کنیم :

hash_table.each do |key, value|
 puts "#{key} : #{value}"
end

حلقه های بی نهایت

حلقه های بی نهایت، به حلقه هایی گفته می شود که شرطشان همیشه درست، یا همیشه غلط باشد. با استفاده از یک حلقه بی نهایت، میتوان توابع مختلف را صدا زد، با استفاده از تابع system دستورات سیستم عامل را بصورت پیوسته خواند و اجرا کرد و ... . برای پیاده سازی حلقه بی نهایت دو راه داریم :

حلقه بی نهایت با شرط همیشه درست

این حلقه را باید با while پیاده سازی کرد. فرم کلی آن به این شکل است :

while true
 ....
end

این حلقه تا زمانی ادامه خواهد داشت که سیگنال اتمام برنامه توسط CTRL + C توسط کاربر اجرا شود.

حلقه بی نهایت با شرط همیشه غلط

این حلقه نیز باید توسط until پیاده شود :

until false
 ....
end

تمامی توضیحات حلقه بی نهایت با شرط همیشه درست، برای این حلقه نیز صدق میکنند.

جمع بندی

تا اینجا، شما با دانشی که کسب کرده اید، قادر خواهید بود برنامه هایی خلق کنید که نیازی را از خودتان یا دوستانتان رفع کند. مفاهیم برنامه سازی ساخت یافته، مانند ساختارهای کنترلی و حلقه ها، اکنون در ذهن شما نقش بسته و آماده اید تا برنامه های خود را ماژولار تر از قبل بنویسید.

results matching ""

    No results matching ""