التكرار
times
times تستخدم فى تكرار block من ال code اكثر من مرة
5.times {
puts "Hello!"
}
هنا بدل مانكتب
puts “Hello!”
puts “Hello!”
puts “Hello!”
puts “Hello!”
puts “Hello!”
استخدمنا times
تقدر تستخدمها بالصورة هذه:
5.times do
puts "Hello!"
end
بإستخدام do .. end
upto/downto
1.upto(4){
puts "Hello!"
}
5.downto(0){
puts "Hello!"
}
مشابهه لنفس الفكرة! من ال 1 حتى ال 4 نفذ الBlock التالى وزيد ال 1
والثانية من 5 لحد 0 نفذ ال block التالى ونقص 1
هل لاحظت إننا قلنا زيد ونقص بدون معرفة ما نزيده وما نطرحه ؟
بكل بساطة هو iterator وهو متغير يتحدد خلال loop
لاحظ التالى مثلا
5.times {|i|
puts "I: " << i.to_s
}
الخرج:
هل لاحظت إن ال i قيمتها كانت فى البداية 0 وفى كل مرة يتنفذ ال Block تزيد 1 ؟
تستطيع أن تكتبها كالتالى
5.times do|i|
puts "I: " << i.to_s
end
جميل انت الآن فهمت اللعبة، دعنا نشوف ال upto وال downto ثانية:
0.upto(5) do |i|
puts "I: " << i.to_s
end
الخرج سيكون كالتالي:
تستطيع أن تكتبها على الصورة التالية بإستخدام ال { }
0.upto(5) {|i|
puts "I: " << i.to_s
}
لاحظ إن ال iterator قيمته هنا تبدأ من ال 0 وكل مرة تزيد قيمته بمقدار 1 لحد ماقيمته = 5 وينتهى تنفيذ ال Block
5.downto(0) { |i|
puts "I: " << i.to_s
}
الخرج سيكون كالتالى
لاحظ إن ال iterator قيمته هنا بدأت من ال 5 لحد ال 0 وفى كل مرة ينقص قيمته بمقدار 1
تستطيع أن تستخدمها كالتالى ب do.. end
5.downto(0) do |i|
puts "I: " << i.to_s
end
while
جميل ، أشهر حلقة تكرار فى معظم اللغات هى حلقة التكرار while
loopCounter=0 #set
while loopCounter<5 #condition
puts “Loop Counter: # “ << loopCounter.to_s
loopCounter += 1 #increment
end
طالما ال loopCounter اقل من 5 (الشرط)
نفذ الBlock التالى
puts “Loop Counter: # “ << loopCounter.to_s
loopCounter += 1
ونزيد قيمة ال counter بمقدار 1 وهكذا لحد ماتصل قيمته إلى 5 ويخرج من ال loop
الخرج:
LoopCounter: # 0
LoopCounter: # 1
LoopCounter: # 2
LoopCounter: # 3
LoopCounter: # 4
بنفس النظام نستطيع أن نعملها تنازلى
loopCounter=5 #set
while loopCounter>0
puts "LoopCounter: # " << loopCounter.to_s
loopCounter -= 1 #decrement the counter
end
الخرج:
LoopCounter: # 5
LoopCounter: # 4
LoopCounter: # 3
LoopCounter: # 2
LoopCounter: # 1
مثال أخير
loopCounter=0
while loopCounter<10
puts "LoopCounter: # " << loopCounter.to_s
loopCounter += 2 #increment the counter
end
الخرج هنا لزيادة مقدارها 2
LoopCounter: # 0
LoopCounter: # 2
LoopCounter: # 4
LoopCounter: # 6
LoopCounter: # 8
مثال:
loopCounter=10 #set
while loopCounter>0
puts "LoopCounter: # " << loopCounter.to_s
loopCounter -= 2 #decrement the counter
end
الخرج:
LoopCounter: # 10
LoopCounter: # 8
LoopCounter: # 6
LoopCounter: # 4
LoopCounter: # 2
for
حلقة تكرار for هى أحد أشهر حلقات التكرار فى معظم اللغات
وهنا فى Ruby هى اقرب لحلقة التكرار foreach
مثال:
ary=[1, 2, 3, 4, 5]
for el in ary
puts "el: " << el.to_s
end
لاحظ
for .. in .. end
بالعربى لكل عنصر فى ال ary نفذ الBlock التالى
تستطيع أن تستخدمها فى while كالتالى
ary=[1, 2, 3, 4, 5]
index=0
while index<ary.length
puts "el: " << ary[index].to_s
index += 1
end
صف Array يقدم طريقة اخرى لfor
ary=[1, 2, 3, 4, 5]
ary.each{|el|
puts "el: " << el.to_s
}
وهى بإستخدام iterator ايضا
الخرج:
el: 1
el: 2
el: 3
el: 4
el: 5
وتستطيع أن تستخدمها كالتالى ب do.. end
ary.each do |el|
puts "el: " << el.to_s
end
until
until هى حلقة تكرار غير موجودة بكثرة فى معظم اللغات
lc=0 #set
until lc>5 #condition
puts "lc: " << lc.to_s
lc += 1 #increment
end
الخرج:
lc: 0
lc: 1
lc: 2
lc: 3
lc: 4
lc: 5
لاحظ إن حلقة التكرار معناها التالي:
حتى تصبح ال lc > من ال 5 نفذ البلوك التالى
puts "lc: " << lc.to_s
lc += 1 #increment